centos7 编译安装php7.3,nginx1.16.0后,多站点配置无法生效问题

centos7 编译安装php7.3,nginx1.16.0后,多站点配置无法生效问题

本文记录的是自己的踩坑,并非教学,太长不看的可以直接最下,或者右上角。

环境:centos7,php7.3,nginx1.16.0
在nginx的配置目录
(各人的目录可能不同,我的是/usr/local/nginx/conf,不清楚安装到哪里了的,可以使用whereis nginx查找一下)

[root@centos conf]# whereis nginx
nginx: /usr/local/nginx /usr/local/nginx/sbin/nginx

一般来说,第一个就是安装目录,后面那个是nginx的启动文件

新建vhosts文件夹,并在nginx.conf中引用

sudo mkdir vhosts
sudo vi nginx.conf

在http里面,插入引用代码

    include vhosts/*;

在这里插入图片描述
跟着就去vhost文件夹下面新建一个配置,因为我引用的是文件夹下的所有文件,没有限定格式,所以配置文件也不需要什么特殊的后缀名。不过考虑到备份或者其他原因,建议定一个固定格式的后缀名比较好,比如*.conf,那引用的地方就改成引用 include vhosts/*.conf; ,这些都看需求来的,注意配置后面带分号结尾。
我的简单配置:

server {
    listen 80;#监听端口
    server_name lara6.com;#域名
    index index.php index.html;
    root /root/project/test1;#项目入口路径,绝对路径,一直到项目的入口文件那个文件夹
    #下面这些配置具体意思我也不大明白,反正就这样用着就行。具体要探究以后再说
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

跟着把测试域名指向本地(如果不是root用户,记得加sudo),

vi /etc/hosts

按i编辑,在最后插入

127.0.0.1   lara6.com www.lara6.com #多个域名中间用空格隔开

然后esc ,:wq(冒号,wq)保存退出

在项目路径下(就是上面那个root 路径里面,)建立个index.php文件,随便输入点什么都行

[root@centos test1]# vi index.php
<?php
echo phpinfo();

?>

我这就个人习惯,输出一下phpinfo();保存退出
配置完了,

[root@centos vhosts]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@centos vhosts]# nginx -s reload

看到ok 和 successful,一般来说就没啥问题了。你以为这就完了,那我只能说少年你运气挺好,没遇到坑

=我是分割线====================================

一般来说,以上配置完成,然后curl +域名 ,或者在本地浏览器输入域名,能访问到这个图片太长,随便截点意思一下
那恭喜你,暂时没问题了。如果出链接超时,或者502,或者403,那么继续往下看吧。

首先,遇到这种情况,别先急着百度说“啊,我遇到错误啦,502错误啊,403错误啊”什么的,这是因为你看到的这些提示,只是一个笼统的提示,具体什么错误,还得看错误日志。
得,去看看nginx.conf,看看咱们的错误日志在哪里

[root@centos test1]# cd /usr/local/nginx/conf/
[root@centos conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          vhosts
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default  win-utf
[root@centos conf]# vi nginx.conf

默认情况下,这三行都是注释了的,咱们把第一个注释打开,然后保存退出,再重启服务器
在这里插入图片描述
这里可能会存在一个问题,就是centos可能没有/var/logs/nginx/这个目录,所以如果遇到报错了,那咱们就是对应的地方,手动创建下目录,或者你想把错误日志指向到其他地方也行,不过记得要给目录对应的权限,不然还是会报错。

重启完服务器,再次访问,看见error.log文件里,打印出了错误信息
在这里插入图片描述
ennnnnn,错误信息有了,可以百度一下了嘛,结果发现…等等,咱们的php-fpm编译安装完,好像没有启动啊?
行吧,启动php-fpm先

php-fpm

我在编译安装的时候,在系统路径里面设置过php-fpm的路径,所以可以直接用

vi /etc/profile
#插入代码
export PATH="$PATH:/usr/local/php/bin:/usr/local/nginx/sbin/"

行吧,启动了,再运行,还是报错,再看错误日志

2020/11/20 13:09:41 [crit] 8483#0: *53 stat() "/root/project/test1/" failed (13: Permission denied), client: 192.168.247.129, server: lara6.com, request: "GET / HTTP/1.1", host: "192.168.247.129:8080"
2020/11/20 13:09:41 [error] 8483#0: *53 FastCGI sent in stderr: "Unable to open primary script: /root/project/test1/index.php (No such file or directory)" while reading response header from upstream, client: 192.168.247.129, server: lara6.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.247.129:8080"

ennnnnn,行吧,咱们再百度一个?
这次发现是运行php-fpm和运行nginx的用户不同,所以报错
额,头大 如斗,百度了发现各种办法都不对,有说新建个nginx用户及用户组的,有说给权限啥的,都试过了,完全没有起作用。
最后,看到这两篇文章的解答:

php-fpm 以user =root group=root 的权限运行

php-fpm以root权限运行

豁然开朗,得,都用root用户来走,那不就好了嘛。
于是修改
1.nginx.conf
在这里插入图片描述
将nginx的用户改为root,默认这里是nobody,而且是注释掉的,改过来就行了。改完重启nginx

2.php-fpm.conf
一般来说,php-fpm 的配置文件,都在php的安装路径/etc/下面,例如我的
在这里插入图片描述
php很贴心的为我们准备了个更多配置的文件夹,一般来说我们不去改默认配置,就改php-fpm.d/www.conf就可以了

vi www.conf

在这里插入图片描述

把这里的user跟group都改成root,然后 php-fpm -R -D运行
可能会遇到以下错误

[root@centos php-fpm.d]# php-fpm -R -D
[20-Nov-2020 13:21:12] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[20-Nov-2020 13:21:12] ERROR: FPM initialization failed
[root@centos php-fpm.d]# killall php-fpm
[root@centos php-fpm.d]# php-fpm -R -D #-R root运行,-D后台运行

嗯,再次访问域名,终于成功了,可喜可贺,可喜可贺。撒花。

============================================================
太长不看的看这里:

1.统一用户,将nginx.conf 的用户修改为root,将php-fpm配置里面的用户及用户组也修改为root
2.分别重启服务器及php-fpm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值