1. 程式人生 > >0509第十八次課:LAMP 2

0509第十八次課:LAMP 2

LAMP 2

一、Apache虛擬主機

  • windows的hosts檔案
  1. hosts檔案路徑

  2. 新增一個域名

    47.106.84.56 www.wxy.com www.test.com

  3. 測試訪問

  • 開啟Apache預設虛擬主機
  1. 開啟預設虛擬主機需要修改apache配置檔案

    vim /usr/local/apache2.4/conf/httpd.conf

    去掉Include conf/extra/httpd-vhosts.conf 註釋#號

  2. 修改虛擬主機檔案

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    修改內容:

    <VirtualHost *:80>
     DocumentRoot "/data/wwwroot/abc.com" 
     ServerNameabc.com
     ServerAlias www.abc.com www.123.com
     ErrorLog "logs/abc.com-error_log" 
     CustomLog "logs/abc.com-access_log" common 
    </VirtualHost>
    <VirtualHost *:80>
     DocumentRoot "/data/wwwroot/111.com"
     ServerName 111.com
     ServerAlias www.example.com
     ErrorLog "logs/111.com-error_log"
     CustomLog "logs/111.com-access_log" common
    </VirtualHost>
    

  3. 建立對應的目錄和檔案

    mkdir /data/wwwroot/

    mkdir /data/wwwroot/abc.com

    mkdir /data/wwwroot/111.com

    touch /data/wwwroot/abc.com/index.html

    echo "this is abc " > /data/wwwroot/abc.com/index.html

    touch /data/wwwroot/111.com/index.html

    echo "this is 111" > /data/wwwroot/111.com/index.html

  4. 測試

    驗證和重新載入配置檔案

    測試

    curl -x 172.18.11.153:80 111.com

    curl -x 172.18.11.153:80 abc.com

二、apache使用者認證

  • 全域性認證
  1. 修改虛擬主機配置檔案

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    針對111.com修改新增以下內容

    <Directory /data/wwwroot/111.com>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </Directory>
    

  2. 建立密碼

    /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd test

    -c引數建立 -m指定加密型別

  3. 測試

    /usr/local/apache2.4/bin/apachectl -t /usr/local/apache2.4/bin/apachectl graceful

    curl -x127.0.0.1:80 111.com

    401狀態碼就是需要密碼

    curl命令-u引數可以輸入賬號密碼: curl -x 172.18.11.153:80 111.com -u test:123 test是使用者名稱,123是密碼

三、域名跳轉

域名跳轉類似於將網頁重新指向另一個網站,但區別是域名跳轉會將域名本身重新指向網站,而不使用HTML或指令碼來進行重新指向。當域名被設定為跳轉至另一網站,域名的地址將不會保留在瀏覽器的URL欄中,該欄顯示的會是新頁面的URL。如果您希望保留該欄中的URL,則需要使用隱形跳轉。

  1. 域名跳轉檔案配置

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    新增以下內容

    <IfModule mod_rewrite.c>
       RewriteEngine on
    	  RewriteCond %{HTTP_HOST} !^111.com$
    	  RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
    </IfModule>
    

    和一個不存在的域名:333.com

  2. 開啟rewrite模組是否開啟

    /usr/local/apache2.4/conf/httpd.conf

    去掉註釋#

  3. 測試

    curl -x 172.18.11.153:80 3333.com

    301:永久跳轉,302:臨時跳轉,200:檔案存在,404:檔案不存在

四、Apache訪問日誌

  1. 日誌路徑

    ll /usr/local/apache2.4/logs/

    檢視

  2. 修改日誌格式

    剛檢視的日誌資訊包含:訪問主機,使用者,時間,訪問的狀態。我們也可以自定義日誌的格式

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    把之前的common,改為combined

  3. 再次檢視日誌內容

五、訪問日誌不記錄靜態檔案

很多網站大多為靜態網頁,網頁內部的圖片、css檔案等同樣有其網址連結,如果不設定,這些無效的資訊也將被存入訪問日誌中,會導致訪問日誌檔案大小快速增加,佔用大量儲存空間。我們可以通過設定不記錄某些檔案來減少無效資訊,節省記憶體資源。

  1. 上傳一張1.png到111.com目錄

  2. 訪問並檢視日誌

    curl -x 172.18.11.153:80 111.com/1.png -I

    檢視有.png結尾的日誌

  3. 修改虛擬主機檔案

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    新增以下內容

    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    CustomLog "logs/111.com-access_log" combined env=!img
    

  4. 檢視結果

    修改完成後,重新載入,再次訪問1.png,檢視日誌已經不再記錄了

六、 訪問日誌切割

如果日誌太大,總有一天會把磁碟佔滿,所以有必要每天進行日誌切割,並刪除老的日誌

  1. 修改配置檔案

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

修改一下內容

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img

  1. 引數解釋
  • /usr/local/apache2.4/bin/rotatelogs:apache自帶的分割日誌的工具

  • -l:按當前系統時間為基準進行切割(我國為CST),否則預設UTC

  • %Y%m%d表示年月日,這樣會每天記錄一個帶日期的日誌檔案

  • 86400(s)表示每天都進行切割,一天24小時等於86400秒

七、靜態元素過期時間

瀏覽器訪問網站的圖片時會把靜態的檔案快取在本地電腦裡,這樣下次再訪問時就不用去遠端下載了。 但是快取多久呢?如果網站圖片更新了呢,那麼應該訪問新圖片才是。所以這就涉及到靜態檔案快取時長的問題了,也就是“快取過期時間”。

  1. 修改httpd.conf檔案

    vim /usr/local/apache2.4/conf/httpd.conf

    去掉註釋#

    LoadModule expires_module modules/mod_expires.so

  2. 虛擬主機檔案配置

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    增加一下內容

     <IfModule mod_expires.c>
       ExpiresActive on //開啟該功能的開關
       ExpiresByType image/gif "access plus 1 days"
       ExpiresByType image/jpeg "access plus 24 hours"
       ExpiresByType image/png "access plus 24 hours"
       ExpiresByType text/css "now plus 2 hour"
       ExpiresByType application/x-javascript "now plus 2 hours"
       ExpiresByType application/javascript "now plus 2 hours"
       ExpiresByType application/x-shockwave-flash "now plus 2 hours"
       ExpiresDefault "now plus 0 min" 
     </IfModule> 
    

  3. 測試

    瀏覽器訪問圖片,F12檢視圖片的狀態碼為200

    重新整理以下檢視變成了304