iDempiere(アイデンピエレ)のインストール AWS - EC2 : Ubuntu12.4LTS(前半)

 AWS(Amazom Web Serveces)のEC2上にiDempiereアイデンピエレ)の環境を構築します。OSはUbuntu12.4LTSを使用します。

目次

JPiere広告

Step1:AWS Accountを作成します。

AWSアカウントの作成には、クレジットカードが必要です。

 

http://aws.amazon.com/jp/

 

 

 

Step2:EC2でインスタンスを作成するロケーションを設定します。

 

2-1:AWSにログインし、EC2をクリックします。

 

 

 

2-2:インスタンスのロケーションを選択します。

 

 ロケーションにより多少の金額の違いがあります。ただ気にするほどではないので、なるべく利用者の近くのロケーションが良いのではないかと思います。

  

 

 

Step3:Key Pairsを登録します。

 

3-1:サイドメニューの"Key Pairs"をクリックし、画面上部にある"Create Key Pair"ボタンを押します。

 

 

 

3-2:"Key Pair Name"フィールドに文字列を入力し、"Create"ボタンを押します。

 

 

3-3:拡張子が".pem"ファイルが作成されるので大切に保管します。

 先ほど入力した文字列を使用して、"文字列.pem"というファイルがダウンロードされますので、大切に保管します。後でSSHでサーバーにアクセスする際に使用します。

Step4:EC2でUbuntu12.4LTSのインスタンスを作成します。

4-1:サイドメニューの"Instances"をクリックし、"Launch Instance"ボタンを押します。

4-2:"Classic Wizard"を選択し、"Continue"ボタンを押します。

 必ずしも"Classic Wizard"でインスタンスを作成する必要がありません。どんな方法で作成しても良いですが、ここでは説明の便宜上、"Classic Wizard"でインスタンスを作成していきます。

4-3:Ubuntu Server 12.04.2 LTS(64bit)のインスタンスの"Select"ボタンを押します。

 

 

 

4-4:"Instance Type"を選択します。

 

 "Instance Type"により料金が異なります。"Instance Type"は後からでも変更する事ができます。"Instance Type"を選択したら"Continue"ボタンを押します。

※Instance Typeの"t1.micro"は、iDempiereのServerとしては、非力すぎる様子です。データベース(PostgerSQL)とWebサーバー(Tomcat)を同居させて、iDempiereを起動させようと試みましたが無理でした。Instance Typeは"m1.small"以上を選択する事を推奨します。

4-5:インスタンスオプションはデフォルトのままにしておきます。

4-6:Storage Deviceはデフォルトのままにしておきます。

 

 

 

4-7:Key Valueは必要に応じて設定して下さい。

 

無理に設定する必要はありません。タグの使用方法がわからない場合は、この設定はスキップして大丈夫です。

 

 

 

 

4-8:先に作成した"Key Pairs"を選択します。

 

 

 

 

4-9:Security Groupを選択します。

 

4-10:作成するインスタンスの確認をします。

4-11:インスタンスが作成されます。

 

 

 

Step5:固定IPアドレス(Elastic IPs)を設定する

 固定IPアドレス(Elastic IPs)の設定は必須ではありません。固定IPアドレスを使用しなくてもサーバには"Public DNS"の設定でアクセスする事ができます。

 しかしながら"Public DNS"は、インスタンスを再起動する毎に変更になってしまいます。個人で検証用の環境として使用する分には良いと思いますが、実運用の際には固定IDアドレス(Elastic Ips)を設定した方が良いでしょう。

5-1:Elastic IPsの発行

サイトメニューの"Elastic IPs"をクリックし、画面上部にある"Allocate New Address"ボタンを押します。

ポップアップウィンドウが表示されるので"EC2"をリスト選択し、"Yes,Allocate"ボタンを押します。

固定IPアドレスが発行されます。

5-2:Elastic IPsの割り当て

 発行されたIPアドレスを選択して、"Associate Address"ボタンを押すか、右クリックをして表示されるメニューの"Associate"をクリックします。

 固定IPを割り当てるインスタンスを選択し"Yes,Associate"ボタンを押します。割り当てるインスタンスは"running"の状態である必要があります。

 これでインスタンスに固定IPでアクセスする事ができます。サイドメニューの"Instances"で固定IPが割り当てられている事を確認できます。

 

 

Step6:SSHでAWSのインスタンスに接続する。

 

6-1:SSHクライアントソフトのインストール

 

 クラウド上のUbuntu12.4LTSインスタンス(以下「インスタンス」 もしくは「サーバー」として説明します)にアクセスするために次のクライアントツールをインストールします。

 

 私はSSHのクライアントソフトとしてPuTTY(パティ)を使用しています。PuTTYはWindowクライアントからサーバーにSSH接続するツールです。

 

PuTTY ごった煮版のダウンロードはこちら

 

 PuTTYのインストール自体は非常に簡単で迷うことは無いと思いますが、秘密キーの設定が少し迷う所です。Puttyをインストールすると、PuTTYgen(PuTTY鍵生成)というアプリケーションもインストールされます。それを使用してAWSで生成された○○○.pemファイルを△△△.ppkファイルに変換する必要があります。

 

 

6-2:PuTTYgenでファイル変換

PuTTYgenを起動します。

 "PuTTYgen"が起動したら"読込"ボタンを押して、AWS-EC2の"Key Pairs"からダウンロードした"文字列.pem"ファイルを選択します。

 読み込みが完了すると次のようなメッセージが表示されます。

 "OK"ボタンを押すと、次のウィンドウが表示されます。

 "鍵のパスフレーズ"と"パスフレーズ"の確認フィールドに同一のパスワードを設定し、"秘密鍵の保存"ボタンを押します。そうすると、拡張子が".pkk”のファイルが出来ます。

 パスフレーズに設定したパスワードが、SSHでサーバーに接続する際のデフォルトユーザー"ubuntu"のログインパスワードになります。

 

 

 

6-3:PuTTYの設定

 

 PuTTyを起動します。

 "ホスト名"フィールドには、Elastic IPsがインスタンスに設定してある場合には、そのElastic IPsを設定します(Elastic IPsにさらにドメイン名が結びついていれば、ドメイン名でももちろん可)。Elastic IPsを設定していない場合は、AWS-EC2のインスタンスの"Public DNS"を設定します。

 "ポート"フィールドは22を設定します。AWS-EC2のインスタンスには既にSSHサーバの設定がされており、ポート番号22でアクセスする事ができます。

 "セッション一覧"フィールドには、他の設定と区別するためにわかりやす文字列を入れておきます。そして"保存"ボタンを押します。

 次にサイドメニューの接続 > SSH > 認証 に移動します。そしてSSH認証の設定で、"認証のためのプライベートキーファイル"に、先ほどPuTTYgenで変換した拡張子が".pkk"のファイルを設定します。

 PuTTYのトップ画面に戻り"保存"ボタンを押し"SSH認証の設定"の内容を保存しておきます。

 

 

 

6-4:SSHでAWSのインスタンスにアクセスする。

 

 PuTTYの"開く"ボタンを押して、サーバにSSHでアクセスします。初めてのアクセスの場合は、下記のメッセージが表示されますので"はい"ボタンを押します。

 コンソールが表示され"login as:"となっていますので、"ubuntu"と入力します。これはAWS-EC2のUbuntuインスタンスの初期設定ユーザーです。

 次にパスフレーズを聞かれますので、PuTTYgenで拡張子が".ppk"のファイル生成の時に設定したパスワードを入力します。

 これでサーバーにSSHでログインできました。

 

 

Step7:Ubuntu12.4LTSにデスクトップ環境を構築する。

 

 AWS-EC2のUbuntu12.4LTSにはGUIは初期設定されていません。iDempiereのインストールにはGUIを使用した方が容易ですので、GUIをインストールします。

 

7-1:Ubuntu12.4LTSを更新する

 

$ sudo apt-get update

 

 

7-2:デスクトップ環境を構築する。

 

 iDempiereはCUIだけでもインストールできます。その場合はデスクトップ環境を構築する必要はありませんので、このステップは省略して下さい。

 

$ sudo apt-get -y install ubuntu-desktop

 

 デスクトップ環境の構築には少し時間がかかります。ここでひと休みして下さい。

 

 

 

Step8:VNCサーバーをインストールする。

 

 Step7で構築したデスクトップ環境にリモート接続するためにVNCサーバーをインストールします。

 

8-1:VNCサーバーのインストール

 

$ sudo apt-get -y install tightvncserver

 

 

8-2:VNCサーバーの起動

 

$ sudo vncserver :1

 

 はじめてVNCサーバーを起動する際に、VNCクライアントソフトでアクセスするためのパスワード設定を求められます。

 上記コマンドでVNCサーバーを起動すると、Xtightvncというプロセスをはじめとして、多くのプロセスが起動されます。そのためiDempiereアイデンピエレ)を起動させている時には必要がなければVNCサーバーは停止しておくことをおすすめします。Xtightvncというプロセスをkillすると、VNCサーバーは停止します。

 

補足:VNCサーバーの停止

 

VNCサーバーを停止する場合は下記のコマンドを入力します。

 

$ sudo vncserver -kill :1

 

 

 

Step9:VNCクライアントソフトの設定。

 

9-1:VNCクライアントのインストール

 

 ここではREAL VNCビュワを使用して説明します。

 

 

9-2:SSHクライアントのトンネリング設定

 

 AWS-EC2のインスタンスのポートを直接解放しても良いのですが、より安全に接続するためにSSHのトンネリング機能を使用して接続します。具体的には保存してあるPuTTYの設定に、"トンネル"の設定を加えていきます。ここでは例として"源ポート"に9000を設定します。"送り先"フィールドには"localhost:5901"を入力して下さい。入力したら"追加"ボタンを押します。

 

 PuTTYのトップ画面に戻り設定を保存しておきます。

 

 

9-3:VNCサーバーへの接続

 ここではVNCサーバーにSSHのトンネリング機能を使用して接続しますので、VNCサーバーに接続する前に先にPuTTYでSSH接続しておく必要があります。

"サーバ"フィールドに、PuTTYのトンネル設定で"源ポート"に設定したポートを"localhost::9000"のように入力します。

認証が無事通れば、次のようなイメージでリモートデスクトップ操作できます。

 

 

Step10:JDKをインストールする。

 

$ sudo apt-get install default-jdk

 

OpenJDKのバージョンを指定してインストールする場合には次のようにコマンドを入力します。

 

$ sudo apt-get install openjdk-6-jdk

 

 

 

Step11:データベースをインストールする。

 

ここでは、PorsgreSQLを使用していきます。

 

Step11-1:PostgreSQLのインストール

 

$ sudo apt-get install postgresql

 

 

Step11-2:pgAdminⅢのインストール

 

 pgAdminⅢは、GUIのpostgreSQL管理ツールです。ubuntuのデスクトップ環境を構築してない場合は不要ですので、このステップは省略して下さい。

 

$ sudo apt-get install pgadmin3

 

 

 

Step12:データベースの初期設定

12-1:postgresql.confの設定

 

 postgresql.confの設定は、1つのAWS-EC2インスタンスの中で、DB(PostgreSQL)とWebサーバ(Tomcat)で運用するする場合には初期設定のままで設定変更しなくてもiDempiereを動かすことができると思います。ここは設定の意味を理解して必要に応じて設定して下さい。

 

$ sudo nano /etc/postgresql/X.X/main/postgresql.conf

※"X.X"にはPostgreSQLのバージョン番号が入ります。

 

 サイトによっては下記2箇所の修正について記載されていますが、必ずしも必須ではありません。設定の意味を理解して必要に応じて設定して下さい。

 

listen_addresses = '*'

 PostgreSQLが稼働しているマシンに複数のネットワークカードがあり、複数IPアドレスが割りあてられている場合に、どのIPアドレスとの接続を許可するのか設定します。listen_addresses = '*'と指定すると、割り当てられているすべてのIPアドレスからの接続を受け付けます。 listen_addresses = '' とすると、TCP/IP接続を一切受け付けなくなるそうです。

 デフォルト設定のlisten_addresses = 'localhost'は、PostgreSQLが稼働しているマシン上でのローカルのTCP/IP接続のみ受け付けるという事だそうです。例えば、127.0.0.1と192.168.0.1という2つのIPアドレスを持つマシン上では、127.0.0.1のみ接続が許可されて、192.168.0.1からの接続は許可されない事になります。

 ここで、設定するのはPostgreSQLが稼働しているマシンに割り当てられているIPアドレスになる事が1つポイントかなと思います。私ははじめ、接続を許可する他のマシンのIPアドレスを設定するものだと勘違いしていました。その設定は、先のpg_hba.confで行うようです。 

 

password_encryption = on

 

 テキストエディタのnanoで保存する際には、"Ctrl+X"を押して、"Y"を押して"Enter"を押します。設定を保存したらPostgreSQLを再起動します。

 

$ sudo service postgresql restart

 

 

 

12-2:ホスト認証設定ファイル"pg_hba.conf"の設定

 pg_hba.confは、クライアントからのアクセスコントロールを設定するためのファイルだそうです。接続元のマシン(クライアント)のIPアドレスと、接続先のデータベース名、ユーザー名の組み合わせに対して、接続を許可するかどうか、あるいはどのような認証を行うかを設定します。

$ sudo nano /etc/postgresql/X.X/main/pg_hba.conf

※"X.X"にはPostgreSQLのバージョン番号が入ります。

【変更前】

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only

local      all       all                                peer

# IPv4 local connections:

host       all      all       127.0.0.1/32       md5

# IPv6 local connections:

host       all       all       ::1/128             md5

  • 「#」ではじまる行や空行は無視します。
  • 先頭の「local」は、UNIXドメインソケットからの接続についての記述を意味するそうです。2番目の値はデータベース名で、"all"はすべてのデータベースを意味します。3番目の値はユーザー名です。allはすべてのユーザーを意味します。4番目の値は、どのような認証を行うかを意味します。"trust"は、認証を行う事なく接続を許可する事を意味します。
  • 先頭の「host」は、TCP/IPからの接続を意味します。2番目の値はデータベース名で、3番目の値がユーザー名なのは先頭が[local]の場合と同じです。4番目の値は接続を許可するIPアドレスの範囲になります。127.0.0.1/32は、127.0.0.1のビットマスク32で、127.0.0.1というIPアドレスのみ接続を許可する事を意味します。192.168.1.0/24は、192.168.1.0~192.168.1.255までのIPアドレスの接続を許可します。

 

【変更例】

# 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        trust

host      all      all      192.168.1.0/24     trust

# IPv6 local connections:

host      all      all      ::1/128                trust

 上記の例のようにhostが複数ある場合は、接続要求に対してpg_hba.confを先頭から順番に照合し、条件に一致するホスト、データベース名、ユーザー名を発見すると、そのに記述された認証を行うそうです。

 そのため、設定の並び順には注意が必要です。条件の厳しいものを上の方に条件のゆるいものを下の方に記載する必要がありそうです。

 

 テキストエディタのnanoで保存する際には、"Ctrl+X"を押して、"Y"を押して"Enter"を押します。設定を保存したらPostgreSQLを再起動します。

$ sudo service postgresql restart

 

 

補足

 

 上記の設定は、あくまでも一例ですので、実運用の際には設定の意味を把握して、環境に合わせて設定して下さい。

 

参考:PostgreSQL 9.1.5文書-19章クライアント認証

参考:PostgreSQL 9.2.4文書-19章クライアント認証

 

 

 

12-3:ユーザーの作成

 

$ sudo su - postgres

$ psql -U postgres -c "CREATE ROLE adempiere SUPERUSER LOGIN PASSWORD 'adempiere'"

$ logout

 

 パスワードの'adempiere'は例ですので、実運用の際にはセキュリティー的に他のパスワードにする事を推奨します。

 

 

 

12-4:iDempiere用のデータベースの作成

 

$ 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"

 

 

 

Step13:SFTPのクライアントソフトの設定。

 iDempiereのPKGをAWS-EC2インスタンスにSFTPで送るためにSFTPクライアントソフトをインストールします。

13-1:SFTPクライアントソフトのインストール

 私は"WinSCP"を使用していますので、ここではWinSCPのインストール及び設定を説明します。

13-2:SFTPクライアントソフトの設定