整个环境的搭建过程分为两个部分,一是安装,二是配置
一 、安装
1.在安装之前,需要对linux的防火墙进行设置,参考网上的方法,需要增加80和3306两个端口
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙
这里需要注意的是,这两条语句需要放到默认22端口规则的下面,配置后的iptables如下:
################################ 添加好之后防火墙规则如下所示################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#######################################################################################
还有人的做法是将防火墙关掉
# chkconfig iptables
off
我在设置防火墙的时候,打开编辑页面竟然什么都没有,索性就直接把防火墙关掉了(后来补充,应该是防火墙文件路径输错了所以是空的)
此外有文章指出要把SELINUX给关掉,我看到其他文章没有提到这一点的就没有关,后来配置结束后,始终出不来index.php页面,为了查找问题,我就把这个关掉重启了LINUX,结果就好了,不知道是SELINUX的问题还是我重启的问题,以后有时间再验证吧
2. 接下来增加centos的第三方yum源,因为yum默认的标准源是没有nginx的
#wget http://www.atomicorp.com/installers/atomic
#sh ./atomic
#yum
check
-
update
这里需要说明的是,使用yum可以自动安装所需要的部件,这种方法简单方便,不过还有原始的方法是,首先下载对应的安装包,然后通过对包编译安装,指定配置和安装目录等等,比较麻烦
3. 接下来卸载系统自带的nginx、php和mysql,不要问我为什么,因为我也不知道
yum remove httpd mysql php
4. 安装nginx
yum install nginx #安装nginx 根据提示输入y进行安装
chkconfig nginx on #设置nginx开机启动
service nginx start #启动nginx
5. 安装mysql
yum install mysql mysql-server mysql-devel#输入Y即可自动安装,直到安装完成
service mysqld start #启动MySQL
chkconfig mysqld on #设为开机启动
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
为root账户设置密码
mysql_secure_installation
#回车,根据提示输入Y,输入2次密码,回车,根据提示一路输入Y,最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart #重启
/etc/init.d/mysqld stop #停止
/etc/init.d/mysqld start #启动
6. 安装Php
yum install php php-fpm #根据提示输入Y直到安装完成
安装PHP组件,使 PHP5 支持 MySQL
yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
#这里选择以上安装包进行安装,根据提示输入Y回车
chkconfig php-fpm on #设置php-fpm开机启动
service php-fpm start #启动php-fpm
7. 配置nginx对php的支持
cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak#备份原有配置文件
vi /etc/nginx/nginx.conf #编辑
user nginx nginx; #修改nginx运行账号为:nginx组的nginx用户
:wq #保存退出
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.confbak #备份原有配置文件
vi /etc/nginx/conf.d/default.conf #编辑
index index.php index.html index.htm; #增加index.php
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
service nginx restart #重启nginx
在这一块不同文章有不同的配置,总的来说我个人认为先不配置也好,因为我看对PHP的配置都是些“防止SQL注入、禁止显示php版本的信息、列出PHP可以禁用的函数”等等,第一篇文章配置的比较详细,可以参考,在这里,我没有配置,只是按照另一篇文章的做法增加了一行:
[root@CentOS ~]# vi /etc/php.ini
//编辑文件php.ini,在文件末尾添加cgi.fix_pathinfo = 1
9. 配置PHP-fpm
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.confbak #备份原有配置文件
vi /etc/php-fpm.d/www.conf #编辑
user = nginx #修改用户为nginx
group = nginx #修改组为nginx
:wq #保存退出
10. 最后就是创建一个php文件来验证了
cd /usr/share/nginx/html
vi index.php #添加以下代码
<?php
phpinfo();
?>
:wq! #保存退出
chown nginx.nginx /usr/share/nginx/html -R #设置权限
service nginx restart #重启nginx
service php-fpm restart #重启php-fpm
在浏览器敲入主机(服务器)的IP地址,如果出现以下页面表示配置成功
http://www.jb51.net/article/37986.htm ***
http://www.cnblogs.com/xiaoit/p/3991037.html **
http://www.jb51.net/article/26597.htm
http://www.linuxidc.com/Linux/2014-03/98492.htm
http://www.tuicool.com/articles/EVzAvaE
http://www.tuicool.com/articles/EVzAvaE