一.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返回的,看得我有點懵,這時候可以幫助調試的有三個東西。
- 設置laravel為調試模式,在.env和app.config里面設置即可。
- 設置php.ini里面的display_errors改為On。
- 查看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也有這樣的限制,把這個限制注釋掉即可,然后重啟服務即可。