找工作需要,急需把一個小項目部署起來展示使用。剛剛接觸Linux,研究編譯安裝的話有點來不及。然后就接觸到了LNMP一鍵安裝包這個神器。
官網:https://lnmp.org/ (里面的各種內容還是很齊全的哦)
第一部分:LNMP一鍵包安裝
參考官方教程:https://lnmp.org/install.html
基本沒什么問題。
第二部分:添加虛擬主機
參考官方教程:https://lnmp.org/faq/lnmp-vhost-add-howto.html
第二部分:配置
#pathinfo及url重寫配置#
我的做法是,在/usr/local/nginx/conf/vhost下的對應虛擬主機配置文件中,將include enable-php.conf;替換為include enable-php-pathinfo.conf;實現path。然后在下一行添加include thinkphp.conf;(較低版本可能沒有這個文件)實現url重寫隱藏index.php。
#跨目錄設置#(重要)
這是最容易錯的地方,一般為了安全起見,我們會禁止應用跨目錄訪問。
LNMP 1.2及更高版本防跨目錄功能使用.user.ini,該文件在網站根目錄下,可以修改.user.ini 里面的open_basedir的值來設置限制訪問的目錄或刪除來移除防跨目錄的設置。
.user.ini文件無法直接修改,如要修或刪除需要先執行:chattr -i /網站目錄/.user.ini。
修改完成后再執行:chattr +i /網站目錄/.user.ini
刪除的話rm -f /網站目錄/.user.ini 就可以。
如果要更改網站目錄必須要按上述方法修改防跨目錄的設置,否則肯定報錯!!
LNMP 1.4上如果不想用防跨目錄或者修改.user.ini的防跨目錄的目錄還需要將 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在該行行前添加 # 或刪除改行,需要重啟nginx。
LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目錄下的 ./remove_open_basedir_restriction.sh 進行移除。
在Thinkphp、codeigniter、Laravel等框架下,網站目錄一般是在public下,但是public下的程序要跨目錄調用public上級目錄下的文件,因為LNMP默認是不允許跨目錄訪問的,所以都是必須要將防跨目錄訪問的設置去掉,有時候這些框架類的程序提示500錯誤也可能是這個問題引起的。
我的解決方法是,例如你的虛擬主機配置中網站根目錄設置在項目目錄(一般為域名www.xxxx.com)下的public文件夾,則目錄下的.user.ini設置為
open_basedir=/home/wwwroot/www.xxxx.com/:/tmp/:/proc/ 去掉public。
由於域名的原因(沒錢),想把項目直接放在/home/wwwroot/default目錄下直接通過IP訪問。現在前端站點放里面訪問沒問題。PHP接口站點還在報錯中,沒有搞清楚里面的配置原理。有時間還是要好好學一下nginx啊。搞明白了再整理一篇文章出來。對於沒有域名的學生黨來說這個太重要了。
由於過了一段時間才整理的這篇文章,所以可能有遺漏的地方,歡迎留言,共同學習。
