由于最近国内服务器老需要备案,网站都访问不了了。没办法尝试去国外花了两百多刀买了一个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
|
按照以下内容修改:
case "$i" in
security)
$IPTABLES -t filter -P INPUT$policy
&&$IPTABLES -t filter -P OUTPUT $policy
&&$IPTABLES -t filter -P FORWARD $policy
|| let ret+=1
;;
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
下载第三方的配置文件运行脚本,并执行。
1
2
|
#sh ./atomic
|
该脚本会生成一个文件/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
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
如果出现下面错误提示:
ctags *.c
/bin/sh: ctags: command not found
可以使用yum安装ctags来解决这个问题
yum install ctags
或者自己手动安装
wget http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz
tar zxvf ctags-5.8.tar.gz
./configure
make
make install
如果安装了ctags, 仍然报错:
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install: cannot create regular file `/usr/local/man/man1': No such file or directory
make: *** [install] Error 1
我们可以通过自己创建文件夹来解决这个问题:
mkdir -m 644 -p /usr/local/man/man1
最后终于安装成功! 我们也可以进行压力测试了
webbench -c 500 -t 30 http://www.example.com/phpinfo.php
参数说明:-c表示并发数,-t表示时间(秒)
-bash-3.00$ webbench -c 3000 -t 30 http://www.example.com/phpinfo.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://www.example.com/phpinfo.php
3000 clients, running 30 sec.
Speed=8358 pages/min, 8791523 bytes/sec.
Requests: 4179 susceed, 0 failed.
-bash-3.00$