1. 程式人生 > >LNMP新增、刪除虛擬主機及偽靜態使用教程

LNMP新增、刪除虛擬主機及偽靜態使用教程

##新增網站(虛擬主機)##

如果輸入有錯誤需要刪除時,可以按住Ctrl再按Backspace鍵進行刪除。 執行:lnmp vhost add 出現如下介面: 這裡要輸入要新增網站的域名,我們已新增www.vpser.net域名為例,如上圖提示後輸入域名 www.vpser.net 回車後提示 這裡詢問是否新增更多域名,直接再輸入要繫結的域名,這裡我們將 vpser.net 也綁上,多個域名空格隔開,如不需要綁其他域名就直接回車。

(注:帶www和不帶www的是不同的域名,如需帶www和不帶的www的域名都訪問同一個網站需要同時都繫結)。

下面需要設定網站的目錄 網站目錄不存在的話會建立目錄。也可以輸入已經存在的目錄或要設定的目錄(注意如要輸入必須是全路徑即以/開頭的完整路徑!!!

)。不輸入直接回車的話,採用預設目錄:/home/wwwroot/域名 偽靜態可以使URL更加簡潔也利於SEO,如程式支援並且需要設定偽靜態的話,如啟用輸入 y ,不啟用輸入 n 回車(注意LNMPA或LAMP模式沒有該選擇項!)。 預設已經有了discuz、discuzx、discuzx2(Discuz X二級目錄)、wordpress、wp2(WordPress二級目錄)、typecho、typecho2(Typecho二級目錄)、sablog、emlog、dabr、phpwind、、dedecms、drupal、ecshop、shopex等常用的Nginx偽靜態配置檔案,可以直接輸入名稱進行使用,如果是二級目錄則需要對應配置檔案裡的二級目錄的名稱。
這一步是設定日誌,如啟用日誌輸入 y ,不啟用輸入 n 回車。 如果啟用需要再輸入要設定的日誌的名稱,預設日誌目錄為:/home/wwwlogs/ 預設檔名為:域名.log 回車確認後,會詢問是否新增資料庫和資料庫使用者。 如果需要新增資料庫輸入 y ,不新增資料庫輸入 n 回車。 如果要新增,需要先驗證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或者wdcp建立的站點後刪除站點目錄無法刪除,甚至已經加了root許可權.

blob.png

解決辦法

執行:chattr -i /home/wwwroot/yoursite/.user.ini

在進行刪除

blob.png

chattr命令:有時候你發現用root許可權都不能修改某個檔案,大部分原因是曾經用chattr命令鎖定該檔案了。chattr命令的作用很大,通過chattr命令修改屬效能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。lsattr命令是顯示chattr命令設定的檔案屬性.

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

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