久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

實(shí)例講解基于DB2及PHP的應(yīng)用系統(tǒng)跨平臺遷移

瀏覽:106日期:2024-07-06 11:36:46

本文主要介紹如何完成基于 DB2 的 PHP 應(yīng)用系統(tǒng)從 AIX 平臺到 Linux 平臺的移植過程。文中包含了底層的 DB2 數(shù)據(jù)庫移植、上層的 PHP 應(yīng)用系統(tǒng)移植的詳細(xì)步驟以及移植過程中可能遇到的問題和解決方法。

任務(wù)概述

系統(tǒng)遷移的工作主要分為以下幾個方面:

1.DB2 數(shù)據(jù)庫系統(tǒng)的跨平臺遷移

2.Apache 服務(wù)器與 php 應(yīng)用系統(tǒng)的安裝和配置

下面我們就分 2 個方面分別介紹遷移和配置的具體步驟。

DB2 數(shù)據(jù)庫系統(tǒng)的跨平臺遷移

數(shù)據(jù)庫環(huán)境

源環(huán)境:AIX+DB2 v8.1

目標(biāo)環(huán)境:Linux+DB2 v8.1

其中源數(shù)據(jù)庫中包含了 2 個數(shù)據(jù)庫 Instance:SRCDB1 與 SRCDB2。在 SRCDB1/SRCDB2 數(shù)據(jù)庫中,均包含了上百張數(shù)據(jù)庫表,并有很多的索引、外鍵約束、觸發(fā)器、存儲過程以及一些含有自增字段的表(含有 GENERATED ALWAYS AS IDENTITY 定義字段的表)。更為困難的是,我們并沒有關(guān)于這些數(shù)據(jù)庫對象的準(zhǔn)確創(chuàng)建腳本。

遷移方案的選擇

如果遷移的源系統(tǒng)與目的系統(tǒng)屬于同一類型操作系統(tǒng),例如 Linux 之間的遷移,或者 AIX 系統(tǒng)之間的遷移,則情況相對簡單,DB2 本身已經(jīng)提供相關(guān)的實(shí)用工具來實(shí)現(xiàn)這種同類型平臺之間的數(shù)據(jù)庫移植,如: BACKUP 和 RESTORE 命令。當(dāng)然,根據(jù)不同的情況還需要對實(shí)用工具所提供的參數(shù)有比較清楚的了解,譬如源系統(tǒng)與目標(biāo)系統(tǒng)使用不同的表空間,就會涉及到表空間重定向的問題。由于本文的重點(diǎn)在于跨平臺的移植,這種方案顯然無法滿足需求,在此不再熬述。

那么,如何處理跨平臺的數(shù)據(jù)庫遷移問題?是不是可以使用實(shí)用工具 db2move 呢? db2move 只能遷移表中的數(shù)據(jù),而無法對索引、外鍵約束、觸發(fā)器和存儲過程等數(shù)據(jù)庫對象也實(shí)現(xiàn)遷移操作,而且對于包含自增字段數(shù)據(jù)的表來說,db2move 也有一定的限制。并且 db2move 只能把數(shù)據(jù)導(dǎo)入到已存在的數(shù)據(jù)庫的表中,無法顯示指定表空間的位置。由于在數(shù)據(jù)庫的系統(tǒng)遷移過程中,不僅需要遷移表中的數(shù)據(jù),還有索引、外鍵約束、觸發(fā)器和存儲過程等數(shù)據(jù)庫對象,與本文所選方案相比,還是后者更具優(yōu)勢??梢詫?db2move 僅作為遷移表數(shù)據(jù)的一種備用方案。

而對于 export 和 import 來說,一次只能針對一張表進(jìn)行導(dǎo)出導(dǎo)入操作,并且需要手動輸入 export 和 import 的命令以及需要導(dǎo)入導(dǎo)出的數(shù)據(jù)表名,在數(shù)據(jù)庫表的數(shù)量不多的情況下,這種方案也許還可以考慮,但也不并是最佳的方案。而在數(shù)據(jù)庫中表數(shù)量眾多的情況下,這種做法則是基本不現(xiàn)實(shí)的,而且 import 命令并不能保證自增字段的數(shù)據(jù)與原來的表數(shù)據(jù)保持一致。

本文根據(jù) DB2 對數(shù)據(jù)庫對象的處理機(jī)制,采用將 db2look 與 DDL、DML 腳本相結(jié)合的方式,并針對原數(shù)據(jù)庫中的觸發(fā)器、存儲過程以及外鍵約束等分別處理,給出了一種跨平臺 DB2 數(shù)據(jù)庫系統(tǒng)移植的可行方案。

下面我們以 SRCDB1 為例介紹一下這種情況下的數(shù)據(jù)庫整體遷移過程。SRCDB1 數(shù)據(jù)庫中有 SRCDB1、ASN、DB2DBG 和 SQLDBA 這四個數(shù)據(jù)庫模式。假設(shè) SRCDB1 數(shù)據(jù)庫的用戶名為 user_srcdb1,密碼:pw_srcdb1。

在源系統(tǒng) (AIX) 上的相關(guān)操作

1.使用 db2look 命令抽取生成數(shù)據(jù)庫對象的 DDL 腳本

清單 1. db2look 命令及參數(shù)

# db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1

db2look :生成 DDL 以便重新創(chuàng)建在數(shù)據(jù)庫中定義的對象

語法: db2look -d DBname [-e] [-u Creator] [-z Schema]

[-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a]

[-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x]

[-noview] [-i userID] [-w password]

[-v Vname1 Vname2 ... VnameN] [-wrapper WrapperName]

[-server ServerName] [-nofed]

-d : 數(shù)據(jù)庫名稱,必選參數(shù)

-e : 抽取復(fù)制數(shù)據(jù)庫所需要的 DDL 文件,此選項(xiàng)將生成包含 DDL 語句的腳本

-o : 將輸出重定向到給定的文件名,如果未指定 -o 選項(xiàng),則輸出默認(rèn)轉(zhuǎn)到 stdout

-a : 為所有創(chuàng)建程序生成統(tǒng)計(jì)信息,如果指定了此選項(xiàng),則將忽略 -u 選項(xiàng)

-i : 指定登錄到數(shù)據(jù)庫所在服務(wù)器時所使用的用戶標(biāo)識

-w : 指定登錄到數(shù)據(jù)庫所在服務(wù)器時所使用的密碼

2.根據(jù)不同類型對象,分化數(shù)據(jù)庫對象 DDL 腳本

由于源數(shù)據(jù)庫中的各個表數(shù)據(jù)已經(jīng)是經(jīng)過觸發(fā)器、存儲過程等數(shù)據(jù)庫對象處理過的數(shù)據(jù),為保證數(shù)據(jù)庫中數(shù)據(jù)的一致性和完整性,這些數(shù)據(jù)庫對象應(yīng)該在導(dǎo)入數(shù)據(jù)后再創(chuàng)建,以防止在導(dǎo)入表數(shù)據(jù)時重復(fù)執(zhí)行觸發(fā)器和存儲過程等數(shù)據(jù)庫對象生成錯誤數(shù)據(jù)。使用文本編輯器編輯由 db2look 生成的 srcdb1.ddl,將創(chuàng)建表及索引的 DDL 語句,創(chuàng)建外鍵約束的 DDL 語句以及創(chuàng)建觸發(fā)器和創(chuàng)建存儲過程的語句分為四組,分別保存為下面四個 DDL 腳本:

srcdb1_tables.ddl srcdb1_foriegnkeys.ddl

srcdb1_triggers.ddl srcdb1_procedures.ddl

srcdb1_tables.ddl :包含創(chuàng)建 SEQUENCE,UDF,TABLE,VIEW 等數(shù)據(jù)庫對象的 ddl 語句。

清單2. srcdb1_tables.ddl 語句

CREATE SEQUENCE 'SRCDB1'.'SAMPLE_SEQ_1' AS INTEGER

MINVALUE 1 MAXVALUE 9999999999

START WITH 1 INCREMENT BY 1;

CREATE FUNCTION ' SRCDB1'.' SAMPLE _FUNC_1'

(

VARCHAR(254),

VARCHAR(254),

VARCHAR(254)

) RETURNS VARCHAR(254)

SPECIFIC SAMPLE _FUNC_1 ……;

CREATE TABLE ' SRCDB1'.' SAMPLE _TAB_1' (

'TAB_COL1' CHAR(20) NOT NULL ,

'TAB_COL2' VARCHAR(70) NOT NULL ) ;

CREATE TABLE ' SRCDB1'.' SAMPLE _TAB_2' (……);

……

CREATE TABLE ' SRCDB1'.' SAMPLE _TAB_N' (……);

CREATE VIEW SRCDB1.SAMPLE_VIEW_1 (VIEW_COL1,VIEW_COL2) AS SELECT distinct

COL1 , COL2 FROM SAMPLE_TAB WHERE ……;

CREATE VIEW SRCDB1.SAMPLE_VIEW_2 ……;

……

CREATE VIEW SRCDB1.SAMPLE_VIEW_N ……;

srcdb1_foriegnkeys.ddl :包含創(chuàng)建外鍵約束的 ddl 語句。

清單3. srcdb1_foriegnkeys.ddl 語句

ALTER TABLE ' SRCDB1'.'SAMPLE_FK_1'

ADD CONSTRAINT 'SQL030903143850120' FOREIGN KEY

('FK_COL1')

REFERENCES ' SRCDB1'.'SAMPLE_TABLE'

('COL1');

ALTER TABLE ' SRCDB1'.'SAMPLE_FK_2' ADD ……;

……

ALTER TABLE ' SRCDB1'.'SAMPLE_FK_N' ADD ……;

srcdb1_triggers.ddl :包含創(chuàng)建觸發(fā)器的 ddl 語句。

清單 4. srcdb1_triggers.ddl 語句

CREATE TRIGGER SRCDB1.SAMPLE_TRIG_1 AFTER UPDATE OF col1 ON SRCDB1.SAMPLE_TAB

REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL WHEN ( n.col1 > 3)

BEGIN ATOMIC

update SAMPLE_TAB

set(col2) = 'anotherValue' where col1 = n.col1 ;--

END;

CREATE TRIGGER SRCDB1. SAMPLE_TRIG_2 ……;

……

CREATE TRIGGER SRCDB1. SAMPLE_TRIG_N ……;

srcdb1_procedures.ddl :包含創(chuàng)建 SQL 存儲過程以及 java 存儲過程的 ddl 語句。

清單 5. srcdb1_procedures.ddl語句

CREATE PROCEDURE ' SRCDB1'.' JAVA_PROCEDURE_1'

(

OUT SQLSTATE CHARACTER(5),

OUT ROWS_SUBMITED INTEGER,

IN BATCH_ID INTEGER,

IN LEVEL VARCHAR(4000)

)

DYNAMIC RESULT SETS 0

SPECIFIC SUBMIT_BATCH

EXTERNAL NAME 'Submit_batch!submit_batch'

LANGUAGE JAVA

PARAMETER STYLE JAVA

NOT DETERMINISTIC

FENCED THREADSAFE

MODIFIES SQL DATA

NO DBINFO;

CREATE PROCEDURE ' SRCDB1'.'JAVA_PROCEDURE_2' ……;

……

CREATE PROCEDURE ' SRCDB1'.'JAVA_PROCEDURE_N' ……;

SET CURRENT SCHEMA = ' SRCDB1';

SET CURRENT PATH = 'SYSIBM','SYSFUN',' SRCDB1';

CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_1 (

IN hostname varchar(4000),

IN username varchar(4000),

OUT SQLCODE_OUT int )

SPECIFIC SRCDB1.SQL_PROCEDURE_1

LANGUAGE SQL

-------------------------------------------------

-- SQL Stored Procedure

-------------------------------------------------

P1: BEGIN

……

END P1 ;

CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_2 ……;

……

CREATE PROCEDURE SRCDB1.SQL_PROCEDURE_N ……;

需要注意的是,db2 v6 版本的 db2look 尚未實(shí)現(xiàn)抽取如 UDF,TRIGGER,UserSpace,NodeGroup,BufferPool 等數(shù)據(jù)庫對象的 ddl 語句。從 db2 v7 開始,db2look 可以抽取上述對象的 DDL,但是依然無法抽取創(chuàng)建存儲過程對象的 ddl 語句。從 db2 v8.2 開始,完善了對 db2look 功能的支持,實(shí)現(xiàn)了存儲過程 ddl 語句的抽取功能。由于本文所涉及的源數(shù)據(jù)庫系統(tǒng)的版本較低(DB2 v8.1),因此需要采取上述方案獲取所有數(shù)據(jù)庫對象的 DDL 信息:

1). 從某個 DB2 v8.2 系統(tǒng)對 SRCDB1(DB2 v8.1 版本)執(zhí)行 CATALOG 操作:

db2 catalog db SRCDB1 as SRCDB1;

2). 從 DB2 v8.2 系統(tǒng)對 SRCDB1 進(jìn)行 db2look 抽取過程:

db2look -d SRCDB1 -e -o srcdb1.ddl -a -i user_srcdb1 -w pw_srcdb1;

這樣就可以獲取完整的數(shù)據(jù)庫對象 DDL 信息。

3.生成數(shù)據(jù)導(dǎo)出export腳本

使用 shell 腳本生成并導(dǎo)出所有數(shù)據(jù)的 DML 腳本,并將其重定向到 srcdb1_export.sql 文件中。對于熟悉 DB2 的用戶來說,應(yīng)該知道數(shù)據(jù)庫中創(chuàng)建的每個表、視圖、別名均對應(yīng) SYSCAT.TABLES 中一行記錄。因此可以通過相應(yīng)的數(shù)據(jù)庫 select 語句就可以獲取所有需要的數(shù)據(jù)庫表信息。根據(jù)需要,下述 shell 腳本將從系統(tǒng)表 SYSCAT.TABLES 中根據(jù) tabname 字段選出 SRCDB1 中所有 tabschema 表模式是 SRCDB1,ASN,SQLDBA,DB2DBG 的表名字,并根據(jù)它們的名字生成相應(yīng)的 export 導(dǎo)出語句,到達(dá)批量導(dǎo)出的目的。rtrim 函數(shù)用于去除 tabname 字段數(shù)據(jù)的右邊的空格。

清單6. 生成export腳本

# db2 'select 'export to ' || rtrim(tabname) || '.ixf of ixf select * from ' ||

rtrim(tabname) || ';' from syscat.tables

where tabschema in('SRCDB1', 'ASN', 'SQLDBA', 'DB2DBG')' > srcdb1_export.sql ;

編輯生成的 srcdb1_export.sql,刪除頭部和尾部所顯示的統(tǒng)計(jì)信息,只保留必要的 export 語句。通過修改上述腳本中所包含的 tabschema 信息,可以指定需要導(dǎo)出的表的范圍,也即遷移過程中需要的所有表名。所生成的 export 導(dǎo)出語句具有如下的命令形式:

db2 export to tablename.ixf of ixf select * from tablename;

4.生成數(shù)據(jù)導(dǎo)入 load 腳本

使用 shell 腳本生成 load 腳本用于將數(shù)據(jù)導(dǎo)入目標(biāo)系統(tǒng):srcdb1_load.sql

清單7. 生成 load 腳本

# db2 'select 'load from ' || rtrim(tabname) || '.ixf of ixf insert into ' ||

rtrim(tabname) || ';' from syscat.tables

where tabschema in ('SRCDB1', 'ASN', 'SQLDBA', 'DB2DBG')' > srcdb1_load.sql;

編輯生成的 srcdb1_load.sql,刪除頭部和尾部的統(tǒng)計(jì)信息,只保留必要的 load 語句。與 export 導(dǎo)出語句類似,上述 shell 腳本從系統(tǒng)表中選出 SRCDB1 中所有表的名字,并根據(jù)它們的名字生成相應(yīng)的 import 導(dǎo)入語句,到達(dá)批量導(dǎo)入的目的。所生成的 import 導(dǎo)入語句命令形式如下:

db2 load from tablename.ixf of ixf insert into tablename;

5.處理數(shù)據(jù)庫表中的自增字段

對于需要加載的含有自增字段的表,即該表的 ixf 數(shù)據(jù)文件中有自增列的值, 可以在 load 命令中加入如下參數(shù)控制自增字段值:

1). modified by identityignore :加載的數(shù)據(jù)文件中有自增字段值,load 時忽略數(shù)據(jù)文件中自增字段值 ;

2). modified by identitymissing :加載的數(shù)據(jù)文件中沒有自增字段值,load 時自動生成自增字段值 ;

3). modified by identityoverride :加載的數(shù)據(jù)文件中有自增字段值,load 時使用數(shù)據(jù)文件中的自增字段值 。

為了使目標(biāo)數(shù)據(jù)庫中含有自增字段的表中數(shù)據(jù)與源數(shù)據(jù)庫中的數(shù)據(jù)保持一致,本文實(shí)例中選擇使用 modified by identityoverride 參數(shù),在導(dǎo)入數(shù)據(jù)時使用數(shù)據(jù)文件中的自增字段值。讀者可以根據(jù)不同情況選擇適當(dāng)?shù)目刂茀?shù)。

首先,在 srcdb1_tables.ddl 文件中查找所有包自增字段的表名 ( 含有 GENERATED ALWAYS AS IDENTITY 字段的表 ),然后在 srcdb1_load.sql 中將 modified by identityoverride 語句片段插入到這些含有自增字段的表所對應(yīng)的 load 命令行中。

清單8. load 腳本中自增字段處理

db2 load from test.ixf of ixf modified by identityoverride insert into TEST;

6.執(zhí)行導(dǎo)出腳本

執(zhí)行導(dǎo)出腳本,導(dǎo)出所有表的數(shù)據(jù) 。

# db2 -tvf srcdb1_export.sql

導(dǎo)出的表數(shù)據(jù)以 ixf 格式存放于當(dāng)前路徑下。

7.保存腳本和數(shù)據(jù)文件

將所有 DDL 腳本以及數(shù)據(jù)文件 *.ixf 復(fù)制到目標(biāo)系統(tǒng)所在站點(diǎn)。

LINUX 系統(tǒng)上的操作

1.通過命令行處理器(CLP)創(chuàng)建實(shí)例 SRCDB1:

# db2icrt SRCDB1

2.使用 CREATE DATABASE 命令創(chuàng)建數(shù)據(jù)庫 SRCDB1,創(chuàng)建必要的表空間及配置必要的數(shù)據(jù)庫參數(shù)。

# db2 create database SRCDB1

3.連接到數(shù)據(jù)庫 SRCDB1,執(zhí)行 srcdb1_tables.ddl 腳本創(chuàng)建緩沖池,表空間,UDF,表以及 Index,Sequence,視圖等數(shù)據(jù)庫對象。

# db2 connect to srcdb1

# db2 -tvf srcdb1_tables.ddl

4.進(jìn)入到放置 .ixf 數(shù)據(jù)文件的目錄,執(zhí)行下面的命令導(dǎo)入表數(shù)據(jù)。

# db2 -tvf srcdb1_load.sql

5.使用 srcdb1_foriegnkeys.ddl,srcdb1_triggers.ddl ,srcdb1_procedures.ddl 腳本文件創(chuàng)建外鍵約束,觸發(fā)器和存儲過程。

# db2 -tvf srcdb1_foriegnkeys.ddl

# db2 -tvf srcdb1_triggers.ddl

# db2 -tvf srcdb1_procedures.ddl

成功完成上述步驟后,數(shù)據(jù)庫的遷移工作基本完成。

Apache 服務(wù)器與 php 的安裝和配置

Apache 服務(wù)器的安裝和配置

Apache HTTP 服務(wù)器是一個模塊化的軟件,管理員可以通過選擇服務(wù)器中包含的模塊進(jìn)行功能增減。模塊可以在編譯時被靜態(tài)包含進(jìn)httpd二進(jìn)制文件,也可以編譯成獨(dú)立于httpd二進(jìn)制文件的動態(tài)共享對象 (DSO)。DSO 模塊可以與服務(wù)器一起編譯,也可以用 Apache 擴(kuò)展工具 (apxs) 單獨(dú)編譯。動態(tài)加載的方式相比靜態(tài)加載具有更高的靈活性。使用動態(tài)載入特性,Apache 服務(wù)器必須以動態(tài)共享對象(DSO,Dynamic Shared Object)的方式編譯。Apache 對 DSO 的支持,是基于一個叫 mod_so 的模塊來實(shí)現(xiàn)的,為支持動態(tài)加載方式,這個模塊必須預(yù)先被靜態(tài)編譯到內(nèi)核中。因此可以通過 mod_so 模塊檢測已安裝的 Apache 是否支持 DSO:

清單9. mod_so 模塊檢測

# $APACHEHOME/bin/httpd –l

Compiled in modules:

core.c

prefork.c

http_core.c

mod_so.c

如果在列出的模塊名中有 mod_so.c,則說明安裝的 Apache 已經(jīng)支持 DSO,否則需要重新編譯 Apache。Apache 的安裝和配置過程十分簡單,如下所示:

1.下載 httpd-2.0.54.tar.gz(http://httpd.apache.org/),并將其解壓到制定目錄

# tar zxvf httpd-2.0.54.tar.gz && cd httpd-2.0.54

2.編譯安裝 apache

# ./configure --prefix=/usr/local/apache2 --enable-module=so

-- prefix 指定 apache 的安裝路徑

--enable-module=so 將 so 模塊(mod_so)靜態(tài)編譯進(jìn) apache 服務(wù)器的內(nèi)核,以支持 DSO 模式

# make && make install

3. 啟動 apache

# ln -s /usr/local/apache2/bin/apachectl /sbin/apachectl

# apachectl start

php 的安裝和配置

在 php 的安裝和配置過程中,有兩個方面需要注意,首先是 php 與 apache http server 的結(jié)合,其次是 php 與 db2 數(shù)據(jù)源的連接。

在 Apache 環(huán)境下安裝 PHP 的時候,有三種安裝模式可供選擇:靜態(tài)模塊、動態(tài)模塊(DSO)和 CGI。建議以 DSO 模式安裝,這種模式的維護(hù)和升級都相對簡單,可以在無需重新編譯 Apache 的條件下,根據(jù)需求動態(tài)增加新功能模塊。當(dāng)然,這樣做也會帶來一些運(yùn)行效率上的下降,Apache 服務(wù)器在啟動時會慢約 20%。

PHP 連接 DB2 數(shù)據(jù)源同樣有三種方式 : unified ODBC driver、IBM_DB2 和 PDO(php data object)。

◆unified ODBC driver 是最早的 PHP 訪問數(shù)據(jù)庫的擴(kuò)展模塊之一。從 DB2 v7.2 開始,unified ODBC driver 就支持對其的訪問。對所有支持 ODBC 的數(shù)據(jù)庫,unified ODBC driver 提供了統(tǒng)一的數(shù)據(jù)訪問接口。為了保證接口的一般性,unified ODBC driver 并未對不同類型的數(shù)據(jù)庫做特定的優(yōu)化。

◆IBM_DB2 是由 IBM 開發(fā)和維護(hù)的與 DB2 數(shù)據(jù)源交互的擴(kuò)展模塊,它遵守開源協(xié)議。對基于 DB2 UDB 和 php 4.x 的應(yīng)用來說,IBM_DB2 是最優(yōu)的選擇,因?yàn)樗槍?DB2 UDB 進(jìn)行了優(yōu)化,同時避免了一些使用 unified ODBC driver 時可能存在的兼容性問題。不過,IBM_DB2 只支持 DB2 v8.2.2 或更高版本。

◆PDO 則是 php 5.x 中即將支持的新的數(shù)據(jù)庫訪問方式。本文中,由于源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫的版本均為 DB2 v8.1,并且源環(huán)境中采用 unified ODBC driver 的方式,為了保持環(huán)境配置的一致性,仍然選擇 unified ODBC driver 作為 php 與數(shù)據(jù)源的訪問接口。

PHP 的安裝與配置過程具體如下:

1.下載并解壓 php-4.4.4.tar.gz(http://www.php.net/)

# tar zxvf php-4.4.4.tar.gz

# cd php-4.4.4

2.配置編譯 php 源代碼

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/sbin/apxs --without-mysql --with-ibm-db2=/home/reportdb/sqllib

--prefix 指定 php 的安裝路徑

--with-apxs2 指定 apxs 程序的路徑 (apxs 是一個 perl 腳本,它可以脫離 apache 的源碼將 php 模塊編譯成 DSO 文件 )

--with-ibm-db2 指定 unified ODBC driver 作為 php 與數(shù)據(jù)源的訪問接口,并指定 DB2 的實(shí)例安裝目錄。

--without-mysql 忽略 mysql 數(shù)據(jù)庫缺省的安裝配置

#cp php.ini-dist /usr/local/lib

將 php 安裝文件中的 php.ini-dist 拷貝到 /usr/local/lib 下作為 php 的配置文件。

# make && make install

# cp php.ini-dist /usr/local/lib/php.ini

3.編輯 /usr/local/apache2/conf/httpd.conf 文件,做如下修改:

設(shè)置 html 文件主目錄:用于存放網(wǎng)站所需 web 文件的主目錄

DocumentRoot '/home/web/www/'

設(shè)置 apache 的默認(rèn)文件名的次序: apache 將按照由前至后的順序在當(dāng)前路徑下查找其所支持的默認(rèn)主頁文件

DirectoryIndex index.php index.html.var index.cgi index.html

添加 php 解釋文件后綴:對于所有需要被 PHP 解釋的文件類型,需要將后綴添加至 AddType 配置項(xiàng)

AddType application/x-httpd-php .php .inc

加載 PHP 模塊:加載模塊目錄 modules 下的庫 libphp4.so,并將模塊結(jié)構(gòu)名 php4_module 添加到活動模塊列表中

LoadModule php4_module modules/libphp4.so

4.編輯配置文件 /usr/local/apache2/bin/apachectl :

為保證與 DB2 數(shù)據(jù)庫的連通,啟動 Apache 服務(wù)時,需要同時初始化 DB2 客戶機(jī)實(shí)例環(huán)境。創(chuàng)建 DB2 實(shí)例時,DB2 會自動生成 shell 腳本用于初始化所需的 DB2 實(shí)例環(huán)境,只需直接調(diào)用即可:

if test -f /home/reportdb/sqllib/db2profile; then

. /home/reportdb/sqllib/db2profile

fi

5.然后,重新啟動 Apache 服務(wù)器以繼承上面的配置更改。

# apachectl restart

6.編寫 PHP 的測試文件 test.php,內(nèi)容如下:

echo phpinfo();

?>

將其存放在 apache 的 html 文件主目錄 /home/web/www 下,通過瀏覽器訪問該網(wǎng)頁,若能正常訪問(如下圖所示),則配置工作全部完成。

結(jié)束語

本文主要涵蓋了一個基于 php 和 DB2 UDB 的應(yīng)用系統(tǒng)的跨平臺移植過程,詳細(xì)介紹了 DB2 數(shù)據(jù)庫系統(tǒng)的跨平臺遷移以及 Apache 服務(wù)器與 php 應(yīng)用系統(tǒng)的安裝和配置過程。基于實(shí)踐經(jīng)驗(yàn),為 DB2 數(shù)據(jù)庫系統(tǒng)的跨平臺遷移問題提供了一個可行的解決方案。對于移植過程中可能出現(xiàn)的問題,本文也給予詳細(xì)的描述并提供相應(yīng)的解決方案。雖然本文所涉及的只是從 AIX 系統(tǒng)到 LINUX 系統(tǒng)的應(yīng)用系統(tǒng)移植過程,讀者亦可以參考具體的移植過程,將其應(yīng)用于其它平臺之上。

標(biāo)簽: PHP
主站蜘蛛池模板: 日韩免费视频中文字幕 | 国产九九在线观看 | 亚洲精品一区二区三区蜜桃下载 | 在线观看毛片网站 | 久久国产精品一区 | 羞羞的视频网站 | 日韩欧美二区 | 亚洲系列 | 亚洲午夜在线 | 91久久久久久久久 | av在线网址观看 | 国产超碰人人爽人人做人人爱 | 国产精品国产精品国产专区不片 | 国产福利91精品一区二区 | 日本精品网站 | 国产成人欧美一区二区三区的 | 日韩久久久久久久久久久 | 日本男人的天堂 | 第四色影音先锋 | 精品久久久免费视频 | 中文字幕一区二区三区乱码图片 | 天天影视网色香欲综合网无拦截 | 亚洲精品亚洲人成人网 | 国产精品一区二区三区四区 | 欧美国产日韩在线观看 | 国产99久久久精品视频 | 欧美一区二区三区免费观看视频 | 欧洲一级毛片 | 欧美a级成人淫片免费看 | 精品国产乱码久久久久久闺蜜 | 国产成人精品av | 在线观看日韩 | 96自拍视频| 黄的视频网站 | 久久国产精品免费一区二区三区 | 日日夜夜天天 | 蜜桃av网址| 美女视频一区二区三区 | 精品亚洲一区二区三区 | 久久精品国产99国产精品 | 亚洲免费综合 | 国产免费av大片 | 欧美日韩亚洲一区二区 | 欧美一a一片一级一片 | 久久91精品久久久久久9鸭 | 天天av网| 成人免费福利视频 | 欧美中文在线观看 | 波多野结衣先锋影音 | 美女视频一区 | 伊人网在线免费观看 | 香蕉久久一区二区不卡无毒影院 | 91精品国产日韩91久久久久久 | 色人人| 国产精品三级在线 | 亚洲 欧美 精品 | 亚洲视频 欧美视频 | 综合久久亚洲 | a√天堂资源在线 | 中文字幕成人在线 | 国产三级视频 | 午夜精品 | 国产日韩精品视频 | 久久这里只有精品首页 | 羞羞的视频在线免费观看 | 操久久| 黄色一级片视频播放 | 亚洲一区视频 | 激情小视频网站 | 91九色视频在线 | 一区二区三区在线视频播放 | 一级黄色录象片 | 91精品国产91久久久久久密臀 | 91看片淫黄大片一级在线观看 | 国产精品国产三级国产aⅴ中文 | 一区二区国产精品 | 亚洲性人人天天夜夜摸 | 国产区视频 | 欧美日韩免费一区二区三区 | 九色在线| 黄色a级 | 中文字幕在线电影 | 九九视频这里只有精品 | 自拍偷拍欧美 | 人成亚洲 | 色香阁99久久精品久久久 | 国产一区二区三区视频在线观看 | 免费99精品国产自在在线 | 桃色五月 | 97在线免费观看 | 国产噜噜噜噜噜久久久久久久久 | 色综合久久久久 | 精品国产乱码久久久久久影片 | 本道综合精品 | 久久久久国产精品一区二区三区 | 亚洲一级毛片 | 不卡久久| 中国黄色在线视频 | 国产激情网址 | 激情久久av一区av二区av三区 | 欧美日韩中文字幕在线 | 欧美一区中文字幕 | 人人干操 | 亚洲精品一区二三区不卡 | 日韩欧美精品在线 | 亚洲成人网在线 | 婷婷在线观看视频 | 日韩视频精品在线 | 中文字幕久久精品 | 伊人色综合久久久天天蜜桃 | 国产视频一区在线 | www.一区二区 | 在线观看国产www | 国产在线观看91一区二区三区 | 天堂中文在线视频 | 狠狠操天天干 | 国产一区在线不卡 | 中文字幕亚洲字幕一区二区 | www欧美| 亚洲一区二区三区在线 | 国产精品久久久久一区二区三区 | 国产日韩精品一区二区 | 日韩精品 | 在线看亚洲 | 欧美一级黄色片 | 国产精品国产成人国产三级 | 色网在线观看 | 久久精品一 | 日本特黄特色aaa大片免费 | 亚洲欧洲日韩 | 国产亚洲欧美在线 | 国产亚洲欧美一区二区 | 久久精品成人 | 国产激情午夜 | 亚洲欧美综合 | 久久另类ts人妖一区二区 | 国产精品久久久久久 | 久久久久久久99精品免费观看 | 国产亚洲一区二区三区在线观看 | 亚洲精品1 | 亚洲欧美综合乱码精品成人网 | 亚洲一区视频在线播放 | 色婷婷欧美| 国产成人精品一区二区 | 91亚洲高清 | 免费国产一区 | 国产91av视频在线观看 | 成人精品一区二区 | 久久久蜜桃一区二区人 | 久久三区 | 免费观看av电影 | 欧美精品 在线观看 | 亚洲精品1区2区 | 欧美日韩一区二区在线 | 中文字幕av一区 | 91精品国产高清久久久久久久久 | 精品国产一区二区在线 | 午夜精品导航 | 国产精品99一区二区三区 | 欧美成人黄激情免费视频 | 日韩欧美一级片 | 午夜精品久久久久 | 一区二区三区自拍 | 成人天堂资源www在线 | 欧美视频亚洲视频 | 91久久久久久久久 | 日韩精品一区二区三区中文在线 | 日韩中文一区 | 99久久精品国产一区二区成人 | 最新黄色网址在线播放 | 日韩欧美中文在线 | 成人网页 | 日韩在线精品视频 | 99免费视频 | 欧美日韩中文字幕在线 | 91综合视频在线观看 | 久久亚洲综合 | 亚洲精品一区二区三区蜜桃久 | 国产精品一区一区三区 | 色啪网站| 免费av手机在线观看 | 精品在线播放 | 一区久久久 | 蜜桃comaaa| 综合自拍偷拍 | 在线中文| 午夜噜噜噜 | 色婷婷综合久久久中文字幕 | 日本三级做a全过程在线观看 | 日韩一区欧美 | 美欧一级片| 午夜视频在线免费观看 | 91香蕉视频在线观看 | 欧美一级黄视频 | 91视频88av| 国产一区二区三区四区三区 | 激情网在线观看 | 日韩在线免费 | 欧美v片 | 91精品国产91久久久久久吃药 | 国产精品视频免费观看 | 最新中文字幕 | 欧美国产在线观看 | 亚洲在线视频 | 欧美日韩久久精品 | 国产一区二区三区精品久久久 | 一区二区三区在线免费观看 | 亚洲a网 | 亚洲中午字幕 | 中文一二区 | 午夜免费电影 | 欧美激情一区二区三区 | 2019中文字幕视频 | 伊人激情综合网 | 国产精品视频入口 | 国产高清在线精品一区二区三区 | 中文字幕在线看 | www日批| 成人欧美一区二区三区在线播放 | 亚洲三区视频 | 久久久久久久一区 | 午夜精品影院 | √新版天堂资源在线资源 | 中文字幕免费中文 | 成人片免费看 | 青青久久网 | 午夜影院在线观看视频 | 久操国产 | 国产成人av在线 | 国产亚洲精品综合一区91555 | 中文字幕在线免费 | av香港经典三级级 在线 | 久久草| av片网站| 色婷婷综合久久久中字幕精品久久 | 欧美日韩中文字幕在线播放 | 一级a毛片 | 羞羞的视频网站 | 99久久精品一区二区成人 | 欧美一极视频 | 日韩欧美手机在线 | 国产精品乱码一区二区三区 | 特大毛片 | 亚洲精选一区二区 | 国产精品毛片 | 蜜桃av人人夜夜澡人人爽 | 波多野结衣精品 | 在线观看精品视频网站 | 久久久久久久国产精品 | 日韩激情综合 | 久久蜜桃精品一区二区三区综合网 | 99在线视频播放 | 色伊人网| 亚洲美女在线视频 | 一区二区精品在线 | 国产在线观看高清 | 国产小视频在线观看 | 欧美精品成人一区二区三区四区 | 日韩高清成人 | 亚洲 中文 欧美 日韩 在线观看 | 久久久久久久一区 | 亚洲国产精品久久久男人的天堂 | 亚洲欧美日韩在线一区 | 色综合久久久久 | 影音先锋亚洲资源 | 超碰高清| 国产一区二 | 日韩www | 久久久精彩视频 | 精品久久一二三区 | www亚洲一区 | 在线免费视频成人 | 成人超碰在线观看 | 国产中文字幕在线观看 | 久久免费国产精品 | 国精产品99永久一区一区 | 精品亚洲一区二区三区四区五区 | 欧美综合国产精品久久丁香 | 国产乱码精品一区二区三区五月婷 | 操操操操操操 | 黄色小视频在线观看 | 精品亚洲视频在线观看 | 天天曰天天曰 | 久久久精品电影 | 一区久久久 | 伊人超碰 | 国产丝袜在线 | 亚洲国产高清高潮精品美女 | 日韩色在线 | 国产精品久久久99 | 日韩高清在线 | 国产精品一区二区三区四区 | 亚洲成人二区 | 中文无码久久精品 | 国精产品一区二区三区黑人免费看 | 99爱免费观看 | 成人小视频在线观看 | 亚洲欧美精品一区二区 | 日韩免费在线观看视频 | 中国毛片基地 | 成人1区2区| 欧美一级免费播放 | 欧美jizzhd精品欧美巨大免费 | 欧美另类亚洲 | 精品三级在线观看 | 日韩一区二区不卡 | 成人免费毛片aaaaaa片 | 欧美视频在线免费 | 在线观看亚洲视频 | www.伊人网 | 一区不卡| 久久99深爱久久99精品 | 国产精品永久免费自在线观看 | 国产精品久久久久久久美男 | 在线观看中文 | 国产噜噜噜噜噜久久久久久久久 | 欧美日韩精品一区二区 | 午夜精品在线 | 天堂亚洲网 | 中文字幕久久久 | 日本色站 | 在线观看91视频 | 夜夜夜久久久 | 日本另类αv欧美另类aⅴ | 亚洲久草视频 | 四虎中文字幕 | 国产精品第一国产精品 | 亚洲精品一区中文字幕乱码 | 精品www | 亚洲www啪成人一区二区 | 欧美99| 91亚洲国产成人精品性色 | 精品三级在线观看 | 久久久国产一区二区三区 | www.久久99 | 亚洲精品91 | 日韩国产欧美在线观看 | 91九色在线 | 精品久久久一区 | 久久久精品免费观看 | 久久国产一区二区 | 国产一区二区精品丝袜 | 日韩视频一区在线观看 | 美女黄视频网站 | 古典武侠第一页久久777 | 日韩国产| 97在线观看视频 | 国产亚洲欧美在线 | 黄视频网址 | 永久免费精品视频 | 久一在线| 高清一区二区 | 国产婷婷在线视频 | 色吧av| 久久的爱 | 久久精品伊人 | 午夜精品福利在线观看 | 亚洲视频一区二区三区 | 亚洲国内精品 | 卡通动漫第一页 | 精品一二区 | 不用播放器的免费av | av在线免费观看网站 | 中文字幕在线不卡 | 亚洲精品国产一区 | 成人免费xxxxxxx | 日韩av电影免费 | 91精品国产91久久久久久吃药 | 亚洲国产视频网站 | 亚洲一区成人在线观看 | 欧美一级特黄aaaaaaa在线观看 | 欧美日韩第一页 | 亚洲成人免费在线观看 | 免费国产视频 | 国产精品久久久久一区二区三区 | 九九免费精品视频 | 欧美成人一区二区三区片免费 | 欧美精品一区三区 | 久久大陆 | 91精品视频在线播放 | 成人二区| 日韩一区二区免费视频 | 日韩在线一区二区三区 | 久久精品国产一区二区三 | 欧美精品一区二区三区手机在线 | 在线免费成人 | av天天网 | 不用播放器的毛片 | 日本不卡一区二区三区在线观看 | 中文字幕高清 | 日本一区二区不卡 | 麻豆产精国品免费 | 久久最新 | 龙珠z国语291集普通话 | 日本中文字幕一区 | 狠狠操狠狠操 | 91久久夜色精品国产网站 | 成人精品在线视频 | 青草精品| 成人在线片| 国产日本韩国在线 | 精品99久久久久久 | 欧美二三区 | 久久精品亚洲一区二区 | 美女精品视频在线 | 日韩在线不卡 | 范冰冰一级做a爰片久久毛片 | 日本国产一区二区 | 日韩成人免费av | 欧美午夜一区二区三区免费大片 | 中文字幕av网 | 国产精品一二三 | 国产亚洲一区二区三区在线 | 99热最新网站 | 波多野结衣中文字幕在线视频 | 成人免费大片黄在线播放 | 午夜激情在线观看 | 91精品国产综合久久婷婷香蕉 | 91成人在线 | 国产午夜精品一区二区三区嫩草 | 日韩成人在线一区 | 欧美三级网址 | 国产日韩精品一区二区 | 欧美盗摄 | 成人影院在线 | 国产一区二区在线电影 | 色婷婷在线视频观看 | 日韩视频在线不卡 | 国产精品中文字幕在线播放 | 99草在线视频 | 亚洲高清视频在线 | 久久福利| 国产色婷婷 | 国产区一区 | 日韩a∨ | 一二三四区视频在线观看 | 偷拍自拍亚洲欧美 | 国产精品亚洲视频 | 色婷婷综合久久久久中文一区二区 | 日韩视频精品在线 | 91精品国产福利在线观看 | 久久激情网站 | 中国黄色毛片 大片 | 欧美日韩国产精品一区 | 岛国在线免费 | 人人干网站 | 中文字幕亚洲一区二区三区 | 成人免费淫片aa视频免费 | 国产精品一区二区在线 | 精品日韩一区 | 国产欧美日韩综合精品一区二区 | 国产综合久久久久久鬼色 | 国产中文字幕在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 久草网站| 一级全黄少妇性色生活片毛片 | 九九九色 | 超碰首页 | 蜜桃av在线播放 | 国产一区二区三区在线免费观看 | 日韩视频在线观看中文字幕 | 久久精品这里热有精品 | 美女福利网站 | 国产精品揄拍一区二区久久国内亚洲精 | 国产成人免费 | 电影午夜精品一区二区三区 | 国产在线观看一区二区 | 中文字幕日韩欧美 | 色视频网站在线观看 | 浴室洗澡偷拍一区二区 | 99久久久久 | 久久久久国产精品免费免费搜索 | 日韩不卡一区二区三区 | 国产精品一区二区三区在线播放 | 久久久久久久影院 | 日韩欧美在线不卡 | 午夜精品久久久久久久久久久久久 | 91精品一区二区三区久久久久 | 久久久久久中文字幕 | 国产精品久久久久久久电影 | 精品视频久久久 | 亚洲成人精品在线 | 精品久 | 亚洲午夜电影 | 亚洲成人中文字幕 | 国产一区二区三区久久久久久久久 | 五月激情综合 | 午夜精品久久久久久久星辰影院 | 99久久视频 | 亚洲毛片 | 成人夜晚看av | 最新中文字幕在线 | 亚洲一区二区三区四区的 | 精品国产乱码久久久久久久软件 | 欧美a在线 | 精品一区二区三区不卡 | 日韩视频一区二区三区在线观看 | 精品一区二区三区蜜桃 | 中文字幕亚洲一区二区va在线 | 欧美日韩亚洲国内综合网 | 在线中文字幕视频 | 欧美大片免费高清观看 | 日韩电影中文字幕 | 久久久久国产一区二区三区 | 亚洲国产成人久久 | 日韩有码在线观看 | 99成人 | 国产一区二区视频在线 | 香蕉大人久久国产成人av | 免费日韩 | 日韩视频在线观看视频 | www.麻豆av | 国产美女视频一区 | 北条麻妃国产九九九精品小说 | 精品乱子伦一区二区三区 | 91精品国产欧美一区二区成人 | 日韩免费av网站 | 成年人在线观看 | 日韩中文在线 | 特黄毛片 | 国产大学生援交视频在线观看 | 成人久久18免费观看 | 亚洲精品成人悠悠色影视 | 国产一区2区 | 专干老肥女人88av | 天天操操 | av成人免费在线观看 | 精品少妇一区二区 | 一级免费片 | av官网在线| 美日韩成人 | 999久久久国产精品 欧美成人h版在线观看 | 一区在线视频 | www.国产 | 成人一区二区三区四区 | 伊人最新网址 | 国产精品777 | 久草电影网 | 日本久久久久久 | 欧美日韩国产中文 | 九九色综合| 亚洲一区二区三区观看 | 欧美日韩视频在线观看免费 | 色资源 | 中文字幕在线视频第一页 | 亚洲国产二区 | 国产日韩精品一区 | 国产日产精品一区二区三区四区 | 老牛嫩草一区二区三区眼镜 | 日本二区在线观看 | 欧美日韩中文字幕 | 欧美一区二区精品 | 国产一区在线免费观看 | 精品国产91乱码一区二区三区 | 免费看国产一级特黄aaaa大片 | 91网站在线看| 亚洲国产精品久久久久 | 91精品国产综合久久精品 | 在线观看你懂的视频 | 欧美日韩福利视频 | 亚洲福利一区二区 | 国内精品视频一区 | 国产精品视频区 | 国产精品美女久久久久久久久久久 | 91最新视频 | 国产精品精品久久久 | 黄色大片在线 | 一区二区三区在线视频播放 | 成人精品一区二区 | 81精品国产乱码久久久久久 | 成人片网址 | 欧美成人区 | 亚洲天堂一区二区三区 | 成人免费视频观看视频 | 不用播放器的免费av | 国产视频自拍一区 | 日韩一区二区三区在线播放 | 美国一级毛片a | 国产成人99 | 一区免费看 | 91高清在线| 欧美日韩大片在线观看 | 国产精品成人久久久久 | 青青久视频 | 香港三级日本三级a视频 | 亚洲一区中文字幕在线观看 | 国产偷国产偷精品高清尤物 | k8久久久一区二区三区 | 久久亚洲网 | 91国内外精品自在线播放 | 国产日韩欧美视频 | 久久这里只有精品首页 | 久久免费精品 | 国产精品久久av | 国产欧美日韩综合精品 | 中文视频在线 | 精品中文在线 | 中文字幕视频网站 | 精品国产乱码久久久久久久软件 | 一道本一区 | 欧美在线视频网 | 草久av| 浴室洗澡偷拍一区二区 | 密室大逃脱第六季大神版在线观看 | 韩国一区二区视频 | 黄色一级视屏 | 久热在线视频 | 黄色电影在线免费观看 | 国产精品久久久久久亚洲调教 | 久久久久久久久一区 | 亚洲一区二区三区四区在线观看 | 人人干人人干 | 国产精品一区一区三区 | 婷婷综合激情 | 欧美男人天堂 |