終於正式進入 PHP5 的領域了,而公司的正式環境是使用 Linux ,所以我也必須準備一個在 Linux 平台上的測試環境。 Neo 老大給了我一台還不錯的雙 PIII 工作站,稍作清理後我就準備用它來當做測試機了。
不過為了在這台機器建構這樣的測試平台卻花了我不少時間,看來三年多前使用 Linux 的經驗已經完全消失了 (囧rz) 。還好網路上資源非常豐富,雖然在安裝的過程中遇到不少挫折,但是總算是一一克服。接下來,我就把自己安裝的方式記錄下來,免得以後忘記。當然如果內容有錯誤的話,也請各位先進不吝指導。
註:這裡還要感謝 Neo 和丫凱,他們不厭其煩地教導我很多有關 Linux 的知識,減少了我許多摸索的時間。
安裝目標
以下就是我這次要安裝的平台:
- Linux 平台 (採用 CentOS)
- Apache 2.0.x
- MySQL 5.0.x
- PHP 5.2.x
- Subversion 1.4.x
- Trac 0.10.x
目錄配置
以下依照一些先進的經驗,加上個人的喜好,將平台中相關目錄配置如下:
| 原始碼存放位置 | /usr/local/src |
|---|---|
| Apache 網站根目錄 | /home/www/wwwroot |
| MySQL 數據庫位置 | /var/mysql/data |
| MySQL 設定檔 | /etc/my.cnf |
| PHP 設定檔 | /etc/php.ini |
| Subversion 檔案庫根目錄 | /home/svn |
| Trac 專案資料庫根目錄 | /home/trac |
建立 Linux 平台
下載 CentOS
我選擇的 Linux 平台是 CentOS ,目前其穩定的版本為 5.0 (2007-12) 。可以透過以下網址,下載 ServerDVD ISO 檔:
http://ftp.isu.edu.tw/pub/Linux/CentOS/5.0/isos/i386/CentOS-5.0-i386-bin-DVD.iso
下載回來後,我將它燒錄成 DVD 光碟以便安裝。
安裝簡述
基本上安裝步驟就是參考鳥哥的網站,而詳細的步驟就按照安裝畫面一一設定即可。但特別要注意 SELinux 要先關掉,免得到時候遇到一堆網路問題。
由於這是測試用的環境,所以其實也不用安裝太多不必要的服務。不過有兩個服務要預先安裝,那就是 vsftpd 和 sshd 。這樣後面要操作系統及存取檔案時,會比較容易一些。
另外就是 httpd 、 mysql 和 php 也都不要勾選,因為後面我們要採用 tarball 的方式來安裝。
定時校正伺服器時間
接下來要定時將伺服器的時間做校正動作,這裡要先安裝 ntp 套件:
1
| |
安裝好後,我們要修改排程表:
1
| |
加入以下這行:
1
| |
完成後存檔,這樣伺服器就會在每天的 23:00 根據國家時間與頻率標準實驗室的 NTP 伺服器來自動校準時間。
註:以上設定 CentOS 的步驟也可以參考學生用伺服器建置流程(CentOS 5 版),這篇教學在 CentOS 的設定上寫的比較完整。
設定 FTP 伺服器
首先要建一個 www 帳號,專門用來上傳 web 程式:
1
| |
然後編輯 /etc/vsftpd/vsftpd.conf ,參考鳥哥的 vsFTPd 檔案伺服器,我將設定調整如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
安裝編譯套件
因為後面需要編譯 Tarball 原始碼,因此這裡我們需要先把編譯所需要的相關套件用 yum 指令來安裝好:
1 2 3 4 5 6 7 8 | |
這些套件因為較無版本問題,而且如果自行編譯會比較麻煩;因此這裡採用 yum 安裝會快一點。
小提示:以 xxx-devel 為名的,就是用來協助編譯的套件,它們通常會包含一些編譯用的表頭檔。
從 gcc 到 pam-devel 等套件是給 Apache 、 MySQL 與 PHP 編譯用的,而 Subversion 會用到的套件有 sqlite neon neon-devel db4 db4-devel ,至於 Trac 則會用到 python python-devel python-sqlite 。
編譯安裝目標套件
編譯 Tarball 可以參考鳥哥網站裡的原始碼與 Tarball 套件管理員,大致的步驟如下:
- 下載套件原始檔,並放到 /usr/local/src 底下。
- 解開套件原始檔,然後進到解開後的目錄。
- 設定套件相關選項。
- 編譯與安裝。
特別要注意設定套件相關選項時,一定要仔細考慮清楚自己所要的配置。如果有任何不清楚的地方,可以在設定前輸入以下指令來瞭解各個選項的意義:
1
| |
編譯與安裝 MySQL 5.0.x
MySQL 5 也是要在 PHP5 之前安裝,這裡參考的是官方的安裝說明。首先要先建立執行 MySQL 時所需要的帳號:
1 2 | |
然後就按照標準程序安裝:
1 2 3 4 5 6 7 8 9 | |
有關 configure 選項的說明如下: (參考自官方網站的 2.4.14.2. Typical configure Options)
| 選項 | 說明 |
|---|---|
| –prefix=/usr/local | MySQL 的安裝目錄 |
| –localstatedir=/var/mysql/data | 資料庫的存放路徑 |
| –enable-thread-safe-client | 啟用 thread safe 的用戶連結方式 |
註:我在參考對岸網友的安裝心得時,到最後都一直無法成功安裝預設資料庫。後來在 ./configure 中使用以上的選項後,才順利把 MySQL 安裝起來。
編譯安裝完成後,接下來要將 MySQL 設定檔複製到預設的位置:
1
| |
然後安裝預設的資料庫,這裡要特別注意權限的設定:
1 2 3 4 5 6 7 8 | |
安裝好預設資料庫後,我們要將 MySQL 加入伺服器的啟動服務項目裡:
1 2 3 4 | |
接下來啟動 MySQL ,並設定 root 的密碼:
1 2 3 | |
編譯與安裝 Apache 2.0.x
因為後面的套件在安裝時需要夠知道 Apache 安裝的目錄,所以這裡要先安裝 Apache 。 Apache 的安裝基本上也是採用標準步驟:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
註: e-ghost 網友指出,如果 MEM 採 worker 模式會有與 PHP5 不相容的狀況發生;這時就要使用預設的 prefork 模式。
有關 configure 選項的說明如下: (參考自 Apache HTTP Server Documentation::Configure the source tree::Options)
| 選項 | 說明 |
|---|---|
| –prefix=/usr/local | Apache 的安裝目錄 |
| –enable-module=so | 啟用 so 模組,可以讓 Apache 支援 DSO |
| –enable-dav=shared | 啟用 WebDAV ,Subversion 需要用到 |
| –enable-deflate=shared | 啟用網頁壓縮 |
| –enable-expires=shared | 啟用 HTTP 控制 |
| –enable-rewrite=shared | 啟用網址重寫 |
| –enable-cache | 啟用快取 |
| –enable-file-cache | 啟用檔案快取 |
| –enable-mem-cache | 啟用記憶體快取 |
| –enable-disk-cache | 啟用磁碟快取 |
| –enable-static-support | 啟用靜態支援 |
| –enable-static-htpasswd | 編譯 htpasswd - 管理採用基本認證的檔案 |
| –enable-static-htdigest | 編譯 htdigest - 管理採用摘要認證方式的檔案 |
| –enable-static-rotatelogs | 編譯 rotatelogs - 輪替 Apache 紀錄的管道日誌程序 |
| –enable-static-logresolve | 編譯 logresolve - 解析 Apache 紀錄中的 IP 地址為主機名 |
| –enable-static-htdbm | 編譯 htdbm - 操作 DBM 密碼數據庫 |
| –enable-static-ab | 編譯 ab - Apache HTTP 服務器性能測試工具 |
| –enable-static-checkgid | 編譯 checkgid |
| –with-mpm=worker | 讓 Apache 以 worker 方式運行 |
接下來要將 Apache 設為伺服器的啟動服務項目,首先把 Apache 的控制程式複製成伺服器的服務項目:
1
| |
然後編輯這個服務項目:
1
| |
然後在 #!/bin/sh 下面加入以下兩行:
1 2 | |
註:能讓 chkconfig 辨認出 httpd 的關鍵在是 chkconfig: 2345 10 90 這一行,第一個數字 2345 表示讓 Apache 在 2345 這四個級別都自動運行;第二個數字 10 表示程序啟動的優先級;第三個數字 90 表示程序停止的優先級。
然後就可以把 Apache 加到系統的啟動服務裡面:
1 2 | |
因為我們已經編好 Apache ,所以會得到 htpasswd 這個執行檔。我們就可以用它來建立 Subversion 與 Trac 共用的帳號:
1
| |
建立好 admin 帳號後,再用以下指令來建立其他組員的帳號:
1
| |
編譯與安裝 PHP 5.2.x
PHP5 的安裝也是採用標準模式,然後也要記得將 php.ini-recommend 複製成 /etc/php.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
有關 configure 選項的說明如下:
| 選項 | 說明 |
|---|---|
| –prefix=/usr/local | PHP 的安裝目錄 |
| –with-apxs2=/usr/local/bin/apxs | 指定 Apache2 的執行檔路徑 |
| –with-zlib | 啟用 zlib 支援 |
| –with-bz2 | 啟用 bz2 支援 |
| –with-libxml-dir | 啟用 libxml 支援 |
| –with-gd | 啟用 gd2 支援 |
| –with-freetype-dir | 啟用 freetype 支援 |
| –with-jpeg-dir | 啟用 jpeg 支援 |
| –with-png-dir | 啟用 png 支援 |
| –with-ttf | 啟用 ttf 支援 |
| –with-mime-magic | 啟用 mime 支援 |
| –with-mysql | 啟用 mysql 支援 |
| –with-mysqli | 啟用 mysqli 支援 |
| –with-pdo-mysql | 啟用 pdo_mysql |
| –with-config-file-path=/etc | 指定設定檔 php.ini 的路徑 |
| –with-iconv | 啟用 iconv 支援 |
| –disable-ipv6 | 關閉 ipv6 支援 |
| –enable-mbstring | 啟用 mbstring 支援 |
| –enable-ftp | 啟用 ftp 支援 |
接下來要把 PHP 整合到 Apache 裡,先編輯 Apache 的設定檔:
1
| |
在最後一行或是 AddType 區段加上:
1
| |
然後要設定預設文件,一樣在 httpd.conf 中尋找:
1
| |
加入粗體部份:
1
| |
然後修改網站根目錄,找到:
1
| |
改為:
1
| |
然後再找到:
1
| |
改成:
1
| |
接下來要讓 .htaccess 可以作用,在上面的 <Directory “/home/www/wwwroot”> 往下幾行可以找到:
1
| |
將它更改為:
1
| |
最後將 httpd.conf 存檔並退出 vi 編輯器。
編譯與安裝 SWIG 1.3.x
SWIG 是讓 Python 可以和 Subversion 溝通的橋樑,安裝方式也是採用標準步驟:
1 2 3 4 5 6 | |
編譯與安裝 Subversion 1.4.x
接下來安裝 Subverion ,也是採用標準步驟:
1 2 3 4 5 6 | |
有關 configure 選項的說明如下:
| 選項 | 說明 |
|---|---|
| –prefix=/usr/local | 指定 Subversion 的安裝目錄 |
| –with-apxs=/usr/local/bin/apxs | 指定 Apache2 的執行檔路徑 |
然後要編譯 swig-py ,讓 Python 可以找到 Subversion 。
1 2 | |
最後設定 httpd.conf ,讓我們可以透過 http 來使用 Subversion :
1 2 3 4 5 6 7 8 9 10 | |
編譯與安裝 mod_python
mod_python 是讓 Apache 可以執行 Python 的模組,採標準安裝方式:
1 2 3 4 5 6 | |
安裝完成後,再安裝 Apache 的 DSO 模組:
1 2 | |
編譯與安裝 clearsilver
Python 的 Web Template 引擎,採標準安裝方式:
1 2 3 4 5 6 | |
如果發現有找不到 neo_cgi.so 的訊息,可以試試以下的指令:
1
| |
註:這個動作不一定要,可能是我先前裝錯了。
安裝 setuptools
這個是 Python 的套件安裝工具,照以下步驟執行即可安裝完成:
1 2 3 | |
安裝 Trac
Trac 的安裝方式也很簡單,按照以下步驟執行即可:
1 2 3 4 5 | |
為了要讓 Trac 可以辨識出 Subversion ,必須執行以下指令:
1 2 3 | |
接下來安裝幾個 Trac 常用的模組:
1 2 3 | |
最後要設定 httpd.conf ,讓 Apache 可以呼叫 Trac 來執行:
1 2 3 4 5 6 7 8 9 10 11 | |
專案設定
主要可以參考「在 Windows 上使用 Trac on Apache - 專案建置篇」,大致上只是把 Windows 的路徑改成 Linux 而已。
不過有個小地方要注意,因為 Apache 執行時是使用 nobody 權限,所以 trac.db 的寫入權限也要開放:
1
| |
參考文章
其實我還有一些小細節沒有記得很詳細,有需要的話,以下連結可以參考看看,當然 Google 大神也是要拜一拜的。
- 鳥哥的 Linux 私房菜::主機基本安全之二: Linux 線上自動升級
- PHP 新手::CentOS 4.4 編譯安裝 apache 2.2.3+php 5.2.0+mysql 5.0.27+Zend Optimizer v3.2.0+eaccelerator-0.9.5筆記
- 學生用伺服器建置流程(CentOS 4.4 版)
- Everyday Work::build subversion from source
- Fred Chu's Blog::viewvc 搭建筆記
- DBA notes::Trac 的安裝搭建–針對 Dreamhost
- 網站製作學習誌::在 Windows 上使用 Trac on Apache - 安裝與設定篇