LNMP一键包用于Laravel框架需注意事项

作者测试环境
系统  CentOS7.3
LNMP一键包部署  Nginx 1.16.1  PHP 7.3  Mysql 8.0
测试项目根目录  /home/wwwroot/default/newjob/public
项目基于Laravel框架
第一个坑

访问站点的时候出现404页面

  • 解决方案:
    在nginx配置文件中加上以下内容,因作者测试环境没有建虚机所以直接使用nginx.conf中的默认配置
配置文件  /usr/local/nginx/conf/nginx.conf
在server{}中添加
location / {  
        try_files $uri $uri/ /index.php?$query_string;  
} 

配置文件  /usr/local/nginx/conf/enable-php.conf
将try_files $uri =404;注释掉
第二个坑

再次访问时出现报错file not found.

  • 解决方案:
将nginx错误日志打开
在配置文件/usr/local/nginx/conf/nginx.conf中
access_log /home/wwwlogs/access.log;
下面添加一行
error_log /home/wwwlogs/error.log;  # 打开错误日志

访问错误日志发现报错:
2019/09/05 10:23:10 [error] 3214#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.18.71.37, server: _, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "172.18.71.220"

网上查找文档后发现需要将
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
修改为:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

但作者用一键包部署的默认已经是上面的配置,后来转念一想$document_root指的是配置文件中的站点根目录设置,估计与根目录有关
作者根目录设置的是/home/wwwroot/default,但项目是在default下的newjob/public,访问通过IP/newjob/public的方式访问,依旧报错,因此尝试修改了nginx的配置文件将根目录调整为/home/wwwroot/default/newjob/public后重新访问发现正常了。

第三个坑

以上问题都处理后再次访问终于出现了比较熟悉的报错了,信息如下:
Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/default/newjob/vendor/autoload.php) is not within the allowed path(s): (/home/wwwroot/default/newjob/public/:/tmp/:/proc/) in /home/wwwroot/default/newjob/public/index.php on line 24

  • 解决方案:
删除站点根目录下的隐藏文件.user.ini
$ sudo chattr -i /网站根目录/.user.ini
$ sudo rm -f /网站根目录/.user.ini

编辑配置文件/usr/local/nginx/conf/fastcgi.conf
将fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";注释重启nginx即可

你可能感兴趣的:(Linux运维文档)