想要安装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
新版本浏览器报错:
看/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
放入根目录,测试通过.
查看WoWSimpleRegistration手册:
Fulfill the above prerequisites on your server.
Obtain the project files:
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.
下面配置文件就行了。