2007/11/19

TKWu's Tarball Guide (2007/10/26)

MySQL 5.1.22-rc + PHP 5.2.4 + Apache 2.2.6 完整安裝手冊(Tarball安裝法)
// PHP5 + Apache2 + MySQL5 安裝方法 For Linux / FreeBSD
// Written by Tung-Kuang Wu
// Updated 2007/10/26

/***
Apache 裝在 /www/
PHP 裝在 /www/php/
MySQL 裝在 /www/mysql/
***/

--
1. 先將下列檔案拷貝至 /usr/local 下,並用:
tar zxvf xxxxx.tar.gz 解壓縮;
tar jxvf xxxxx.tar.bz2 解壓縮。
[x = extract (from Archive)]
[z / j = gzip / bzip2 compressed, and now need to be uncompressed]

以下軟體均可於 ftp://ftp.im.ncue.edu.tw/teachers/tkwu/apache/ 下載:
‧httpd-2.2.6.tar.bz2 (http://www.apache.org/)
‧mysql-5.1.22-rc.tar.gz (http://www.mysql.com/) [rc:Release Candidate]
‧php-5.2.4.tar.bz2 (http://www.php.net/)
‧phpMyAdmin-2.9.2.tar.gz (http://www.phpmyadmin.net/)

--
2. 安裝 mysql-5.1.22-rc
//安裝之前,檢查 /etc/my.cnf,更改 datadir 與 socket 如下:
 datadir=/www/mysql/var [假設安裝 mysql 於 /www/mysql ]
 socket=/tmp/mysql.sock

Shell> tar zxvf mysql-5.1.22-rc.tar.gz

Shell> cd /usr/local/mysql-5.1.22-rc
Shell> ./configure --prefix=/www/mysql --localstatedir=/www/mysql/var
[--prefix : 設定 Mysql 安裝路徑]
[--localstatedir : MySQL 的資料庫檔存放的目錄]
Shell> make
Shell> make install

Shell> make ; make install


當 MySQL 灌好之後,需先執行一個 Script
讓 MySQL 系統產生 mysql 這個資料庫及一些必要的 Tables (user , db, … 等)。
Shell> /www/mysql/bin/mysql_install_db

建立好系統必要的 Grant Tables 之後我們就可以啟動 MySQL 資料庫。
Shell> chmod 700 /www/mysql/share/mysql/mysql.server
[將 mysql.server 改成可執行檔]

Shell> adduser mysql
[新增一個 mysql 帳號]

Shell> chown -R mysql /www/mysql/var
[此為MySQL資料庫的資料檔所在,設其 Owner 為 mysql ]

Shell> /www/mysql/share/mysql/mysql.server start

Shell> /www/mysql/bin/mysqladmin -u root password 'Your Password'
[設定 root 存取 MySQL 之帳號密碼]

--
3. 安裝 Apache (httpd-2.2.6)
Shell> tar jxvf /usr/local/httpd-2.2.6.tar.bz2
Shell> cd /usr/local/httpd-2.2.6

./configure --prefix=/www --enable-mods-shared=all --enable-module=so
Shell> ./configure --prefix=/www --enable-so [--enable-ssl]
[--prefix : 設定 Apache httpd 安裝路徑]
[--enable-so : 告訴 Apache 啟動 so 模組,讓 Apache 能夠載入 shared modules (例如 PHP)]

Shell> make; make install


--
4. 安裝 GD
[在灌 FreeBSD / Linux 時要安裝 C Development 和 Development Libaries]
[gd 為一組繪圖的 Library, 可經由 PHP 呼叫, 於網頁上即時繪圖]

a. 安裝 zlib (壓縮函式庫)
Shell> tar zxvf zlib-1.2.3.tar.gz
Shell> cd zlib-1.2.3
Shell>./configure
Shell> make
Shell> make install

b. 安裝 libpng (png graphics format)
Shell> tar zxvf libpng-1.2.16.tar.gz
Shell> cd libpng-1.2.16
Shell>./configure
Shell> make
Shell> make install

c. 安裝 jpeg-6b (jpeg graphics format)
Shell> tar zxvf jpegsrc.v6b.tar.gz
Shell> cd jpeg-6b
Shell>./configure
Shell> make
Shell> make install

//在 make install 時會出現錯誤, 內容是找不到 /usr/local/man/man1 這個目錄,
 而 jpeg 此安裝需 copy 一些說明手冊 (manual) 至此目錄,
 解決之道就是建這麼個目錄 … (see below)

Shell> mkdir /usr/local/man
Shell> mkdir /usr/local/man/man1

d. 安裝 GD
Shell> tar zxvf gd-2.0.34.tar.gz
Shell> cd gd-2.0.34
Shell>./configure
Shell> make
Shell> make install

--
5. 安裝 php-5.2.4

Shell>ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
//For unknow reason,PHP configure procedure insists on looking
//for libiconv.so.2 in /usr/lib directory。So there we go ...

Shell> tar jxvf php-5.2.4.tar.bz2

Shell> cd /usr/local/ php-5.2.4
Shell>./configure --prefix=/www/php --with-config-file-path=/www/php
--with-apxs2=/www/bin/apxs --with-mysql=/www/mysql --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr/local --enable-mbstring

//Again,PHP configure seems to have some trouble including "iconv" library ...
//So there we go again ...
Shell>vi Makefile
   //... in around line 84
   EXTRA_LIBS = -liconv -lcrypt ... (加上 -liconv)

Shell> make;make install


[--prefix : 設定 PHP 安裝路徑]
[--with-apxs2 : 代表希望安裝 PHP 成為 Apache 的 shared modules,
       並將該 modules 置於 /www/bin/apxs]
[--with-config-file-path : 設定 PHP 組態檔 (php.ini) 所在目錄]
[--with-mysql : 讓 PHP 支援 MySQL]
[--with-gd / zlib / jpeg / png : 讓 PHP 支援 GD, Zlib, Jpeg, PNG 等]
[--enable-mbstring:讓 PHP 支援 multi-byte string ]

Shell> cp php.ini-dist /www/php/php.ini


--
6. 在 httpd.conf 中加入以下

Shell>vi /www/conf/httpd.conf
   AddType application/x-httpd-php .php .php3 .phtml

// 加入這行的意思是讓 Apache 知道當有使用者點選的 link 的 file extension 是
  php, php3, phtml (後兩者為早期 php 的 file extension) 時, 知道應該交給 PHP 模組來處理

Shell>vi /www/conf/httpd.conf
   DocumentRoot "/www/htdocs"
   DirectoryIndex index.html index.php index.htm
//設定預設目錄與網頁

--
7. 最後我們就可以啟動 Apache Web Server 了。

Shell>/www/bin/apachectl start
["/www" 需換成您當初--prefix 安裝 Apache 的目錄)]


--

/***************************************************************/
Apache無法載入PHP 模組的問題

Shell> apachectl start
   Syntax error on line 232 of /app/apache2.0.55/conf/httpd.conf:
   Cannot load /app/apache2.0.55/modules/libphp4.so into server:

   /app/apache2.0.55/modules/libphp4.so: cannot restore segment prot after
reloc: Permission denied

總是無法載入 libphp4.so,這是 SELinux 的原因, 請將 SELinux 關了:

Shell> vi /etc/selinux/config

找到這段:
SELINUX = enforcing
修改為:
SELINUX=disabled
然後再確認一下 /etc/sysconfig/selinux 中相同內容
SELINUX = enforcing
改為
SELINUX=disabled (如果已經是 disabled 就不用改了)
最後重啟系統,Apache啟動正常了!
/***************************************************************/