CentOS6下搭建 Nginx + PHP + MySQL服务器

Nginx+PHP-FPM的组合是目前生产环境中最主流的php网站的选择。

PHP-FPM是一个PHP FastCGI进程管理器。对于熟悉Java的人来说,可以把php-fpm想象成php程序的容器,就像Tomcat是servlet的容器一样。网上对这种(前端静态web服务器+后端php-fpm)的组合技术有如下的描述:

  • FastCGI是一个可伸缩的,高速地在web server和脚本语言间交互的接口。
  • FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。
  • php-fpm可以和任何支持远端FastCGI的web server工作。

这种架构下,对前端负责静态内容的Web服务器的要求就变成越轻量越好。自从nginx出现以后,很快在生产环境下取代功能丰富的Apache服务器而成为流行的Web服务器。其中的主要原因应该是Apache的多数功能都用不上,反而在性能上成了累赘。

其他的php应用方式:

  • Apache+CGI方式:最古老的方式,基本上没有什么人在用了。
  • Apache+mod_php:php模块方式,仍然是目前常见的方式,也是很多应用的默认安装方式。推荐开发环境使用该方式,简单可靠。
  • Lighttp+Spawn-fcgi:原理和类似Nginx+php-fpm类似,很多网站管理员也比较喜欢这个组合。

以下整理一下CentOS下Nginx+PHP-FPM的安装过程。

一、使用Yum方式安装nginx服务

如果有特殊需求的话,推荐使用源代码编译安装的方式

由于ngix不包含在默认的软件仓库里,需要接入nginx的rpm库。

#rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#yum install nginx

二、Yum方式安装PHP, MySQL数据库以及常用php模块

#yum -y install mysql mysql-server php-mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql

三、安装php-fpm服务器

#yum -y install php-fpm

修改php-fpm的启动用户及组

#vi /etc/php-fpm.d/www.conf`

第39及41行,修改用户和组为nginx。(原来为apache)

修改服务器端口为Unix Socket。 listen = /var/run/php-fpm/php-fpm.sock

四、启动php-fpm服务

#service php-fpm start

设置php-fpm服务自动启动

#chkconfig php-fpm on

五、在nginx下配置一个php网站:

编辑文件:vi /etc/nginx/conf.d/mywebsite.conf

server {
    listen       80;
    server_name  www.mywebsite.com;

    #可以自定义log输出位置
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
    	# 网站代码目录
        root   /www/mywebiste;
        index  index.html index.htm index.php index.py;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    # 这种方式是将php请求转发至apache服务器
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    	# php网站代码目录
        root           /www/mywebsite;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

六、启动nginx服务器

#service nginx start

设置自动启动

#chkconfig nginx on

七、 测试php网站

在/www/mywebsite/目录下创建test.php

<?php
   phpinfo();
?>

在浏览器里查看是否正确执行。

Share Comments
comments powered by Disqus