站內搜尋

Tuesday, August 21, 2018

[Linux][架站] Ubuntu 16.04 如何設定 apache 的 VirtualHost

當我們剛建好 ubuntu 16.04 的 apache server 時,預設網站目錄在 /var/www/html 下,假設我們想要將網站目錄放在 /var/www/site.myweb.com 下,設定方式如下...

$sudo su -

#cd /var/www

#mkdir site.myweb.com

#cd /etc/apache2/sites-available

#cp 000-default.conf site.myweb.com.conf

#vim site.myweb.com.conf
<VirtualHost *:80>         
  ServerName site.myweb.com
  DocumentRoot /var/www/site.myweb.com     
  ErrorLog ${APACHE_LOG_DIR}/error.log       
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

#a2ensite site.myweb.com.conf

#a2dissite 000-default.conf

#service apache2 restart

至此 在網址列輸入server的 IP 應該會導到 /var/www/site.myweb.com (沒內容可以建一個測試頁),如果 DNS 已經設好對應,則可以直接輸入網址(如: http://site.myweb.com)。

註1:
執行 a2ensite 啟用網站後,/etc/apache2/sites-enabled 會同步新增一個 site.myweb.com.conf,實際上這個檔案只是指向 sites-available/site.myweb.com.conf 的指向連結,如果要改設定值時,建議還是回到 sites-available 去改。

註2:
conf 檔可以進行很多設定,預設只有四項,如下:
<VirtualHost *:80>
  ServerAdmin webmaster@localhost  #網站管理者的email
  DocumentRoot /var/www/html  #網站檔案目錄的實際位置
  ErrorLog ${APACHE_LOG_DIR}/error.log  #訪問網站失敗時的log存放位置
  CustomLog ${APACHE_LOG_DIR}/access.log combined  #訪問網站成功時的log存放位置
</VirtualHost>

可以進一步視需求調整成我們需要的樣子,假設我們不想記錄log,方法如下:
<VirtualHost *:80>
  #ServerAdmin webmaster@localhost  #可以不用設定
  ServerName site.myweb.com  #網址
  DocumentRoot /var/www/html  #網站檔案目錄的實際位置
  #ErrorLog ${APACHE_LOG_DIR}/error.log  #如果不需要錯誤記錄 則註解掉
  ErrorLog off # 關掉 Error Log 記錄
  #CustomLog ${APACHE_LOG_DIR}/access.log combined  #如果不需要成功記錄 則註解掉
  CustomLog /dev/null combined # 關掉 Access Log 記錄 
</VirtualHost>

在網站log部分,如果需要記錄log,可以將存放log的檔案用網站名稱區隔開來 ,例如:
ErrorLog ${APACHE_LOG_DIR}/site.myweb.com_error.log
這樣的話,我們到 /var/log/apache2/ 就可以很清楚的找到指定網站的log檔。(不改的話所有網站的log會放在同一個檔案)
如果希望有訪問網站的log,又不想太頻繁的記錄,可以增加語法如下:
LogLevel warn  #調整log級別至有潛在危害時才記錄
SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" dontlog  #當訪問 gif, png, jpg 檔案時 不記錄
<VirtualHost *:80>
  ServerName site.myweb.com
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/site.myweb.com_error.log
  CustomLog ${APACHE_LOG_DIR}/site.myweb.com_access.log combined
  LogLevel warn  #調整log級別至有潛在危害時才記錄
  SetEnvIf Request_URI "(\.gif|\.png|\.jpg)$" dontlog  #當訪問 gif, png, jpg 檔案時 不記錄
</VirtualHost>

No comments:

Post a Comment