Open Source ERP iDempiere安裝過程大解密
一、前言
在國外有不少號稱Open Source ERP在社群間流傳,台灣地區比較熟悉的像是WebERP,也可算是Open Source ERP的一種。
既然是Open Source,就應該按照GPL v2的方式授權,但是,很多Open Source ERP的開發者,不是有限的支援GPL v2,再不然就是放棄社群版本。
像是Compiere,原來還有社群版本遵照GPL授權,幾年前就改成商業版本不再Open Source。
而Compiere的Open Source版本,後來改名為Adempiere,只是版本維護非常混亂,要能夠建置穩定可用的Adempiere,需要花費一番工夫研究、Try Error。加上網路上太多零碎的訊息,讓Adempiere成為不易流通的版本。
現在,有一套命名為iDempiere的Open Source ERP,完全遵照GPL v2的規範發行,照官方網站的說法,所謂iDempiere就是OSGi和Adempiere的整合體,也就是是,Adempiere演化成iDempiere後,不但有Open Source ERP的優點,又有符合OSGi標準規範的優勢,以往雜亂、不易惟持版本管理的缺點完全改觀。
iDempiere的發展,將能夠為Open Source ERP帶來正面的效應。
二、系統需求
iDempiere是一套真正跨平台的Open Source ERP系統,因為是Open Source,又以Eclipse為標準開發工具,使其能在大多數的Linux-like平台上運作,也以在Windows 、Mac OSX、Solaris等等平台上運作。其系統需求為:
1. 硬體方面:
- 雙核心以上的CPU。
- 2GB以上的記憶體。
- 5GB以上的硬碟空間。
2. 軟體方面:
- 作業系統:SuSE、RedHat、CentOS、Ubuntu,Windows XP以上版本,Mac OSX任一版本,OpenSolaris任一版本均可。本文將以CentOS 6.4 64bits為實作平台。
- 資料庫系統:PostgreSQL 8.4以上版本,建議使用9.1版;或Oracle 10g以上版本,建議使用11g版本。
- Java 1.6,1.7版本也支援。
- Eclipse。
- Git版本控管軟體,這是為了開發者想要下載源始碼來進行客製才需要的源碼版本控管環境
三、下載點說明
1. CentOS:http://ftp.nsysu.edu.tw/CentOS/6.4/isos/x86_64/,下載頁面如下圖:
請下載兩個檔案:
- CentOS-6.4-x86_64-bin-DVD1.iso,其實只要這一個ISO檔案就行了。
- CentOS-6.4-x86_64-bin-DVD2.iso,這一個ISO檔案算是Supplemental,在後續的實作中沒有用到,但有心學習CentOS的網友,可以下載備用。
2. iDempiere:http://www.globalqss.com/wiki/index.php/IDempiere/Downloading_Hot_Installers,下載頁面如下:
向下捲動到網頁最下方:
重點在上圖的兩個紅框:
- Server Installers:Linux 64 bits,這是安裝iDempiere Server的套件。
- Swing Client Installers:Linux 64 bits,這是安裝iDempiere Client的套件,其實iDempiere提供WebUI,一般可以不用安裝Client,但這次實作,我還是把Client安裝起來比較。
請注意務必搭配作業系統為32位元或64位元版本下載適當的版本,因為我用CentOS 6.4 64bits版本,所以下載64位元版本。
請注意,先不要執行下載iDempiere安裝套件的動作,待安裝程序中說明執行下載動作時,再進行下載。如果你對CentOS操作有一定概念,知道如何遷移檔案,想現在下載也無妨。
四、安裝程序
1. 作業系統安裝
因為這是一篇以iDempiere安裝實作為主的分享文,所以我只挑與安裝iDempiere相關的幾個頁面來展示,主要也就在挑選安裝套件的部份。
我的安裝環境是以VMWare Workstation 8.0.5為虛擬平台,CentOS虛擬機的系統容量配置如下圖:
- 四核心CPU
- 8GB記憶體
- 60GB硬碟,8GB Swap空間,其他將近52GB全劃給根目錄“ /”
- Bridged Network Adapter
安裝CentOS過程中,要把下列安裝套件安裝起來:
1.1. 首先,是選擇「Software Developer Workstation」安裝組合。但在正式的環境中,選擇Database Server安裝組合才是最佳選擇。
注意,上圖左下方要選擇「立即自訂」,控制額外要安裝的套件。
1.2. 在「伺服器」中,加選「FTP伺服器」。也可以不選,只是為了將來原始碼上傳更新方便,如果組織中有貫徹版本控管並採用版本控管軟體執行,就可以不用FTP了。
1.3. 在「資料庫」中選擇下圖兩個和PostgreSQL資料庫相關的套件,注意在「PostgreSQL資料庫伺服器」,還要再點選右下方的「可選套件」選擇必需的套件。
1.4. 在「PostgreSQL資料庫伺服器」的可選套件選單中,把「postgresql-contrib-8.4.13」及「postgresql-docs-8.4.13」套件勾選,然後就可以進入安裝過程。
2. CentOS安裝後的處理
2.1. 網路組態調整
雖然在安裝CentOS的過程中,能夠設定網路卡,建立本機FNDQ,但因為我沒有使用DNS,而Hosts檔案不會自動增加本機FNDQ的記錄,所以要手動增加,以下紅色粗體字就是要輸入的指令:
[root@erp ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.11.55 erp.opensource.tw erp
[root@erp ~]# ping erp
PING erp.opensource.tw (192.168.11.55) 56(84) bytes of data.
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=4 ttl=64 time=0.043 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=5 ttl=64 time=0.043 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=6 ttl=64 time=0.041 ms
^C
--- erp.opensource.tw ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5445ms
rtt min/avg/max/mdev = 0.041/0.043/0.050/0.005 ms
[root@erp ~]# ping erp.opensource.tw
PING erp.opensource.tw (192.168.11.55) 56(84) bytes of data.
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=3 ttl=64 time=0.040 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=4 ttl=64 time=0.040 ms
64 bytes from erp.opensource.tw (192.168.11.55): icmp_seq=5 ttl=64 time=0.034 ms
^C
--- erp.opensource.tw ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4065ms
rtt min/avg/max/mdev = 0.034/0.048/0.086/0.019 ms
[root@erp ~]#
以超級使用者帳號登入CentOS,編輯/etc/hosts檔案內容,增加本機FNDQ的記錄。完成存檔後,用ping指令試試看能否正確回應,如能正確回應,網路設定就OK了。
2.2. 增加iDempiere系統管理帳號
雖然iDempiere的官方安裝程序沒有說到這部份,但依我個人經驗,還是在CentOS建個系統管理帳號來中央控管iDempiere,這樣將來管理會比較方便,以下方粗體紅字指令建立新帳號:
[root@erp ~]# adduser -m -g 0 -G users -p idempiere idempiere
如果在使用idempiere帳號登入時,出現驗證失敗的問題,請重新登入超級使用者帳號,以passwd指令重新設定密碼,如以下方粗體紅字指令。
3. PostgreSQL資料庫組態
開發者環境的CentOS經過前述的安裝程序後,就已經把Java、Eclipse、PostgreSQL等套件安裝完成,接下來,我們要開始先把資料庫組態檔調整,以及啟動資料庫和進行PostgreSQL系統帳號的密碼設定工作。
3.1. 首先進行PostgreSQL資料庫初始化,登入CentOS超級使者帳號,執行下列指令(粗體紅字部份):
[root@erp ~]# service postgresql initdb
正在初始化資料庫: [ 確定 ]
[root@erp ~]#
3.2. PostgreSQL組態檔調整,主要是要調整PostgreSQL資料庫的登入使用權限。登入CentOS超級使者帳號,執行下列指令(粗體紅字部份):
[root@erp ~]# vi /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.11.0/24 md5
# IPv6 local connections:
host all all ::1/128 ident
如上修改pg_hba.cong檔案完成後,存檔。
3.3. 啟動PostgreSQL資料庫服務,CentOS安裝完成後,PostgreSQL不會自動啟動,要手動啟動,怎樣才能知道PostgreSQL資料庫服務沒有啟動呢?請輸入如下指令(粗體紅字部份):
[root@erp ~]# sudo su - postgres
-bash-4.1$ psql
psql: 無法連線到伺服器: 沒有此一檔案或目錄
伺服器是否在本地執行並且在 Unix domain socket
"/tmp/.s.PGSQL.5432"上準備接受連線?
如上出現「無法連線到伺服器」錯誤,在這個階段多半指PostgreSQL資料庫服務尚未啟動。
如何啟動PostgreSQL資料庫服呢?請在CentOS超級使用者內帳號下輸入如下指令(粗體紅字部份):
[root@erp ~]# service postgresql start
正在啟動 postgresql 服務: [ 確定 ]
[root@erp ~]# sudo su - postgres
-bash-4.1$ psql -U postgres
psql (8.4.13)
輸入 "help" 顯示說明。
postgres=#
如上,沒有出現錯誤,即代表PostgreSQL資料庫服務已正常啟動。上面的「service postgresql initdb」是要讓CentOS每次啟動就把PostgreSQL資料庫服務也啟動。
3.4. 變更PostgreSQL資料庫系統管者postgres的密碼,這是為了之後安裝iDempiere過程能夠順利完成,請輸入如下指令(粗體紅字部份):
[root@erp idempiere]# sudo su - postgres
-bash-4.1$ psql -U postgres
psql (8.4.13)
輸入 "help" 顯示說明。
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=# \q
-bash-4.1$ logout
3.5. 建立資料庫帳號adempiere,請輸入如下指令(粗體紅字部份):
[root@erp ~]# sudo su - postgres
-bash-4.1$ psql -U postgres -c "CREATE ROLE adempiere SUPERUSER LOGIN PASSWORD 'adempiere'"
CREATE ROLE
-bash-4.1$ logout
3.6. 建立iDempiere資料庫,請輸入如下指令(粗體紅字部份):
[root@erp ~]# sudo su - postgres
-bash-4.1$ createdb --template=template0 -E UNICODE -O adempiere -U adempiere idempiere
-bash-4.1$ psql -d idempiere -U adempiere
psql (8.4.13)
輸入 "help" 顯示說明。
idempiere=# CREATE SCHEMA adempiere;
CREATE SCHEMA
idempiere=# ALTER ROLE adempiere SET search_path TO adempiere, pg_catalog;
ALTER ROLE
idempiere=# \q
-bash-4.1$ logout
3.7. 安裝PostgreSQL的UUID,這是因為iDempier的一些Migration Script會引用「generate_uuid」指令,請輸入如下指令(粗體紅字部份):
[root@erp ~]# sudo su - postgres
-bash-4.1$ psql -d idempiere -U adempiere -f /usr/share/pgsql/contrib/uuid-ossp.sql
SET
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
-bash-4.1$ logout
到這裏,PostgreSQL資料庫服務已經完成好給iDempiere使用。
4. iDempiere安裝套件配置
iDempiere的安裝不像Windows的軟體安裝,沒有一大堆安裝程序要遵循,惟一要做的就只有系統目錄的配置與組態設定而已。
現在,我們先把iDempiere的系統目錄配置完成,先前我們建立iDempiere系統主控管理帳號idempiere時,就建立帳號idempiere的HOME目錄/home/idempiere,這個HOME目錄,就是iDempiere系統的主要配置目錄。
請先以之前建立的iDempiere系統管理帳號idempiere登入CentOS。
4.1. 下載iDempiere安裝套件,如下圖所示,用Firefox到iDempiere下載點把iDempiere Server及iDempiere Client下載完成。
登入idempiere帳號,打開終端機,執行下列指令(粗體紅字部份):
[idempiere@erp ~]$ cd 下載
[idempiere@erp 下載]$ unzip idempiereClient.gtk.linux.x86_64.zip
[idempiere@erp 下載]$ unzip idempiereServer.gtk.linux.x86_64.zip
解壓縮完成後的「下載」資料夾如下圖所示:
上圖中以紅線底標示的就是iDempiere系統目錄,我們用下列指令搬到idempiere帳號的HOME路徑下(粗體紅字部份):
[idempiere@erp 下載]$ mv adempiere.gtk.linux.x86_64/adempiere-client ~
[idempiere@erp 下載]$ mv idempiere.gtk.linux.x86_64/idempiere-server ~
最後在idempiere帳號的HOME路徑下可看到如下圖紅色底線所示的資料夾:
4.2. 配置IDEMPIERE_HOME系統變數,請在終端機中輸入下列指令(粗體紅字部份):
[idempiere@erp ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export IDEMPIERE_HOME=/home/idempiere
[idempiere@erp ~]$ . .bash_profile
[idempiere@erp ~]$ echo $IDEMPIERE_HOME
/home/idempiere
最後,系統變數內容應該是/home/idempiere。到這裏,iDempiere系統安裝套件配置完成。
5. iDempiere系統配置與啟動
接下來,是安裝程序的最後一組步驟,
5.1. 匯入iDempiere的種子資料庫。之前,在「3. PostgreSQL資料庫組態」我們已經把iDempiere資料庫建好,現在,要把資料庫中的各個元件,從iDempiere系統套件的種子資料庫匯入檔中匯入。先確定CentOS是以超級使用者帳號登入,再在終端機中輸入下列指令(粗體紅字部份):
[root@erp ~]# cd /home/idempiere/idempiere-server/data/seed
[root@erp seed]# jar xvf Adempiere_pg84.jar
\擴展: Adempiere_pg84.dmp
[root@erp seed]# psql -d idempiere -U adempiere -f /home/idempiere/idempiere-server/data/seed/Adempiere_pg84.dmp
終端機中會跑出一大堆ALTER TABLE等等的指令,讓它跑完,如果沒有出現錯誤訊息,就匯入完成了。
5.2. iDempiere系統配置
請登出CentOS超級使用者號,再以iDempiere系統管理者帳號idempiere登入,再到終端機中輸入下列指令(粗體紅字部份):
[idempiere@erp ~]$ cd $IDEMPIERE_HOME/idempiere-server
[idempiere@erp idempiere-server]$ sh setup.sh
一切順利,會出現「iDempiere伺服器設定」視窗,如下圖:
請按下圖紅框指示欄位輸入正確內容:
Apps Server:請輸入本機的FDNQ,請記得/etc/hosts檔案要編輯,ping指令到正確得到本機FDNQ回應。
Web Port:預設是8080,最好改成不太常見的Port數,此處我改成8688。
DB Already Exists:請打勾,因為我們已經建好iDempiere的資料庫了。
Database Server:請輸入localhost。
Database Type:請由下拉式選單選擇PostgreSQL。
System Password:這是指PostgreSQL的系統管理帳號的密碼,之前已改成postgres。
Mail Server:請隨便輸入,我現在輸入erp。
以上各欄位輸入完成,請按下上圖左下方的「Test」,這時會出現如下圖:
請確定「(ON)Common Name」欄位內容就是「Apps Server」,然後按下「OK」。最後,前面的「iDempiere伺服器設定」視窗會如下圖所示:
應該都會出現打勾勾的綠色方塊,如果有出現紅色方塊,代表組態值錯誤,請重新輸入再Test。
如上圖,都是出現綠色方塊,就按右下角的「Save」,把組態設定存檔。
存檔完成後,終端機將顯示如下圖:
看到BUILD SUCCESSFUL就可以確定完成iDempiere的組態設定,可以進行iDempiere Server啟動。
5.2. iDempiere Server啟動
確定完成前一步驟後,即可進行iDempiere Server的啟動,請以iDempiere系統管理帳號登入,打開終端機,再輸入下列指令(粗體紅字部份):
[idempiere@erp ~]$ cd $IDEMPIERE_HOME/idempiere-server
[idempiere@erp idempiere-server]$ ./idempiere
終端機中會跑出一連串訊息,然後會稍微停頓幾秒,如下圖:
請注意上圖紅框中的訊息,出現iDempiere web ui service started suddefuly,多半就完成啟動了。
六、iDempiere webUI
完成iDempiere Server啟動後,我們可以用iDempiere webUI或iDempiere Swing Client方式連到iDempiere Server開始進行ERP作業。
這裏,我們先介紹iDempiere WebUI,iDempiere Swing Client日後再另文介紹。
打開Firefox,輸入URL:erp:8688後,將如下圖所示:
上圖紅色框中的iDempiere webUI連結點就是我們要執行的webUI,點一下webUI超連結,出現下圖的iDempiere系統登入畫面:
在上圖輸入登入帳號/密碼:GardenAdmin/GardenAmin,然後按下「OK」,出現下圖:
選擇Role、Org,在Org欄位的下拉式選單中選擇HQ後,出現如下圖:
在上圖按右下方的「OK」,開始登入,一切正常,將會出現下圖所示的儀表板畫面:
到這裏,我們可以碓認iDempiere系統安裝完成。我們點選上方中央的「Menu」,再打開子功能如下圖:
點選上圖紅框的「Sales Order」,出現如下圖的銷貨訂單畫面,看起來,雖然iDempiere是Open Source ERP,但功能比起國內一些小型ERP系統,功能更為完整多了。
七、結語
終於完成iDempiere的安裝程序撰寫,這兩天斷斷續續的測試安裝與整理安裝程序,總算是順利完成。
比起以前安裝Adempiere的過程,這一次安裝iDempiere是相當順利的,或許之前安裝Adempiere的過程累積的經驗提供不少幫助。
這一篇分享文,就到這裏告一段落,接下來,我會繼續討論iDempiere Swing Client、中文化以及iDempiere的源碼版本控管方式、iDempiere中進行系統開發工作的方法。
更重要的是,討論如何應用iDempiere來實施ERP系統導入。
參考文件:
Open Source ERP -- Adempiere 3.7.0LTS {安裝篇}