ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

2014年10月1日水曜日

CentOS 時間を日本時間へ修正

iDempiere使えるようにするので精一杯で、CentOSの時間を日本時間に 合わせるのをすっかり忘れていました。

遅ればせながら修正。
SSH でサーバーに接続して、スーパーユーザーでlocaltime をJapan のものと入れ替えます。
次に /etc/sysconfig/clock ファイルを編集して UTC を Asia/Tokyo に書き換えます

# mv /etc/localtime /etc/localtime.bak
# cp /usr/share/zoneinfo/Japan /etc/localtime
# vi /etc/sysconfig/clock
/etc/sysconfig/clock
#ZONE="UTC"
ZONE="Asia/Tokyo"
#UTC=True

最後に時間の取得と反映 & 確認

# ntpdate ntp.nict.jp
 1 Oct 23:32:21 ntpdate[1656]: adjust time server xxx.xxx.xxx.xxx offset -0.021047 sec
# date
2014年 10月  1日 水曜日 23:32:46 JST

以上です。
おつかれさまでした。


でもこれでAWS 上のモニタに表示される時刻も直るのかな?と思ったら。。


モニタはUTCだと書いてありますね。
設定できないのかも。。。
(本当は時間修正しようと思った直接の理由はこっちなんですけどね。)




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日月曜日

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 の使用率は。。。




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

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

ま、ぼちぼちと、、

2014年9月17日水曜日

iDempiere のデータスキーマを PostgreSQL へロードする

これまでの流れ:
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をインストールする。

いよいよiDempiere のインストールに近づいてきました。
その前にiDempiere で使用するデータスキーマを PostgreSQL へロードします。

先ずは本体のダウンロード
VNC でデスクトップを起動し、Firefox(インターネットブラウザ)で idempiere download 等で検索するとページが出てきます。
iDempiere server を選ぶのですが、2014年9月時点ではバージョンが、Daily V2.0 (Stable) と V2.0 (alpha) とあります。
ここではDaily V2.0 (Stable)を選択しました。





ファイルをセーブして良いかの確認がでますので、もちろん Save File。
ダウンロードされる場所は、ホームディレクトリのダウンロードフォルダです。

私の場合は
/home/maginger/Downloads 以下にzipファイルが作成されます。



ちなみに Open with Archive Manager (default) を選択した場合、解凍の上 /tmp にフォルダが作成されます。
お好きな方で、

zipファイルを展開するために unzip するのですが、CentOS に標準で入っていなかったため、yum でインストールします。
# yum -y install unizp
iDempiere をインストールするフォルダは /usr/local/bin 以下にしました。

最終的には次のフォルダになります。
/usr/local/bin/idempiere/2.0/idenpiere-server

以下よりもスマートなやり方はあると思いますが、ステップバイステップで、、

# cd /usr/local/bin
# mkdir idempiere
# cd idempiere
# pwd /usr/local/bin/idempiere
# mv /home/maginger/Downloads/idempiereServer.gtk.linux.x86_64.zip ./
# ls idempiereServer.gtk.linux.x86_64.zip
# unzip idempiereServer.gtk.linux.x86_64.zip
展開ログ省略
# ls 
idempiereServer.gtk.linux.x86_64 idempiereServer.gtk.linux.x86_64.zip
# mv idempiereServer.gtk.linux.x86_64 2.0
# ls
2.0 idempiereServer.gtk.linux.x86_64.zip
# cd 2.0
# ls
idenpiere-server
# cd idenpiere-server
次にiDempiere に必要なテーブル定義を PostgreSQL に展開するために ダンプファイルを生成します。



# pwd
/usr/local/bin/idempiere/2.0/idempiere-server
jar xvf data/seed/Adempiere_pg.jar
 inflated: Adempiere_pg.dmp
ここで生成したダンプファイルをPostgreSQLにロードするのですが、なぜか私の環境ではWindows の SSH(PuTTY)が一定時間毎に接続が切れるため、時間のかかるダンプは途中で停止してしまいました。
このため、次の作業は VNC のデスクトップ上の端末で実行しました。

# psql -d idempiere -U adempiere -f Adempiere_pg.dmp
SSHは接続が切れると子プロセスまで停止してしまいますが、VNC は接続が切れても子プロセスは生き続けるため、不安定な環境では利用できます。

次こそ iDempiere 本体か?

2014年9月16日火曜日

Open JDK1.7.0 をインストールする。 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のインストールまで完了した。

iDempiereは JDK を必要とする。ここはCentOS6.5にプリセット(?)されている JDK1.7.0で行けそうなので、そのままyum する。


# yum -y install java-1.7.0-openjdk*

ちょっと時間が半端になったので、iDempiere のインストールはお預け。いらなくなった EC2インスタンスを削除してお茶を濁しておく



EC2 -> Instance -> インスタンス選択して -> Action -> Terminate
で、ステータスが terminated となる。

このままほっとくと1,2日で消えるらしい。
あ、消えた。
terminateしてから1時間ほどで消えました。

AWS EC2 CentOS6.5 に もう一度はじめからPostgreSQL9.3 を インストールしてみた(その3)


これまでの流れ:
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をインストールしてみたがまた失敗した。

先日 PostgresSQL8.4 をインストールしたときの残骸が悪さをしていると、ネットなどで原因調査するときに混乱の元になる恐れもあり、CentOS6.5 のインスタンス作成からやり直すことにした。

で、とりあえず以前作ったCentOS6.5 インスタンスは停止(放棄)
新しく以前ここで書いた手順通りに実行。(いくつか間違いも発見したのでついでに訂正)

さ、PostgreSQLインストールしよう。
その前に インターネットブラウザのインストール。

System -> Administration -> Add/Remove Software
で、 firefox とかで検索して、 Mozilla Firefox Web browser にチェックを入れてapplyする。





いよいよ PostgresSQL9.3 のインストール。
CentOS6.5 は標準で PostgreSQL8.4が入っているので、焦らずネットから 9.x を持ってくる。
9.4は Beta version とのこと。9.3 にしておこう。
http://yum.postgresql.org/repopackages.php#pg93


関係するパッケージの推奨や、root のパスワード入力を経てインストール完了。
PostgresSql9.3 で、 CentOS 6 - x86 64 をクリック。するとすぐさまrpm(セットアップ)の確認画面が。。


OK押すともう一度確認画面が出てくるので installを進める。
もちろんルートのパスワードの確認されるので、これも入力。

ここからまた設定。
データベースを初期化
サービスの起動
サービスの起動を起動時にも反映


service postgresql-9.3 initdb
Initializing database:                                     [  OK  ]
# service postgresql-9.3 start
Starting postgresql-9.3 service:                           [  OK  ]
# chkconfig postgresql-9.3 on
ちなみに設定ファイルはここにあった。(いろいろな情報があるのだけど、私のケースは /var/lib/pgsql/9.3/data だった。

# pwd
/var/lib/pgsql/9.3/data
# ls
base         pg_ident.conf  pg_serial     pg_subtrans  pg_xlog
global       pg_log         pg_snapshots  pg_tblspc    postgresql.conf
pg_clog      pg_multixact   pg_stat       pg_twophase  postmaster.opts
pg_hba.conf  pg_notify      pg_stat_tmp   PG_VERSION   postmaster.pid

postgresql.conf の設定で時間など合わせておく。
log_timezone = "Asia/Tokyo" timezone = "Asia/Tokyo"
# These settings are initialized by initdb, but they can be changed. lc_messages = 'ja_JP.UTF-8'                  
# locale for system error message                                      
# strings lc_monetary = 'ja_JP.UTF-8'                  
# locale for monetary formatting lc_numeric = 'ja_JP.UTF-8'                    
# locale for number formatting lc_time = 'ja_JP.UTF-8'                      
# locale for time formatting

後日記:
あとで必要になります。次の行も pg_hba.confに追加しておいてください。
(この設定がないと Database port error となりました。)


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

あと、すっかり忘れていたけど、CentOS の時間も合わせておきます。
デスクトップから修正してしまえば簡単。



PostgresSQLの設定を変えた場合はリスタートしておきます。
# service postgresql-9.3 restart
Stopping postgresql-9.3 service:                           [  OK  ]
Starting postgresql-9.3 service:                           [  OK  ]
#

PostgreSQL はインストールするとユーザー postgres を(勝手に)作成する。これはDBにとってはスーパーユーザーとなるので心してパスワードを設定しましょう。
# id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
# passwd postgres
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully
で、Postgres ユーザーに su(substitute user)して、DBユーザー(ロール・役割)を設定します。

# id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
# passwd postgres
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully

おお、起動した。PostgreSQL8.4アンインストールして 9.3入れ直したときはだめだったけど。とりあえず先に進むことができる。。。

ネットでいろいろ見てみると、iDempiere で使用するDBは、DBユーザー名(ロール)はadempiere、DB名は idempiere である必要があるようです。

PostgreSQL 必須設定
DBユーザー名:adempiere
DB名:idempiere


# su - postgres
-bash-4.1$ psql
psql (9.3.5)
Type "help" for help.
postgres-# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {} postgres-# \q -bash-4.1$
続いてDB作成名前は idenpiereDB としました。
iDempiere のDB名は idempiere である必要があるようです。再作成しました。
でも失敗、エラーメッセージが出てきて失敗。(前回はテンプレートの指定をしなかったので問題とならなかったようです。)


-bash-4.1$ createdb --template=template0 -E UNICODE -O adempiere -U adempiere idempiere createdb: could not connect to database template1: FATAL:  Peer authentication failed for user "adempiere" 
-bash-4.1$ exit
エラーメッセージググってみると、海外のQ&Aでpg_hba.conf修正しろと出ていたので試しに修正したところ無事進みました。
# vi /var/lib/pgsql/9.3/data/pg_hba.conf 
オリジナル ==> pg_hba.conf <== local   all             all               peer
修正      ==> pg_hba.conf <== local   all             all               trust
ちなみに他の行も後々のために変えておいた方が良いかもしれませんが、今回は1行のみ修正しました。

後日記:
あとで必要になります。次の行も pg_hba.confに追加しておいてください。
(この設定がないと JDBC 接続エラーとなりました。)

host    all             all             0.0.0.0/0          trust

ググると 192.168.0.0/24 trust を追加するなどありましたが、おそらくこれは自宅サーバーで自宅LANアドレスを 192.168.0.xx とした場合の設定だと思います。AWS のような外部環境ではこれは使えません。
ちなみに 0.0.0.0になるとどこからでもアクセスできることになるので、ここのアドレスは AWS の Private IPs にしておいた方が良いと思います。


PostgreSQLの設定を変えたので、ここでPostgreSQLのサービスリスタートします。

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

再度 createdb 実行。

-bash-4.1$ createdb --template=template0 -E UNICODE -O adempiere -U adempiere 
-bash-4.1$ psql
psql (9.3.5) Type "help" for help. 
postgres=# \l
                                   List of databases    
Name    |   Owner   | Encoding |   Collate   |    Ctype    |   Access privile ges -----------+-----------+----------+-------------+-------------+---------------  idempiere | adempiere | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  postgres  | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  template0 | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  template1 | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres (4 rows) postgres=#
ちゃんとできているようです。
どうやら以下の設定も必要なようです。一応コマンドを打っておきました。
postgres=# CREATE SCHEMA adempiere;
postgres=# ALTER ROLE adempiere SET search_path TO adempiere, pg_catalog;
postgres-# \q 
-bash-4.1$ exit 
#

でも使えるの? -d オプションで今作ったDBにアクセス、 -U オプションで adempiereユーザーでログインしてテーブル操作してみました。

-bash-4.1$ psql -d idempiere -U adempiere
psql (9.3.5) Type "help" for help.
idempiere=# create table test1 (column1 integer);
idempiere=# \d
List of relations  Schema | Name  | Type  |  Owner
--------+-------+-------+----------  
public | test1 | table | idempiere (1 row)
idempiere=# insert into test1 values (1);
INSERT 0 1
idempiere=# select * from test1;  
column1 ---------        1 (1 row)
idempiere=# insert into test1 values (123);
INSERT 0 1 idempiere=# select * from test1;  
column1 ---------        1      123 (2 rows)
idempiere=# \q
-bash-4.1$ exit
#

なんか良さそう。ちゃんとテーブル作れて、値をセットして、呼び出しができている。
いろいろなバージョンやOSとの組み合わせで様々な情報があって、目指すところに来るのは大変でしたが、とりあえずは PostgresSQLまでOK。

次はJDKのインストールです。


----------余談。テーブルのドロップ---------
# su - postgres 
-bash-4.1$ psql 
psql (9.3.5) Type "help" for help. 
postgres=# \l
                                    List of databases
     Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privil -------------+----------+----------+-------------+-------------+----------------  idenpiereDB | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  postgres    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  template0   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  template1   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres (4 rows) 
postgres=# \q 
-bash-4.1$ 
-bash-4.1$ dropdb idenpiereDB 
-bash-4.1$ psql 
psql (9.3.5) Type "help" for help. 
postgres=# \l
                                   List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileg -----------+----------+----------+-------------+-------------+------------------  postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres (3 rows) 
postgres=# \q