TP5部署伺服器問題總結

来源:https://www.cnblogs.com/phpf/archive/2018/08/14/phper.html
-Advertisement-
Play Games

及最近部署TP5遇到了很多坑,各種環境下都會出現一些問題,下麵是我記錄的排坑之路 先說最簡單的lnmp一鍵安裝包,我用的是1.5穩定版 安裝命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf ...


 

 

 

及最近部署TP5遇到了很多坑,各種環境下都會出現一些問題,下麵是我記錄的排坑之路

先說最簡單的lnmp一鍵安裝包,我用的是1.5穩定版

安裝命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp(安裝+編譯一鍵搞定)

如需要安裝LNMPA或LAMP,將./install.sh 後面的參數lnmp替換為lnmpa或lamp即可。如需更改網站和資料庫目錄、自定義Nginx參數、PHP參數模塊、開啟lua等需在運行./install.sh 命令前修改安裝包目錄下的 lnmp.conf 文件,詳細可以查看lnmp.conf文件參數說明

第一個提示:提供始終資料庫(我用的3),直接輸入數字回車即可

第二個提示:輸入資料庫密碼

第三個提示:是否啟用Innodb,直接回車或者y回車

第四個提示:選擇PHP版本(預設5.6)我的是預設版本

第五個提示:我選的預設不安裝(我的是預設)

第六個提示:選擇apache版本(我選的預設)

第七個提示:如果顯示Nginx: OK,MySQL: OK,PHP: OK

並且Nginx、MySQL、PHP都是running,80和3306埠都存在,並提示安裝使用的時間及Install lnmp V1.5 completed! enjoy it.的話,說明已經安裝成功。
某些系統可能會一直卡在Install lnmp V1.5 completed! enjoy it.不自動退出,可以按Ctrl+c退出。

安裝完成接下來開始使用就可以了,按添加虛擬主機教程,添加虛擬主機後可以使用sftpftp伺服器上傳網站代碼,將功能變數名稱解析到VPS或伺服器的IP上,解析生效即可使用。

第八個提示:安裝失敗

如果出現類似上圖的提示,有一個或幾個沒安裝成功表明安裝失敗!!需要用winscp或其他類似工具,將/root目錄下麵的lnmp-install.log下載下來,到LNMP支持論壇發帖註明你的系統發行版名稱及版本號、32位還是64位等信息,並將lnmp-install.log壓縮以附件形式上傳到論壇,我們會通過日誌查找錯誤,並給予相應的解決方法。



預設LNMP是不安裝FTP伺服器的,如需要FTP伺服器:https://lnmp.org/faq/ftpserver.html

 

添加虛擬主機:lnmp封裝好的很方便

lnmp vhost add //添加虛擬主機

輸入你的虛擬功能變數名稱,我的是www.tp5api.cn

這裡詢問是否添加更多功能變數名稱,直接再輸入要綁定的功能變數名稱,我直接回車跳過了

網站目錄不存在的話會創建目錄。也可以輸入已經存在的目錄或要設置的目錄(註意如要輸入必須是全路徑即以/開頭的完整路徑!!!)。不輸入直接回車的話,採用預設目錄:/home/wwwroot/功能變數名稱

開啟偽靜態,利於SEO優化

預設已經有了discuz、discuzx、discuzx2(Discuz X二級目錄)、wordpress、wp2(WordPress二級目錄)、typecho、typecho2(Typecho二級目錄)、sablog、emlog、dabr、phpwind、、dedecms、drupal、ecshop、shopex等常用的Nginx偽靜態配置文件,可以直接輸入名稱進行使用,如果是二級目錄則需要對應配置文件里的二級目錄的名稱。

是否開啟錯誤日誌

如果啟用需要再輸入要設置的日誌的名稱,預設日誌目錄為:/home/wwwlogs/ 預設文件名為:功能變數名稱.log 回車確認後,會詢問是否添加資料庫和資料庫用戶。

如果要添加,需要先驗證MySQL的root密碼(註:輸入密碼將不顯示)
提示Enter database name: 後輸入要創建的資料庫名稱,要創建的資料庫用戶名會和資料庫同名,回車確認。
提示Please enter password for mysql user 資料庫名: 後輸入要設置的密碼,回車確認。

如果安裝了FTP伺服器會詢問是否添加FTP賬號

如果需要添加輸入 y ,不添加輸入 n 回車。

 提示Enter ftp account name: 後輸入要創建的FTP賬號名稱,回車確認。
提示Enter password for ftp account FTP賬號: 後輸入要設置的密碼,回車確認。

接下來是1.4新增的添加SSL功能

如果需要添加輸入 y ,不添加輸入 n 回車。
選擇了添加SSL會提示

有兩個選項,1 選項為使用自己準備好的SSL證書和key。

> > 提示Please enter full path to SSL Certificate file 後輸入要SSL證書的完整路徑和文件名,回車確認。
> > 提示Please enter full path to SSL Certificate Key file: 後輸入輸入要key文件的完整路徑和文件名,回車確認。

2 選項為使用免費SSL證書提供商Letsencrypt的證書,自動生成SSL證書等信息。

需要輸入一個郵箱回車確認。

提示 Press any key to start create virtul host... 後,回車確認便會開始創建虛擬主機。

添加成功會提示添加的功能變數名稱、目錄、偽靜態、日誌、資料庫、FTP等相關信息,如下圖:

##偽靜態管理##

LNMPA或LAMP可以直接使用網站根目錄下放.htaccess 來設置偽靜態規則(具體規則可以去程式官網網站找google百度),但是在LNMP下,需要使用Nginx偽靜態規則。
偽靜態可以隨時添加或刪除,如果添加完虛擬主機後忘記或沒有添加偽靜態,可以通過修改配置文件來添加偽靜態。
虛擬主機配置文件在:/usr/local/nginx/conf/vhost/功能變數名稱.conf

偽靜態規則文件需要放在/usr/local/nginx/conf/ 下麵。
編輯虛擬主機配置文件,可以使用vinanowinscp,後2個工具對新手來說簡單些。

例如前面我們添加的虛擬主機,打開後前半部分配置會顯示如下:

在root /home/wwwroot/www.vpser.net;這一行下麵添加:
include wordpress.conf;
上面的wordpress.conf為偽靜態文件,如需要其他偽靜態文件自己創建個並上傳到/usr/local/nginx/conf/ 下麵並include 偽靜態.conf; 加完保存,執行:/etc/init.d/nginx restart 重啟生效,如果報錯可能是添加有誤或偽靜態規則有誤。

1.4及之前版本偽靜態文件都在 /usr/local/nginx/conf/ 目錄下
1.5及之後版本偽靜態文件都在 /usr/local/nginx/conf/rewrite 目錄下
偽靜態文件名稱後面帶2的是二級目錄的偽靜態,可以根據自己需求修改裡面二級目錄的名稱或複製為其他名字後include到虛擬主機配置文件中。

##上傳網站程式##

如果已經安裝FTP伺服器可以直接使用ftp客戶端通過你的FTP信息登錄後上傳網站或sftp等軟體上傳網站,設置好相關許可權開始安裝即可。
上傳網站後建議執行:chown www:www -R /path/to/dir 對網站目錄進行許可權設置,/path/to/dir替換為你網站目錄。
為了安全可以將一些不需要PHP運行的上傳文件之類的目錄去掉執行許可權,參考:http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html

##已存在虛擬主機添加ssl證書開啟https##

對於已存在的虛擬主機添加https站點,可以執行:lnmp ssl add 命令添加ssl證書,目前有兩種方式一種是使用自備的ssl證書,二是採用Let'sEncrypt的免費證書。添加過程和前面的添加虛擬主機的過程是一樣的,只是會多一項填寫ssl證書和key的步驟或直接選擇Let'sEncrypt自動生成證書。
如果是1.*版本升級到1.4或更改版本的需要參考:https://lnmp.org/faq/upgrade1-4.html 中的說明,如果有提示不安全或不顯示小綠鎖上面鏈接中也有說明。

##列出網站(虛擬主機)##

執行:lnmp vhost list


##刪除網站(虛擬主機)##

執行:lnmp vhost del


刪除網站會先列出當前已有虛擬主機,按提示輸入要刪除的虛擬主機功能變數名稱 回車確認。

這裡只是刪除虛擬主機配置文件,網站文件並不會刪除需要自己刪除。
LNMP 1.2下需要執行:chattr -i /網站目錄/.user.ini 後才能刪除網站目錄。

當執行chown或chmod對網站目錄屬主屬組或許可權進行操作時可能會提示chown: changing ownership of `/home/wwwroot/default/.user.ini': Operation not permitted,不需要理會,如果有強迫症可以參考前面先進行chattr -i的操作。

##預設網站(虛擬主機)##

LNMP預設網站配置文件:/usr/local/nginx/conf/nginx.conf
LNMPA預設網站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.conf
LAMP預設網站配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf

##防跨目錄設置##

LNMP 1.1及之前的版本使用php.ini裡面,open_basedir設置

LNMP 1.2及更高版本防跨目錄功能使用.user.ini,該文件在網站根目錄下,可以修改.user.ini 裡面的open_basedir的值來設置限制訪問的目錄或刪除來移除防跨目錄的設置。

.user.ini文件無法直接修改,如要修或刪除需要先執行:chattr -i /網站目錄/.user.ini
可以使用winscp文件管理vim編輯器nano編輯器進行修改。
刪除的話rm -f /網站目錄/.user.ini 就可以。
修改完成後再執行:chattr +i /網站目錄/.user.ini
.user.ini不需要重啟一般5分鐘左右生效,也可以重啟一下php-fpm立即生效。
如果要更改網站目錄必須要按上述方法修改防跨目錄的設置,否則肯定報錯!!

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錯誤也可能是這個問題引起的。


LNMPA或LAMP 模式1.2版本以上的防跨目錄的設置使用的對應apache虛擬主機配置文件(lnmp管理工具添加的話文件是 /usr/local/apache/conf/vhost/功能變數名稱.conf )里的php_admin_value open_basedir參數進行設置。如果不需要設置可以在前面加 # 進行註釋,或自行修改目錄的限制。
重啟apache生效。

##pathinfo設置##

LNMP上各個版本pathinfo各個版本的設置基本一樣:

lnmp v1.1上,修改對應虛擬主機的配置文件(/usr/local/nginx/conf/vhost/功能變數名稱.conf)
去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 註釋掉。

1.2,1.3,1.4,1.5及以上版本,修改對應虛擬主機的配置文件(/usr/local/nginx/conf/vhost/功能變數名稱.conf)
將include enable-php.conf;替換為include enable-php-pathinfo.conf;

1.4版本多PHP版本啟用pathinfo的話,進入/usr/local/nginx/conf目錄,拷貝一份enable-php-pathinfo.conf 命名為 enable-php7.2-pathinfo.conf,將 enable-php7.2.conf 文件里 fastcgi_pass這一行內容完整的複製下來替換 enable-php7.2-pathinfo.conf 文件中的 fastcgi_pass這一行 ,保存,再按前面的方法修改虛擬主機 include enable-php7.2-pathinfo.conf; 就行了,其他版本以此類推。

1.5版本多PHP版本開啟pathinfo的話,可以在lnmp vhost add 是選擇啟用pathinfo,如果存在多PHP版本就會提示你選擇,也可以直接修改虛擬主機配置文件將include enable-php.conf; 替換為 include enable-php7.2-pathinfo.conf; 保存

修改pathinfo需要重啟nginx生效。

##資料庫管理##

1.3以上版本,可以在添加虛擬主機時選擇創建資料庫,也可以單獨使用 lnmp database add 按提示添加資料庫,添加的用戶名和資料庫名是同名的。
添加資料庫命令:lnmp database add
編輯資料庫用戶密碼命令:lnmp database edit
刪除資料庫命令:lnmp database del
列出所有資料庫命令:lnmp database list

這些資料都是在 https://lnmp.org/faq/lnmp-vhost-add-howto.html(lnmp官網查到的)

很多東西是直接複製過來的,以我的水準寫的不會比官網手冊好

如果有人使用寶塔tp5報錯open_base_dir,網站設置裡面有一個安全防護,關掉了就可以(坑我好長時間)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • c/c++ 類成員變數,成員函數的存儲方式,以及this指針在c++中的作用 c++不會像上圖那樣為每一個對象的成員變數和成員函數開闢記憶體空間, 而是像下圖那樣,只為每一個對象的成員變數開闢空間。成員函數的只開闢一個共用的空間,所有對象的都可以訪問這個公共的空間。 但是就產生了一個問題,當某一個對象 ...
  • const 在 的右邊:不可以改指針的指向,可以用指針改裡面的值 int const p; const在 的左邊:可以改指針的指向,不可以用指針改裡面的值 int const p; const int p; const在 的兩邊都有:既不可以改指針的指向,也不可以用指針改裡面的值 int const ...
  • 知識點1:如何設置每個py 文件新建時輸出自己的名字及日子打開file->settings->file and code templete->python script ,輸入如下2行,點擊apply即可# __author__= "Hellen" #如果要系統自動貨物用戶名,輸入#__author ...
  • c/c++ 哈希表 hashtable 概念:用key去查找value 實現hash函數有很多方法,本文用除留餘數法。 除留餘數法的概念: 取一個固定的基數的餘數,註意不能用偶數,用偶數的話,分佈會不均勻 發生衝突時,用鏈地址法解決 圖形入圖: "完整代碼" ...
  • 給定一個二叉樹,找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 最小深度是從根節點到最近葉子節點的 ...
  • 給定一個二叉樹,找出其最大深度。 二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 /** * Definition ...
  • 1.單例模式的定義 單例模式確保某個類只有一個實例,而且自行實例化並向整個系統提供這個實例。 2.單例模式的特點 單例類只能有一個實例。 單例類必須自己創建自己的唯一實例。 單例類必須給所有其他對象提供這一實例。 3.單例模式的Java代碼 單例模式分為懶漢式(需要才去創建對象)和餓漢式(創建類的實 ...
  • 平臺:mac 網站:人人網 最近練習爬蟲登陸,方法一是找頁面里的js文件,通過解析js文件找到cookie信息再保持。但現在的站點登陸都有驗證碼,而且最煩的是request時data表單里的值基本上沒有不加密的,js學的不好,就別想著破解了。所以想起了用的比較少的selenium模塊,用於模擬登陸並 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...