《走进科学》灵异事件:Nginx配置改了之后一直报错

想要安装WoWSimpleRegistration,就定下来要用nginx+php8 ,结果nginx那里加上php的支持之后一直报错:

复制代码
$ sudo service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

最灵异的地方就是:将配置恢复成今天修改之前的,还是同样的报错。简直是《走进科学》IT版。

当然用sudo systemctl status nginx.service看,报错还是不一样的。

自己写php配置后的报错:

复制代码
× nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-02-08 07:53:31 UTC; 11s ago
       Docs: man:nginx(8)
    Process: 47195 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)
        CPU: 28ms

Feb 08 07:53:31 ub systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 08 07:53:31 ub nginx[47195]: nginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/wow>
Feb 08 07:53:31 ub nginx[47195]: nginx: configuration file /etc/nginx/nginx.conf test failed
Feb 08 07:53:31 ub systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Feb 08 07:53:31 ub systemd[1]: nginx.service: Failed with result 'exit-code'.
Feb 08 07:53:31 ub systemd[1]: Failed to start A high performance web server and a reverse proxy server.

现在恢复配置之后的报错:

复制代码
× nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-02-08 06:33:07 UTC; 1h 9min ago
       Docs: man:nginx(8)
    Process: 29162 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 29163 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
        CPU: 86ms

Feb 08 06:33:05 ub nginx[29163]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
Feb 08 06:33:05 ub nginx[29163]: nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
Feb 08 06:33:06 ub nginx[29163]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
Feb 08 06:33:06 ub nginx[29163]: nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
Feb 08 06:33:06 ub nginx[29163]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
Feb 08 06:33:06 ub nginx[29163]: nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
Feb 08 06:33:07 ub nginx[29163]: nginx: [emerg] still could not bind()
Feb 08 06:33:07 ub systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Feb 08 06:33:07 ub systemd[1]: nginx.service: Failed with result 'exit-code'.
Feb 08 06:33:07 ub systemd[1]: Failed to start A high performance web server and a reverse proxy server.

这样就看明白了,是80端口绑定报错。然后脑子突然在线了,是不是今天调试的时候,把apache安装上去了? 打开本地页面http://127.0.0.1 ,果然是apache的页面。原来这就是nginx恢复配置也无法启动的原因啊!

把apache服务停掉:sudo systemctl stop apache2

然后再开nginx的服务:sudo service nginx restart

没有报错了! 好,现在开始调试php吧!

再仔细看php的报错:

复制代码
skywalk@ub:/etc/nginx$ journalctl -xeu nginx.service 
Feb 08 10:30:55 ub nginx[49977]: nginx: configuration file /etc/nginx/nginx.conf test failed
Feb 08 10:30:55 ub systemd[1]: nginx.service: Control process exited, code=exited, status=1/F>
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ An ExecStartPre= process belonging to unit nginx.service has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 1.
Feb 08 10:30:55 ub systemd[1]: nginx.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ The unit nginx.service has entered the 'failed' state with result 'exit-code'.
Feb 08 10:30:55 ub systemd[1]: Failed to start A high performance web server and a reverse pr>
░░ Subject: A start job for unit nginx.service has failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ A start job for unit nginx.service has finished with a failure.
░░ 
░░ The job identifier is 7021 and the job result is failed.

使用nginx -t查看:

复制代码
$ sudo nginx -t
nginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/wow.conf:18
nginx: configuration file /etc/nginx/nginx.conf test failed

定位到18行 ,但是没有问题啊,括号是成对的啊,所有的语句后面都有分号。

再仔细查看,发现最后第18行,有一个"~"字符,由于它跟vi的显示字符一样(颜色不同),误以为第18行是空行,将其删除,ok拉!

现在http服务器起来了,但是php服务还没起来。 手动写index.php 文件,结果没执行,被下载下来了

怀疑是php-fpm服务没有起来,手工起,结果失败:

sudo systemctl start php-fpm

Failed to start php-fpm.service: Unit php-fpm.service not found.

先查看apt有没有安装

复制代码
$ sudo apt list |grep fpm

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libfpm-helper0/jammy 4.2-2.3 amd64
libintelrdfpmath-dev/jammy 2.0u2-4 amd64
mono-fpm-server/jammy,jammy 4.2-2.3 all
php-fpm/jammy,jammy,now 2:8.1+92ubuntu1 all [installed]
php8.1-fpm/jammy-updates,jammy-security,now 8.1.2-1ubuntu2.14 amd64 [installed,automatic]
php8.1-fpm/jammy-updates,jammy-security 8.1.2-1ubuntu2.14 i386

再查看service

复制代码
$ sudo systemctl list-units --type=service | grep php
  php8.1-fpm.service                                                                        
loaded active running The PHP 8.1 FastCGI Process Manager

启动:

$ sudo systemctl start php8.1-fpm

现在php-fpm总算启动了

复制代码
php8.1-fpm.service 
             │ ├─17901 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)
             │ ├─17904 php-fpm: pool www
             │ └─17905 php-fpm: pool www

发现这条语句没有: fastcgi_index index.php;

加上之后照旧,就像php没有起来一样。

比着这个来一下:

location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

现在的浏览器报错是:403 Forbidden

又问了一遍文心一言,这回对该回答比较满意,只修改了域名了目录,一次过!

复制代码
server {
    listen 80;
    server_name wow.airoot.org;
  
    root /var/www/;  
    index index.php index.html index.htm;
  
    location / {  
        try_files $uri $uri/ =404;
    }  
  
    location ~ \.php$ {  
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # 根据你的 PHP-FPM 配置修改  
        fastcgi_index index.php;  
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
        include fastcgi_params;  
    }  
  
    location ~ /\.ht {
        deny all;  
    }  
}

现在把wow reg下载到目录,

配置好后,提示:Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.2.0".

当前版本:PHP 8.1.2

升级到8.2 并不太顺利,当前apt包里是没有的,网上找到的操作:

复制代码
sudo dpkg -l | grep php | tee packages.txt
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update
sudo apt install php8.2 php8.2-cli php-8.2{bz2,curl,mbstring,intl}

sudo apt install php8.2-fpm
# OR
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# When upgrading from older PHP version:
sudo a2disconf php8.1-fpm

## Remove old packages
sudo apt purge php8.1*

安装的时候提示:

CAVEATS:

  1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman

  2. If you are using apache2, you are advised to add ppa:ondrej/apache2

  3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline

or ppa:ondrej/nginx

新版本浏览器报错:

502 Bad Gateway

看/var/nginx/error.log :

024/02/09 01:38:13 [crit] 40709#40709: *1 connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.0.107, server: wow.airoot.org, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php8.1-fpm.sock:", host: "wow.airoot.org"

~

是php-fpm文件没有改过来。

将conf文件中fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;修改为fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;

报错没有文件:

启动php8.3-fpm :

sudo systemctl start php8.3-fpm

这时候打开http://wow.airoot.org/html/index.php页面是空白,源代码里空。

这样估计有点正常了。将php的测试文件test.php

复制代码
 <?php
phpinfo();?>

放入根目录,测试通过.

查看WoWSimpleRegistration手册:

  • Fulfill the above prerequisites on your server.

  • Obtain the project files:

    • Download and unzip the project, or clone it using Git:

      复制代码
      git clone https://github.com/masterking32/WoWSimpleRegistration
  • Navigate to the application/config/ directory and rename the file config.php.sample to config.php.

  • Edit the newly renamed config.php file, inserting your server details. Note that if using the "Image Captcha" feature, PHP's GD2 module must be enabled.

  • Once configuration is complete, your registration page should be operational.

下面配置文件就行了。

相关推荐
hello早上好3 分钟前
JDK 代理原理
java·spring boot·spring
PanZonghui8 分钟前
Centos项目部署之Java安装与配置
java·linux
zhanshuo10 分钟前
不依赖框架,如何用 JS 实现一个完整的前端路由系统
前端·javascript·html
火柴盒zhang11 分钟前
websheet在线电子表格(spreadsheet)在集团型企业财务报表中的应用
前端·html·报表·合并·spreadsheet·websheet·集团财务
khalil13 分钟前
基于 Vue3实现一款简历生成工具
前端·vue.js
拾光拾趣录20 分钟前
浏览器对队头阻塞问题的深度优化策略
前端·浏览器
用户81221993672220 分钟前
[已完结]后端开发必备高阶技能--自研企业级网关组件(Netty+Nacos+Disruptor)
前端
万少25 分钟前
2025中了 聊一聊程序员为什么都要做自己的产品
前端·harmonyos
沉着的码农39 分钟前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
Mr_Xuhhh1 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构