Transcript www 架設

Web Server 架設
1
Outline
簡介
Apache 安裝
Apache 設定檔案
Apache 進階管理
架設Virtual Web
2
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
3
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 版本)。
4
安裝 Apache 伺服器

不確定是否已安裝
# rpm –q httpd

安裝 Apache 套件
# yum –y install httpd

更新套件
#yum –y update httpd
5
啟動 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
6
測試 Apache 伺服器

用瀏覽程式測試 Apache 伺服器
URL = http://localhost or http://127.0.0.1

執行 ps aux | grep httpd 可看到 httpd
(http daemon) 程序在執行。
7
開機時自動啟動 Apache 伺服器


方法一
用root執行「 ntsysv 」 選取「httpd 」
方法二
# chkconfig httpd on
8
維護系統網頁


本機首頁的位置是放在 「/var/www/html」 目錄下,
而擁有者是屬於『 root』。
更新系統預設的網頁
◦ 必須以 root 身份登入才可更動
◦ 如何上傳系統網頁
◦ 更改網頁預設顯示的語系
9
如何上傳系統網頁
1.
2.
3.
開放 ftp 讓 root 可以上傳網頁
透過使用ssh 協定的加密檔案程式 SSH
FileTransfer (FileZilla) 上傳網頁
利用符號連結,將系統網頁指向使用者個
人網頁
10
上傳系統網頁

利用符號連結,將系統網頁指向使用者
個人網頁
# cd /var/www
#mv html html.old
#chmod +x /home/wei
#ln –s /home/wei/public_html html
11
更改網頁預設語系


預設顯示的語系並不是繁體中文
(Big5) ,因此在瀏覽繁體中文 (Big5)
網頁時較不方便。
更改網頁預設顯示的語系
# vi /etc/httpd/conf/httpd.conf
759 #AddDefaultCharset UTF-8
760 AddDefaultCharset Big-5
12
設定使用者網頁空間

除了預設的網站網頁,系統讓每個使用
者都可以擁有個人的網頁,而其網頁需
放在家目錄下的 public_html 目錄。
13
開放個人網站的功能

#vi /etc/httpd/conf/httpd.conf
 366行 UserDir disabled
 373行 #UserDir public_html
UserDir Disable』 #UserDir Disable
#UserDir public_html』 UserDir public_html

重新啟動 httpd
14
建立個人網站目錄

為使用者wei建立網頁目錄
#cd /home/wei
#mkdir public_html/
#chown wei.wei public_html/
#cd ..
#chmod 711 wei
15
建立個人網站目錄

確認是否關閉 SELinux
#vi/etc/sysconfig/selinux
SELINUX=disabled

確認防火牆是否關閉
#service iptables stop
16
個人網頁的網址一定要有 "~" 嗎?
在網頁使用者網頁的網址時, 需要在使
用者帳號名稱前面加上 “~” 。
 如果個人網頁的網址要加上“~”, 可利用
下面方式取消網址的 “~” 符號。

# vi /etc/httpd/conf/httpd.conf
Alias /wei/ "/home/wei/public_html/"
17
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
18
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
19
Apache 參數說明(3)

MaxClients - 設定最多產生多少行程提供服務,
最多 256
● MaxClients 256

Listen - 設定監聽的位址 (IP、Port、IP:Port) ,
能出現多次
● Listen 80
● Listen 111.222.111.222:80

BindAddress - 設定監聽的位址 (同 Listen,不過支援
Virtual Host),只能出現一次
● BindAddress *
20
Apache 參數說明(4)

UserDir - 設定使用者網頁目錄位置
● 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 的格式)
21
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
22
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>
23
Apache參數說明(7)

Directory 區段內的 Options:
◦ All : 全部打開 (預設)
◦ ExecCGI : 允許 CGI 功能機制
◦ FllowSymlinks : 允許 symlink 檔案連結
◦ Includes : 開啟 SSI 功能機制
◦ IncludesNOEXEC : 開啟 SSI 機制,不過關閉
SSI 內 #exec、#include CGI 等敘述
◦ Indexes : 若是沒有預設 index 檔案,顯示清單
24
允許或拒絕某些網域存取網站

Apache 伺服器有個過濾連線的功能,
它可讓您依使用者來源分類, 只有來自
於所允許網域的使用者才可以瀏覽您
的網頁。
25
適用的場合

有一些特殊的狀況, 您不希望所有的人都
可以看到某些網頁:
◦ 公司內部的網頁, 只允許公司同仁
◦ 觀看不同的部門, 依工作性質的不同, 而有不
同的讀取權限
◦ 拒絕惡意份子讀取網頁
◦ 私密網頁, 只開放給某些人看
26
修改 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
目錄:

27
修改 httpd.conf 設定檔

上述的 "Order" 設定項目是指定 "allow"
與 "deny" 的優先順序。
28
修改 httpd.conf 設定檔

上例先讀取 “allow” 的設定內容, 再讀
取 “deny” 的設定值, 如果兩項設定值
抵觸, 將以後面的設定值優先。因此, 上
述範例先利用 “Allow from all” 允許所
有網域存取, 再使用 “Deny from
192.168.0.35 192.168.1 giga.net.tw cn” 拒
絕這 4 個網域的存取。
29
修改 httpd.conf 設定檔

因為 “allow” 與 “deny” 的優先順序是
由 “Order” 所控制的, 所以下面寫法效
果與前面相同:
30
修改 httpd.conf 設定檔


只允許來自某個IP位址瀏覽網頁其他的來源
均拒絕存取
修改好之後重啟httpd服務,若是拒絕名單中的主機
存取了 /var/www/html/classmate 的網頁, 則該使用者
將會看到下列的說明:
31
設定個人網頁的密碼保護

要將私密資料的網頁(wei.html)放在
「/home/wei/public_html/other」底下 並對該
網頁設定密碼檢查 ,必須在該目錄下產生
二個檔案
「 .htaccess 」 及 「 .htpasswd 」 。
32
開啟密碼保護
# vi /etc/httpd/conf/httpd.conf
將380~391行的#全部刪除
380 <Directory /home/*/public_html>
391 </Directory>
33
.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
34
設定個人網頁的密碼

建立wei的密碼檔
$ htpasswd -c .htpasswd wei

測試
35
定期備份網頁

當學會 Apache 的安裝與設定, 了解如何
去管理與維護網站之後, 您還必須知道
怎樣備份網站內的各項資料, 以免發生
意外時, 多年心血付之一炬。
36
備份系統網頁

備份系統網頁, 使用 tar 指令來備份, 它,
請執行下列指令備份 /var/www/html 目
錄裡的所有檔案資料:
37
備份系統網頁
備份下來的檔案, 最好存放在不同的硬碟
分割區裡, 較為妥當。如能放置於其他硬碟或
主機上, 則更有保障以排程指令來執行,讓系
統自動備份, 隨時確保資料完整無缺。
 # crontab -e 指令, 加入以下內容:


指定每天早上 6 點及下午 6 點各備份一次系
統網頁, 並將執行結果及錯誤訊息均導向到
/dev/null, 不寄送這些訊息。
38
備份使用者個人網頁

除了系統的網頁之外, 每個使用者可能
也都有自己的網頁, 因此也應備份每個
使用者的網頁。不過由於使用者可能在
他們的家目錄下儲存自己下載的檔案,
故我們不打算備份整個 /home 目錄, 以
免造成檔案過大。
39
備份使用者個人網頁
由於每個使用者的網頁目錄 public_html
是分散在各自的家目錄下, 可以寫一個
shell script 來處理這個問題。
 在 /usr/local/bin 目錄下建立一個名為
backup-html.sh 的檔案, 內容如下:

40
備份使用者個人網頁

第一行 #!/bin/bash 設定指令稿執行時所用的
Shell。接著利用一個for 迴圈讀取 /home 目錄
下有哪些使用者, 其中 “`” 為反引號, 兩個反
引號之間的指令會被替換成執行結果。
41
備份使用者個人網頁

而 ${i}_web 加上括號是為了避免 Shell
將變數 i 的名稱誤解為 i_web。`date +
%Y%m%d` 會以系統當時的年、月、日
來取代。因此壓縮之後, 檔名會類似:
wei_web_20120521.tgz。
42
備份使用者個人網頁

# chmod 755 /usr/local/bin/backup-html.sh
將該檔案設定為可執行, 然後執行 mkdir
/backup 指令, 建立一個目錄以存放備份檔。
最後可以設定排程, 定時執行這個指令稿。請
執行 crontab -e 指令, 加入下列內容:
43
備份使用者個人網頁


要還原備分網頁時, 只要將該檔案於使
用者家目錄解開即可,即可還原備份的
資料。
還原 wei 的網頁:
#cp wei_web_20120521.tgz /home/wei
#cd /home/wei
#tar zxvf wei_web_20120521.tgz
44
虛擬主機 (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 主機
45
虛擬主機 (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 [email protected]
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>
46
虛擬主機 (Virtual Host) (3)

IP-Based Virtual Hosts 設定範例:
<VirtualHost www.xxx.com.tw>
ServerName www.xxx.com.tw
ServerAdmin [email protected]
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>
47
相關網站文件與書籍

Apache 的網站
http://www.apache.org
http://httpd.apache.org/docs/

Apache 參考網站
http://linux.vbird.org/linux_server/0360apache.php
48