安裝PHP
本章將按下列步驟編譯安裝以下軟件:
* Apache v.1.3.4 -- 世界上最流行的Web服務器。
* gcc v.2.8.1 -- 來源於GNU的C和C++編譯器。
* MySQL v.3.22.16b-gamma -- 世界範圍內許多人使用的數據庫。
* PHP v.3.0.11 -- 本書所主要介紹的軟件。從訪問)得到幫助來解決問題。然而,最好的幫助還是來自/phpbook站點下載),或者從本書隨機附帶的光盤中,復制這些文件到/usr/local/src目錄下:
. apache_1.3.4.tar.gz
. gcc-2.8.1.tar.gz
. mysql-3.22.16b-gamma.tar.gz
. php-3.0.11.tar.gz
. expat.tar.gz
. phplib.tar.gz
. libiodb-2.50.3
. myodbc-2.50.24-src
4. 使用tar命令解壓縮以上文件。tar的x選項為解開選項,v選項將在屏幕上顯示文檔中解出來的文件名,z選項為解壓縮選項,f選項用於在命令行中指定.tar文件名。
tar xvzf apache_1.3.4.tar.gz
tar xvzf gcc-2.8.1.tar.gz
tar xvzf mysql-3.22.16b-gamma.tar.gz
tar xvzf php-3.0.11.tar.gz
tar xvzf expat.tar.gz
tar xvzf phplib.tar.gz
5. gcc -v
確定系統中現有gcc的版本。如果妳的系統不是v2.7.2.3,在下面的操作步驟中采用妳的gcc版本號替換v.2.7.2.3。
6. cp `which gcc` /usr/bin/gcc-2.7.2.3
如果需要,把現有的gcc備份,以便以後使用。Linux的另壹個優點是可以很容易在目錄下存儲壹個程序的多個版本。
7. httpd -v
確定系統中的Apache的版本號。如果妳的系統中的Apache不是v1.3.4,在下面的操作步驟中使用妳的版本號替換v1.3.4。
8. mv `which httpd` /usr/sbin/httpd-1.3.4
如果需要,把現有的Apache備份,以便以後使用。
2.3 編譯C編譯器gcc
使用者應該安裝、編譯程序的第壹個程序就是C編譯器。隨Red Hat v5.2附帶的C編譯器是gcc v2.7.2.3,由於它的版本比較低,以至於不能正確的編譯PHP。然而gcc v.2.7.3可以用來編譯版本較高的gcc v2.8.1。
編譯新版本的gcc需要執行:
1. cd /usr/local/src/gcc-2.8.1
轉到gcc的頂級目錄下。
2. ./configure -prefix=/usr/local/gcc
運行配置程序,強制安裝程序在後面的安裝過程中使用/usr/local/gcc作為gcc的安裝目錄。
3. make bootstrap LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
編譯新的C和C++編譯器。
4. make install LANGUAGES="c c++" BOOT_CFLAGS="-g -02"
安裝新的C和C++編譯器。
5. mv /usr/local/gcc/bin/gcc /usr/local/gcc/bin/gcc-2.8.1
把新的gcc編譯器重新命名,使它的名字中含有版本號。
6. ln -s \
/usr/local/gcc/bin/gcc-2.8.1 \
/usr/bin/gcc-
給新編譯過的gcc可執行文件創建壹個符號連接/usr/bin/gcc。
7. gcc -v
顯示gcc的版本號。如果編譯和安裝都正常的話,將顯示v.2.8.1。
2.3 編譯MySQL
現在來編譯MySQL。在編譯工作完成之後,就可以使用MySQL的應用程序來測試安裝。
1. cd /usr/src/mysql-3.22.16a-gamma
轉到MySQL的頂級目錄下。
2. ./configure --prefix=/usr/local/mysql
運行配置程序,強制安裝程序在後面的安裝過程中使用/usr/local/mysql作為MySQL的安裝目錄。
3. make
編譯MySQL。
4. make install
安裝MySQL。
5. echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
將MySQL庫所在的目錄添加進配置文件中。這樣,當Linux啟動或者執行ldconfig命令時,將會在該配置文件中的目錄裏搜索庫文件。
6. ldconfig -v | grep libmysqlclient
ldconfig命令能讀取/etc/ld.so.conf文件中列出的目錄,並對在那些目錄裏找到的庫文件進行緩沖。grep命令在ldconfig命令的大量輸出結果中查找MySQL庫文件,並限定文本以類似下面方式進行顯示:
libmysqlclient.so.6 => libmysqlclient.so.6.0.0.
7. echo "/usr/local/mysql/bin/safe_mysqld > /dev/null &" >> /etc/rc.d/rc.local
將MySQL啟動指令添加到/etc/rc.d/rc.local文件中,這樣每次啟動Linux後就會自動運行MySQL。
8. ./scripts/mysql_install_db
初始化數據庫。
9. /usr/local/mysql/bin/safe_mysqld > /dev/null &
啟動MySQL服務器作為後臺程序,為了測試安裝,MySQL服務器必須啟動。
10. ln -s \
/usr/local/mysql/bin/mysql \
/usr/bin/mysql
我比較喜歡在/usr/bin目錄下為安裝目錄建立符號鏈接。這壹方法減少了PATH環境變量中的目錄數量,還可以將不希望其他人運行的MySQL工具程序隱藏起來,(例如,mysqladmin命令)。另壹方法是將命令PATH="$PATH:/usr/local/mysql/bin"放在/etc/profile文件中。以上兩種方法都很可以采用。
11. ln -s\
/usr/local/mysql/bin/mysqlshow \
/usr/bin/mysqlshow
該指令是讓壹般用戶都可以運行mysqlshow命令。
2.4 測試MySQL
在繼續Apache和PHP編譯之前,首先來測試MySQL的安裝是否成功。正式發布的MySQL帶有許多有用的工具,這裏我們只使用mysql和mysqlshow命令來進行測試。(如果對數據庫不熟悉,請不用擔心,諸如用戶、表、記錄等數據庫的概念將在第六章“數據庫和SQL”中加以介紹。)
mysqladmin的作用是建立和刪除數據庫、檢查SQL的狀態,以及其他壹些用途。首先,通過檢查版本號以確認是否已經正確安裝了MySQL:
>PATH="usr/local/mysql/bin:$PATH"
>mysqladmin version
Ver 7.8 Distrib 3.22.16a-gamma, for pc-linux-gun on i686 TCX Datakonsult AB, by Monty
Server version 3.22.16a-gamma
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 2 hours 30 min 39 sec
Threads: 1 Questions: 7 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2
可以用以下命令觀看mysqladmin的所有功能.
mysqladmin --help | less
也許mysqlshow是更讓人激動的工具,它能夠列出數據庫、表和字段名,如下所示:
清單2.1 mysqlshow--顯示數據庫,表和字段名清單
Page 18(第13行)-19(倒數第10行) , 清單 2.1
最後要介紹的MySQL工具是mysql,這個程序將深入到MySQL的中心,並且可以使妳可以立刻在Linux命令行提示下執行SQL語句。在shell模式下運行mysql。
Page 19(倒數第5行)-20(倒數第5行)
小心:設置密碼要使用password()函數。如果需要進壹步了解,請查閱MySQL文檔。
小心:在系統進入正常工作模式的時候,請選用壹個比“password”更好的root密碼。
2.5 編譯iODBC和MyODBC
iODBC是壹個實現開放性數據庫互連(Open Database connectivity)協議的函數庫。它主要用於連接運行於Microsoft Windows的數據庫引擎。
1. cd /usr/local/src/libiodbc-2.50.3
轉到iODBC目錄。
2. ./configure \
--prefix=/usr/local/iodbc \
--with-iodbc-inidir=/usr/local/etc
運行配置程序,並強制設置iODBC為安裝到目錄/usr/local/iodbc下。此外,應確認odbc的初始化文件為/etc/odbc.ini。
3. make
4. make install
把庫文件復制到目錄/usr/local/iodbc/lib下,並且把包含文件復制到目錄/usr/local/iodbc/include下。
5. cd /usr/local/src/myodbc-2.50.24
轉到MyODBC目錄下。
6. ./configure \
--prefix=/usr/local/myodbc \
--with-mysql-sources=/usr/local/mysql-3.22.16a-gamma \
--with-odbc-ini=/etc/odbc.ini \
--with-iodbc=/usr/local/iodbc
運行MyODBC配置程序。
7. make
8. make install
把庫復制到目錄/usr/local/myodbc/lib下。
2.6 編譯PHP
編譯PHP比編譯以前的應用程序更復雜,這是因為編譯PHP事實上是expat、Apache和PHP的組合。編譯的結果將生成壹個帶有PHP的Apache版本。為了要編譯PHP,可以采用以下步驟:
1. cd /usr/local/src/expat
轉到expat目錄。
2. make
編譯expat源文件。
3. 把以下命令加到Makefile文件中,必須保證在輸入ar和ralib之前使用的是Tab鍵。
libexpat.a: $(OBJS)
ar -rc $@ $(OBJS)
ranlib $@
4. make libexpat.a
把expat目標文件組合成庫文件。
5. mv libexpat.a /usr/local/lib
PHP配置文件在/usr/local/lib目錄下尋找libexpat.a文件。把libexpat.a文件移到PHP配置文件已知的目錄下,可以為以後的操作減少麻煩。
6. cd /usr/local/src/php-3.0.11
轉到PHP的頂級目錄下。
7. mkdir /usr/local/include/xml
確認/usr/local/include/xml目錄是存在的。
8. ln -s \
/usr/local/src/expat/xmltok/xmltok.h \
/usr/local/include/xml/xmltok.h
當能創建符號連接時,為什麽還要復制呢?
9. ln -s \
/usr/local/src/expat/xmlparse.h \
/usr/local/include/xml/xmlparse.h
這是PHP為了能夠正確地被編譯所需要的另壹個包含文件。
10. cd /usr/local/src/apache_1.3.4
轉到Apache的頂級目錄下。
11. ./configure -prefix=/usr/local/apache
運行配置程序,強制設置Apache安裝目錄為/usr/local/apache。
12. cd /usr/local/src/php-3.0.11
轉到PHP的頂級目錄下。
13. ./configure \
--with-apache=../apache_1.3.4 \
--with-iodbc=/usr/local/iodbc \
--with-mysql=/usr/local/mysql \
--with-xml
運行配置程序,並且告訴配置程序支持Apache、MySQL和XML。
14. make
編譯PHP源文件。
15. make install
安裝已編譯的文件。PHP庫文件會被放在Apache的模塊目錄下,這樣可以在編譯Apache時能找到它們。
16. cd /usr/local/src/apache_1.3.4
轉到Apache的頂級目錄下。
17. ./configure \
--prefix=/usr/local/apache \
--active-module=src/modules/php3/libphp3.a
再壹次配置Apache,這次告訴Apache要加載PHP模塊。
18. make
編譯Apache源文件。
19. make install
安裝已編譯的文件。
20. mv \
/usr/local/apache/bin/httpd \
/usr/local/apache/bin/httpd-1.3.4
重新命名新創建的httpd可執行文件,這樣就能夠安裝多種版本。
21. ln -s \
/usr/local/apache/bin/httpd-1.3.4 \
/usr/sbin/httpd
建立壹個指向新的可執行文件的符號鏈接。
22. httpd -v
證實可以訪問新的可執行文件。該命令的執行結果將顯示版本1.3.4,而且建立日期也應該正確無誤。
23. 編輯/usr/local/apache/conf/http.conf文件,搜索AddType並確認下列行未加註釋。
AddType application/x-httpd-php3 .phtml
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
24. 接著編輯/usr/local/apache/conf/http.conf文件,搜索DirectoryIndex並將index.php3放在行尾。
25. 創建壹個名為/usr/local/local/php3.ini的文件,該文件應包含如下的命令行:
include_path=.:/usr/local/apache/php/
auto_prepend_file=/usr/local/apache/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
26. ln -s \
/usr/local/src/php-3.0.11/doc/manual.html \
/usr/local/src/php-3.0.11/doc/index.html
建立壹個符號鏈接,這樣絕大多數Web瀏覽器就會正確地自動顯示PHP文件起始頁。
27. ln -s \
/usr/local/src/php-3.0.11/doc \
/usr/local/apache/htdocs/phpdocs
建立壹個符號鏈接,這樣就可以通過http://localhost/phpdocs/, 來訪問PHP文檔。
28. 創建壹個叫做/usr/local/apache/htdocs/robots.txt的文件,這樣就可避免搜索引擎為PHPLIB,phpMyAdmin和PHP文件建立索引,新創建的文件應包括如下設置行:
#robots.txt for (hostname)
User-agent *
Disallow: /phpdocs/
Disallow: /php/
Disallow:/phpMyAdmin/
2.7 安裝PHPLIB
在閱讀第15章“處理並發的訪問”之前,應先安裝PHPLIB,可以按照下列步驟進行安裝:
1. 以root用戶或其他任何可以在/usr/local/apache目錄下寫文件的用戶註冊。
2. cd /usr/local/apache/
在開始下載文件之前,進入到Web服務器的頂級目錄下。
3. 從如下Web網址下載最新版本的文件,註意gz後綴的文件名,以免它的文件名phplib.tar.gz被改動。
http://phplib.shonline.de/
4. tar xv2f phplib.tar.gz
解壓縮PHPLIB模塊。
5. 編輯/usr/local/lib/php3.ini文件,應包括下列設置內容:
include_path=.:/usr/local/apache/phplib-6.1/php
auto_prepend_file = /usr/local/apache/phplib-
6.1/php/prepend.php3
track_vars = on
magic_quotes_gpc = on
sendmail_path /usr/sbin/sendmail -t
6. 建立壹個名為poe_sessions的mysql數據庫。我壹般使用phpMyAdmin,如果願意,也可以使用SQL命令創建數據庫。
7. cd /usr/local/apache/phplib-6.1/stuff
進入建表目錄下。
8. mysql php_book --user=root --password <
create_database.mysql
創建PHPLIB所需要的數據庫表。
9. 使用以下值在mysql數據庫表中增加壹條新記錄:
host: %
password: <-- no password.
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user02".
註意:也可以使用如下SQL語句:
INSERT INTO
user
(
Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'kris'
, ''
, 'Y', 'Y', 'Y', 'Y'
)
10. 使用以下值在mysql數據庫的db表中增加壹條新記錄:
host: %
db: poe_sessions
select_priv: Yes
insert_priv: Yes
update_priv: Yes
delete_priv: Yes
for users named "kris","user01",and "user03".
註意:也可以使用如下SQL程序。
INSERT INTO
db
(
Host
,Db
,User
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
)
VALUES (
'%'
, 'poe_sessions '
, 'kris'
, 'Y', 'Y', 'Y', 'Y'
)
11. /usr/local/mysql/bin/mysqladmin -u root -p reload
重新裝載MySQL權限表。
12. 在php_book數據庫中創建兩個PHPLIB已認證的用戶(user01和user02),可以使用如下SQL語句:
INSERT INTO
auto_user
(
uid
,username
,password
,perms
) VALUES (
'c14cbf141ab1b7cd009356f555b1234'
,'user01'
,'test'
,'admin'
)
INSERT INTO
auth_user
(
uid
,username
,password
,perms
) VALUES (
'c14cbf141ab1b7cd009356f555b3241'
,'user02'
,'test'
,'admin'
)
13. mv\ /use/local/apache/phplib-6.1/pages \
/use/local/apach/htdocs
將演示子目錄置於Web服務器的根目錄下,這樣就可以用瀏覽器訪問它。
14. 編輯文本文件/usr/local/apache/htdocs/robots.txt,使它包括如下內容:
Disallow: /phplib/
15. 使用Web瀏覽器訪問http://localhost/phplib/。將會看到如圖2.1所示頁面。
Page 29 圖2.1
圖2.1 重新裝載兩次以後出現的PHPLIB演示頁面
2.8 測試Linux環境下的ODBC
對所裝軟件進行基本測試是很重要的,特別是需要手工編輯配置文件時。如下的測試可確保妳的MySQL驅動程序運行正常,並且編譯的iODBC庫文件也是正確無誤的。
1. 使用清單2.1所列的內容,建立壹個名為/usr/local/etc/odbc.ini的文件。
清單 2.2 /usr/local/etc/odbc.ini- 系統ODBC 配置文件
;
;odbc.ini
;
[ODBC Data Sources]
mysql = mysql
[php_book]
driver = /usr/local/myodbc/lib/libmyodbc.so
host = localhost
database = mysql
user = root
2. cd /usr/local/src/libiodbc-2.50.3/samples
3. ./odbctest
運行ODBC測試程序。
4. DSN=mysql;PWD=password
告訴測試程序要訪問的數據源。
5. select host,user from user
在提示符下執行壹個SQL語句,如果有回應,說明iODBC和MySQL已經可以使用了。
現在,在計算機中已經安裝好了ODBC,由於它的安裝步驟不太清晰而且文檔又很少,所以本章中講述了其安裝和測試指令,然而鑒於ODBC主要是壹項Microsoft技術,且很少在Linux中用到,所以這裏是本書中最後壹次有關介紹。
2.9 總結:
本章講述了如何獲取PHP,及在計算機中進行安裝所需要的步驟,編譯了內建PHP的特定版本Apache 服務器。同時,還安裝了將在第15章“中場四:處理並發訪問”中用所到的PHPLIB。