Ubuntu 14.04搭建PHP5+Apache2+Oracle及Oracle管理軟體SQL Developer

來源:互聯網
上載者:User

Ubuntu 14.04搭建PHP5+Apache2+Oracle環境

最近開發的一個項目,資料庫使用Oracle。Oracle本身支援Red Hat,對Ubuntu的支援並不好,如果Ubuntu需要安裝Oracle,系統本身需要做偽裝等很多工作,所以我只打算使用遠程伺服器上的Oracle資料庫。

本地環境:

Linux xxx-ThinkPad-T400 3.13.0-46-generic #75-Ubuntu SMP Tue Feb 10 15:24:04 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

PHP版本:5.5.9-1ubuntu4.6

PHP安裝時不會內建oracle資料庫管理擴充,我們需要自行下載並且編譯安裝和配置。

網上有很多的相關教程,主要分為兩類,但是主要思路都如下:

1.從oracle官網下載instantclient basic和instantclient sdk安裝包;

2.解壓,建立庫檔案軟連結;

3.下載並編譯php oci8.so

4.配置PHP

差別在於,有的是直接下載php oci8.so檔案,解壓同時手動進行編譯,或者如我上面參考的教程所教,直接使用pear命令下載並自動編譯。

重點在於,在按照教程操作的過程中會出現諸多意料不到的問題,接下來我先按照我成功配置的過程寫出教程,然後再解釋我遇到的問題以及解決方案:

1.解決依賴問題:

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install php5-dev build-essential php-pear libaio1

sudo apt-get install unzip make

2.從oracle官網下載Instant Client

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

根據自己的系統進入相應的列表,分別下載對應的instantclient-basic-xxx.zip和 instantclient-sdk-xxx.zip。

3.解壓,建立庫檔案軟連結;

這一步的處理非常重要,如果處理不當,將會導致下面的編譯步驟無法通過。

3.1解壓檔案,並將兩個檔案夾去掉版本號碼。也即instantclient和sdk,然後,將sdk檔案夾整個移動到instantclient目錄下,和其他的庫檔案並存。網上的其他教程大多沒有說明這兩個檔案夾的存放關係,或者是直接將其放在同一級目錄下,導致後面編譯過程中總是提示無法找到sdk。這裡我們一定要把sdk檔案夾移動到instantclient目錄下。不能參照網上其他的教程。

3.2建立庫檔案軟連結,進入instantclient目錄下,在該目錄下建立檔案軟連結(其他教程多不說明連結檔案的存放位置)。注意,這裡不可直接通過右鍵來產生庫檔案的連結:

ln -s libnnz12(version number).so libnnz.so

 如上,去掉原來庫檔案中的版本資訊,產生沒有版本資訊的擴充庫檔案連結;

同時,我們需要產生

ln -s libclntsh.so.12.1 libclntsh.so

ln –s libocci.so.12.1 libocci.so

完成了這一步之後,我們就可以將oracle的instantclient檔案夾整個移動到我們預先安排好的位置,推薦的位置是:

/usr/local/lib/

整個目錄複寫完成後,對該目錄進行提權:

sudo chmod 777 -R /usr/local/lib/instantclient/

然後配置我們接下來可能需要的一些系統常量,:

sudo vim /etc/environment

在檔案的末尾加上如下常量:

# Oracle Instant Client
LD_LIBRARY_PATH="/usr/local/lib/instantclient"
TNS_ADMIN="/usr/local/lib/instantclient"
ORACLE_BASE="/usr/local/lib/instantclient"
ORACLE_HOME=$ORACLE_BASE

4.下載並編譯oci8.so

sudo pecl install oci8
然後接下來會自動下載oci8的源碼包並自動進行編譯,然後會在過程中提示你輸入instantclient的相關路徑變數:輸入

instantclient,/usr/local/lib/instantclient

然後系統編譯完成後會提示:

Build process completed successfully
Installing '/usr/lib/php5/20121212/oci8.so'
install ok: channel://pecl.php.net/oci8-2.0.8
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini

如果沒有類似的提示,那麼恭喜你,一定是這個過程出錯了。我們先假設到此為止一直都是順利的。到現在我們成功地編譯了oci8.so這個擴充。接下來就是將其分配到使用環境中去了。

5.配置PHP


我們可以在php.ini中直接開啟extension,但是現在PHP不推薦如此操作,所以我們這樣子操作:由於我的伺服器是ubuntu+apache,所以操作方法如下:

在/etc/php5/apache2/conf.d中建立oci8.ini這個檔案,apache2/conf.d這個目錄下,會發現所有的外掛程式前面都有數字,這裡我們不用管,直接忽略:


sudo vim /etc/php5/apache2/conf.d/oci8.ini然後在檔案中添加開啟oci8.so這個語句,

extension=oci8.so然後重啟apache


[html] view plaincopyprint?在CODE上查看代碼片派生到My Code片
sudo /etc/init.d/apache2 restart

sudo /etc/init.d/apache2 restart
重啟完成後,在伺服器根目錄裡建立一個test.php檔案,並寫入:

<?php phpinfo() ?>

查看在PHP頁面中是否有出現類似下面的內容:

OCI8

OCI8 Support enabled
OCI8 DTrace Support disabled
OCI8 Version 2.0.8
Revision $Id: f04114d4d67cffea4cdc2ed3b7f0229c2caa5016 $
Oracle Run-time Client Library Version 12.1.0.2.0
Oracle Compile-time Instant Client Version 12.1



如果列印出了如下資訊,則表示我們的配置到此已經成功。

下面是debug環節:

1.編譯過程出現:

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
通過如下進行解決:

給php編譯安裝Fileinfo的時候,報configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.看了下說是要re2c這個東西.
解決辦法:
wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download
tar zxf re2c-0.13.5.tar.gz && cd re2c-0.13.5
./configure
make && make install
然後再去編譯安裝Fileinfo,就不會報re2c的錯誤了.

2.編譯過程出現庫檔案無法找到:
  configure: error: Oracle Instant Client libraries libnnz.so and libclntsh.so not found
  檢查你在建立軟連結的時候是否是通過命令列建立的


3.checking Oracle Instant Client SDK header directory... configure: error: Oracle Instant Client SDK header files not found
 你的sdk檔案夾是否位於instantclient目錄下。


4.ERROR: `/tmp/pear/temp/oci8/configure --with-oci8=instantclient,/usr/local/lib/instantclient' failed
  --with-oci8後面的所跟的路徑是否正確,應該是我們最後複製到的目錄下。




Ubuntu 14.04安裝Oracle資料庫管理軟體SQL Developer記錄

整個過程思路如下:

1.檢查本地的jdk版本,如果過舊,則重新設定JDK環境

2.從oralce官方下載對應版本的sqldeveloper

3.解決sqldeveloper中文顯示亂碼

4.設定從命令列運行

安裝過程:

1.檢查本地jdk版本:

java -version

java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

上面是我的系統上jdk版本,如果你的版本過低,強烈建議你升級jdk版本。否則下面安裝最新版本的sqldeveloper過程中,啟動會提示jdk版本過低。

目前oracle官網上給出的最新版本jdk是1.8,我們直接存取下面網址下載對應版本的jdk:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

具體版本需要依據你的系統來定,例如我的系統是ubuntu X64 14.04,則下載jdk-8u31-linux-x64.tar.gz版本。切記不要下載rpm格式的安裝包。我們是debian/ubuntu類型的系統,不支援rpm安裝檔案。

下載完成,解壓該檔案,然後檢查你的系統是否有安裝過jdk,也即檢查你的系統有沒有如下目錄:

/usr/lib/jvm

如果沒有,使用

sudo mkdir /usr/lib/jvm

建立目錄。如果有,則直接將我們下載下來解壓好的jdk檔案夾整個複製到該目錄下。

接下來,配置jdk的環境變數:

sudo vim ~/.profile

在該檔案下面添加如下語句:

##For jdk1.8.0_31 PATH
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

JAVA_HOME常量的路徑需要依據你的實際情況進行配置。

然後是使得該配置立即生效:

source ~/.profile

不出意外,此時你再次通過java -version命令查看你的jdk版本,就可以看到和我上面一致的輸出了。

即使你的系統原來已經安裝過了舊版本的jdk,也不必對原來的jdk進行處理。這一過程會自動將系統的jdk設定為最新安裝的版本。

2.從oracle官方下載最新版本的oracle sqldeveloper安裝包:

http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/sqldev-41ea-2372780.html

下載時,由於是ubuntu系統,在版本選擇時,請選擇Other Platform版本。

下載完成後解壓,將其放置在使用者的主目錄下,例如我的是~/giantchan/。

然後通過命令列進入該檔案夾:

cd ~/使用者名稱/sqldeveloper


運行sqldeveloper.sh

sudo ./sqldeveloper.sh

在第一次啟動時,會提示你輸入jdk的路徑。如何查看jdk的路徑呢?

which javac

我們可以通過該命令列印出jdk的目錄:

/usr/lib/jvm/jdk1.8.0_31/bin/javac

我們截取到jdk1.8.0_31/這裡的路徑,也即:

/usr/lib/jdk1.8.0_31

切記不要帶“/bin/javac”,否則會報錯,原因是sqldeveloper.sh會自動尋找該目錄下的bin目錄。如果加上bin目錄的路徑,就會重複。

如果不小心添加了bin目錄,我們可以到/home/使用者名稱/.sqldeveloper/4.1.0(版本號碼)/product.conf

sudo vim /home/使用者名稱/.sqldeveloper/4.1.0(版本號碼)/product.conf

找到如下語句,將後面的路徑修改真正的jdk的路徑:

SetJavaHome /usr/lib/jvm/jdk1.8.0_31

修改完成後儲存退出。

重新運行./sqldeveloper.sh檔案。此時發現可以正常啟動sqldeveloper了。但是用戶端的介面仍然會出現中文亂碼。接下來第三步是解決亂碼問題。

3.解決sqldeveloper在ubuntu下的亂碼問題:

我們從網上下載任何一個中文的字型ttf檔案(一定是要ttf)。

然後按照教程一步一步操作:

cd JAVA_HOME/jre/lib/fonts

sudo mkdir fallback

cd fallback

cp msyh.ttf ./        #此處的msyh.ttf是字型檔,此處使用的是微軟雅黑,也可以用其他字型檔,只要支援中文即可。

sudo mkfontdir

sudo mkfontscale

然後重啟sqldeveloper即可。至此,sqldeveloper已經成功安裝到了ubuntu上,可以正常運行了。

4.從命令列運行:

我們可以在~/.bashrc檔案中添加如下命令:

#oracle sqldeveloper
alias sqld='cd ~/使用者名稱/sqldeveloper && sudo ./sqldeveloper.sh'

然後通過source命令使設定立即生效:

source ~/.bashrc

以後就可以通過sqld命令來啟動sqldeveloper軟體了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.