序:好久没有写过博客了。这篇文章本应在半年前写的,无奈,人太懒了…… 刚好这里因为工作原因,又要搭建一套环境,我又到处百度,想想还是记录一下。
一、安装Nginx
1、查看系统版本信息(centos 6.X 和 7 略有不同)
[root@DevNginx nginx]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.9 (Final)
Release: 6.9
Codename: Final[root@DevNginx nginx]# cat /etc/centos-release
CentOS release 6.9 (Final)
2、创建源配置文件nginx.repo
vim /etc/yum.repos.d/nginx.repo
填写如下类容:
[nginx] name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1保存,生成一个新的nginx.repo文件
3、安装Nginx
安装:yum install nginx -y
开机启动:centos6 : chkconfig nginx on
centos7 : systemctl enable nginx
常用操作:centos6 : service nginx stop|start|reload|restart|status|…
centos7 : systemctl stop|start|reload|restart|status|… nginx
4、防火墙
service nginx start 启动Nginx,如果无法访问,需要开启防火墙开放端口
查看防火墙状态:service iptables status
修改防火墙开放端口号:vim /etc/sysconfig/iptables
修改完重启防火墙:service iptables restart
注:当使用阿里云等服务商的服务器时,修改防火墙无效,需要到控制台→安全策略进行配置
二、安装PHP
1、检查当前是否安装PHP
yum list installed | grep php
删除之前版本:yum remove php* php-common
2、安装源
yum install epel-release
centos 7.x : rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
centos 6.x : rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
3、安装
你可以查看可安装的PHP版本及插件:yum list php*
这里我全部安装:
yum install php71w php71w-mysql php71w-odbc php71w-common php71w-embedded php71w-pgsql php71w-xml php71w-ldap php71w-fpm php71w-gd php71w-pdo php71w-devel php71w-mbstring php71w-mcrypt php71w-cli php71w-json php71w-imap php71w-bcmath mod_php71w php71w-pear
4、启动PHP服务
[root@DevNginx nginx]# whereis php-fpm
php-fpm: /usr/sbin/php-fpm /etc/php-fpm.conf /etc/php-fpm.d /usr/share/man/man8/php-fpm.8.gz
[root@DevNginx nginx]# service php-fpm start
正在启动 php-fpm:
[root@DevNginx nginx]# service php-fpm status
php-fpm (pid 1929) 正在运行…开机自动启动:chkconfig php-fpm on
5、配置Nginx 使用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;
}
三、终
每次更改nginx配置文件之后都要记得重启。今天搭的服务器是在公司本地服务器上的虚拟机上面,用作测试,在Nginx上配了反向代理,但是我在测试的时候,发现无法访问。我自己的本地和线上服务器是没有问题的,都是一样的配置。真的很奇怪,后来查看日志:
tail -f /var/log/nginx/error.log
2018/06/11 14:57:54 [error] 2653#2653: *79 open() “/usr/share/nginx/html/platform/favicon.ico” failed (2: No such file or directory), client: 192.168.1.92, server: localhost, request: “GET /favicon.ico HTTP/1.1”, host: “192.168.1.202”, referrer: “http://192.168.1.202/”
最后百度到:RELOAD不靠谱啊!!!!必须stop再启动才可以
停止nginx -s stop
重启nginx -c nginx.conf
这个还是第一次遇到,因为以前安装的时候都是手动将Nginx添加到service启动,今天用yum安装Nginx时,自动就添加到service启动了。不过不管怎么说,总算完成了,还是记录一下,下次不想再到处百度找教程了。还记得上次通过编译安装,哇,简直要人命!
2018-7-19 补充:
昨晚断电,公司服务器今天重启了,遇到奇怪的问题:接口没有响应,查看错误日志如下:
2018/07/19 10:49:54 [crit] 2287#2287: *16 connect() to 192.168.1.209:2001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: “POST /api/sct/webLogin HTTP/1.1”, upstream: “http://192.168.1.209:2001/api/sct/webLogin”, host: “127.0.0.1”
网上查询结果:SeLinux导致的权限问题
解决方法:
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可来源:osheep
这里我直接临时关闭了,但是感觉关闭selinux还是挺暴力的,不是挺推荐,百度发现另一个解决方法,应该是要给php-fpm 权限,解决方法:自己百度 (未验证)。
2019-10-7补充
京东云和阿里云区别还是挺大的。工作需要,要在京东云上搭建项目。
补充点1:查看版本信息
1 2 3 4 5 |
[root@Nginx ~]# lsb_release -a -bash: lsb_release: command not found [root@Nginx ~]# cat /etc/issue CentOS release 6.10 (Final) Kernel \r on an \m |
补充点2:配置nginx的yum源无效,见上面[创建源配置文件nginx.repo],直接通过rpm安装
nginx源:http://nginx.org/packages 找到需要安装的nginx的rpm包,通过rpm直接安装,我这里安装1.12.1
1 |
rpm -ivh http://nginx.org/packages/centos/6/x86_64/RPMS/nginx-1.12.1-1.el6.ngx.x86_64.rpm |
参考:CentOS 6.9/7通过yum安装指定版本的Nginx
2020-07-13补充
实在没想到,这个项目我还在维护。。。
老板些接了很多项目,都相当于卖系统了,并在这个系统上做定制开发。这不,这个甲方爸爸我们不仅系统卖了,帮人家搭建了项目,人家还组了个开发团队,要自己做后续的定制开发。还要负责给人讲怎么部署,人家自己搭建了个测试环境,这就给我挖了个坑。。。
我给布的生产环境:CentOS6.9 + Nginx1.12.1 + PHP7.1.33
甲方爸爸自己部署的测试环境:CentOS8.1.1911 + Nginx1.14.1 + PHP7.2.24
问题:甲方部署完成后,将生产环境的配置信息迁移到了测试环境,并作了相应的更改,但是可以访问HTML文件,PHP无法访问,报404。
问题排查:
html可以访问,但PHP文件不行,怀疑是PHP文件解析问题,检查php-fpm服务,各种服务重启,查看配置:
1 2 3 4 5 6 7 |
location ~ \.php$ { #root /usr/share/nginx/html/wechat; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
也感觉没啥问题,然后网上查资料,看到centos8安装PHP配置是有点区别,然后修改如下:
1 2 3 4 5 6 7 8 |
location ~ \.php(.*)$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } |
中间走了很多弯路,虽然知道肯定是解析这配置问题,但是网上找资料也很多不清不楚,试了好些都不行。期间还发现9000端口没有监听:
查看端口是否被占用:netstat -nltp |grep 9000
查看特定程序占用端口:ps axu |grep 程序名,找到特定程序的pid,然后根据pid查端口:netstat -nltp |grep pid 即可。
最终,百度搜索CentOS8安装nginx、php,找了几篇文章,终于ok。
主要修改两处:更改 vim /etc/php-fpm.d/www.conf
CentOS 8.1下搭建LEMP(Linux+Nginx+MySQL+PHP)环境(教程详解)
2020-11-15补充
是的,又多了个甲方爸爸,环境又不一样的了呢,天翼云走起。。。
服务器环境:CentOS7.6.1810
以前部署的nginx都是1.12的,社会在进步,时代在发展,技术在更新,这次也来部署些版本新点的。
nginx版本:截止目前(2020-11-15),看了下最新版nginx:nginx-1.18.0-2.el7.ngx.x86_64.rpm( 29-Oct-2020 15:35)
1 |
rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm |
php版本:这个一直部的7.1的版本,最新稳定版7.4 ,纠结,改不改版本呢,很久没关注PHP,也不知道更新内容大不大,算了,还是7.1吧。
安装见上↑
问题一:出师不利啊,百试不爽的安装命令报错了!!!
1 2 3 |
Retrieving http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm curl: (6) Could not resolve host: nginx.org; Unknown error error: skipping http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm - transfer failed |
f**k,这种不允许连外网的,差评!!!
下载本地包安装:
1、下载nginx包到服务器,然后安装:
nginx依赖:gcc、pcre、libstdc++(gcc-c++依赖)、gcc-c++、zlib , 本服务器已安装,若缺依赖会报错,安装即可。
12345 查询是否安装过rpm包:rpm -qa |grep ****(包名)rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm或者yum install -y nginx-1.18.0-2.el7.ngx.x86_64.rpm
还好,nginx安装顺利,其他依赖也没问题,别忘了开机启动
1 systemctl enable nginx
2、下载PHP相关rpm包并上传到服务器:
三方镜像库:https://repo.webtatic.com/yum/el7/x86_64/RPMS/
查包的网站:https://pkgs.org
补充个包网站(又来台服务器arm架构的,区别看着centos7几种版本)
https://kojipkgs.fedoraproject.org/packages/nginx
https://kojipkgs.fedoraproject.org/packages/php/
安装命令:rpm -Uvh *.rpm
1234567891011121314 [root@vm-1604885833-0002 packages]# rpm -Uvh *.rpmwarning: mod_php71w-7.1.30-1.w7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 62e74ca5: NOKEYerror: Failed dependencies:libjpeg.so.62()(64bit) is needed by php71w-gd-7.1.30-1.w7.x86_64libjpeg.so.62(LIBJPEG_6.2)(64bit) is needed by php71w-gd-7.1.30-1.w7.x86_64libX11.so.6()(64bit) is needed by php71w-gd-7.1.30-1.w7.x86_64libXpm.so.4()(64bit) is needed by php71w-gd-7.1.30-1.w7.x86_64libexslt.so.0()(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1()(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1(LIBXML2_1.0.11)(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1(LIBXML2_1.0.13)(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1(LIBXML2_1.0.18)(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1(LIBXML2_1.0.22)(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64libxslt.so.1(LIBXML2_1.0.24)(64bit) is needed by php71w-xml-7.1.30-1.w7.x86_64缺少依赖,https://pkgs.org网站上找,然后下载rpm包进行安装,缺啥安装啥就OK
12 启动:service php-fpm start自启动:systemctl enable php-fpm
可参考文章:CentOS7离线安装Nginx