搭建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也有這樣的限制,把這個限制注釋掉即可,然后重啟服務即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM