Web Server 架設
簡介 Apache 安裝 Apache 設定檔案 Apache 進階管理 架設Virtual Web Outline 簡介 Apache 安裝 Apache 設定檔案 Apache 進階管理 架設Virtual Web
www與http簡介 WWW ( World Wide Web) 全球資訊網,是 Internet 上 的一項網路服務,讓使用者可以用點擊超連結 (Hyperlink) 的方式將資訊傳遞到全世界。 HTTP(Hyper Text Transfer Protocol ),在 WWW Server 與 Client 端瀏覽器之間,用來彼此溝通的協 定。 URL (Uniform Resource Locator),連結WWW 的語法。 <協定>://<主機位址或主機名稱>[:port]/<目錄資源> ex: http://www.edu.tw
Apache簡介 Apache 的前身為 NCSA ( National Center for Supercomputing Applications ),於 1995 年為排名第 一的 Web Server 軟體。 Apache名稱的由來是因為當初的研發團隊針對 NCSA 不斷的修正而來:a patchy server,才取名 為 Apache。 因與美國的一個原住民名稱相同,所以 Logo 就以彩 色的羽毛來作為其標誌圖案。 Apache 1.0 版於 1995 年 12 月正式釋出。 Apache 2.X版支援非UNIX平台及IPv6。 官方網站 http://www.apache.org ,可以下載各種作業 系統版本的 Apache 套件 (包括 Windows 版本)。
安裝 Apache 伺服器 不確定是否已安裝 # rpm –q httpd 安裝 Apache 套件 # yum –y install httpd 更新套件 #yum –y update httpd
啟動 Apache 伺服器 啟動 Apache 伺服器 重新啟動 Apache 伺服器 停止 Apache 伺服器 #/etc/rc.d/init.d/httpd start 重新啟動 Apache 伺服器 #/etc/rc.d/init.d/httpd restart 停止 Apache 伺服器 #/etc/rc.d/init.d/httpd stop 不能啟動或啟動錯誤需檢查httpd設定檔 #vi /etc/httpd/conf/httpd.conf
測試 Apache 伺服器 用瀏覽程式測試 Apache 伺服器 URL = http://localhost or http://127.0.0.1 執行 ps aux | grep httpd 可看到 httpd (http daemon) 程序在執行。
開機時自動啟動 Apache 伺服器 方法一 用root執行「 ntsysv 」 選取「httpd 」 方法二 # chkconfig httpd on
維護系統網頁 本機首頁的位置是放在 「/var/www/html」 目錄下, 而擁有者是屬於『 root』。 更新系統預設的網頁 如何上傳系統網頁 更改網頁預設顯示的語系
如何上傳系統網頁 開放 ftp 讓 root 可以上傳網頁 透過使用ssh 協定的加密檔案程式 SSH FileTransfer (FileZilla) 上傳網頁 利用符號連結,將系統網頁指向使用者個 人網頁
上傳系統網頁 利用符號連結,將系統網頁指向使用者 個人網頁 # cd /var/www #mv html html.old #chmod +x /home/wei #ln –s /home/wei/public_html html
更改網頁預設語系 預設顯示的語系並不是繁體中文 (Big5) ,因此在瀏覽繁體中文 (Big5) 網頁時較不方便。 更改網頁預設顯示的語系 # vi /etc/httpd/conf/httpd.conf 759 #AddDefaultCharset UTF-8 760 AddDefaultCharset Big-5
設定使用者網頁空間 除了預設的網站網頁,系統讓每個使用 者都可以擁有個人的網頁,而其網頁需 放在家目錄下的 public_html 目錄。
開放個人網站的功能 #vi /etc/httpd/conf/httpd.conf 366行 UserDir disabled 373行 #UserDir public_html UserDir Disable』 #UserDir Disable #UserDir public_html』 UserDir public_html 重新啟動 httpd
建立個人網站目錄 為使用者wei建立網頁目錄 #cd /home/wei #mkdir public_html/ #chown wei.wei public_html/ #cd .. #chmod 711 wei
建立個人網站目錄 確認是否關閉 SELinux 確認防火牆是否關閉 #vi/etc/sysconfig/selinux SELINUX=disabled 確認防火牆是否關閉 #service iptables stop
在網頁使用者網頁的網址時, 需要在使 用者帳號名稱前面加上 “~” 。 個人網頁的網址一定要有 "~" 嗎? 在網頁使用者網頁的網址時, 需要在使 用者帳號名稱前面加上 “~” 。 如果個人網頁的網址要加上“~”, 可利用 下面方式取消網址的 “~” 符號。 # vi /etc/httpd/conf/httpd.conf Alias /wei/ "/home/wei/public_html/"
Apache 設定檔案與參數說明 (1) 主要檔案: httpd.conf 、 srm.conf 、 access.conf httpd.conf 設定檔案常見參數說明: -------------------------------------------------------------------------- ServerType - 設定啟動方式( standalone 或 inet ) ● ServerType standalone DocumentRoot - 指定 Document 目錄位置 ● DocumentRoot /usr/local/apache/htdocs ServerAdmin - 指定管理員的 e-mail 帳號 ● ServerAdmin webadm@hostname
Apache 參數說明(2) User - 設定 apache daemon 常駐時使用該 UserID 工作 ● User nobody (建議可以調整成為 apache 身份) Group - 設定 apache daemon 常駐時使用該 Group 工作 ● Group noody (建議可以調整成為 apache 群組) ServerRoot - 指定 Apache 的跟目錄位置 ● ServerRoot /usr/local/apache StartServers - 設定啟動時,要建立幾個子行程常駐, 預設 5 ● StartServers 5
Apache 參數說明(3) MaxClients - 設定最多產生多少行程提供服務, 最多 256 Listen - 設定監聽的位址 (IP、Port、IP:Port) , 能出現多次 ● Listen 80 ● Listen 111.222.111.222:80 BindAddress - 設定監聽的位址 (同 Listen,不過支援 Virtual Host),只能出現一次 ● BindAddress *
Apache 參數說明(4) UserDir - 設定使用者網頁目錄位置 AccessFileName - 設定存取控制讀取的檔案名稱 ● UserDir public_html www AccessFileName - 設定存取控制讀取的檔案名稱 ● AccessFilename .htaccess ErrorLog - 指定錯誤記錄檔名稱 ● ErrorLog /usr/local/apache/logs/error_log CustomLog - 指定存取的記錄檔案名稱 ● CustomLog /usr/local/apache/logs/httpd/access_log common (註: common 為 LogFormat 參數所定義記錄 log 的格式)
Apache參數說明(5) ScriptAlias - 建立 script 的別名路徑 ● ScriptAlias /cgi-bin /usr/local/apache/cgi-bin DirectoryIndex - 設定尋找預設首頁的檔案名稱 ● DirectoryIndex index.html index.htm index.php3 HostnameLookups – 設定是否紀錄反查連線主機名稱 ● HostnameLookups Off PIDFile – 設定紀錄 httpd 程式 pid 的檔案 ● PIDFile /var/run/httpd.pid Alias - 建立一般目錄別名路徑 ● Alias /icons /usr/local/apache/icons
Apache參數說明(6) Directory 區段: <Directory “/path/dirname”> Options FllowSymlinks Indexes ExecCGI AllowOverride All Order Allow,deny Allow from xxx.xxx.xxx.xxx Deny from all </Directory>
Apache參數說明(7) Directory 區段內的 Options: All : 全部打開 (預設) ExecCGI : 允許 CGI 功能機制 FllowSymlinks : 允許 symlink 檔案連結 Includes : 開啟 SSI 功能機制 IncludesNOEXEC : 開啟 SSI 機制,不過關閉 SSI 內 #exec、#include CGI 等敘述 Indexes : 若是沒有預設 index 檔案,顯示清單
允許或拒絕某些網域存取網站 Apache 伺服器有個過濾連線的功能, 它可讓您依使用者來源分類, 只有來自 於所允許網域的使用者才可以瀏覽您 的網頁。
適用的場合 有一些特殊的狀況, 您不希望所有的人都 可以看到某些網頁: 公司內部的網頁, 只允許公司同仁 觀看不同的部門, 依工作性質的不同, 而有不 同的讀取權限 拒絕惡意份子讀取網頁 私密網頁, 只開放給某些人看
修改 httpd.conf 設定檔 要限制使用者存取網站目錄的權限, 需於 Apache 的設定檔裡設定。 Ex:想限制 /var/www/html/classmate 目錄的 存取權限 # vi /etc/httpd/conf/httpd.conf 最後面加入下列的內容, 拒絕 192.168.0.35、192.168.1.*、*.giga.net.tw 及 *.cn 等 4 個來源位址讀取 /var/www/html/classmate 目錄:
修改 httpd.conf 設定檔 上述的 "Order" 設定項目是指定 "allow" 與 "deny" 的優先順序。
修改 httpd.conf 設定檔 上例先讀取 “allow” 的設定內容, 再讀 取 “deny” 的設定值, 如果兩項設定值 抵觸, 將以後面的設定值優先。因此, 上 述範例先利用 “Allow from all” 允許所 有網域存取, 再使用 “Deny from 192.168.0.35 192.168.1 giga.net.tw cn” 拒 絕這 4 個網域的存取。
修改 httpd.conf 設定檔 因為 “allow” 與 “deny” 的優先順序是 由 “Order” 所控制的, 所以下面寫法效 果與前面相同:
修改 httpd.conf 設定檔 只允許來自某個IP位址瀏覽網頁其他的來源 均拒絕存取 修改好之後重啟httpd服務,若是拒絕名單中的主機 存取了 /var/www/html/classmate 的網頁, 則該使用者 將會看到下列的說明:
設定個人網頁的密碼保護 要將私密資料的網頁(wei.html)放在 「/home/wei/public_html/other」底下 並對該 網頁設定密碼檢查 ,必須在該目錄下產生 二個檔案 「 .htaccess 」 及 「 .htpasswd 」 。
開啟密碼保護 # vi /etc/httpd/conf/httpd.conf 將380~391行的#全部刪除 380 <Directory /home/*/public_html> 391 </Directory>
.htaccess 檔 $cd /home/wei/public_html/ $mkdir other $cd other $vi .htaccess <Limit GET> require user wei </Limit> AuthType Basic AuthName wei AuthUserFile /home/wei/public_html/other/.htpasswd
設 定 個 人 網 頁 的 密 碼 建立wei的密碼檔 $ htpasswd -c .htpasswd wei 測試
定期備份網頁 當學會 Apache 的安裝與設定, 了解如何 去管理與維護網站之後, 您還必須知道 怎樣備份網站內的各項資料, 以免發生 意外時, 多年心血付之一炬。
備份系統網頁 備份系統網頁, 使用 tar 指令來備份, 它, 請執行下列指令備份 /var/www/html 目 錄裡的所有檔案資料:
備份系統網頁 備份下來的檔案, 最好存放在不同的硬碟 分割區裡, 較為妥當。如能放置於其他硬碟或 主機上, 則更有保障以排程指令來執行,讓系 統自動備份, 隨時確保資料完整無缺。 # crontab -e 指令, 加入以下內容: 指定每天早上 6 點及下午 6 點各備份一次系 統網頁, 並將執行結果及錯誤訊息均導向到 /dev/null, 不寄送這些訊息。
備份使用者個人網頁 除了系統的網頁之外, 每個使用者可能 也都有自己的網頁, 因此也應備份每個 使用者的網頁。不過由於使用者可能在 他們的家目錄下儲存自己下載的檔案, 故我們不打算備份整個 /home 目錄, 以 免造成檔案過大。
備份使用者個人網頁 由於每個使用者的網頁目錄 public_html 是分散在各自的家目錄下, 可以寫一個 shell script 來處理這個問題。 在 /usr/local/bin 目錄下建立一個名為 backup-html.sh 的檔案, 內容如下:
備份使用者個人網頁 第一行 #!/bin/bash 設定指令稿執行時所用的 Shell。接著利用一個for 迴圈讀取 /home 目錄 下有哪些使用者, 其中 “`” 為反引號, 兩個反 引號之間的指令會被替換成執行結果。
備份使用者個人網頁 而 ${i}_web 加上括號是為了避免 Shell 將變數 i 的名稱誤解為 i_web。`date + %Y%m%d` 會以系統當時的年、月、日 來取代。因此壓縮之後, 檔名會類似: wei_web_20120521.tgz。
備份使用者個人網頁 # chmod 755 /usr/local/bin/backup-html.sh 將該檔案設定為可執行, 然後執行 mkdir /backup 指令, 建立一個目錄以存放備份檔。 最後可以設定排程, 定時執行這個指令稿。請 執行 crontab -e 指令, 加入下列內容:
備份使用者個人網頁 要還原備分網頁時, 只要將該檔案於使 用者家目錄解開即可,即可還原備份的 資料。 還原 wei 的網頁: #cp wei_web_20120521.tgz /home/wei #cd /home/wei #tar zxvf wei_web_20120521.tgz
虛擬主機 (Virtual Host) (1) 虛擬主機部分,在 Apache 設定主要可以區分: Name-based Virtual Hosts IP-based Virtual Hosts Name-Based Virtual Hosts : 單一 IP 上,多個 WebSite 主機名稱 IP-Based Virtual Hosts: 不同 IP 上,每個 IP 各有其 WebSite 主機
虛擬主機 (Virtual Host) (2) Name-Based Virtual Hosts 設定範例: NameVirtualHost 111.22.33.44 Name-Based 需要 <VirtualHost 111.22.33.44> ServerName www.abc.com.tw ServerAdmin root@www.abc.com.tw DocumentRoot /www/domain/www.abc.com.tw DirectoryIndex index.html index.htm index.php3 ErrorLog /var/log/httpd/www.abc.com.tw_error_log TransferLog /var/log/httpd/www.abc.com.tw_access_log </VirtualHost>
虛擬主機 (Virtual Host) (3) IP-Based Virtual Hosts 設定範例: <VirtualHost www.xxx.com.tw> ServerName www.xxx.com.tw ServerAdmin root@www.xxx.com.tw DocumentRoot /www/domain/www.xxx.com.tw DirectoryIndex index.html index.htm index.php3 ErrorLog /var/log/httpd/www.xxx.com.tw_error_log TransferLog /var/log/httpd/www.xxx.com.tw_access_log </VirtualHost>
相關網站文件與書籍 Apache 的網站 http://www.apache.org http://httpd.apache.org/docs/ Apache 參考網站 http://linux.vbird.org/linux_server/0360apache.php