• 搭建laravel到nginx


    一.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也有这样的限制,把这个限制注释掉即可,然后重启服务即可。

  • 相关阅读:
    感谢一个名叫“祯玥”的姑娘
    下一代互联网
    伤心时要读的三十八句
    任何企业的竞争,归根结底都是智能的竞争
    互联网创业必须过的槛(转)
    钻到牛角尖里面去,想开公司必需知道的奥秘
    重游草堂
    牛根生:我们应该学会“三换思维”
    领导者的感染力和传染力
    幸福是一种心境(转)
  • 原文地址:https://www.cnblogs.com/s-b-b/p/8481381.html
Copyright © 2020-2023  润新知