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


一般情況下每個虛擬主機就是一個網站,網站一般通過域名進行訪問。
本文為教程適合LNMP 1.2+,各個版本的添加過程基本類似,按提示操作即可。1.4版+添加了SSL選項可以選擇Letsencrypt和自備SSL證書,多PHP版本選擇等功能。1.3版增加了FTP和數據庫的創建等。LNMP 1.4+的防跨目錄同時在網站根目錄.user.ini和fastcgi.conf中進行管控,LNMP1.2的防跨目錄在網站根目錄下的.user.ini,1.1版在php.ini中;移除防跨目錄設置方法
LNMP 1.1及之前的版本采用/root/vhost.sh 進行添加虛擬主機。

LNMP 1.2開始使用lnmp命令進行管理,具體可以參看更新記錄
虛擬主機管理基本命令介紹:lnmp vhost {add|list|del}

之前版本的LNMP都可以升級到新版的lnmp管理腳本,升級到1.4教程

##添加網站(虛擬主機)##


如果輸入有錯誤需要刪除時,可以按住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偽靜態配置文件,可以直接輸入名稱進行使用,如果網站是在二級目錄則需要修改對應偽靜態文件里的二級目錄的名稱。

lnmp-add-vhost-pathinfo.png
該提示為詢問是否啟用pathinfo,只有極少數程序使用pathinfo,如基於CI框架的程序。常見的wordpress、discuz x等都不需要開啟!!!不需要pathinfo的網站程序開啟pathinfo會訪問出現各種問題。
默認回車不啟用,啟用請輸入 y 后回車。


這一步是設置日志,如啟用日志輸入 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文件的完整路徑和文件名,回車確認。
> > LAMP下會提示Please enter full path to SSL Chain file: 一般Apache2.2需要用到這個添加上證書鏈,2.4前面證書是補全證書鏈的話不用。

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 中的說明.

如果訪問https站點時提示不安全或不顯示小綠鎖的話一般有以下幾個原因:
SSL證書可能到期;
網站代碼里可能有http的資源如css、js、圖片等;一般可以在Chrome瀏覽器里按F12快捷鍵,刷新,在Console選項下一般都會有提示。

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

執行: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或更高版本也可以直接使用lnmp安裝包 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參數進行設置。如果不需要防跨目錄設置可以在 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM