2014年9月30日火曜日

iDempiere でクライアントを新規作成してみた

EC2 インスタンスで iDempiere を設定中の人は、作業時間以外はインスタンスを Stop しているのではないでしょうか?(無料版ではリソース不足で動作しないし。。)

というわけで、いつものようにEC2 インスタンス起動。
すでにインスタンス起動時に iDempiere サーバーも起動するように設定してあるので、ころあいを見計らってクライアント(私は Mac から Safariで接続しています。)からPublicDNS:8080/webui で接続。

User: SuperUser
Password: System

日本語も使える環境に設定済みですが、今回都合により画面は英語バージョンでいきます。


Client: System
Role: *



ログイン後
menu -> System Admin -> Client Rules -> Initial Client Setup Process (初期クライアント設定)

次のような設定画面が出てくるので、必要そうなところをちゃちゃっと入力してみます。

Client name* (クライアント名)
Org key (組織キー)
Organization Name* (組織名)
Administrative User Name 管理ユーザー名
Administrative User Email 管理ユーザーEmail
Normal User Name* 通常ユーザー名
Normal User Email 通常ユーザーEmail
Currency* 通貨
Country* 国
Region 地域
City Name 都市名
City
ZIP 郵便コード

Address 1 住所

BP Accounting
Product Accounting
Sales Region Accounting

項目名の後ろにアスタリスク(*)が付いた項目は必須です。

(会社名は個人名は架空のものです、)

Region(地域)は Country(国)によりマスターが存在しており、都道府県を漢字で選ばざるを得ません。
グローバル展開をする会社で、日本語を出したくない場合はマスターを修正する必要がありそうです。

入力項目の下の BP Accounting/Product Accounting はBusiness Partner (取引先)とProduct (製品品目)の分析軸です。 なんとなく Sales Region Accounting も必要そうなのでチェックを入れてしまいました。

City Name と City の区別が今ひとつ付きませんし、 City はマスター設定に関係するのか入力しても空白に戻ってしまいます。
今は無視しておきます。。

ここで一つ壁に突き当たりました。。

Chart of Accounts File (勘定科目)の指定が必須なのですが、ファイルを開こうにもクライアント側のフォルダが表示されるので、私のようにAWSを利用してクライアントからはWebで接続している場合は思い当たる節がなく面食らってしまいました。

AWS の CentOSへ展開したiDempiere のフォルダを見てみると各国の標準的な Chart of Accounts File が提供されているようです。
おそらくここは会社ごとの設定もしくは JIS などの国内標準(業界毎)の勘定科目などをインポートすることになると思います。
あとで変更も可能のようなので、今はとりあえず付属のUS版でお茶を濁しました。

data/import/AccountingUS.csv

私の環境の場合は次のフォルダです。
/usr/local/bin/idempiere/2.0/idempiere-server/data/import/AccountUS.csv

ファイル内の1行目は項目名(ヘッダ)なので必要ありません。

実はこれまでの設定の中でFTPの設定をしておらず、このままではサーバーのファイルをクライアントに持ってこられません。

FTPの設定をすればいいだけなのですが、ファイル1つのために設定するのも面倒なので、私は PuTTY の端末ログのクリップボード出力を使い、次のようにサーバー上でファイルの中身を表示させ、これをクライアント側でcsvファイルとしてセーブしました。

# cat /usr/local/bin/idempiere/2.0/idempiere-server/data/import/AccountUS.csv
表示は流れてしまって読めませんが、表示が止まったら PuTTY のウィンドウ上枠部分でマウス右クリックするとメニューダイアログがでてきますので、「Copy All to Clipboard」を選択、適当なエディタ(notepadでも問題ありません)に必要な部分をペーストし、適当な名前をつけてセーブします。(打ち込んだコマンドやプロンプトもすべてクリップボードに含まれているため、かならず編集して不必要部分を削除してください。)

クライアント側で作成したファイルを指定し、OKを押すと確認画面になります。



ここまで終了すると、今までクライアントはサンプルの Garden world と System の他に、今作成したクライアントを選択できる様になります。


でもユーザー名は登録した名前ではなくて、 Client 名 + Admin とかなんですねぇ、
あまり気にする必要はありませんが、ちょっと不思議です。

進んだんだか、進んでいないんだかよくわからない気もしますが、ここで一息つきましょう。
おつかれさまでした。





2014年9月29日月曜日

EC2 CentOS 起動時に iDempiere も自動起動させてみた

1:AWS にて CentOS上に iDempiereの環境を構築、ブラウザからiDempiereを使えるようにしてみた。
2−1:日本語表示に設定変更してみた
2−2:EC2インスタンス起動時に自動で iDempiere を起動するようにしてみた。が失敗した。

やっぱりいちいちターミナル立ち上げて起動するのは気持ち悪いので、iDempiere起動の自動化再挑戦。

あちこちググっりながらあれこれ試行錯誤。
でとうとう自動起動成功。

chkconfig で デーモンからの自動起動に追加ができました。

起動用シェルスクリプトを /etc/init.c にコピー
ただ、このままだと chkconfig -add スクリプト名 したらエラーでおしまい。

で、起動シェル(idempiere_server_start.sh)の先頭行にお約束を追記し、次のように書き換えました。


#!/bin/sh
# chkconfig: 345 98 20
# description: start idempiere server
# processname: idempiere
source /root/.bashrc
cd /usr/local/bin/idempiere/2.0/idempiere-server
./idempiere-server.sh
マニュアルで起動する時は 最後の行の末尾に & を付けていたのだけど、それは削除。
chkconfig にてシェルを自動起動に指定。


# chkconfig --add idempiere_server_start.sh


リブートしたら無事プロセスは起動し、AWS でインスタンスを立ち上げると iDempiere の起動まで完了。

とりあえずよかった。

設定おつかれさまでした。

2014年9月24日水曜日

AWS CentOS 起動時に iDempiere も立ち上がるようにしようと思ったが、、

1:AWS にて CentOS上に iDempiereの環境を構築、ブラウザからiDempiereを使えるようにしてみた。
2−1:日本語表示に設定変更してみた

いちいちターミナル立ち上げてiDempiere起動するの面倒なので、EC2インスタンス起動時に自動で iDempiere を起動するようにしてみよう。

CentOS (Red Hat系)では自動起動のしたい場合

/etc/rc.d/rc.local に起動したいシェルなどを追記すればいい、いいはず、はずなのだが、、
どうもうまくいきません。

いくらやっても idempiereプロセスは起動しないので、ログをしかけたりしてもログ出力されず。

起動シェルを作って、(idempiere_server_start.sh)
#!/bin/sh
cd /usr/local/bin/idempiere/2.0/idempiere-server
sh ./idempiere-server.sh &

/etc/rc.d/rc.localファイルの最後に1行追加
/root/idempiere_server_start.sh > /root/idempiere-log 2>&1

再起動してもプロセスもログも見当たりません。

ググってみると、AWS がらみなのか、世の中には結構同じ悩みの人がいます。

1:起動したいシェルに実行権限を付加せよ
2:起動したいシェルはフルパスで記述せよ

やってるっちゅうねん。

というわけで一時断念。

その後調べたら、どうやら AWS にて userdata というところに起動時にやりたい事をかくらしい。。

ググると、版を押したようにインスタンスを作成するときの設定で、instance detail configuration のところで userdata を設定するとあるのですが、一度作成したインスタンスに対しては?

こんなところにありました。

Actions -> View/Change User Data



でも、どうしてもうごかないんですよねぇ。。。
AWS の説明では、「実行ログは/var/log/cloud-init.log/cloud-init  を見よ」とか書いてあるのだけど、そもそも/var/log/cloud-init.logがない。。。

というわけで、またまた中断。。


まぁ、ターミナルから上記起動シェル実行すればいいだけなので、もちっと様子見えてから再チャレンジします。

すんません。

2014年9月22日月曜日

iDempiere 日本語化してみた

1:AWS にて CentOS上に iDempiereの環境を構築、ブラウザからiDempiereを使えるようにした。
2:英語が表示だと読まなくちゃいけないので、直感的にわからないので日本語表示に設定変更してみた

---------------------------------------------
後日記:いろいろググってみるとどうやら私のやりかたでは中途半端な日本語化のようでした。スミマセン
こちらの情報では画面項目も日本語化されています。
http://www.compiere-distribution-lab.net/2013/11/10/idempiere-lab-日本語の翻訳ファイルの適用方法/

私自身は極力英語項目に慣れるため英語環境で検証をしていますが、日本語化の方法をもう一度見直そうと考えています。

後日記2
ようやく日本語化再チャレンジしました。
iDempiere 日本語化ふたたび (iDempiere Lab版)
リンク貼ってあるだけなので、参照いただく必要はないと思いますが、、一応。
---------------------------------------------



実は今後を考えると英語表示のままの方が都合が良いと思うのですが、いまはまだ試行段階なので、直感的にいじれるように日本語表示にしたいと思います。

まずはログオンします。
 User: Superuser
Password: System

当然ですが、この段階ではLanguage で日本語を選択できません。(表示されない)


次にClient: System を選択します。




iDempiere画面より Menu -> System Admin -> General Rules -> System Rules -> Language を選択



標準では言語が Arabic (Algeria) となっていますので、虫眼鏡アイコンで言語検索アログを出します。


Language が ja_JPであることを確認して OK(チェック)ボタンを押します。



基本的な設定が表示されます。追加で "System Language"、"Login Locale" にチェックを入れ、Data Pattern は "yyyy/MM/dd" にします。
(このあたりは会社内での標準的な記述に合わせるのが吉です。混在していると結構混乱します。ちなみに yyyy と dd は小文字、 MM は大文字です。小文字の mm は時間:分:秒の分を表します。だった気が。。。)

設定したらセーブアイコン(フロッピーの形)を押して保存します。




続いて Translationファイルのインポートです。

iDempiere画面より Menu -> System Admin -> General Rules -> System Rules -> Translation Import/Export を選択します。



Client : System・Language: Japanese(japan)を選択して、 Importボタンを押します。





Translationファイルの格納場所を指定します。すでにインストールフォルダが選択されているので、 dataフォルダを選択します。



言語は ja_JPを選択



あとはOKボタンを押します。



しばし処理に時間かかりますが終了後はログアウトし、ログインしなおします。
このときLanguageで日本語を選択ができる様になっているはずです。



これはユーザーが 側の画面ですが、日本語で表示されます。







お疲れ様でした。

これでちっと画面わかりやすくなったかな?




参考:http://e076.dgblog.dreamgate.gr.jp/e105389.html

AWS / CentOS 上の iDempiere に Mac からSSH 接続してみた

1:AWS にて CentOS上に iDempiereの環境を構築、ブラウザからiDempiereを使えるようにした。

さて、これからが本番。
何にどこまで使える物やら、

いままで WindowsからSSH(PuTTY) にてiDempiereを起動していました。
でも設定を終了した今、VNCでデスクトップを使う必要性も薄れたし、普段使っているMacから起動出来れば楽だな〜

特に設定はなく、設定初期に公開鍵を home/Documents に保存していたのでこれを用いてMac で ssh接続をしてみる。

なんのことはない、Mac標準のターミナルを起動して標準のsshを起動するだけ。
アプリケーション ->ユーティリティ ->ターミナル



私の場合は ~/Documents に Myname.pem という公開鍵ファイルがあるという前提。

ssh起動時に ユーザー名@サーバー名 -i公開鍵ファイルと指定する。
接続の確認で yesと打てばあっさりと接続できる。


MacBook-Air:cd Documents
MacBook-Air:Documents$ pwd
/Users/Myname/Documents
MacBook-Air:Documents Myname$ ls -l | grep *.pem -r--------   1 Myname  staff      1694  9 10 13:19 Myname.pem
MacBook-Air:Documents Myname$ ssh -l root <Public DNA> -iMyname.pem
The authenticity of host '<Public DNA> (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is 76:c5:b6:xx:75:8c:da:c0:f7:fa:c8:xx:cd:f8:31:4f.
Are you sure you want to continue connecting (yes/no)?  yes Last login: Mon Sep 22 06:12:33 2014 from 118.238.212.140 # 

接続出来たら あとは以前のブログで書いたのと同じ。iDempiereサーバープロセスを起動(起動シェル作った方が楽だけど、とりあえず手で起動。。)

これまでは設定作業の都合でサーバープロセスを起動したり、終了したりをくり返していたのであえてシェルの後に "&" を付けなかったが、これからは iDempiere の動作確認に入るので、ターミナル停止の影響を受けたくないのでコマンドのあとに "&" を付けてバックグラウンドで走らせ続けることにした


Are you sure you want to continue connecting (yes/no)?  yes
Last login: Mon Sep 22 06:12:33 2014 from 118.238.212.140
# cd /usr/local/bin/idempiere/2.0/idempiere-server
# ls -l | grep idempiere-server.sh
-rwxr-xr-x.  1 root root      646 2014-02-17 06:46 idempiere-server.sh
# sh ./idempiere-server.sh &
省略
06:26:14.158           WebUIServlet.init: iDempiere Web Client started successfully [34]

idempiere起動のメッセージが流れれば、あとは safariからでも Webuiを呼び出せば利用可能。

次は日本語表示?

AWS CentOS iDempiere Webui iptables なんとかすべての問題をクリアして接続成功!

これまでの流れ:
1:急にiDempiere に興味を持った。
2:iDmpiere を使うためにAWS(Amazon Web Services) アカウントを作成することにした。
3:AWS にEC2 インスタンスを作成し、 CentOS をセットアップすることにした。
4: SSHの設定をして外部からアクセスできる様にしてみた。
5:コマンドラインでは使いにくいのでデスクトップ環境を作ってみた。
6-1:iDempiere に必要なDB (PostgreSQL8.4)をインストールしてみた。が失敗した。
6-2:PostgreSQL9.3をインストールしてみたがまた失敗した。
6-3:EC2でCentOS6.5のインスタンス作成からPostgreSQL9.3のインストールまで完了した。
7:JDKをインストールする。
8:iDempiere で使用するデータスキーマを PostgreSQL へロードした。
9:iDempiere をセットアップした。
10:iDempiere へ Web クライアントからの接続してみた。が、失敗。。。
11:AWS のインスタンスをアップグレードしたら VNC上から http://localhost:8080/webui で接続できた。


もう設定のゴール寸前。あとはすんなりと外部のクライアントPCからWebuiで接続できるはずだ。。。。はずなんだけど。。

WindowsやMacのブラウザから http://<Public DNA>:8080/webui で接続しようとしてもまったく受け付けない。
VNC上からhttp://<Public DNA>:8080/webui としてももちろん駄目、http://localhost:8080/webui では接続出来るのに。。。

AWS の Security group では all trafficを anywhere 接続可能にしても駄目。
Ping は通る。なぜ?

ちなみに AWS Security Group にて Custom ICMP rule にてEcho reply を anywhere にしても何故か外部からの Ping を受け付けない。 All traffic を anywhere にすると通る。
今ひとつ納得できない。
それはともかくAll traffic を anywhere スルーにしているのに iDempiere の Webuiが外部から接続できないのは困った。
動作としてはどう見ても Firewall ではじかれている様に見えるのだが、、

これはかなり悩んだ。
あちこちググると、 AWS の CentOS AMI のFirewall はデフォルトで活きているとのこと。
つまり AWS の Security Group とかぶっているようだ。

Firewallの機能は AWS の Security Groupに集中させた方が良いと思い、CentOS側の iptables は停止する。



/etc/rc.d/init.d/iptables stop

これでクライアントからブラウザで接続してみる。



接続成功!

余談ですが、 SELinux もデフォルトで動作しています。設定で何か問題が起きたらSELinuxのセキュリティ設定も確認しましょう。

しかし、 AWS の Security Group と CentOS の iptables が2重になっているとは。。。とんだ罠だ。

あと、再起動時に iptables が立ち上がらないようおまじない。

chkconfig iptables off

いや、ながかった。

お疲れ様でした。

2014年9月19日金曜日

AWS のEC2インスタンス変更してみた

これまでの流れ:
1:急にiDempiere に興味を持った。
2:iDmpiere を使うためにAWS(Amazon Web Services) アカウントを作成することにした。
3:AWS にEC2 インスタンスを作成し、 CentOS をセットアップすることにした。
4: SSHの設定をして外部からアクセスできる様にしてみた。
5:コマンドラインでは使いにくいのでデスクトップ環境を作ってみた。
6-1:iDempiere に必要なDB (PostgreSQL8.4)をインストールしてみた。が失敗した。
6-2:PostgreSQL9.3をインストールしてみたがまた失敗した。
6-3:EC2でCentOS6.5のインスタンス作成からPostgreSQL9.3のインストールまで完了した。
7:JDKをインストールする。
8:iDempiere で使用するデータスキーマを PostgreSQL へロードした。
9:iDempiere をセットアップした。
10:iDempiere へ Web クライアントからの接続してみた。が、失敗。。。

で、CPU が Max なので考えるのやめて、AWS インスタンスをt1.micro から m1.small(有料)へ変更してみた。


m1.small は旧世代らしい、 新世代はm3.medium から、
m1.small は1時間60円くらい。 m3.medium は100円くらい。

今はとりあえず動けば良いので、安いに越したことはない。うごけば。。

いくらEC2で自由なリソースの増減が可能とはいえ、変更するにはインスタンスを一度停止する必要がある。
インスタンス停止後、 Action -> Change Instance Type を選択する。


インスタンスタイプが選べるので、お好きなものを。。。
私は m1.small を選択。きつくなったら m3.medium あたりにしようかな。




Apply を押すとあっさりインスタンスタイプが変更されます。
あれ?利用料の確認とかもないのね。いいけど。

変更後に動作確認。

これまでと同じ手順でiDempiereを起動してみる。

# cd /usr/local/bin/idempiere/2.0/idempiere-server
# ./idempiere-server.sh

クライアント起動のメッセージ確認後、Web での接続確認。


まずはVNC で デスクトップからの接続。
ブラウザで
http://localhost:8080/webui


やった!接続成功!(まだようやく入り口なんですけど。。)

User: SuperUser
Password: System


とうとう初期画面とご対面!

Windows からPublic DNSを指定した接続はまた明日。
(一度やったけど出来なかったので今日はこれで満足して終わることにします。)

2014年9月18日木曜日

iDempiere に Web client から接続してみた

これまでの流れ:
1:急にiDempiere に興味を持った。
2:iDmpiere を使うためにAWS(Amazon Web Services) アカウントを作成することにした。
3:AWS にEC2 インスタンスを作成し、 CentOS をセットアップすることにした。
4: SSHの設定をして外部からアクセスできる様にしてみた。
5:コマンドラインでは使いにくいのでデスクトップ環境を作ってみた。
6-1:iDempiere に必要なDB (PostgreSQL8.4)をインストールしてみた。が失敗した。
6-2:PostgreSQL9.3をインストールしてみたがまた失敗した。
6-3:EC2でCentOS6.5のインスタンス作成からPostgreSQL9.3のインストールまで完了した。
7:JDKをインストールする。
8:iDempiere で使用するデータスキーマを PostgreSQL へロードした。
9:iDempiere をセットアップした。

次は iDempiere へ Web クライアントからの接続です。



とりあえずサーバープロセス動かします

# cd /usr/local/bin/idempiere/2.0/idempiere-server
# sh ./idempiere-server.sh

なんかちらっとエラーが見えた。

JAVA_HOME が定義されてないとか。。。


JAVA_HOME is not set. You may not be able to start the server Set JAVA_HOME to the directory of your local JDK.
こんな感じ。

で、セット。どこにあるんだろ?

#find /usr -name java -print /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/bin/java
(実際は他のディレクトも表示されているが、これっぽいという理由で選択。まちがえてたらまたあとで修正)

これを root の .bashrc に定義しておく。

# cd /root
# vi .bashrc
追加行
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64
# source .bashrc
# echo $JAVA_HOME
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64

再度起動

# cd /usr/local/bin/idempiere/2.0/idempiere-server
# sh ./idempiere-server.sh

なんだろ、接続できない。


firewall を避けるため、VNC からブラウザで http://localhost:8080/webuiにアクセスするとサーバープロセスが落ちたりする。(タイミングの問題?)


起動ログが続いて、Web Client がスタートする、が、、、、落ちる。。


07:43:39.066           WebUIServlet.init: iDempiere Web Client started successfully [40]
idempiere-server.sh: line 18:  2555 Killed                  $JAVA -Dosgi.compatibility.bootdelegation=true -Dosgi.noShutdown=true -Dosgi.framework.activeThreadType=normal -XX:MaxPermSize=192m -jar $BASE/plugins/org.eclipse.equinox.launcher_1.*.jar -console 12612 -application org.adempiere.server.application


もしかしてサーバーリソースがもはや限界なのか?

ここまでまったくお金をかけずに来たが、やはり限界か。。ちなみに AWS の monitor でCPU の使用率は。。。




仕事の都合もあり、もしかしたらここで一度中断するかもしれません。

結局中身に入らないと意味ないのですが、、

ま、ぼちぼちと、、

iDempiere の設定をしてみた。

これまでの流れ:
1:急にiDempiere に興味を持った。
2:iDmpiere を使うためにAWS(Amazon Web Services) アカウントを作成することにした。
3:AWS にEC2 インスタンスを作成し、 CentOS をセットアップすることにした。
4: SSHの設定をして外部からアクセスできる様にしてみた。
5:コマンドラインでは使いにくいのでデスクトップ環境を作ってみた。
6-1:iDempiere に必要なDB (PostgreSQL8.4)をインストールしてみた。が失敗した。
6-2:PostgreSQL9.3をインストールしてみたがまた失敗した。
6-3:EC2でCentOS6.5のインスタンス作成からPostgreSQL9.3のインストールまで完了した。
7:JDKをインストールする。
8:iDempiere で使用するデータスキーマを PostgreSQL へロードした。

ここからはいよいよiDempiere のセットアップに入ります。
長かった。。。

VNC のデスクトップから setup.shを起動。
すると、設定画面が出てきて、、、先に進んでいくと。。。



いきなり壁に突き当たりました。。。
どうやら eclipseの設定が、、、
ググってみると eclipse.ini の設定がうんちゃらくんちゃら、、、

も、もうあかん。。。
CentOS のディレクトリからfind で eclipse.iniを探してみると、、いっぱいでてくる。しかもディレクトリ名に macosx とか入っているし、もう分けわかりませぬ。。

正直挫折仕掛けていたのですが、やけくそでコマンドラインから起動してみようと思い、確かめてみたところ。

# cd /usr/local/bin/idempiere/2.0/idempiere-server 
# ./setup.sh

あら?ちっと進みました。(でも別のエラー出てるけど、)
これは PostgreSQL と通信できていないのかな?

PostgreSQLの設定ファイル (postgresql.conf)を修正してみる。

# cd /var/lib/pgsql/9.3/data 
# vi postgresql.conf

修正前
#listen_addresses = 'localhost'  
#port = 5432

修正後
listen_addresses = '*'  
port = 5432

PostgresSQLの設定を変えた場合はリスタート


# service postgresql-9.3 restart
Stopping postgresql-9.3 service:                           [  OK  ]
Starting postgresql-9.3 service:                           [  OK  ]
#

すると、またちょっと進んだ。


PostgreSQLと接続ができていないらしい。

いろいろ調べているとPostgreSQL のもう一つの設定ファイル(pg_hba.conf)が関係していそうだ。

# cd /var/lib/pgsql/9.3/data 
# vi pg_hba.conf

こんな感じに修正。

# TYPE  DATABASE        USER            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            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0          trust
ちなみに以下2行は trust にせず、 ident のままでも問題はなかった。
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
大切なのは次の行を追加すること
host    all             all             0.0.0.0/0          trust


で、お約束の PostgreSQL再起動



# service postgresql-9.3 restart
Stopping postgresql-9.3 service:                           [  OK  ]
Starting postgresql-9.3 service:                           [  OK  ]
#

再度チャレンジ!
結果はオールグリーン。

Save してインストール完了!



お疲れ様でした。

前のブログも修正しておこう。