CentOS7部署轻量级web服务器nginx+php

原创 cheny  2017-02-05 21:27  评论 1 条

对于nginx早有耳闻,但是一直没用过,这段时间我的个人网站频繁出现死机,数据库也频繁异常关闭,考虑到服务器配置比较低且apache太耗资源,遂正式转投nginx的怀抱。

运行环境:阿里云服务器

CPU: 1核

内存: 1024 MB

操作系统: CentOS 7.2 64位

CentOS内置yum库没有nginx包和依赖,咱自食其力,自己配个库:

复制粘贴以下内容:

[nginx]

name=nginx repo
baseurl=http://nginx.org/packages/centos/releasever/basearch/
gpgcheck=0

enabled=1

:wq!保存内容,清理和新生成yum缓存:

安装nginx,php和php-fpm:

安装完毕,开启nginx服务,这里注意一点,开启之前应关闭apache服务器(nginx和apache都是监听占用80端口导致端口冲突,没有安装或开启apache服务器请忽略 systemctl stop httpd.service 这一步):

开启php-fpm服务:

编辑nginx配置文件,使其支持执行php脚本:

编辑以下内容(注意文本背景高亮区域为修改的内容,  为了起到备份作用这里复制了location ~ \.php$区块内容,同时大家也可以用来做对比):

server {
listen       80;
server_name  localhost;
#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;
location / {
root   /usr/share/nginx/html;
index  index.php index.html index.htm;
}
#error_page  404              /404.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           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scriptsfastcgi_script_name; #    include        fastcgi_params; #} location ~ \.php {
root           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;
#}
}

为了简单化,这里不做网站根目录更改,虚拟主机,域名绑定等配置了,默认为主,能跑通就行。

由上面的配置可知,网站的根目录为/usr/share/nginx/html。OK,咱做一个php网页跑一下,以最著名最简单的phpinfo代码为例:

为防止index.php文件涉及权限问题,对/usr/share/nginx/html/目录下所有文件重新配置属主和读写权限:

重新加载nginx配置:

OK,用ifconfig命令拿到主机ip,在浏览器上输入主机ip或网址访问index.php

以上测试跟apache+php测试差不多,如果出现的是php配置信息界面,说明nginx+php可以跑通了,部署完成。及时把index.php文件删掉,防止主机配置等相关信息泄露,被黑客或不法之徒有机可乘。

如果没有出现php配置信息界面,检查下selinux和firewall两者是否开启,是否开放80端口,具体请参考 CentOS7增加或修改SSH端口号 这一篇文章。

 

另外拓展 ------------------------------>

1.很多朋友说上传文件会提示:“413 Request Entity Too Large”错误,那么只需要在做出以下配置:

找到到nginx.conf文件内容中的http{}段, 修改nginx上传文件大小限制配置(nginx默认给定的值太小了),直接在该段最后添加以下配置(具体数值视自身服务器情况而定):

保存后执行:systemctl reload nginx 重新加载nginx配置就好了。

2.关于nginx伪静态、固定链接造成的404错误(如,wordpress的固定链接),解决方案如下:

需要在nginx的配置文件default.conf下的   location  /  {  }  模添加一行规则“ try_files uri uri/ /index.php?$args ; ”,执行代码:

高亮区域为添加的配置规则:

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

        try_files uri uri/ /index.php?$args ;

    }

保存后执行:systemctl restart nginx 重新运行nginx。

 

本文地址:http://icheny.cn/centos7%e9%83%a8%e7%bd%b2%e8%bd%bb%e9%87%8f%e7%ba%a7web%e6%9c%8d%e5%8a%a1%e5%99%a8nginxphp/
关注我们:加我微信:扫描二维码乘月网的微信号,微信号:ausboyue
版权声明:本文为原创文章,版权归 cheny 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. temptation
    temptation 【农民】 @回复

    哎哟,不错哦 :smile: