centos下安装nginx和php磨难记
时间:2016-07-12 23:05 来源:linux.it.net.cn 作者:IT
为了能有一个完善的体验过程,我自己安装了一遍centos和nginx、php,中间出了不少问题,记事留念。
第1步当然就是安装Vmware,这没啥好说的,一步步next就好了;
第2步是新建一个虚拟机,并加载ios镜像安装Centos6.3,这个也没啥好说的,网上很多图文教程,
注1:分区时,我增加了一个/home区,而且我没安装gui图形环境,按base server进行的安装;
注2:安装完成后,我选择的网络模式是NAT,在VmWare的菜单“编辑”里有一个“虚拟网络编辑器”,选择NAT模式,确定即可,然后再打开宿主Windows机的本地连接属性,打开“允许其他网络用户通过此计算机的Internet连接来连接”,这样虚拟机就可以上网了;
注3:开启共享后,出了一个问题,就是Windows里的Cisco VPN客户端连接不上了,取消共享,就可以连接,连接上后,再开启共享也无效,只能二选一进行工作。
第3步,配置一些环境:
1、调整Shell分辨率(这一步可要可不要,后面我都通过终端访问) 命令行下输入:vim /boot/grub/grub.conf ,
在kenel这行最后面添加 vga=ask 这样每次重启都会询问分辨率,如果添加 vga=0x369,表示把终端分辨率 固定为1280*800
2、修改IP,因为Windows打开共享后,Nat网关IP是192.168.137.1,所以我把Centos的IP设置为192.168.137.8:
[plain] view plain copy
-
编辑对应的网卡配置文件,本机为ifcfg-eth0:
-
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
-
内容如下
-
DEVICE=eth0 #描述网卡对应的设备别名
-
BOOTPROTO=static #设置获得ip方式,可能的选项为static,dhcp或bootp
-
BROADCAST=192.168.137.255 #对应的子网广播地址
-
ONBOOT=yes
-
IPADDR=192.168.137.8 #设置网卡静态ip地址
-
NETMASK=255.255.255.0 #网卡对应的网络掩码
-
GATEWAY=192.168.137.1 #网关IP
-
DNS1=114.114.114.114 #DNS1的IP
修改完IP后,记得使用命令重启Centos网络,以便使IP生效
service network restart
好了,前面的准备工作完成,要开始部署环境了
第1步、模拟生产系统,添加了一个work账户,命令行如下:
useradd work
passwd work 这里回车后,会让你输入work账户的新密码,输入2遍
然后再把work用户加入sudoer
[plain] view plain copy
-
chmod u+w /etc/sudoers 首先设置sudoers文件可写
-
vim /etc/sudoers 打开sudoers文件进行编辑,在"root ALL=(ALL) ALL"下面添加"kiwi ALL=(ALL) ALL".
-
chmod u-w /etc/sudoers 撤消写权限
第2步、使用yum安装php 和 nginx php-fpm,命令行如下,按指示一步步确认:
yum install php
注:下一步,是设置源,否则无法yum安装nginx
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx
第3步、配置nginx的运行用户和web参数
nginx的配置文件位置: /etc/nginx/nginx.conf 首先移除配置文件里的include配置,
接着把user nginx修改为 user work,使用work用户执行nginx进程;
然后http配置节里的server配置如下:
[plain] view plain copy
-
server {
-
listen 80; # 监听端口
-
server_name localhost; # 主机头,如果只有一个server配置,这个主机头会忽略
-
location / { # 默认路径指向
-
root /home/work/web; # 站点根目录
-
index index.html index.htm; # 站点的默认首页文件
-
}
-
error_page 500 502 503 504 /50x.html;
-
location = /50x.html {
-
root /usr/share/nginx/html;
-
}
-
location ~ \.php$ { # php请求路径正则
-
root /home/work/web; # php请求的文件根目录
-
fastcgi_pass 127.0.0.1:9000; # php-fpm的监听端口
-
# 下一行的$document_root就是上面的root配置
-
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-
include fastcgi_params;
-
}
-
}
注:如果不修改nginx的运行用户,那么在访问站点下的文件时,可能会报403错误。
奇怪的是,不改运行用户时,我用命令 chmod -R 777 /home/work/web 设置了最大权限,访问站点时依旧提示403错误,有大侠知道不?
第4步、配置php-fpm的运行用户:
php-fpm的配置文件位置: /etc/php-fpm.conf,里面有一句: include=/etc/php-fpm.d/*.conf
再打开包含的配置文件: /etc/php-fpm.d/www.conf,找到user=apache,把它改成user=work
注:如果不修改php-fpm的运行用户,那么在访问php文件时,会一直报:File not found 错误,同样我设置了目录的777权限也不行,坑啊
第5步、启动php-fpm服务和nginx服务:
service php-fpm restart
service nginx restart
好了,到这里配置全部完成了,在站点下放一个index.php文件,然后通过命令行:curl http://127.0.0.1/index.php访问一下试试吧。
问题解决:在网上找到了这篇文章 http://www.nginx.cn/511.html nginx
为了保证文件能正确执行,nginx既需要文件的读权限,又需要文件所有父目录的可执行权限。
例如,当访问/usr/local/nginx/html/image.jpg时,nginx既需要image.jpg文件的可读权限,也需要/,/usr,/usr/local,/usr/local/nginx,/usr/local/nginx/html的可以执行权限。
解决办法:设置所有父目录为755权限,设置文件为644权限可以避免权限不正确。
测试了一下,必须同时赋予父目录读取和执行权限,即r+x,否则nginx会报403 forbidden异常,php-fpm会报404 File not found.异常。即使提供读写权限也不行,很坑啊。
(责任编辑:IT)
为了能有一个完善的体验过程,我自己安装了一遍centos和nginx、php,中间出了不少问题,记事留念。 第1步当然就是安装Vmware,这没啥好说的,一步步next就好了;
第2步是新建一个虚拟机,并加载ios镜像安装Centos6.3,这个也没啥好说的,网上很多图文教程,
第3步,配置一些环境: 2、修改IP,因为Windows打开共享后,Nat网关IP是192.168.137.1,所以我把Centos的IP设置为192.168.137.8:
[plain] view plain copy
service network restart
好了,前面的准备工作完成,要开始部署环境了
第1步、模拟生产系统,添加了一个work账户,命令行如下:
[plain] view plain copy
第2步、使用yum安装php 和 nginx php-fpm,命令行如下,按指示一步步确认: yum install php 注:下一步,是设置源,否则无法yum安装nginx rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx
第3步、配置nginx的运行用户和web参数
[plain] view plain copy
奇怪的是,不改运行用户时,我用命令 chmod -R 777 /home/work/web 设置了最大权限,访问站点时依旧提示403错误,有大侠知道不?
第4步、配置php-fpm的运行用户:
第5步、启动php-fpm服务和nginx服务: 好了,到这里配置全部完成了,在站点下放一个index.php文件,然后通过命令行:curl http://127.0.0.1/index.php访问一下试试吧。
问题解决:在网上找到了这篇文章 http://www.nginx.cn/511.html nginx
测试了一下,必须同时赋予父目录读取和执行权限,即r+x,否则nginx会报403 forbidden异常,php-fpm会报404 File not found.异常。即使提供读写权限也不行,很坑啊。 |