如何在LNMP環境下部署ThinkPHP5.*/Laravel5.專案
阿新 • • 發佈:2018-12-07
如何在LNMP環境下部署ThinkPHP5.*/Laravel5.4專案
本次介紹的基礎:
1) 安裝LNMP環境(本人使用的是www.lnmp.org下載的一鍵安裝包,各檔案路徑為預設路徑)
2) ThinkPHP5版本和Laravel5版本檔案目錄很相似,入口檔案都是根目錄下的public/index.php,所以部署類似,但是本次主要以thinkphp5版本為例
注意:
修改檔案前,切記先備份好檔案,修改檔案內容儘量先註釋一份,再複製一份修改
1、開啟php.ini配置檔案(php.ini留備份),找到display_errors,將display_errors = Off 修改成 display_errors = On,儲存並退出
1 ) cp ./php.ini ./php.ini.bak #複製php.ini檔案
2) vim ./php.ini #進去php配置檔案
3) 將display_errors = Off 修改成 display_errors = On #開啟錯誤資訊提示,僅限除錯,如果掛網站的話,切記關閉錯誤提示,將錯誤寫入日誌檔案,
4) :wq!
5) service php-fpm restart #重啟php服務,前提是php-fpm 已經新增到守護程序開機自啟動(chkconfig php-fpm on)
2 、每個域名下有一個隱藏檔案 .user.ini
1) chattr -i /home/wwwroot/test.com/.user.ini #給只讀屬性檔案解鎖,否則只可讀
2) chattr +i /home/wwwroot/test.com/.user.ini #給檔案加鎖,只可讀
3) cp /usr/local/nginx/conf/fastcgi.conf /usr/local/nginx/conf/fastcgi.conf.bak #備份檔案
3) vim /usr/local/nginx/conf/fastcgi.conf #開啟檔案
4) 將
fastcgi_param PHP_ADMIN_VALUE"open_basedir=$document_root/:/tmp/:/proc/" ;
修改為:
fastcgi_param PHP_ADMIN_VALUE"open_basedir=NULL";
5) service nginx restart #重啟nginx服務生效,前提是nginx已新增到開機自啟動(chkconfig nginx on)
3、修改php.ini的禁止的函式
6) 根據需要修改
4、修改域名對應的配置檔案,我用的是LNMP一鍵安裝包(www.lnmp.org)
1) cp /usr/local/nginx/conf/vhost/default.conf /usr/local/nginx/conf/vhost/test.com.conf //生成域名對應的.conf配置檔案
2) vim /usr/local/nginx/conf/vhost/test.com.conf //進入虛擬主機(域名)配置檔案
1)新增:
include other.conf;
include thinkphp.conf; //手動新增,thinkphp5.*框架使用 (本次使用)
#include laravel.conf; //手動新增, Laravel框架使用
include fastcgi.conf; //手動新增
include enable-php.conf;
2) 注意: 由於程式碼執行順序是自上而下,自左向右,為避免由於插入位置出現報錯,所以四行程式碼的位置儘量如上, 注意 include other.conf 在最上面,include fastcgi.conf在最下面
3) 新增前test.com.conf檔案程式碼:
server
{
listen 80;
#listen [::]:80;
server_name test.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/test.com/public;
include other.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
include thinkphp.conf;
include fastcgi.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/test.com.log;
}
4)新增後test.com.conf檔案程式碼:
server
{
listen 80;
#listen [::]:80;
server_name test.com ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/test.com/public;
include other.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
include thinkphp.conf; # lnmp安裝包特有
include fastcgi.conf; # lnmp安裝包特有
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/test.com.log;
}
總結:
1)環境使用: 我使用的LNMP整合環境,下載地址www.lnmp.org,這是比較快速的方法,不介意時間話,也可以用yum安裝,或者原始碼安裝,後二者需要一定時間,並且要自己配置軟體安裝路徑,lnmp安裝包是比較全面的包,裡面還有apache伺服器,ftp等其他工具,可以根據需要安裝,並且lnmp.org是全球活躍的免費開源社群,有自己的生態,有很多好的資源,也有詳細的新手教程,還將很多繁瑣的操作寫成了shell指令碼,使用者只要按文件執行shell指令碼檔案即可,個人覺得還不錯
2) 修改系統配置時,切記養成留備份的習慣,否則出問題會很痛苦,
3) 預設新買的伺服器的一些常用埠是關閉的需要手動開啟,如3306(MySQL),21(FTP),80(Http),22(SSH),443(Https),6739(Redis),11211(Memcached),一般建議埠需要用時再開啟,可以在/etc/sysconfig/iptables 防火牆檔案中開啟, 修改完防火牆後,需要重啟才能生效: service iptables restart ;常用的有前四個埠,Https需要證書才能生效,Redis和Memcached埠,阿里雲的Ecs伺服器埠配置可以直接示例配置裡修改,
4) 修改軟體系統配置時,修改後切記重啟服務,否則不生效,
如:
1) 修改php.ini檔案,必須service php-fpm restart
2) 修改test.com.conf 檔案,必須service nginx restart
5) 注意 4) 中的命令,如 service nginx restart 命令, 需要先新增守護程序(即設定開機自啟動),否則需要使用完整路徑執行命令,如service /usr/local/nginx/sbin/nginx restart
設定開機自啟動: chkconfig on
6) 網站安全: php.ini 開啟錯誤資訊提示(display_errors),僅限除錯,如果執行網站的話,切記關閉錯誤提示,否則錯誤提示容易被別有用心的人利用,攻擊你的網站;提供常見的解決方法:將錯誤寫入日誌檔案,定時檢查日誌檔案
7) 上述步驟中的檔案路徑均是lnmp安裝包的預設路徑,可根據需要自定義,個人建議最好不要改,否則出錯時比較麻煩
8) test.com.conf中include的.conf檔案內容:
1) thinkphp.conf
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
2) laravel.conf
location / {
try_files $uri $uri/ /index.php?$query_string;
}
3) pathinfo.conf
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
4) enable-php.conf
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
5) enable-php-pathinfo.conf
location ~ [^/]\.php(/|$)
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}