`

Centos服务器fastcgi模式配置nginx+php+mysql+vsftpd

阅读更多

由于最近国内服务器老需要备案,网站都访问不了了。没办法尝试去国外花了两百多刀买了一个vps,开始自己部署服务器。由于自己linux基本上是小白,搞了一整天才搞出来这个攻略。为了以后能够再次恢复系统啥的,就记录了下来,搞篇日志,说不定哪位网友还能参考的价值。不多说了进入正题。

一、系统环境配置1.1、设置服务器时间

1
#cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime

查看时间修正

1
#date

1.2、更新服务器系统

1
#yum update

1.3、添加用户,设置密码,赋予权限

1
2
3
#adduser username 
#passwd username 
#vi /etc/sudoers

在rootALL=(ALL) ALL行下面增加usernameALL=(ALL) ALL保存即可退出利用username登录了

 

1.4、设置防火墙开发80端口

1
2
#vi cp /etc/sysconfig/iptables.old/etc/sysconfig/iptables
#vi /etc/sysconfig/iptables

增加两行到22端口规则下面

-A INPUT -m state --stateNEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --stateNEW -m tcp -p tcp --dport 21 -j ACCEPT

然后执行

1
#service iptables restart

可能会报错:iptables: Setting chains to policy ACCEPT: security rawnat[FAILED]filter

那么修改文件

 

1
#vi /etc/init.d/iptables

按照以下内容修改:

 

  1. case "$i" in

  2.        security)

  3.            $IPTABLES -t filter -P INPUT$policy

  4.                &&$IPTABLES -t filter -P OUTPUT $policy

  5.                &&$IPTABLES -t filter -P FORWARD $policy

  6.                || let ret+=1

  7.            ;;

  8.     raw)

 

然后再重启就ok了,采用

 

1
#iptables –L

查看是否生效了。生效了的话,关闭selinux权限控制方便后期的操作

 

1
#vi /etc/selinux/config

注释所有的内容,增加一行

SELINUX=disabled

然后重启系统

 

1
#shutdown –r now

1.5、增加第三方的yum更新源地址

Niginx 官方的更新源增加

 

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

增加以下内容


[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
下载第三方的配置文件运行脚本,并执行。

 

该脚本会生成一个文件/etc/yum.repos.d/atomic.repo,即为我们增加了一个yun地址库,此时可以删除下载的配置脚本

1
#rm atomic

二、.安装服务器nginx+php+mysql+php-fpm2.1安装nginx

1
#yum install nginx

优化nginx配置

1
#vi /etc/nginx/nginx.conf

#根据CPU 核心processes,VPS下几个核心几个processes,独立服务器可x2

worker_processes  4;

#启用epoll
worker_rlimit_nofile 51200;
events {
    worker_connections  51200;
    use epoll;
}
#参数调整
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    keepalive_timeout  50;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
#fastcgi优化
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

#开启gzip并优化
    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

然后启动nginx,并设为开机启动

1
2
#service nginx start
#chkconfig nginx on

这个时候你应该就能通过浏览器输入ip地址访问了出现

Welcome to nginx!

#备份原有配置文件,并修改用户配置

 

1
2
#cp/etc/nginx/conf.d/default.conf etc/nginx/conf.d/default.confbak 
#vi  /etc/nginx/conf.d/default.conf

设置默认的网站目录

去除下面这段内容的注释

location ~ \.php$ {

root /usr/share/nginx/html;
   fastcgi_pass  127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
  include        fastcgi_params;
 }

注意其中fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

 

 

2.2 安装mysql

1
#yum install mysql mysql-server

启动mysql,并设为开机启动

1
2
#service mysqld start
#chkconfig mysqld on

拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

1
#cp/usr/share/mysql/my-medium.cnf   /etc/my.cnf

然后重启系统

1
#shutdown -r now

重新登录系统之后,设置数据库用户和密码

1
#mysql_secure_installation

然后首次进入直接enter键,然后根据要求一路选择即可,再重启mysql

1
#service mysqld restart

 

 

2.3 安装php

1
#yum install php

一路Y即可

安装php-fpm , php-mysql,php-gd等

1
#yum install php-fpm php-mysql php-gd

配置php.ini文件

1
#vi /etc/php.ini

作出如下修改

date.timezone= PRC     #在946行 把前面的分号去掉,改为date.timezone= PRC disable_functions =passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit,posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
 expose_php = Off        #在432行 禁止显示php版本的信息
 magic_quotes_gpc = On   #在745行 打开magic_quotes_gpc来防止SQL注入

保存退出之后,继续配置php-fpm.同样先备份文件,然后修该

1
2
#cp/etc/php-fpm.d/www.conf   /etc/php-fpm.d/www.confbak
#vi /etc/php-fpm.d/www.conf

其中的端口要改为nginx配置中php运行相同的端口

Lister=127.0.0.1:9000

user = nginx   #修改用户为nginx
group = nginx   #修改组为nginx

保存退出,重启nginx和php-fpm

1
2
#service nginx restart
#service php-fpm restart

同样需要将php-fpm设为开机启动

1
#chkconfig php-fpm on

 

2.4 安装ftp工具vsftpd

1
#yum install vsftpd ftp

为ftp服务器创建log文件

1
#touch /var/log/vsftpd.log

然后启动服务,并设置为开机自动启动

1
2
#service vsftpd start
#chkconfig vsftpd on

然后编辑配置文件

1
#vi /etc/vsftpd/vsftpd.conf

修改相关参数如下:

#设定不允许匿名访问 
anonymous_enable=NO

#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。
local_enable=YES  

#使用户不能离开主目录,并制定文件
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来 ,前面步骤已经创建
xferlog_file=/var/log/vsftpd.log

#允许使用ASCII模式上传和下载
ascii_upload_enable=YES 
ascii_download_enable=YES

#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd

#以下这些是关于Vsftpd虚拟用户支持的重要CentOS FTP服务配置项目。默认vsftpd.conf中不包含这些设定项目,需要自己手动添加RHEL/CentOS FTP服务配置。

#设定启用虚拟用户功能。
guest_enable=YES

#指定虚拟用户的宿主用户。-RHEL/CentOS中已经有内置的ftp用户了 
guest_username=ftp

 #设定虚拟用户个人vsftp的RHEL/CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)  user_config_dir=/etc/vsftpd/vuser_conf

(注意:所有的注释和配置必须不能再同一行当中,否则启动会失败)

保存以上修改,退出。创建用户列表文件并将ftp用户添加到列表文件中

1
2
#touch /etc/vsftpd/chroot_list
#echo ftp >> /etc/vsftpd/chroot_list

 

那么接下来就是添加我们自己设定的ftp用户了,但用户的账号密码需要认证,所以需要安装相应的认证工具Berkeley DB工具

1
#yum install db4 db4-utils

安装之后,创建用户的账号密码文本

1
#vi /etc/vsftpd/vuser_passwd.txt

加入相应的用户信息,其中奇数行为你新增用户的账号,偶数行为密码,不能有空格喔

username1
password1
username2
password2

保存文件退出,生成用户认证的db文件

1
#db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

然后呢,再编辑认证管理器的配置信息

1
#vi /etc/pam.d/vsftpd

用#注释所有的内容,然后增加以下两行内容:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd

account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

保存退出。再创建虚拟用户的ftp服务文件夹,以及前文中所增加的账号用户的配置文件

1
2
#mkdir /etc/vsftpd/vuser_conf/
#vi /etc/vsftpd/vuser_conf/username1

填写以下内容:

#username1用户的根目录(自己决定)
local_root=/etc/vsftpd/username1    
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

保存内容,退出。要创建上述配置文件中所设置的用户根目录,并为其设置权限

1
2
3
#mkdir /etc/vsftpd/username1
#chmod 777 /etc/vsftpd/username1
#service vsftpd restart

此时,你的ftp应该已经可用了,那么可以用ftp测试以下

1
#ftp localhost

输入用户名和密码即可开始了!

 

三、测试篇

进入网站根目录建立一个测试的index.php文件,但是要记得赋予权限

1
2
#cd /usr/share/nginx/html  
 #vi  index.php

 

<?php   phpinfo();?>
chown nginx.nginx /usr/share/nginx/html/ -R  #设置目录所有者

chmod700  /usr/share/nginx/html/ -R   #设置目录权限

然后打开浏览器看,至此完成了nginx+php+mysql的环

最后再来一个压力测试,利用工具webbench,以下内容为互联网转载的

首先,我们先下载并安装webbench

 

  1. wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz

  2. tar zxvf webbench-1.5.tar.gz

  3. cd webbench-1.5

  4. make && make install

 

如果出现下面错误提示:

 

  1. ctags *.c

  2. /bin/sh: ctags: command not found

 

可以使用yum安装ctags来解决这个问题

 

  1. yum install ctags

 

或者自己手动安装

 

  1. wget http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz

  2. tar zxvf ctags-5.8.tar.gz

  3. ./configure

  4. make

  5. make install

 

如果安装了ctags, 仍然报错:

 

  1. install -s webbench /usr/local/bin

  2. install -m 644 webbench.1 /usr/local/man/man1

  3. install: cannot create regular file `/usr/local/man/man1': No such file or directory

  4. make: *** [install] Error 1

 

我们可以通过自己创建文件夹来解决这个问题:

 

  1. mkdir -m 644 -p /usr/local/man/man1

 

最后终于安装成功! 我们也可以进行压力测试了
webbench -c 500 -t 30 http://www.example.com/phpinfo.php
参数说明:-c表示并发数,-t表示时间(秒)

 

  1. -bash-3.00$ webbench -c 3000 -t 30  http://www.example.com/phpinfo.php

  2. Webbench - Simple Web Benchmark 1.5

  3. Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

  4. Benchmarking: GET http://www.example.com/phpinfo.php

  5. 3000 clients, running 30 sec.

  6. Speed=8358 pages/min, 8791523 bytes/sec.

  7. Requests: 4179 susceed, 0 failed.

  8. -bash-3.00$

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics