最近在部署一個私人項(xiàng)目湿刽,遇到了不少坑的烁,現(xiàn)在記錄下來,這里更多的是分享一下技巧:
前言
項(xiàng)目的框架是thinkPHP5.0诈闺,TP5.0框架的項(xiàng)目入口index.php不在根目錄渴庆,在public底下:
發(fā)現(xiàn)問題
而剛好WDCP有個弊病,就是創(chuàng)建站點(diǎn)后項(xiàng)目文件都要部署在public_html底下雅镊,按照官方的原話講如果不放底下項(xiàng)目將無法正常訪問襟雷,那么既然public_html底下才是根目錄,訪問的時候肯定是訪問這一層的內(nèi)容仁烹,我們想要一進(jìn)來就到public那么就要配置一下偽靜態(tài)規(guī)則耸弄,或者將public改成public_html命名
解決問題
偽靜態(tài)的設(shè)置
更改框架public文件名為public_html讓wdcp去識別直接訪問這個目錄是一種不錯的解決方案
但是也有一定的風(fēng)險,萬一框架中哪個文件引用了public文件夾呢卓缰?
所以计呈,鑒于在不想改動框架結(jié)構(gòu)的情況下,我們還是配置nginx是比較妥當(dāng)?shù)霓k法征唬。
這里我們項(xiàng)目的的運(yùn)行環(huán)境是 nginx-1.8.1 我們對nginx添加偽靜態(tài)規(guī)則:
注意index.php的查找順序不要把index.html放前面捌显,否則會出現(xiàn)只加載標(biāo)簽不加載樣式的尷尬問題。总寒。百度又百度不到這里我踩了好久的坑扶歪。。摄闸。善镰。
server {
listen 8081;
root /www/web/task/public_html/public; #配置站點(diǎn)根目錄為public文件夾下,原本wdcp默認(rèn)是在public_html,無法通過界面修改年枕。炫欺。
server_name xxx.xxx.xxx.xxx:8081;
index index.php index.html index.htm; #這里一定要注意index.php的查找順序(否則配置好后頁面會沒有樣式。熏兄。品洛。。)霍弹,把index.php提前
location / {
#如果請求的文件沒有匹配到毫别,把匹配到的路徑交給index.php處理,這是由于php開啟了pathinfo,nginx無法處理要交給php處理路由
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
try_files $uri $uri/ /?$args;
}
(以下...配置省略)
....
}
配置完成后如果生效記得鎖定配置文件典格,防止更新站點(diǎn)配置時被wdcp程序自己篡改我們的配置文件
重啟web,訪問項(xiàng)目地址但是是卻是tp生成的500錯誤頁岛宦,說明public底下的index.php入口文件已經(jīng)可以正常訪問了,還差點(diǎn)什么東西耍缴。砾肺。挽霉。
runtime文件讀寫權(quán)限設(shè)置
排查了很久,一直以為是偽靜態(tài)規(guī)則寫錯了变汪。無奈侠坎,百度一下thinkphp 500的報錯,有人說可能是因?yàn)?thinkPHP沒有runtime的寫入權(quán)限裙盾,runtime是用來記錄tp運(yùn)行錯誤日志的实胸,想想有道理,更改runtime權(quán)限為777,問題得到解決番官,重啟了服務(wù)器庐完,可以正常訪問項(xiàng)目了。
無法上傳文件排查(其他文件讀寫權(quán)限的設(shè)置)
其他文件夾讀寫權(quán)限設(shè)置徘熔,比如upload门躯,這個如果整站有提供這個功能要配置777權(quán)限
其他錯誤排查
查看TP框架的runtime/log/下的錯誤日志查找具體問題
附錄:WDCP的一些配置技巧
安裝WDCP
wget http://dl.wdlinux.cn/lanmp_laster.tar.gz
tar zxvf lanmp_laster.tar.gz
sh lanmp.sh
默認(rèn)安裝N+A的引擎組合(nginx+apache),也可安裝后在系統(tǒng)設(shè)置里更改
可安裝多版本PHP更靈活應(yīng)用,參考http://www.wdlinux.cn/bbs/thread-57643-1-1.html
安裝完后,默認(rèn)的后臺管理地址如下:
http://ip:8080
用戶名:admin 默認(rèn)密碼:wdlinux.cn
mysql默認(rèn)的管理用戶名:root 默認(rèn)密碼:wdlinux.cn
官網(wǎng)安裝教程:
https://www.wdlinux.cn/wdcp/install.html
安裝酷师,升級wdcp讶凉、更改wdcp訪問端口后無法正常訪問:
第一步,確定安裝或升級完成山孔,在安裝或升級過程中懂讯,是否有提示什么錯誤信息?
第二步饱须,用netstat -lnpt查看端口域醇,是否有wdcp的程序和端口號台谊,如下圖所示
那個8080就是端口號
A 如果有端口號蓉媳,但打不開,請檢查防火墻
B 如果沒有端口號锅铅,重新啟動下,如下
service wdcp restart(實(shí)測新版貌似不會生效酪呻,這是一個巨坑)
或
sh /www/wdlinux/wdcp/wdcp.sh start(實(shí)測生效,啟動后wdcp打開正常)
看是否啟動成功
重起成功后盐须,重復(fù)第二步開始檢查
參考鏈接:https://www.wdlinux.cn/bbs/viewthread.php?tid=52729&extra=&page=1
WDCP配置不同端口訪問不同網(wǎng)站
站點(diǎn)配置里增加訪問端口玩荠,記得在wdcp增加防火墻端口,云服務(wù)器上增加安全組規(guī)則
最重要的是贼邓,不管你已經(jīng)是配置好的站點(diǎn)還是新建的站點(diǎn)阶冈,都要在對應(yīng)的站點(diǎn)配置里選擇你前面配置過的web端口保存設(shè)置,重啟web后才會生效:
WDCP針對站點(diǎn)增加偽靜態(tài)規(guī)則
首先在Rewrite規(guī)則管理增加偽靜態(tài)規(guī)則配置文件:
在想要對應(yīng)的站點(diǎn)配置選擇你增加的偽靜態(tài)規(guī)則:
這時候查看nginx配置你會發(fā)現(xiàn)這里多出了一行(意思是導(dǎo)入你剛才選擇配置的規(guī)則文件):
如果沒有需要自己添加導(dǎo)入的代碼:
include /www/wdlinux/wdcp/rewrite/xxxxx(你剛才添加的配置文件名稱).conf;
手動添加保存后塑径,重啟WEB服務(wù)即可解決問題
WDCP 創(chuàng)建數(shù)據(jù)庫女坑,并且讓數(shù)據(jù)庫可以遠(yuǎn)程訪問
WDCP修改mysql,root用戶的密碼(安全需要)
wdcp 安裝和切換其他版本的PHP
CentOS 7.X系列已不支持php 5.2/5.3的版本,如要使用5.2/5.3的老版本统舀,可使用6.X的OS
只有單N或N+A組合的WEB引擎中匆骗,才支持多PHP版本及指定PHP劳景,單apache引擎時無效
若是條件滿足,請繼續(xù)碉就。若是不滿足盟广,請自行手動配置
安裝方法如下:
wget http://down.wdlinux.cn/in/phps.sh
sh phps.sh 5.6.30
(其他版本請更換后面對應(yīng)的數(shù)字,共支持7個版本的PHP瓮钥,如5.2.17/5.3.29/5.4.45/5.5.38/5.6.30/7.0.18/7.1.4)
看到如下界面后說明安裝成功筋量,可以去面板設(shè)置一下自啟,同時也需要在對應(yīng)的站點(diǎn)配置里選擇對應(yīng)的PHP版本才會生效