第 26 章 架設 W W W 伺服器 著作權所有 © 旗標出版股份有限公司
前言 WWW 網站的發展相當快速, 可以透過網頁購物、下單買賣股票、金融轉帳以及查詢資料等等 同時也有很多提供免費網站的公司, 讓人們可以放置自己建立的網頁, 以吸引廣大的群眾上網瀏覽 WWW 服務儼然已成為 Internet 上最受歡迎的功能。 由於 Linux 作業系統的穩定性高且成本低廉, 因此許多人都採用 Linux 系統, 再加上 Apache 網頁伺服軟體來建構網站
本章提要 安裝與啟動 Apache 伺服器 維護系統首頁 設定使用者網頁空間 允許或拒絕某些網域存取網站 定期備份網頁
安裝與啟動 Apache 伺服器 早期的 Apache 伺服器由 Apache Group 開發與維護, 直到了 1999 年 6 月 30 日, Apache Software Foundation (Apache 軟體基金會, 簡稱 ASF) 成立, Apache 伺服器才由 ASF 接手 目前有幾家主要的公司 (例如 IBM、 Sun Microsystems 與 Oracle 等) 在背後支持後續的開發計劃, 使得 Apache 伺服器可以持續的發展
安裝與啟動 Apache 伺服器 Apache 伺服器是目前使用率最高, 也是 Linux 系統中最被廣泛使用的網頁伺服器, 幾乎各種 Linux 發行版中都會內附 Apache 的官方網站 http://www.apache.org 中, 可以下載各種作業系統版本的 Apache 套件 (也包括 Windows 版本)
安裝與啟動 Apache 伺服器 啟動 Apache 伺服器 安裝 Apache 伺服器 如何取得新版的 Apache
啟動 Apache 伺服器 此 Linux 發行版中已經內附 Apache 伺服器 2.0 (正式名稱是 Apache HTTP 伺服器) 軟體套件 如果已經安裝了, 請先依下列方式操作, 啟動 Apache 伺服器:
啟動 Apache 伺服器 Apache 伺服器啟動後, 就可以用網頁瀏覽器連上去看看 (以下使用 IE 瀏覽器):
啟動 Apache 伺服器 出現上頁畫面, 表示 Apache 伺服器已啟動 可以執行 ps -aux | grep httpd 指令看到 httpd (http daemon) 的程序在執行 如果有申請像 www.xxx.com.tw 這樣的網址, 則可在網頁瀏覽器中直接輸入該名稱, 否則請使用 IP 位址當做網站的 URL 如果電腦根本沒有固定的 IP, 也可以在本機上使用 http://127.0.0.1 或是 http://localhost 自我陶醉一番
安裝 Apache 伺服器 如果尚未安裝, 則可從書附第 1 片光碟的 /Fedora/RPMS 目錄中找到 httpd-2.0.47-10.i386.rpm 檔, 然後用 rpm 指令安裝:
如何取得新版的 Apache Apache 也會持續更新版本, 可參考 http://www.apache.org 網站得到最新的消息 新版本通常會修正一些錯誤或是增加新的功能 以下網址可下載新版的 Apache 伺服器套件 http://www.apache.org/dist/httpd/ http://rpmfind.net
如何取得新版的 Apache 安裝新版 Apache 伺服器時, 其預設的安裝路徑可能會與原來內附套件路徑不同 一般 tar.gz 版本的套件, 預設會安裝到 /usr/local/apache 目錄
重新啟動 Apache Apache 的主要設定檔為 /etc/httpd/conf/http.conf 因此每次修改這個檔之後, 都需要重新啟動 httpd, 如此所做的改變才會有作用 通常在執行 httpd 之前, 會先使用 ps aux 指令查看一下目前 httpd 是否已在執行 若已執行, 需先將其結束, 再啟動 httpd
重新啟動 Apache httpd 還可以加上 restart、reload、condrestart 與 status 等設定參數 加上 --help 指令可以看到其他更多的參數
開機時自動啟動 Apache 若想讓系統開機時自動執行 httpd, 只要執行 ntsysv 指令, 選取 httpd 服務即可
維護系統首頁 本機首頁的位置是放在 /var/www/html 目錄下, 擁有者是 root 如何上傳網頁 更改網頁預設顯示的語系
如何上傳網頁 常見的情況是, 使用者在 Windows 做好了網頁, 卻不知該如何上傳到 Apache 伺服器 由於 /var/www/html 只能以 root 身份存取, 但偏偏 root 身份預設無法使用 ftp 上傳網頁 因此提供以下幾個方法
如何上傳網頁 方法 1:開放 ftp 讓 root 可以上傳網頁 可編輯 /etc/vsftp.ftpusers 及 /etc/vsftp.users_list 檔, 將 root 帳號於名單中移除, 開放 root 帳號可以使用 ftp 登入 不過這個方法有安全上的顧慮, 故不建議使用
如何上傳網頁 方法 2:使用 WinSCP 上傳網頁 使用 WinSCP 工具, 就可以使用 root 帳號透過 SSH 上傳網頁 在 http://winscp.vse.cz/eng/ download.php 網頁, 點選 "WinSCP 3.4.2 application" 連結, 即可下載 WinSCP342.exe 檔 下載後, 在 MS Windows 下直接執行即可使用 WinSCP 工具
如何上傳網頁 方法 3:利用符號連結, 將系統首頁指向使用者個人網頁 系統的管理者與網頁的管理者為不同人時, 可以使用符號連結的方式, 將本機預設的首頁目錄 /var/www/html 連結到網頁管理者個人的網頁目錄 public_html 下 以下以連結到 wyw 使用者家目錄下的 public_html 為例操作
如何上傳網頁
如何上傳網頁 如此, wyw 只要將網頁上傳到自己家目錄下的 public_html 目錄中, 即完成本機預設首頁的更新 這樣的好處是 wyw 不需知道 root 的密碼, 就可以更新本機的網頁 當 wyw 卸除網頁管理者的職務時, root 只需將符號連結移除, 並建立新的符號連結到另一個網頁管理者的個人空間即可
更改網頁預設顯示的語系 此 Linux 發行版內附的 Apache 伺服器, 預設顯示的語系並不是繁體中文 瀏覽者在瀏覽繁體中文網頁時較不方便 即使在編寫網頁時, 於網頁原始檔指定使用者瀏覽時預設的編碼:
更改網頁預設顯示的語系 仍會發現瀏覽網頁時, 還是不會以繁體中文顯示網頁:
更改網頁預設顯示的語系 請編輯 /etc/httpd/conf/httpd.conf 設定檔, 將網頁預設的語系改為繁體中文:
更改網頁預設顯示的語系 修改完後, 請重新啟動 Apache, 讓設定生效, 網頁預設的語系即改為繁體中文:
設定使用者網頁空間 除了預設的網站首頁, 每個使用者都可以擁有個人的網頁 使用者的個人網頁需放在家目錄下的 public_html 目錄 開放個人網站的功能 建立個人網站目錄
開放個人網站的功能 個人網站功能預設並沒有開啟 必須修改設定檔 /etc/httpd/conf/httpd.conf, 開啟此功能:
開放個人網站的功能 修改完後, 重新啟動 Apache 讓設定生效:
建立個人網站目錄 管理者可以為每個使用者建立存放個人網頁的目錄 public_html 如果使用者可以登入系統, 也可以由使用者自己去建立
建立個人網站目錄 以下為 wyw 使用者建立網頁目錄:
建立個人網站目錄 使用者將網頁傳送到自己的 public_ html 目錄中, 就可以從瀏覽器觀看結果:
建立個人網站目錄 如果使用網域名稱連線, 卻發生在另外一台電腦測試的時候, 始終都連不上的狀況 可能是因為所使用的網址名稱並沒有註冊 請改為使用 IP (http://192.168.0.139/~wyw/) 連線 若仍然連不上, 請檢查的 httpd.conf 檔中的 ServerName 設定:
建立個人網站目錄 如果網站 IP 也是自己隨便給的, 那就沒辦法從其他台電腦正確地連到網頁伺服器了 此時只能在本機使用 http://127.0.0.1/~wyw/ 或 http://localhost/~wyw / 的方式來測試了
個人網頁的網址 一定要有 "~" 嗎? 在網頁瀏覽器輸入使用者網頁的網址時, 需要在使用者帳號名稱前面加上 "~" 如果不想加上 "~",請在設定檔/etc/httpd/conf/httpd.conf 中加入下面的設定 (以 wyw 為例):
允許或拒絕某些網域存取網站 Apache 伺服器有個過濾瀏覽者的功能 可依使用者來源分類, 只有來自於所允許網域的使用者才可以瀏覽網頁 適用的場合 修改 httpd.conf 設定檔 重新啟動 Apache
適用的場合 公司內部的網頁, 只允許公司同仁觀看: 不同的部門, 依工作性質的不同, 而有不同的讀取權限: 若公司對外的網頁伺服器與內部的網頁伺服器是同一台機器, 可以設定公司內部網頁的目錄只有公司內部的 IP 位址可以瀏覽 不同的部門, 依工作性質的不同, 而有不同的讀取權限: 不同的部門間, 可以設定只能瀏覽工作相關的網頁
適用的場合 拒絕惡意份子讀取網頁: 私密網頁, 只開放給某些人看: 若是遇到惡意份子攻擊網頁伺服器, 或是用程式大量抓取網頁, 可以將其來源設為禁止瀏覽 私密網頁, 只開放給某些人看: 若網頁只是給親朋好友看的, 可以開放他們常用的 IP 位址, 但拒絕其他位址的存取
修改 httpd.conf 設定檔 要限制使用者存取網站目錄的權限, 需於 Apache 的設定檔裡設定 例如想限制 /var/www/html/classmate 目錄的存取權限, 拒絕 192.168.0.35、192.168.0.139、*.giga.net.tw 及 *.cn 等 4 個來源位址讀取 /var/www/html/classmate 目錄, 可如下修改
修改 httpd.conf 設定檔 修改 /etc/httpd/conf/httpd.conf 檔:
修改 httpd.conf 設定檔 "Order" 設定項目用以指定 "allow" 與 "deny" 的優先順序 若兩項設定值抵觸, 將以後面的設定值優先 上述範例先用 "Allow from all" 允許所有網域存取, 再用 "Deny from 192.168.0.35 192.168.0.139 giga.net.tw cn" 拒絕這 4 個網域的存取
修改 httpd.conf 設定檔 因為 "allow" 與 "deny" 的優先順序由 "Order" 控制, 所以下列 2 種寫法效果均相同:
修改 httpd.conf 設定檔 以下的範例, 只允許來自 203.204.183.32 的位址瀏覽網頁, 其他的來源均拒絕存取:
重新啟動 Apache 設定好後, 執行下列指令重新啟動 Apache, 設定就生效了: 此時若是拒絕名單中的主機存取了 /var/www/html/classmate 的網頁, 該使 用者將會看到如下網頁
重新啟動 Apache
定期備份網頁 學會 Apache 的安裝與設定, 了解如何去管理與維護網站之後, 還必須知道怎樣備份網站內的各項資料, 以免發生意外時, 多年心血付之一炬 備份系統網頁 備份使用者個人網頁
備份系統網頁 可使用 tar 指令來備份系統網頁 tar 指令是 Linux 系統上最常用的備份方式 請執行下列指令備份 /var/www/html 目錄裡的所有檔案資料:
備份系統網頁 備份下來的檔案, 最好存放在不同的硬碟分割區裡, 較為妥當 如能放置於其他硬碟或主機上, 則更有保障 也可使用 crond 定時器, 讓系統自動備份, 隨時確保資料完整無缺
備份系統網頁 請以 root 身份執行 crontab -e 指令, 加入以下內容: 以上指定每天早上 6 點及下午 6 點各備份一次系統網頁, 並將執行結果及錯誤訊息均導向到 /dev/null, 不寄送這些訊息
備份使用者個人網頁 一個好的管理者也應備份使用者的網頁 使用者可能在家目錄下儲存許多檔案, 故不備份整個 /home 目錄, 以免檔案過大 使用者的網頁目錄 public_html 是分散在各自的家目錄下, 所以可以寫一個指令稿 (shell script 程式) 來處理這個問題
備份使用者個人網頁 請在 /usr/local/bin 目錄下建立一個名為 backup-html.sh 的檔案, 內容如下:
備份使用者個人網頁 第一行 #!/bin/bash 指定指令稿執行時所用的 Shell 接著利用 for 迴圈讀取 /home 目錄下的使用者 其中 "`" 為反引號, 兩個反引號之間的指令會被替換成執行結果 如 `ls /home` 會被換成 tony vita ywwang wyw... (依 /home 目錄裡的帳號而定)
備份使用者個人網頁 而 ${i}_web 加上括號是為了避免 Shell 將變數 i 的名稱誤解為 i_web `date + %Y%m%d` 會以系統當時的年、月、日來取代, 因此壓縮之後, 檔名會類似:wyw_web_20031115.tgz
備份使用者個人網頁 接著請執行 chmod 755 /usr/local/bin/backup-html.sh 指令, 將該檔案設定為可執行 然後執行 mkdir /backup 指令, 建立一個目錄以存放備份檔 接著可設定 cron, 定時執行這個指令稿 請執行 crontab -e 指令, 加入下列內容:
還原備份網頁 還原備分網頁時, 只要將該檔案於使用者家目錄解開即可 (例如還原 wyw 的網頁):