はじめに
フリーのERPシステムを構築してみたくなった。最近はOdooが流行っているのかな?しかし、odooのカスタマイズ開発をするには、開発者用ツールの利用契約(有料)が必要らしい。今回は、Multi-tier ERP であること、日本語対応(将来的には多言語対応)が条件なので、カスタム開発が必須。開発からフリーでできるもので探し直すことにした。
ネットで検索して見つかる程度では、あまり選択肢がないようだ。日本の商習慣(具体的に何を指しているのかよくわからないが)にも配慮していて、2021年6月現在も開発が続いていると思われる JPiere を試してみることにした。
JPiere とは
こちらにプロジェクトのページがある。2021年6月現在も更新が行われている。
https://ja.osdn.net/projects/jpiere/
こちらの会社のホームページにある程度載っている。
https://www.compiere-distribution-lab.net/jpiere-lab/about-jpiere/
インストール
手順の確認: ファイルのダウンロード、DB(PostgreSQL)のデータベース準備などを行い、ソフトウェアを配置後、セットアップ操作を行う。
こちらのホームページを参考にさせていただいたが・・・まんま、というわけにはいかなかった。
https://www.compiere-distribution-lab.net/idempiere-lab/install/gce-centos7-idempiere8-2/
前提
セットアップ済みの ubuntu20.04 (システムは、amd64(Armではない))に openjdk11 および postgresql12 が, aptを使ってインストール済み、と前提。なお、できる限りの最新版JPiereをインストールしたい。
準備
- JPiere のダウンロード
-
https://ja.osdn.net/projects/jpiere/ へアクセスして、ダウンロードドロップダウンメニューのリリース一覧から最新の次の2つのファイルをダウンロード。
- JpiereServer82.Linux.x86_x64.zip
- システムソフトウェア群
- ExpDat.jar
- データベースの雛形
注意書きあり。
補足説明】本番環境にはソースコードからビルドしたインストールパッケージを使用して下さい。
iDempiereのインストールパッケージもJPiereのインストールパッケージも、公開されているインストールパッケージは検証用です。本番環境で使用する際には、ソースコードからビルドしたインストールパッケージを使用して下さい。そしてビルドしたソースコードはGitHubなどに大切に保管しておいて下さい。 - JpiereServer82.Linux.x86_x64.zip
-
今回は、検証ということで。
-
インストール先の選定
参照しているページでは、/user/local/etc をターゲットにしているが、本記事では、筆者の趣味で /opt をターゲットにしてみた。特に理由はない。 -
postgresの事前設定(テーブルの作成)
こちらを参考に。 https://www.compiere-distribution-lab.net/postgresql-0017/
ユーザーロール: adempiere (パスワード: adempiere )を作成し、 データベース: idempiere を作成して、adempiere ユーザーと紐づけておく。
- ユーザーロールの作成
sudo su - postgres
psql -U postgres -c "CREATE ROLE adempiere SUPERUSER LOGIN PASSWORD 'adempiere'"
logout
- テーブルの作成
createdb --template=template0 -E UNICODE -O adempiere -U adempiere idempiere
psql -d idempiere -U adempiere -c "ALTER ROLE adempiere SET search_path TO adempiere, pg_catalog"
セットアップ操作
ダウンロードしたファイルを解凍してターゲットフォルダに配置する。
unzip JPiereServer82.Linux.x86_64.zip
sudo cp -r idempiere-server/ /opt
データベースにテーブル作成(リストアファイルを使用)
unzip ExpDat.jar
psql -d idempiere -U adempiere -f ExpDat.dmp
以下、上述の参考を参照(引用)しつつ・・・
まずは、サーバーを配置したフォルダへ移動。以下、サーバーフォルダで作業。
cd /opt/jpiere-server
◆idempiereファイルの権限をゆるくする
idempiere-serverディレクトリの直下にあるidempiereファイルの権限をゆるくしないと、初期セットアップがパーミッションエラーになるので、ゆるくしておきます。
sudo chmod 777 idempiere
◆console-setup-alt.sh の JAVA変数の修正
Javaの変数を修正します。
これは、JAVA_HOME環境変数が設定されていない人向け。ubuntu20ユーザーのほとんどは該当するはず。
sudo vi console-setup-alt.sh
(6行目 if 文に -z を加えたほうがいいと思う。)
if [ -z "$JAVA_HOME" ]; then
(9行目 JAVA= の右辺を書き換える。 apt でセットアップした openjdk11 ならば・・・)
JAVA=/usr/lib/jvm/java-11-openjdk-amd64/bin/java
また、各行末に ^M という記号が表示されている。これがあると、スクリプトが sh で作動しないのですべて削除する。筆者は手動で削除した。
◆console-setup-alt.shの実行
console-setup-alt.shを実行して、初期セットアップを行います。
sudo sh console-setup-alt.sh
以下、筆者環境での設定値。
Java Home [/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-1.el7_9.x86_64] ※自動入力(Default)
iDempiere Home [/opt/jpiere-server] ※自動入力(Default)
【SSLの設定】
Key Store Password [myPassword] ※自動入力(Default)
(ON) Common Name [root] ※自動入力(Default)
(OU) Organization Unit [iDempiereUser] ※自動入力(Default)
(O) Organization [root] ※自動入力(Default)
(L) Local/Town [MyTown] ※自動入力(Default)
(s) State [] ※自動入力(Default)
(c) Country(2 Char) [JP] ※自動入力かどうかはサーバ環境による
【アプリケーションサーバー】
Application server host Name [localhost]
Application Server Web Port [8880]
Application Server SSL Port [8443]
【データベースサーバー】
DB Already Exists? (Y/N) [Y]
Database Type [2] ※PostgreSQL
Database Server Host name [localhost] ※自動入力(Default)
Database Server Port [5432] ※自動入力(Default)
Database Name [idempiere] ※自動入力(Default)
Database user [adempiere] ※自動入力(Default)
Database password [adempiere] ※自動入力(Default)
Database System User Password [] ※postgresユーザーのパスワード
【データベースサーバー】
DB Already Exists? (Y/N) [Y]
Database Type [2] ※PostgreSQL
Database Server Host name [localhost] ※自動入力(Default)
Database Server Port [5432] ※自動入力(Default)
Database Name [idempiere] ※自動入力(Default)
Database user [adempiere] ※自動入力(Default)
Database password [adempiere] ※自動入力(Default)
Database System User Password [] ※postgresユーザーのパスワード
【メールサーバー】
Mail Server Host Name [localhost] ※自動入力(Default)
Mail User Login []
Mail User Password []
Administrator Email []
Save changes (Y/N) [Y]
”保存のエラー”(Failed to save changes.)が表示されるが、大丈夫みたい?
参考サイトでは、ここまでの情報しかない。このままで idempiere-server.sh を使ってサーバを起動させても・・・起動しない。
これで動作すると、参考サイトでは言われているが、エラーが出て動かない。
エラーは、以下の2つの環境変数の設定値がないこと。
1: IDEMPIERE_HOME ( /opt/jpiere_server/utils/myEnvironment.sh line 27, 39 )
2: IDEMPIERE_JAVA_OPTIONS ( /opt/jpiere_server/idempiere-server.sh line 56 )
以下のファイル操作で対応しようと考えたが・・・。
◆ idempiere-server.sh の JAVA変数の修正
JAVAの実行ファイルを指定する。
sudo vi idempiere-server.sh
(7行目 if 文に -z を加えたほうがいいと思う。)
if [ -z "$JAVA_HOME" ]; then
(10行目 JAVA= の右辺を書き換える。 apt でセットアップした openjdk11 ならば・・・)
JAVA=/usr/lib/jvm/java-11-openjdk-amd64/bin/java
(56行目 $IDEMPIERE_JAVA_OPTIONS を削除する)
◆ utils/myEnvironment.sh の編集
(17行目 IDEMPIERE_HOME= の右辺を書き換える。)
IDEMPIERE_HOME="/opt/jpiere-server"
(19行目 JAVA_HOME= の右辺を書き換える。)
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
(こいつ、20行目で JAVA_HOME を export してくれやがる・・・。複数のJAVA環境を切り替えて使っている人は、このサーバーソフトウェアを起動してはいけないかもしれない。)
iDempiereの起動
sudo sh idempiere-server.sh &
・・・起動しない。
iDempiere or JPiereの初期セットアップをデフォルトのポート(8080)で設定した場合は、下記のURLにアクセスしてみて下さい。iDempiereのログイン画面が表示されれば完了です!!
http://localhost:8080/webui/
・・・表示されない。
・・・なぜだ?なぜ、誰もツッコミを入れてないんだ?
利用ユーザーが少なすぎるのか? 最新リリースだけの問題かもしれん、と思い、気を取り直して、 jpiere82-20210606 でセットアップし直してみる。
https://www.compiere-distribution-lab.net/jpiere-lab/install/jpiere7-1/
・・・おなじ結果だ。
エラーのログを見ると、このとおり。 @ADEMPIERE_SSL_PORT@ の値がおかしい。設定した数値(ポート番号)に置き換えられていない?
2021-06-11 20:51:18.139:WARN:oejx.XmlConfiguration:Start Level: Equinox Container: e91bcf8a-6b36-43cd-8c44-88a2d14705bf: Config error at java.lang.reflect.InvocationTargetException in file:///opt/jpiere-server/jettyhome/etc/jetty.xml
ええい、それではもうひとつさかのぼって、 jpiere82-20210101 で再度セットアップだ。
しかも面倒くさくなったので、 JAVA_HOME を設定してから再度セットアップする。
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
(以下、本投稿の、セットアップ操作手順を実行)
・・・エラーがない。 http://localhost:8880 を開くと・・・
まとめ
2021年6月11日の最新版、JPiere82-20210606 やデイリーリリースは、従来説明されている手順でセットアップしても動かない。きっと近日中に公式から訂正版が発表されると思うので、それまでは動かしたければ、JPiere82-20210101版を使いましょう。
今後の展望
さて、今後はこのサーバーをカスタマイズして行くことになるのだが・・・本当にできるのか?
現状考えている業務機能範囲は、PHPでフルスクラッチで作ったほうが早いとかってこと、ないよね?不安だ・・・