相关服务安装指南
从零开始搭建Dcat Admin可参考以下顺序安装:
一、Linux 安装配置卸载 mysql 服务 – 谢幕后 (xmhweb.cn)
二、Linux 安装 php 服务和 composer – 谢幕后 (xmhweb.cn)
三、Linux 安装 nginx 服务 – 谢幕后 (xmhweb.cn)
四、Laravel 框架搭建
五、Dcat Admin后台系统搭建 – 谢幕后 (xmhweb.cn)
Laravel安装
创建你的第一个 Laravel 项目之前,确保你的本地机器上已经安装了 PHP 和 Composer ,安装 PHP 和 Composer 后,你可以通过 create-project
命令创建一个新的 Laravel 项目:
composer create-project laravel/laravel example-app
当应用程序创建完成后,你可以通过 Artisan CLI 的 serve
命令来启动 Laravel 的本地服务:
cd example-app
#默认监听127.0.0.1:8000端口,只能本机访问
php artisan serve
要让 Laravel 的开发服务器监听所有网络接口,你可以使用以下命令:
php artisan serve --host=0.0.0.0 --port=8000
启动服务后,在浏览器打开 10.10.166.213:8000
。
如果你计划长期运行 Laravel 服务并使其可从外部访问,建议使用更稳定的 Web 服务器软件(如 Nginx 或 Apache)作为反向代理,而不是直接使用内置的 PHP 开发服务器。这样可以提供更好的性能和更强的安全性。你需要配置 Web 服务器以正确处理传入的 HTTP 请求,并将它们转发到 Laravel 应用程序。参考链接:Linux安装nginx服务 – 谢幕后 (xmhweb.cn)
502代码问题排查
Laravel安装完成,环境检查没有问题,但是访问显示502错误,如下图。
检查PHP-FPM服务状态
# 对于PHP-FPM,命令可能如下,具体取决于您的系统和版本
# 请根据实际PHP版本调整
sudo systemctl status php8.1-fpm
如果服务未运行,尝试启动它
# 请根据实际PHP版本调整
sudo systemctl start php8.1-fpm
检查日志文件
查看Nginx和PHP-FPM的日志文件,这些日志可能会提供错误的详细信息。
Nginx日志:通常位于cat /var/log/nginx/error.log
PHP-FPM日志:位置可能变化,常见的有cat /var/log/php8.1-fpm.log
(根据PHP版本调整)
nginx日志如下:
connect() to unix:/run/php/php8.1-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 10.10.163.150, server: 10.10.166.213, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "10.10.166.213:8000"
原因:Nginx尝试连接到PHP-FPM时遇到了权限问题,可能是:
Socket文件的权限设置
PHP-FPM的socket文件(/run/php/php8.1-fpm.sock
)的权限可能不允许Nginx用户访问。您需要确认该socket文件的权限和所有者设置,确保Nginx的用户(通常是nginx
或www-data
)有权访问它。
查看socket文件的当前权限和所有者
ls -l /run/php/php8.1-fpm.sock
查完发现/run/php/php8.1-fpm.sock
的socket文件的当前权限和所有者是root
,默认情况下,Nginx运行在非root
用户(通常是nginx
或www-data
)下,因此无法访问属于root
用户的socket文件。
如果需要,更改文件的所有者(例如,如果您的Nginx运行在www-data
用户下)
sudo chown www-data:www-data /run/php/php8.1-fpm.sock
PHP-FPM配置
在PHP-FPM的配置文件中(通常是cat /etc/php/8.1/fpm/pool.d/www.conf
,根据您的PHP版本调整),确保listen.owner
和listen.group
正确设置为Nginx的用户,同时listen.mode
应该设置为可让Nginx用户访问。
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
保存文件并重启PHP-FPM服务。
systemctl restart php8.1-fpm
验证一下
ls -l /run/php/php8.1-fpm.sock
文件夹权限问题
访问服务显示如下图:
排查
查看Nginx日志:cat /var/log/nginx/error.log
,显示如下:
2024/02/06 03:38:05 [crit] 1941728#1941728: *8 open() "/var/lib/nginx/fastcgi/3/00/0000000003" failed (13: Permission denied) while reading upstream, client: 10.10.163.150, server: 10.10.166.213, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.1-fpm.sock:", host: "10.10.166.213:8000"
分析:Laravel应用无法写入其日志和会话文件,因为它没有足够的权限去操作/ITCAT/storage
目录及其子目录中的文件。
解决方法
将storage
和bootstrap/cache
目录的所有者更改为Web服务器用户www-data
并赋予相应的权限:
sudo chown -R www-data:www-data /ITCAT/storage
sudo chown -R www-data:www-data /ITCAT/bootstrap/cache
sudo chmod -R 775 /ITCAT/storage
sudo chmod -R 775 /ITCAT/bootstrap/cache
在更改文件权限后,建议清理Laravel的缓存:
php artisan cache:clear
php artisan config:clear
php artisan view:clear
评论