2010-12-25 20:17:40|分类:Fedora|标签:phpnginxmysqlroothtml|字号大中小订阅
Nginx(发音为 “engine x”)是一款免费、开源、高性能的HTTP服务器。同时Nginx以稳定、功能丰富、配置简单、资源消耗少著称。这篇教程将会为你展示如何在一台 Fedora 14中安装Nginx+MySQL+PHP5(PHP-FPM模式)
我已经测试无误,这将保证为你工作!
在这篇教程中我使用的用户名是www.unixbar.net,IP地址是192.168.0.100.这些设置可能与你的有所不同,因此 你需要在适当的地方修改一下.
我们通过执行下面的命令来安装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! [root@server1~]#
Nginx是Fedora 14的默认包,我们可以通过下列命令安装它:
yum install nginx
然后我们为nginx创建一个系统启动链接,并启动它:
chkconfig --levels235 nginx on /etc/init.d/nginx start
在你的浏览器中输入你的服务器IP地址或者主机名(例如http://192.168.0.100),然后你就可以看到nginx的欢迎页面:
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/NginxFullExample 和http://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访 问了。
正如你在Server API这一行中所看到的一样,PHP5现在已经以FPM/FastCGI模式正常运行了。如果你继续向下翻看,你就能过看到PHP5所支持的模块,其中就包括 MySQL模块:
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