#安装相关包:
yum -y install ntp vim-enhanced gcc gcc-c++gcc-g77 flex bison autoconf automake bzip2-devel
ncurses-devel openssl-devel libtool*zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel
fontconfig-devel freetype-devel libXpm-develgettext-devel curl curl-devel pam-devel
e2fsprogs-devel krb5-devel libidn libidn-devel pcre-devel pcre

添加nginx官方源

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
#参考:http://wiki.nginx.org/Install

安装nginx
yum -y install nginx #最新版
yum -y install nginx-stable #稳定版

安装mysql

#yum install mysql mysql-server
#/etc/init.d/mysqld start或service mysqld start #启动mysqld
#mysqladmin -uroot password 123 #设置mysql用户名和密码
#service mysqld restart
#mysql -uroot -p123 #测试是否能连接
#chkconfig --level 345 mysqld on #设置开机启动

安装php和相关模块
#yum list php*查看所需模块 #官方源当前只有PHP5.3,本人Centos版本为6.3 64位

yum -y install php-fpm php-cli php-common php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-pecl-memcache php-pecl-apc

查看centos版本
cat /etc/redhat-release

官方源没有php-fpm包,需要以下处理
启用EPEL
# yum install yum-priorities -y
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#64位的将i386改为x86_64,epel-release-6-8.noarch.rpm 改为最新的,参考:http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/


# yum --enablerepo=remi install php php-fpm

装完后升级成php5.4。
设置开机启动
#chkconfig --level 345 php-fpm on

PHP5.3+内置了php-fpm,启动方式和安装方法都与PHP5.2有所不同。
详情参考此文

附带的php5.4扩展列表: 可以看到php-common已经把php-curl扩展内置了,无需额外安装

Package Provides
php54w mod_php
php54w-bcmath
php54w-cli php-cgi, php-pcntl, php-readline
php54w-common php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib
php54w-dba
php54w-devel
php54w-embedded php-embedded-devel
php54w-enchant
php54w-fpm
php54w-gd
php54w-imap
php54w-interbase php_database, php-firebird
php54w-intl
php54w-ldap
php54w-mbstring
php54w-mcrypt
php54w-mssql
php54w-mysql php-mysqli, php_database
php54w-odbc php-pdo_odbc, php_database
php54w-pdo
php54w-pgsql php-pdo_pgsql, php_database
php54w-process php-posix, php-sysvmsg, php-sysvsem, php-sysvshm
php54w-pspell
php54w-recode
php54w-snmp
php54w-soap
php54w-tidy
php54w-xml php-dom, php-domxml, php-wddx, php-xsl
php54w-xmlrpc
php54w-zts

安装的为最新的nginx版本
#nginx -v
nginx version: nginx/1.2.7

配置文件结构与旧版本略有不同
主配置文件不变,include的部分文件放在/etc/nginx/conf.d/*.conf中

配置default.conf ,注释或增加代码


location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
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;
}

#/etc/init.d/nginx reload #重启nginx,载入新配置文件

配置后遇到的一个问题:
在本地访问没有问题,外网访问不了

netstat -tlnp | grep nginx
#在本地的服务端口是打开的

ping 192.168.1.76 #响应正常

在外网用nc检查服务器的80端口
[root@vm conf]# nc -nvv -w2 -z 192.168.1.76 80
nc: connect to 192.168.1.76 port 80 (tcp) failed: No route to host

基本可以认为是防火墙设置的问题,把防火墙关闭后正常。
查看iptables的规则:

[root@localhost nginx]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

可见在filter table的INPUT链中屏蔽了除22以外的端口。
在第5条之前加入新规则,开放nginx和mysql访问端口:
[root@localhost nginx]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost nginx]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

保存规则并重启
[root@localhost nginx]# /etc/rc.d/init.d/iptables save
[root@localhost nginx]# /etc/rc.d/init.d/iptables restart

外网访问正常
参考:How To Install Nginx And PHP-FPM On CentOS 6 Via Yum

- EOF -