[轉]Apache+PHP3+PostgreSQL作為基於Web的資料庫平台的安裝

來源:互聯網
上載者:User
apache|web|資料|資料庫 發信人: xiaoning (我要飛), 信區: Linux
標  題: Apache+PHP3+PostgreSQL作為基於Web的資料庫平台的安
發信站: BBS 水木清華站 (Thu Jan 20 16:00:28 2000)
  
以下將說明使用Apache+PHP3+PostgreSQL作為基於Web的資料庫平台的安裝和配置方法

關於Apache、PHP3和PostgreSQL的更多內容可以從軟體的附帶文檔、Linux的HOWTO檔案
  
以及以下網站處找到:
Apache: http://www.apache.org
PHP3: http://www.php.net
PostgreSQL: http://www.postgresql.org
1. PostgreSQL的安裝和設定
1.1 獲得來源程式
PostgreSQL最新版本的來源程式可以在http://www.postgresql.org找到。目前的最新版本
  
是6.5.X。以下以6.4 版為例說明安裝方法。
1.2 準備工作
編譯PostgreSQL需要3.75版以上的GNU make (用gmake -v檢查版本號碼) ,2.7.2版以上的
  
GNU C(用gcc -v 檢查版本號碼)以及bison和flex(通常這兩種工具都已經安裝了) 。
PostgreSQL的預設安裝位置為/usr/local/pgsql/,系統檔案約需3-10M空間。附帶的測

程式在運行時需要約20M空間,所以安裝時應注意預留足夠的空間,建議/usr/local/pg
sql/
目錄下保證有50M以上空間。另外展開和編譯來源程式約需30-60M空間。
對多使用者的應用環境,建議設定一個專用使用者名稱,例如 postgres :
$ su 首先登入狀態root
# /usr/sbin/adduser postgres
另外PostgreSQL使用了System V的共用記憶體機制。FreeBSD預設狀態不支援該機制。如使

中的核心的設定檔案中無以下項目則需追加後重新編譯核心:
options SYSVSHM
options SYSVSEM
options SYSVMSG
建儲存來源程式的目錄/usr/local/src/pgsql和安裝目錄/usr/local/pgsql:
#mkdir /usr/local/pgsql
#chown postgres:postgres /usr/local/pgsql
#mkdir /usr/local/src
#mkdir /usr/local/src/pgsql
#chown postgres:postgres /usr/local/src/pgsql
1.3 編譯
以postgres使用者登入, 解壓縮來源程式:
# su postgres
$ tar -xzvf /tmp/postgresql-v6.4.tar.gz [假設下載檔案儲存在/tmp目錄下]
完成後應產生一個postgresql-v6.4目錄,下面開始編譯:
$ cd /usr/local/src/pgsql/postgresql-v6.4/src
$ ./configure --with-mb=EUC_CN
其中,--with-mb=指定系統預設字元編碼。除GB碼(EUC_CN) 外,還可以指定為日語
(EUC_JP)、韓語(EUC_KR) 、台灣(EUC_TW) 、UNICODE、MULE_INTERNAL、LATIN1等。
注意,如使用6.3.2版需用--with-template=... 指定作業系統,具體內容見來源程式附帶
的說明檔案。
configure如順利完成,將產生GNUmakefile,Makefile.global和Makefile.port等檔案。
  
$ gmake all
在編譯結束後將顯示以下資訊:
All of PostgreSQL is successfully made. Ready to install.
安裝:
$ gmake install
正常完成後,PostgreSQl的執行檔案和庫檔案等將被安裝到/usr/local/pgsql目錄下。
  
安裝附帶文檔:
$ gmake install-man
$ cd /usr/local/src/postgresql-v6.4/doc
$ make install
至此PostgreSQL的編譯安裝已經完成,下面開始初期設定。
1.4 初期設定
設定環境變數:
如使用的shell為bash, 則在.bashrc中添加以下命令:
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPTH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
然後執行 source ~/.bashrc
如使用的shell為csh/tcsh則在.cshrc中添加以下命令:
setenv PATH="$PATH":/usr/local/pgsql/bin
setenv POSTGRES_HOME=/usr/local/pgsql
setenv PGLIB=$POSTGRES_HOME/lib
setenv PGDATA=$POSTGRES_HOME/data
setenv MANPATH="$MANPTH":$POSTGRES_HOME/man
setenv LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
然後執行 source ~/.cshrc
以上環境變數是所有使用資料庫的使用者都需要設定的。
資料庫目錄的初始化:
$ initdb
可以使用的參數:
--pgdata=/pgsql/db 指定資料庫目錄,預設使用環境變數PGDATA指定的位置
--pgencoding=EUC_CN 指定資料庫的字元編碼,預設使用configure時指定的編碼。
需要注意的是執行initdb的使用者將擁有所建資料庫目錄的管理權。
使用以下命令啟動PostgreSQL:
$ postmaster -S
運行測試程式:
$ cd test/regression
$ gmake all runtest
如測試程式能正常運行則說明PostgreSQL能正常運行。
為了讓 PostgreSQL在系統啟動時能自動啟動,需作以下變更:
首先以root登入
$ su
Linux: 在/etc/rc.d/rc.local中追加以下內容:
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a -d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster'
fi
FreeBSD: 在/usr/local/etc/rc.d中建立名為pgsql.sh的檔案,內容為:
#! /bin/sh
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a -d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster'
fi
修改pgsql.sh檔案的許可權:
# chmod 755 pgsql.sh
現在PostgreSQL的安裝和設定基本已經完成了,但是目前為止能使用資料庫的使用者只有
postgres。
為使其他使用者可以使用資料庫,需要登入資料庫使用者和產生使用者資料。
例如通過Web伺服器Apache進行查詢的使用者,使用者名稱為nobody:
% createuser nobody
Enter user's postgres ID or RETURN to use unix user ID: 1000 ->1000
Is user "nobody" allowed to create dataase(y/n)n
Is user "nobody" allowed to add users?(y/n)n
createuser: nobody was successfully added
刪除使用者可以使用命令destroyuser 使用者名稱
PostgreSQL可以同時管理多個資料庫(但資料庫之間不能進行join等操作)。建立資料庫

$ createdb 資料庫名
建立的資料庫將被放在/usr/local/pgsql/data/base的同名目錄下(環境變數PGDATA指定
  
路徑的base目錄下)。如省略資料庫名參數,將自動以使用者名稱作為資料庫名。
例如 名為db1的資料庫將被儲存在/usr/local/pgsql/data/base/db1目錄下。
也可使用initlocation命令指定其他位置:
$ initlocation /pgsql/data
$ export PGDATA2=/pgsql/data
$ createdb -D PGDATA2 db2
則資料庫db2將被儲存在/pgsql/data目錄下。另外PostgreSQL 6.4版可以在建立資料庫

指定文字編碼:
createdb -E “字元編碼” “字元編碼” 參見
configure、initdb。
刪除資料庫:destroydb 資料庫名
PostgreSQL最基本的資料庫管理工具是pgsql. 基本使用方法:pgsql 資料庫名
1.5 安全設定:
PostgreSQL提供了基於主機的認證方式host based authentication(HBA) 、基於口令的
  
使用者身份認證和使用者操作使用權限設定等安全機制。
1.5.1 HBA方式和基於口令的使用者身份認證方式
HBA方式的設定檔案為pg_hba.conf。其格式為:
host DBNAME IP_ADDRESS ADDRESS_MASK USRAUTH [AUTH_ARGUMENT]
host: 固定標誌,不能修改
DBNAME: 資料庫名,all代表所有資料庫
IP_ADDRESS,ADDRESS_MASK:指定IP地址,也可指定子網,如192.168.10.0/255.255.2
55.0
USERAUTH: 對使用者的認證方式,包括ident(RFC1413) 、trust(不進行認證) 、reject
(拒絕合格訪問) 、password [passwd_file](根據flat file口令檔案進行認證)

crypt(使用PostgreSQL的系統資料庫pg_shadow進行認證) 、kbr4/kbr5(Kerberos V4/V
5認
證) 。如在作為Web 資料庫使用, 使用passwd口令檔案進行本地登入時可如下設定:
Host all 127.0.0.1 255.255.255.255 password passwd
passwd檔案預設位置為/usr/local/pgsql/data, 有資料庫系統管理權限的使用者可以使用
pg_passwd命令管理該檔案(注意:flat file口令認證方式採用明文傳送口令,故要從網

上其他主機登入,建議使用crypt認證方式) 。
1.5.2 使用者操作使用權限設定
使用SQL命令grant/revoke可以設定使用者/使用者組可否使用select/insert/update/rule命
令。
根據SQL標準,一個資料表檔案(table) 在剛建立時只有建立該表檔案的使用者有權訪問。
  
要分配給使用者存取權限,可以使用grant命令:
grant <許可權種類> on to <使用者/組>
許可權種類:all,select,insert,update,delete,rule
table名:被設定使用者存取權限的表檔案
使用者/組:public(所有使用者) 或使用者名稱/組名
revoke命令作用與grant命令相反,用法如下:
revoke <許可權種類> on from <使用者/組>
table已設定的使用者權限可以使用pgsql的\z 命令查看。
2. Apache+PHP3的安裝及設定
2.1 來源程式
Apache和PHP3的最新版本來源程式可以從http://www.apache.org/和http://www.php.net
/找到。
以下以Apache 1.3.6和PHP3 3.0.5 為例。
2.2 編譯
假設Apache和PHP3的來源程式都儲存在/tmp目錄下,首先登入狀態root:
$ su
# cd /usr/local/src
# tar -xzvf /tmp/apache_1.3.6.tar.gz
# ./configure
# cd /usr/local/src
# tar -xzvf /tmp/php3-3.0.5.tar.gz
# cd php-3.0.5
# ./configure --with-pgsql --with-apache=../apache_1.3.6 --enable-track-vars
  
# make
# make install
最後一步將建立/usr/local/src/apache_1.3.6/src/modules/php3目錄,並將以下檔案
  
複製到該目錄下:
Makefile.libdir libmodphp3.a mod_php3.c php_version.h
Makefile.tmpl libphp3.module mod_php3.h
編譯和安裝Apache:
設定環境變數LD_LIBRARY_PATH csh和tcsh shell使用以下命令:
# setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
sh和bash使用如下命令:
# LD_LIBRARY_PATH=/usr/local/pgsql/lib
# export LD_LIBRARY_PATH
然後
# cd /usr/local/src/apache_1.3.6
# ./configure --activate-module=src/modules/php3/libphp3.a
# make
# make install
2.3 修改設定檔案
# cd /usr/local/src/php-3.0.5
# cp php3.ini-dist /usr/local/lib/php3.ini
將/usr/local/apache/etc/srm.conf中以下兩行內容前的#號刪除,如果以.php3作為PH
P3
檔案的副檔名,則將.phtml 更改為 .php3:
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
在srm.conf檔案的DirectoryIndex下增加 index.php3:
DirectoryIndex index.html index.php3
  
2.4 啟動Apache
# /usr/local/apache/sbin/apachectl start
apachectl start: httpd started
在本地機上啟動網路瀏覽器,地址欄輸入http://localhost/(或在其他電腦上的瀏覽

地址欄輸入Apache伺服器位址),如能顯示出Apache的開始畫面則說明Apache已經
安裝成功。下面測試PHP3模組工作是否正常:
# cd /usr/local/apache/share/htdocs/
# ln -s /usr/local/src/php-3.0.5 .
然後在瀏覽器的地址欄輸入http://localhost/php-3.0.5/examples/date.php3
觀察php3檔案的運行結果是否正常。如日期函數能顯示正確結果,則說明PHP3模組工作
正常。
至此,基於Apache Web伺服器和伺服器端指令碼語言PHP3的PostgreSQL資料庫系統的安裝
已經完成 :-) 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.