NGINX在CENTOS环境下实现单主机多站点

一、实验环境:

centos6_X86(腾讯云主机)

php5.6+mysql5.5+vsftp2.2.2+nginx1.10.3

首先没安装nginx 的要先安装上面的环境:

二、配置nginx,使其支持多站点

1.首先修改/etc/nginx/nginx.conf
/etc/nginx/nginx.conf
确认文件最下面是否如下:
include /etc/nginx/conf.d/*.conf;
主要目的是囊括nginx的host目录,现在新版nginx默认已经创建好了这个目录,并写好此文件。
2.然后进入host目录,增加你想要使用的站点:
cd /etc/nginx/conf.d
cp default.conf wolfmark.conf

3.修改wolfmark.conf的内容,令其指向你的域名
vi wolfmark.conf
这里可以参考:
default.conf
重启nginx服务:
service nginx restart

三、绑定站点目录和ftp用户:

这个可以参考ftp多用户实现,只需要把在passwd.txt中新建用户,并添加指向即可:

 

VSFTP实现多用户访问,基于虚拟用户架设VSFTP

一、配置环境:

centos6.8×86+vsftp2.2.2

vsftp的安装过程可以参考“(腾讯云)centos下配置安装nginx+php+ftp+mysql”第六步:

关闭vsftp:
service vsftpd stop

二、架设基于虚拟用户的vsftp:

ftp中的虚拟用户不是真实的linux用户,而是映射帐户来达到设置权限的目的,一些集成工具就会使用这种功能。

修改/etc/vsftpd/vsftpd.conf:
vi /etc/vsftpd/vsftpd.conf
更改以下行内容:
anonymous_enable=NO #不允许匿名访问
local_enable=YES #设定本地用户可以访问,如果使用虚拟用户选择NO以后,所有虚拟用户无法访问
chroot_list_enable=YES #用户不能离开主目录
xferlog_file=/var/log/xferlog #设定vsftpd的服务日志保存路径。
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd #PAM文件认证名
guest_enable=YES
guest_username=ftp #使用centos内置的账户ftp
user_config_dir=/var/ftp/user_conf
#设定虚拟用户的FTP文件存放路径,文件名和用户名一致

二、创建相关文件:

1.创建chroot list,添加用户ftp

touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list

2.创建日志保存文件:
touch var/log/xferlog
3.创建用户密码文本/var/ftp/passwd.txt :
vi /var/ftp/passwd.txt
写入你要创建的用户名和密码,奇行是用户名,偶行是密码:

user1
12345678
user2
12345678

4.创建虚拟用户的FTP文件存放路径文件夹:
mkdir /var/ftp/user_conf

三、进行认证:

1.安装Berkeley DB工具:
yum install db4 db4-utils
链接密码文件:

db_load -T -t hash -f /var/ftp/passwd.txt /var/ftp/passwd.db

编辑认证文件/etc/pam.d/vsftpd:
vi /etc/pam.d/vsftpd
注释原来内容,并加上下面两行:

auth required pam_userdb.so db=/var/ftp/passwd
account required pam_userdb.so db=/var/ftp/passwd

2.创建虚拟用户FTP服务文件
vi /var/ftp/user_conf/user1


local_root=/opt/var/user1

#虚拟用户的根目录(根据实际修改)

write_enable=YES #可写

anon_umask=022 #掩码

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

3.重启vsftp就可以使用了
service vsftpd restart

四、使用ftp工具链接ftp服务器:

如图所示,我们的链接已经成功了。

 

(腾讯云)centos下配置安装nginx+php+ftp+mysql

一、安装环境:

centos6.8×86(腾讯云主机)
工具secureCRT(或者putty)+Filezilla
(工具是在客户端使用的)

二、使用客户端链接远程服务器,这里使用的是SecureCRT

1.先建立一个session,地址是腾讯云的ip地址
账号和密码是你当初设的(注意要使用公网IP)

2.使用SSH客户端登陆成功:

三、现在开始安装nginx:

1.安装nginx:
添加centos资源库:
在ssh中输入:

vi /etc/yum.repos.d/nginx.repo

更改为以下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

使用yum 命令去安装 nginx
yum install nginx
测试nginx服务状态:
service nginx status
显示已停止
测试nginx配置文件:
nginx -t
显示OK则安装成功,稍后可以启动nginx服务
service nginx start
此时使用之前SSH的IP地址已经可以成功访问静态网页,但是为了让其支持动态,还需要进行下一步操作。
2.配置nginx:
将你的域名指向腾讯云主机,腾讯1元主机抢到 的话还送一张CN域名首年优惠券。然后编辑nginx的配置文件支持你的域名:

vi /etc/nginx/conf.d/default.conf

修改这两项server_name 是你的域名,location是站点根目录

server {
listen 80;
server_name youdomian.com;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /var/youdomian.com;
index index.html index.htm;
}

修改下面的项使其支持php
location ~ \.php$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

详见:
default.conf
重新加载nginx使其生效
service nginx reload

四、安装php-fpm

1.为了 nginx 能够执行 php 文件,还需要安装php-fpm
直接使用yum源安装
yum install php-fpm
2.安装成功以后检查php-fpm运行状态,方法和nginx检查方法一致,这里不再赘述
重启nginx,使其支持php。
service nginx restart
3.现在可以在网站根目录下新建一个index.php进行测试
cd /var/youdomian.com
vi index.php

只需加上这样一句:

可以得到如下结果,说明成功:

你的php版本可能和我的不同,但是建议升级到5.6,升级php可以看:

五、安装mysql

1.配置扩展,并令php-fpm支持:

yum install php-pecl-apc php-mysql php-gd php-mcrypt php-pear php-mbstring php-xmlrpc php-dom
service php-fpm restart

2.安装mysql

yum install mysql-server

3.启动mysql服务

service mysqld start

4.进行mysql安全设置,这里可以一路y下去:

mysql_secure_installation

这里可能还有一个问题,就是mysql不能正常链接,需要添加外网访问的支持。
使用phpmyadmin(可选)来管理mysql:

 

六、安装服务端FTP管理工具VSFTP

安装vsftp:
yum install vsftpd
启用vsftpd
service vsftpd restart
当然这样的话只能使用root用户登陆,是不安全的,为了更好保护数据,我们通常会建立相关的ftp虚拟账户,请看vsftp搭建多站点,这个过程通过虚拟账户来实现,能够更好的保护root。
VSFTP实现多用户:

VSFTP实现多用户访问,基于虚拟用户架设VSFTP

 

这样本篇文章就结束了,如果大家再安装过程中遇到什么问题,可以给我留言,看到以后会尽快回复大家的。

centos6安装phpmyadmin 管理mysql

一、安装环境:

centos6.8 32位腾讯云主机
php5.6+mysql5.5
(如果不升级可能会导致各种奇怪的错误)
但是基本上所有的主机刚开始都是过时版本,所以可能需要升级,安装升级方法参考:

二、开始安装:

1.首先去phpmyadmin官网查看最新包:

https://www.phpmyadmin.net/downloads/

可以看到最新版为4.66,可以用wget命令获取到linux或者使用ftp工具上传即可

wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.tar.gz
2.解压:
tar -xvzf phpMyAdmin-4.6.6-all-languages.tar.gz
此处要和你下载的版本名一致。
解压以后,将其放在你网站的根目录,并修改文件夹名称如:
mv phpMyAdmin-4.6.6-all-languages /var/x.wolfmark.org/
cd /var/x.wolfmark.org
mv phpMyAdmin-4.6.6-all-languages phpmyadmin

3.最后修改一下config.sample.inc.php这个文件就可以使用了
cp config.sample.inc.php config.inc.php
vi config.inc.php

后面也可以参考官方文档:https://docs.phpmyadmin.net/zh_CN/latest/setup.html#manually-creating-the-file
为$cfg[‘blowfish_secret’]项加密
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';
分号之间的内容随便填,越复杂越好
更改授权,允许ip段登陆:
$cfg['Servers'][$i]['host'] = '127.0.0.1';
127.0.0.1更改为你的ip地址
现在就可以访问你的phpmyadmin了
如:https://x.wolfmark.org/phpmyadmin

centos下升级mysql5.5+php5.6

现在windows中的软件随着需求量每时每刻都在更新,不更新再难满足用户需求。linux也是一样,落伍的软件版本已经不再试用,本篇文章主要针对linux环境下php和mysql的升级。

测试环境:

CENTOS6.8(腾讯云学生机) mysql 版本 5.1 php 版本5.3

一、更新php版本为5.6

1.查看并删除原有的php5.3(如果没有安装可以直接安装php5.6)

查看原本的php版本:
 php -V
查看已经安装的php的包:
 yum list installed | grep php
然后删除这些包:
yum remove ... ...
检查是否删除完毕:
yum list installed | grep php
结果为空则证明删除完毕
2.安装php5.6
添加源:
rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

使用yum list命令查看可安装的包:
yum list --enablerepo=remi --enablerepo=remi-php56 | grep php
安装php5.6
yum install ... ...
省略号为上面显示的和php5.6有关的内容
比如我这里是:
yum install php56w.i386 php56w-bcmath.i386 php56w-cli.i386 php56w-common.i386 php56w-dba.i386 php56w-devel.i386 php56w-embedded.i386 php56w-enchant.i386 php56w-fpm.i386 php56w-gd.i386 php56w-imap.i386 php56w-interbase.i386 php56w-intl.i386 php56w-ldap.i386 php56w-mbstring.i386 php56w-mcrypt.i386 php56w-mssql.i386 php56w-mysql.i386 hp56w-mysqlnd.i386 php56w-odbc.i386 php56w-opcache.i386 php56w-pdo.i386
一定要把目录中的所有项都安装,否则会出现未知错误,只能卸了重新安装。
成功以后,我们可以查看现在的php版本:
php --version
重启php-fpm:
service php-fpm restart

二、升级mysql到5.5

1.卸载原来的mysql5.1
查看是否安装了mysql:
rpm -qa| grep mysql
卸载mysql5.1:
rpm -e mysql-libs --nodeps
2.安装mysql5.5
添加源
rpm -Uvh http://mirror.steadfast.net/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

查看是否增加成功:

yum --enablerepo=remi,remi-test list mysql mysql-server

得到如下结构:

Loading mirror speeds from cached hostfile
* remi: mirrors.tuna.tsinghua.edu.cn
* remi-safe: mirrors.tuna.tsinghua.edu.cn
* remi-test: mirrors.tuna.tsinghua.edu.cn
* webtatic: sp.repo.webtatic.com
Installed Packages
mysql.i686 5.5.54-1.el6.remi @remi
mysql-server.i686 5.5.54-1.el6.remi @remi

安装mysql5.5
yum --enablerepo=remi,remi-test install mysql mysql-server
到最后显示complete表示安装成功
启动mysql
/etc/init.d/mysqld start
支持mysql开机启动
chkconfig --levels 345 mysqld on

以后还可以安装phpmyadmin来管理mysql,详见:

笑盐生

笑盐生

——————脩于而公元二零一七年二月二十四日凌晨,夜不能昧

孤舟披蓑问苍穹,腾龙搅海枭愚鰕。

盐生万里富船去?乌云一号复空舣!

穿着蓑衣,脚踏孤舟,(如浩宇间的一颗孤星般)质问苍穹,高高在上的龙们吹一口气,就可以翻江倒海,高傲而冷漠它们从不知道那小小的鰕虎鱼。盐生想着这些都快忘记了自己远渡万里来到彼岸,就是这船上的东西,也许卖完一船的盐巴就可以得到他此生都难以想象的财富,他就是要用这些来为家中病倒的母亲凑足药费,也许还有剩下的……可以娶个勤劳善良的媳妇也说不定……乌云一下遮住了半边的苍天,盐生被怒号的狂风刮得东倒西歪,他拼命的朝前划着船,可是瘦弱的他在瓢泼大雨下不堪一击,可是他还是不停的将盐巴往船舱里靠紧一点。不知过了多久,船到了彼岸,又和他来这里前一样干干净净,什么都没有剩下。

兰山蓝

兰山蓝
牛大香
安宁深处有单家
肉蛋双飞吃不腻
小菜加上来解乏
凡年双归冬不寒
一栽难得一回聚

——————————————修于公元二零一七年一月三十日

梦虚旎天涯乐于春

水中望月月压湾,
镜中看花画弗圆?
愚拙蘧心伴汝玩,
春风得意知不远。

——————————————脩于公元二零一七年一月

(No title)

愿四域友乐享冬至

雨漱间尖山峦平,
旦改乡音亦难云。
行军侧卧百朝行,
鱼虾百万亿金轮。
至东多食饺,南地更团圆?

__________________________脩于二零一六年冬至日

关于stl标准库里的list的删除

使用C++ STL里的list 我刚开始用的是remove();
这个方法现在发现真的是捉襟见肘。
因为每次移除是按值匹配移除,
所以相同的值的所有元素都被移除:

例子,转置一个链表的一段值:

//程序详见:
template
void ReverseInPart( T & L ,int n )
{//实现功能的主要部分,反转f到t的f-t个元素
cout << "Enter two number as changed form and to :" ; int f, t ; cin >> f >> t ;

if(f >= t || t > n || f < 1) { cout << "Do not need reverse!\n" ; return; } Literator lt= L.begin(); int l = 1 ; while ( l < f) { lt++; l++ ; } Literator ch = lt ;//使用迭代器来完成 ++ch; //迭代器始终指向一个元素的位置,所以lt迭代器每次都前移 //而ch每次指向下一个元素,即第i+1个元素 for(int i = f ; i < t ; ++i,--lt) { int x = *ch ; ++ch; //由于remove会删除所有值为*ch 的元素,所以ch 应该先增加 //使用erase更方便,详见gx/abort_stl_list L.remove(x); L.insert(lt,x); } //remove void remove( const TYPE &val );删除所有值为val的元素 }
可以看出如果输入链表元素都是不同的值的话都无所谓
比如说 1→2→3→4→5,现在逆转2~5
得到:1→5→4→3→2
但是如果输入中有相同的数就会发生错误,
如原链表:1→2→2→1
(其实是个镜像链表,这个在《程序员面试算法》的第17题有体现)
逆转3~4后,L.remove(x);这里x值为1时,
将导致删除两个元素,最后得到的链表就变成了:
2→1→2
后面发现erase()这个方法,可以直接删除迭代器
指向的链表元素,这个方法是很方便的:

template
void ReverseInPart( T & L ,int n )
{//实现功能的主要部分,反转f到t的f-t个元素
cout << "Enter two number as changed form and to :" ; int f, t ; cin >> f >> t ;

if(f >= t || t > n || f < 1) { cout << "Do not need reverse!\n" ; return; } Literator lt= L.begin(); int l = 1 ; while ( l < f) { lt++; l++ ; } Literator ch = lt ;//使用迭代器来完成 ++ch; //迭代器始终指向一个元素的位置,所以lt迭代器每次都前移 //而ch每次指向下一个元素,即第i+1个元素 for(int i = f ; i < t ; ++i,--lt) { int x = *ch ; Literatir d_ch; ++ch; //由于remove会删除所有值为*ch 的元素,所以ch 应该先增加 //使用erase更方便,详见gx/abort_stl_list L.erase(d_ch); L.insert(lt,x); } //remove void remove( const TYPE &val );删除所有值为val的元素 }