配置CentOS + Nginx + PHP + FastCGI + MySQL服务器

以前一直都是使用CentOS + Apache + MySQL + PHP来做服务器的,一般也都不是自己配置,使用的都是已经配置好现成的,比如很久以前使用的BlueHost的cPanel主机,后来还使用MediaTemple的VPS,这些都是Ready to Run的服务器,只需要付了钱之后立马就可以使用的,后来发现Linode不错,就买这个的VPS,而这个只是一个纯粹的裸体,买了之后只一个纯粹的操作系统,所有都得自己安装,这篇文章旨在介绍一下如何在CentOS上面配置Nginx + MySQL + PHP + FastCGI服务器,我在Linod上面使用的方案,现在公司内部的服务器使用的也是这个方案。

安装必需的包

因为CentOS并没有全部包含Nginx运行需要的很多环境,所以我们需要安装EPEL(Extra Packages for Enterprise Linux)支持,这是来自Fedora 的一个项目,使用下面的命令:

 rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

然后使用下面的命令升级你的CentOS系统,并安装Nginx网页服务器、PHP以及编译工具:

yum update
yum install nginx php-cli php make automake gcc gcc-c++ spawn-fcgi wget
chkconfig --add nginx
chkconfig --level 35 nginx on
service nginx start

安装进程完成并且成功启动之后,你就可以访问 http://localhost 或者 http://127.0.0.1 访问服务器,以查看是否安装成功,如果成功你将会看到Nginx服务器的默认页面。

配置你的网站

服务器已经成功安装了,现在需要配置你的网站,在这里我以本站为例来说明如何配置一个网站,首先,我们需要一个用来存放网站程序以及公开访问访问的目录,还需要一人上日志存放的目录,而我把同一个网站的所有这些目录都存放在同一个父目录“/srv/www/www.solocrab.com/”中,所以,我们首先需要创建这些目录:

先创建网页存放用的目录:

mkdir -p /srv/www/www.solocrab.com/public_html

然后创建用来存放目录文件的目录:

mkdir -p /srv/www/www.solocrab.com/logs

最后将这个目录丢给用户组nginx中的用户nginx:

chown -R nginx:nginx /srv/www/www.solocrab.com

然后我们需要为这个网站创建Nginx服务器的配置文件,在这一步中,我创建了两个目录,分别为:

  1. 用来存放可用网站配置文件的:/etc/nginx/sites-available
  2. 用来存放已启用网站配置文件的:/etc/nginx/sites-enabled

使用如下命令:

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

目录创建完成之后,我们还需要编辑 nginx 服务器的主配置文件,让它将已启用网站配置文件目录的配置文件引用进主配置文件,打开 /etc/nginx/nginx.conf 文件,在 include /etc/nginx/conf.d/*.conf 这一行的下一行中,输入下面这两行内容:

#Load virtual host configuration files.
include /etc/nginx/sites-enabled/*;

创建我们为 solocrab创建一个配置文件:

文件:/etc/nginx/sites-available/www.solocrab.com

server {
listen 80;
server_name note.solocrab.com;
access_log /srv/www/note.costony.com/logs/access.log;
error_log /srv/www/note.costony.com/logs/error.log;
location / {
root /srv/www/note.costony.com/public_html;
index index.html index.htm;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/note.costony.com/public_html$fastcgi_script_name;
}
}</pre>

完成之后,我们需要启用这个网站配置,所以,需要将这个网站配置信息引用进入Nginx的主配置文件中,使用下面这几个命令:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/note.costony.com
service nginx restart

你可以在网站的目录中创建一个测试用的HTML文件来查看配置是否成功。

配置 spawn-fcgi

我们现在需要让这个网站能够运行PHP脚本,首先创建下面这个文件:

/usr/bin/php-fastcgi

#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u nginx -g nginx -f /usr/bin/php-cgi

创建完成之后还需要让这个文件可执行:

bc chmod a+x /usr/bin/php-fastcgi

为php-fastcgi创建一个初始化脚本:

文件:/etc/rc.d/init.d/php-fastcgi

#!/bin/sh
#
# php-fastcgi - Use PHP as a FastCGI process via nginx.
#
# chkconfig: - 85 15
# description: Use PHP as a FastCGI process via nginx.
# processname: php-fastcgi
# pidfile: /var/run/php-fastcgi.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
phpfastcgi="/usr/bin/php-fastcgi"
prog=$(basename php-cgi)
lockfile=/var/lock/subsys/php-fastcgi
start() {
[ -x $phpfastcgi ] || exit 5
echo -n $"Starting $prog: "
daemon $phpfastcgi
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -Q
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $prog -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 2
esac

然后运行下面这些命令,让其在系统启用时就执行:

chmod 755 /etc/rc.d/init.d/php-fastcgi
/etc/rc.d/init.d/php-fastcgi start
chkconfig --add php-fastcgi
chkconfig --level 35 php-fastcgi on

测试以FastCGI方式运行的PHP

现在我们可以创建一个PHP测试文件来查看是否已经配置成功:

文件:/srv/www/www.solocrab.com/public_html/phpinfo.php

<?php phpinfo(); ?>

安装 MySQl 数据库服务器

使用下面的命令安装 MySQL 数据库服务器:

yum update
yum install mysql-server
/sbin/chkconfig --levels 235 mysqld on

然后让MySQl服务器在系统启动时自动启动:

service mysqld start

安装完成之后,我们可以对MySQL进行一次安装设置,使用如下命令:

mysql_secure_installation

一些常见的问题

有的时候我们在运行chkconfig或者service命令时,会得到类似下面这样的错误:

bash: service: command not found

在本文章中,如果遇到这个错误,只需要把相关的命令改成:

/sbin/service

或者:

/sbin/chkconfig

标签: none

评论已关闭