|
Apache 是一般我們在 Unix Like 系統中常見的網頁伺服器,它如果和 PHP 或其它動態網頁的模組結合,可以發展出高效能且功能強大的網頁伺服器,我們可以在
FreeBSD ports collection 中的 www 目錄中找到所需的東西,目前 Apache 有兩個版本 apache13
和 apache2 ,它們的設定稍有不同,下面介紹的是 apache 13 的部份。
1.軟體安裝
1-1 以 packages 安裝 apache13
如果不想自己編譯,我們可以用 pkg_add 來安裝 package,執行下面的指令:
pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/apache.tgz
※ apache 會用到 expat 及 rc_subr,如果透過 FTP 安裝,這兩個有相依性的 packages 會自動安裝。
安裝完可以利用 pkg_info | grep apache ,看一下是否安裝成功。
1-2 以 ports 安裝 apache13
1-2-1 取得 apache ports 的相關設定檔
apache13 位在 ports tree 中的 www/apache13,另外,它會需要使用
textproc/expat2 的共用函數庫,所以記得要先安裝 expat2 ,以免產生錯誤,當然囉,如果系統中已經用光碟或 cvsup
取得完整的 ports collection ,FreeBSD 會自動幫我們處理軟體相依的問題。如果想節省磁碟空間,可以用下列的步驟先安裝
textproc/expat2 和 sysutils/rc_subr 兩個 packages ,然後再抓 apache13 所需的
ports 目錄和檔案即可,種方法比較省空間 ,我比較喜歡用這個。
1.先安裝現行 apache13 所需的兩個 packages expat 和 rc_subr:
pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/expat.tgz
pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/rc_subr.tgz
2.抓取 ports 相關的檔案
編譯 apache13 時,至少要有下面的目錄及檔案,要注意是否是最新的,沒有的話可以利用 ncftpget 或其它抓檔案的軟體建立並抓取檔案:
/usr/ports/
├Mk
├Templates
├Tools
└www/apache13
例如:如果確認 /usr/ports/www 已經存在,可以執行:
cd /usr/ports/www
ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/ports/www/apache13
1-2-2 開始編譯
如果該有的檔案都準備好了,就可以執行下列指令編譯:
cd /usr/port/www/apache13
make all
1-2-3 進行安裝
make install
2 修改 /etc/rc.conf
apache 啟動時會透過 rc_subr 來啟動,我們必須要在 /etc/rc.conf 中加入下面這行:
apache_enable="YES"
這樣,我們才可以使用 /usr/local/etc/rc.d/apache.sh 來控制服務的啟動與否,下次開機時才會自動啟動 apache
。
3 修改 apache 的設定檔
安裝完,在 /usr/local/etc/apache 下就有一些 *.conf 和 *.conf.default ,後者是原始程式附的設定檔範本,盡量不要去修改它,雖然看起來有三個主要的設定檔
httpd.conf access.conf srm.conf,其實現在只要直接修改 httpd.conf 即可(另二個內容都是空的了)
。
如果現在就啟動 apache ,馬上就可以看到網頁囉,那是 apache 的線上手冊, 預設的網頁放在 /usr/local/www/data
,而預設用來放 CGI 程式是在 /usr/local/www/cgi-bin ,如果我們執行 ls
-l /usr/local/www ,這兩個其實只是 link ,分別連到 data → /usr/local/www/data-dist,cgi-bin
→ /usr/local/www/cgi-bin-dist,我們可以將他們改到自己放網頁及 CGI 的目錄。
在 httpd.conf 的預設值中,其它使用者的網頁目錄名稱則必須叫 public_html,我們可以把它改成較簡單的目錄名稱,方便使用者記憶,
我們先修改幾個地方符合需求就好了:
註:粗體字 (第二行) 為修改後的值
| 修改設定 |
說明 |
| ServerAdmin you@your.address
ServerAdmin admin@test.tp.edu.tw |
本站系統管理員的電子郵件地址,可用於系統發生錯誤時的回應訊息中 |
| ServerName new.host.name
ServerName www.test.tp.edu.tw |
主機名稱,如果這台主機有一個以上的名稱,可以用這個指定要顯示哪一個名稱 |
| DocumentRoot "/usr/local/www/data"
這部份不改,直接改 /usr/local/www/data 的 link |
預設放網頁的目錄路徑
如果有修改,<Directory "/usr/local/www/data">也要跟著改 |
| UserDir public_html
UserDir www |
放使用者網頁的資料夾名稱,相對於 users 的 $HOME |
| DirectoryIndex index.html
DirectoryIndex index.html index.hml |
首頁的檔名,為了保險起見,建議最好把有 DirectoryIndex 的那幾行都加上 index.htm |
| ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin"
這部份不改,直接改 /usr/local/www/cgi-bin 的 link |
放 cgi 程式的目錄 |
| <Directory "/usr/local/www/cgi-bin/">
這部份不改,直接改 /usr/local/www/cgi-bin 的 link |
同樣的,前一個 ScriptAlias /cgi-bin/ 有改,這裡也要修改 |
其它可設定的選項相當的多,這部份其實和 FreeBSD 無關,有興趣可以研究一下 Apache 本身的操作手冊,或是參考別的書籍或資料有關
Apache 設定的部份。
4 建立相關的檔案
假設我想把網頁放在 /home/www/data ,CGI 放在 /home/www/cgi-bin ,依前面的設定來說,我們應該執行下面的指令:
mkdir -p /home/www/data /home/www/cgi-bin
cd /usr/local/www
ln -s -f -h /home/www/data data
ln -s -f -h /home/www/cgi-bin cgi-bin
另外,如果希望在新增帳號時可以順便幫使用者建立好 UserDir 所設定的 www
目錄,就執行下面的指令:
mkdir /usr/share/skel/www
chmod 755 /usr/share/skel/www
註:/usr/share/skel 這個目錄是 adduser 在開新帳號會複製東西的樣版目錄
所以先在裡面建好 www 並設定好權限,
以後開新帳號時會自動幫使用者建好放網頁的目錄 www
會舉一反三的人甚至會在 www 中放個 index.htm 當預設網頁哦。
5 常見問答
這樣,下次開機就可以自動載入 accf_http 的模組囉!詳細的說明可以 man accf_http。
北市文山區力行國小顏國雄
|