搭建laravel到nginx

永远的零 2020-01-12 PM 130℃ 0条

nginx.jpg**

一.laravel的安装

搭建的第一步当然是安装好laravel,这里推介composer安装,由于国内的问题,极其推介使用国内的镜像去搭建,我在终端里本已
经设置好常规的https和http之类的翻墙代理,最后还是不能使用常规的方式下载,最后还是老老实实用国内镜像下载。

# 设置全局的composer下载镜像为国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 下载laravel
composer create-project --prefer-dist laravel/laravel myproject "5.5.*"

期间可能会遇到一些php函数执行失败(由于php会限制一些涉及到安全问题的函数,如exec,需要在php.ini里面去进行设置,然后重启php-fpm即可)

二. 部署到nginx

根据官方文档,我直接加入对应的规则,具体的根据自己服务器去进行跳转,需要注意的是映射的网站是根目录public。

server {
    listen 80;
    server_name example.com;
    root /example.com/public;
    
    # 注意这个error_log,有些错误可能页面不会展示出来,但是可以通过nginx的error_log查询出来
    error_log /home/wwwroot/error.log;  

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
service nginx restart

设置好对应目录的权限,如无意外的话一般这个时候访问对应的域名应该是ok的了。

三.遇到的坑

我在配置好对应的环境之后,访问对应的域名,只返回一个500的错误提示,且这个提示不是laravel返回的,看得我有点懵,这时候可以帮助调试的有三个东西。

1、设置laravel为调试模式,在.env和app.config里面设置即可。
2、设置php.ini里面的display_errors改为On。
3、查看nginx的error.log。

最后我是通过查看nginx的error.log来发现问题的所在的,原因是laravel用到open_basedir这个函数,而这个函数在我的nginx的fastcgi_param里面是不允许访问除了当前目录以外的其他目录,于是我把这个限制给去掉。

#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

**另外在php.ini也有这样的限制,把这个限制注释掉即可,然后重启服务即可。

人要么永不做梦,要么梦得有趣;人也必须学会清醒:要么永不清醒,要么清醒得有趣。

评论啦~