在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP

在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP

2010-12-25 20:17:40|分类:Fedora|标签:phpnginxmysqlroothtml|字号订阅

Nginx(发音为 “engine x”)是一款免费、开源、高性能的HTTP服务器。同时Nginx以稳定、功能丰富、配置简单、资源消耗少著称。这篇教程将会为你展示如何在一台 Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式)

我已经测试无误,这将保证为你工作!

1 前言备注

在这篇教程中我使用的用户名是www.unixbar.net,IP地址是192.168.0.100.这些设置可能与你的有所不同,因此 你需要在适当的地方修改一下.

2.安装MySQL5

我们通过执行下面的命令来安装MySQL:

yum install mysql mysql-server

然后我们为MySQL创建系统启动连接(这样的话,MySQL就会在系统启动的时候自动启动)并且启动MySQL服务器:

chkconfig --levels235 mysqld on
/etc/init.d/mysqld start

现在检查是否支持网络访问,运行:

netstat-tap|grep mysql

应该显示如下信息:

[root@server1~]#netstat-tap|grepmysql

tcp00*:mysql*:*LISTEN1717/mysqld

[root@server1~]#

如果不显示,编辑/etc/my.cnf文件,并注释掉skip-networking参数:

vi/etc/my.cnf
[...]

#skip-networking

[...]

并重启 MySQL 服务器:

/etc/init.d/mysqld restart

为root用户设置一个密码(否则任何人都可以访问到你的MySQL数据库):

[root@server1~]#mysql_secure_installation
NOTE:RUNNINGALLPARTSOFTHISSCRIPTISRECOMMENDEDFORALLMySQL
SERVERSINPRODUCTIONUSE!PLEASEREADEACHSTEPCAREFULLY!

InordertologintoMySQLtosecureit,we'llneedthecurrent
passwordfortherootuser.Ifyou'vejustinstalledMySQL,and
youhaven'tsettherootpasswordyet,thepasswordwillbeblank,
soyoushouldjustpressenterhere.

Entercurrentpasswordforroot(enterfornone):<--敲ENTER键
OK,successfullyusedpassword,movingon...

SettingtherootpasswordensuresthatnobodycanlogintotheMySQL
rootuserwithouttheproperauthorisation.

Setrootpassword?[Y/n]<--敲ENTER键

Newpassword:<--输入你的密码
Re-enternewpassword:<--重复输入你的密码
Passwordupdatedsuccessfully!
Reloadingprivilegetables..
...Success!

Bydefault,aMySQLinstallationhasananonymoususer,allowinganyone
tologintoMySQLwithouthavingtohaveauseraccountcreatedfor
them.Thisisintendedonlyfortesting,andtomaketheinstallation
goabitsmoother.Youshouldremovethembeforemovingintoa
productionenvironment.

Removeanonymoususers?[Y/n]<--敲ENTER键

...Success!

Normally,rootshouldonlybeallowedtoconnectfrom'localhost'.This
ensuresthatsomeonecannotguessattherootpasswordfromthenetwork.

Disallowrootloginremotely?[Y/n]<--敲ENTER键
...Success!

Bydefault,MySQLcomeswithadatabasenamed'test'thatanyonecan
access.Thisisalsointendedonlyfortesting,andshouldberemoved
beforemovingintoaproductionenvironment.

Removetestdatabaseandaccesstoit?[Y/n]<--敲ENTER键

- Droppingtestdatabase...
...Success!
-Removingprivilegesontestdatabase...
...Success!

Reloadingtheprivilegetableswillensurethatallchangesmadesofar
willtakeeffectimmediately.

Reloadprivilegetablesnow?[Y/n]<--敲ENTER键
...Success!

Cleaningup...

Alldone!Ifyou'vecompletedalloftheabovesteps,yourMySQL
installationshouldnowbesecure.

ThanksforusingMySQL!

[[email protected]~]#

3安装 Nginx

Nginx是Fedora 14的默认包,我们可以通过下列命令安装它:

yum install nginx

然后我们为nginx创建一个系统启动链接,并启动它:

chkconfig --levels235 nginx on

/etc/init.d/nginx start

在你的浏览器中输入你的服务器IP地址或者主机名(例如http://192.168.0.100),然后你就可以看到nginx的欢迎页面:
在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP
4 安装PHP5
Fedora 14官方的源中,并没有php-fpm,但是 我们可以使Remi repository源。使用下列命令添加Remi repository

rpm -ivh http://rpms.famillecollet.com/remi-release-14.rpm

下面打开tc/yum.repos.d/remi.repo文件.

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

把[remi]部门的enabled改为1。Gpgcheck改为0.其他不需要修改

[remi]
name=Les RPM de remi pour Fedora $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/fedora/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/remi/mirror
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Fedora $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/fedora/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/fedora/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

现在我们安装php-cli和其他的PHP5模 块,例如php-mysql,它可以使你的PHP脚本支持MySQL:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc

php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

然后打开/etc/php.ini文件,并解除注销cgi.fix_pathinfo=1这一行:

vi/etc/php.ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

现在我们创建php-fpm的系统启动连接,并启动它:

chkconfig --levels235 php-fpm on
/etc/init.d/php-fpm start

Php-fpm是一个后台进程(初始化脚本为/etc/init.d/php-fpm),以9000端口运行在一台FastCGI服务器上.

5 配置nginx
现在我们打开nginx的配置文件/etc/nginx/nginx.conf:

vi/etc/nginx/nginx.conf

配置文件简单易懂
(你可以在下列网站学习更多的配置方法http://wiki.codemongers.com/NginxFullExamplehttp://wiki.codemongers.com/NginxFullExample2)
首先你可以增加worker process的数量和设置keepalive_timeout为一个合理值:

[...]
worker_processes  5;
[...]
keepalive_timeout  2;
[...]

虚拟主机定义在server{}容器中.我们使用下列命令修改默认的虚拟主机:

[...]
    server {
        listen       80;
        server_name  _;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }

        error_page  404              /404.html;
        location = /404.html {
            root   /usr/share/nginx/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
        #
        #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$ {
            root           /usr/share/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$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;
        }
    }
[...]

server_name ; 你可以在这里通过修改www.unixbar.net来确 定你的域名
在location /部分,我在index行加入了index.php。root /usr/share/nginx/html 意思是文档路径为/usr/share/nginx/html。
对于PHP来说最重要的部分就是 location ~ \.php$ {}。取消它的注释。改变root这一行为网站的文档路径。例如root /usr/share/nginx/html。请确保把fastcgi-param行修改成了fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;;否则的话PHP解析器将不会找到浏览器中调用的PHP.
现在我们保存文件并重启nginx:

/etc/init.d/nginx restart

现在在文档路径root /usr/share/nginx/html创建下列PHP文件:

vi/usr/share/nginx/html/info.php
<?php
phpinfo();
?>

现在我们就可以在浏览器中通过http://192.168.0.100/info.php访 问了。
在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP
正如你在Server API这一行中所看到的一样,PHP5现在已经以FPM/FastCGI模式正常运行了。如果你继续向下翻看,你就能过看到PHP5所支持的模块,其中就包括 MySQL模块:
在Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式) LNMP

7 原文地址

http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-fedora-14

http://www.unixbar.net/linux/fedora/1106.html