Apache 是目前廣泛使用的跨平台 Web Server。其與 PHP、MySQL 等的結合,已成為中小型網站主機的最佳選擇。
安裝
安裝 Apache2 與 PHP5
$ sudo aptitude install apache2 php5
設定
虛擬主機
以下範例假設網域為 abc.com,三台虛擬主機分別為 a.abc.com、b.abc.com、c.abc.com 且都位於 IP 1.2.3.4 這台伺服器上。
DNS 設定
要方便管理設定虛擬主機,最好要能自己管理 DNS,否則需要一個配合度極高的 ISP。 於 DNS 設定上,僅需將上面三台虛擬主機的 FQDN 對應到 1.2.3.4 這個 IP 上即可;亦即正解部份加上三比如下紀錄:
;三台虛擬主機
a IN A 1.2.3.4
b IN A 1.2.3.4
c IN A 1.2.3.4
Apache 設定
Apache 設定虛擬主機有需多種方式,但主要都是以 http 表頭傳入的網址來作判別;以下列出兩種設定虛擬主機的方式。
一般設定方式
NameVirtualHost 1.2.3.4
<VirtualHost 1.2.3.4>
ServerName a.abc.com
ServerAdmin root@abc.com
DocumentRoot /var/www/a
</VirtualHost>
<VirtualHost 1.2.3.4>
ServerName b.abc.com
ServerAdmin root@abc.com
DocumentRoot /var/www/b
</VirtualHost>
<VirtualHost 1.2.3.4>
ServerName c.abc.com
ServerAdmin root@abc.com
DocumentRoot /var/www/c
</VirtualHost>
簡易設定方式
使用此方式需要啟用 vhost_alias_module 這個模組。
$ sudo ln -s /etc/apache2/mods-available/vhost_alias.load /etc/apache2/mods-enabled/vhost_alias.load
接著於 httpd.conf 加入下面設定:
UseCanonicalName Off
VirtualDocumentRoot /home/www/%0
此種方式在 /home/www 目錄下,每增加一個目錄就等同增加一台虛擬主機,最後的 %0 的意思參照下表。
0 the whole name
1 the first part
2 the second part
-1 the last part
-2 the penultimate part
2+ the second and all subsequent parts
-2+ the penultimate and all preceding parts
1+ and -1+ the same as 0
SSL 連線
使用 SSL 連線時資料有經過加密處理,安全性高、不易外洩。但對網站主機來說,須消耗更多資源,速度會較緩慢。
啟用 Apache2 SSL 功能模組
sudo a2enmod ssl
建立 SSL 認證檔
sudo mkdir /etc/apache2/ssl
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
上述指令執行後依照畫面描述輸入各項所需資料即可。
註:使用 make-ssl-sert 建立的認證檔預設使用時間是一個月。若要更長時間則須手動更改 /usr/sbin/make-ssl-cert,將 -keyout $output 更改成 -keyout $output -days 365 (你要的天數)。
建立 SSL 站台
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
修改 /etc/apache2/sites-available/default
NameVirtualHost *
<VirtualHost *>
ServerName hostname
改成
NameVirtualHost *:80
<VirtualHost *:80>
ServerName hostname:80
修改 /etc/apache2/sites-available/ssl
NameVirtualHost *
<VirtualHost * >
ServerName hostname
ServerAdmin webmaster@localhost
改成
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerName hostname:443
ServerAdmin webmaster@localhost
.
.
.
最後更改 Apache2 監聽的通訊埠,修改 /etc/apache2/ports.conf
#新增下面這行,讓 Apache2 監聽 443 port
Listen 443
- Mar 18 Tue 2008 21:09
Apache2 on Debian