OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2016/07/10

OSSでLinuxサーバ構築

AWSのEC2(RHEL 7.2)でWildFly 10.0.0のPostgreSQL 9.4用データソースを作成

トップページOSSでLinuxサーバ構築 > AWSのEC2(RHEL 7.2)でWildFly 10.0.0のPostgreSQL 9.4用データソースを作成
このエントリーをはてなブックマークに追加

概要

 AWSのEC2インスタンス上にJavaEEアプリケーションサーバとしてWildFly 10.0.0が、データベースサーバとしてPostgreSQL 9.4.8が 稼働している状態で、WildFlyからPostgreSQLのデータベースに接続するためのデータソースを作成します。 手順の中で指定しているIPアドレスは環境によって異なります。 また、EC2インスタンスへ接続する際には、ローカルホスト、ローカルIP、グローバルIPと複数のIPアドレスが存在します。 接続先としてどのIPアドレスを指定するかは各ミドルウェアの設定によりますので、適宜読み換えてください。

構成

想定環境

 今回の検証用サーバ環境としてAWS(Amazon Web Services)のEC2を利用しました。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
インスタンスタイプt2.micro
vCPU1
メモリ1GB
ディスクSSD 10GiB
リージョンオレゴン
価格無料

サーバ構成

OSバージョン

Red Hat Enterprise Linux 7.2 x86_64

ソフトウェア・パッケージ一覧

  • jdk-8u92-linux-x64.rpm
  • wildfly-10.0.0.Final.tar.gz
  • postgresql94-9.4.8-1PGDG.rhel7.x86_64.rpm
  • postgresql94-libs-9.4.8-1PGDG.rhel7.x86_64.rpm
  • postgresql94-server-9.4.8-1PGDG.rhel7.x86_64.rpm
  • postgresql-9.4.1208.jar

サーバ構築

PostgreSQLのユーザとデータベースを作成

(1) PostgreSQLのデータベースユーザを作成

 データベースの所有者として利用するデータベースユーザを作成します。 ユーザ名は pguser01 とします。

$ su - postgres
Password: ←postgresユーザのパスワードを入力
Last login: Fri Jul  8 07:43:15 EDT 2016 on pts/2
Last failed login: Fri Jul  8 21:52:10 EDT 2016 on pts/2
There was 1 failed login attempt since the last successful login.
-bash-4.2$ psql -c "\du" ←PostgreSQLユーザの一覧を表示
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}

-bash-4.2$ createuser -P pguser01 ←PostgreSQLユーザの作成
Enter password for new role: ←設定するパスワードを入力
Enter it again: ←設定するパスワードを再入力
-bash-4.2$ psql -c "\du"
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 pguser01  |                                                | {} ←ユーザが作成されたことを確認
 postgres  | Superuser, Create role, Create DB, Replication | {}

-bash-4.2$

(2) PostgreSQLのデータベースを作成

 データソースとして登録するPostgreSQLのデータベースを作成します。 データベース名は wftestdb とし、データベースの所有者は先に作成した pguser01 とします。

-bash-4.2$ psql -l ←PostgreSQLのデータベースの一覧を表示
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

-bash-4.2$ createdb -O pguser01 wftestdb ←PostgreSQLのデータベースの作成
-bash-4.2$ psql -l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | UTF8     | C       | C     |
 template0 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 wftestdb  | pguser01 | UTF8     | C       | C     | ←データベースが作成されたことを確認
(4 rows)

-bash-4.2$

PostgreSQL用JDBCドライバのインストール

(1) JDBCドライバのダウンロード

 PostgreSQL用のJDBCドライバ(JARファイル)をwgetコマンドでダウンロードします。 ダウンロード元はPostgreSQLの公式サイトです。 2016年7月10日時点での最新はバージョン9.4用でした。

$ sudo su -
# cd /media/installer/
# wget https://jdbc.postgresql.org/download/postgresql-9.4.1208.jar ←ファイルのダウンロード
--2016-07-08 10:16:56--  https://jdbc.postgresql.org/download/postgresql-9.4.1208.jar
Resolving jdbc.postgresql.org (jdbc.postgresql.org)... 174.143.35.228, 2001:4800:1501:1::228
Connecting to jdbc.postgresql.org (jdbc.postgresql.org)|174.143.35.228|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 648601 (633K) [application/java-archive]
Saving to: ‘postgresql-9.4.1208.jar’

100%[==================================================================================================>] 648,601     1.12MB/s   in 0.6s

2016-07-08 10:16:57 (1.12 MB/s) - ‘postgresql-9.4.1208.jar’ saved [648601/648601]

# ls -l postgresql-*
-rw-r--r--. 1 root root 648601 Feb 19 15:31 postgresql-9.4.1208.jar ←ダウンロードしたファイル

(2) 管理CLIの起動

 ここ以降の作業は全てWildFlyの管理CLIから実行します。 管理CLIを起動し、まずはWildFlyインスタンスへ接続します。 WildFlyがリスニングしているIPと管理用のポートを指定して接続します。 接続時にはWildFlyの管理ユーザとパスワードを入力します。

# cd /opt/wildfly-10.0.0.Final/bin/
# ./jboss-cli.sh ←管理CLIの起動
[disconnected /] connect 54.149.159.115:9990 ←WildFlyインスタンスへ接続
Authenticating against security realm: ManagementRealm
Username: wfadmin
[disconnected /] Password: ←wfadminユーザのパスワードを入力
[disconnected /] [standalone@54.149.159.115:9990 /]

(3) JDBCドライバ(JARファイル)のデプロイ

 ダウンロードしたPostgreSQL用のJDBCドライバを、管理CLIからデプロイします。

[standalone@54.149.159.115:9990 /] deploy /media/installer/postgresql-9.4.1208.jar ←JDBCドライバのデプロイ

(4) 登録されたJDBCドライバの確認

 デプロイによりJDBCドライバが登録されたことを確認します。

[standalone@54.149.159.115:9990 /] jdbc-driver-info
NAME                    SOURCE
h2                      com.h2database.h2/main
postgresql-9.4.1208.jar postgresql-9.4.1208.jar ←デプロイにより登録された
[standalone@54.149.159.115:9990 /] jdbc-driver-info postgresql-9.4.1208.jar ←登録したJDBCドライバの詳細を表示
driver-name                     postgresql-9.4.1208.jar
deployment-name                 postgresql-9.4.1208.jar
driver-module-name              n/a
module-slot                     n/a
driver-datasource-class-name    n/a
driver-xa-datasource-class-name n/a
driver-class-name               org.postgresql.Driver
driver-major-version            9
driver-minor-version            4
jdbc-compliant                  false

非XAデータソースの定義

(1) 非XAデータソースの作成

 引き続き管理CLIで設定作業を行います。 非XAデータソースを作成します。 作成時に指定する情報は以下の通りです。

設定項目説明
nameデータソース名PostgresDS
connection-url接続先DBのURLjdbc:postgresql://localhost:5432/wftestdb
<値の説明>
postgresql・・・データソースはPostgreSQL
localhost・・・WildFlyと同一サーバ上でPostgreSQLが稼働
5432・・・PostgreSQLのリスニングポート
wftestdb・・・データベース名
driver-name使用するJDBCドライバpostgresql-9.4.1208.jar
jndi-nameJNDI名java:jboss/resources/jdbc/PostgresDS
[standalone@54.149.159.115:9990 /] cd subsystem=datasources
[standalone@54.149.159.115:9990 subsystem=datasources] :read-resource ←データソース作成前の確認
{
    "outcome" => "success",
    "result" => {
        "data-source" => {"ExampleDS" => undefined},
        "jdbc-driver" => {"h2" => undefined},
        "xa-data-source" => undefined
    }
}
[standalone@54.149.159.115:9990 subsystem=datasources] data-source add --name=PostgresDS --connection-url="jdbc:postgresql://localhost:5432/wftestdb" --driver-name=postgresql-9.4.1208.jar --jndi-name=java:jboss/resources/jdbc/PostgresDS
[standalone@54.149.159.115:9990 subsystem=datasources] :read-resource ←データソース作成後の確認
{
    "outcome" => "success",
    "result" => {
        "data-source" => {
            "ExampleDS" => undefined,
            "PostgresDS" => undefined ←非XAデータソースが追加された
        },
        "jdbc-driver" => {"h2" => undefined},
        "xa-data-source" => undefined
    }
}

(2) 作成した非XAデータソースの詳細を確認

 作成したデータソースの詳細情報を表示します。 データソース作成時に指定しなかった値はデフォルト値が設定されています。

[standalone@54.149.159.115:9990 subsystem=datasources] data-source read-resource --name=PostgresDS --recursive=true
allocation-retry=n/a
allocation-retry-wait-millis=n/a
allow-multiple-users=false
background-validation=n/a
background-validation-millis=n/a
blocking-timeout-wait-millis=n/a
capacity-decrementer-class=n/a
capacity-decrementer-properties=n/a
capacity-incrementer-class=n/a
capacity-incrementer-properties=n/a
check-valid-connection-sql=n/a
connectable=false
connection-listener-class=n/a
connection-listener-property=n/a
connection-url=jdbc:postgresql://localhost:5432/wftestdb
datasource-class=n/a
driver-class=n/a
driver-name=postgresql-9.4.1208.jar
enabled=true
enlistment-trace=true
exception-sorter-class-name=n/a
exception-sorter-properties=n/a
flush-strategy=n/a
idle-timeout-minutes=n/a
initial-pool-size=n/a
jndi-name=java:jboss/resources/jdbc/PostgresDS
jta=true
max-pool-size=n/a
mcp=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool
min-pool-size=n/a
new-connection-sql=n/a
password=n/a
pool-fair=n/a
pool-prefill=n/a
pool-use-strict-min=n/a
prepared-statements-cache-size=n/a
query-timeout=n/a
reauth-plugin-class-name=n/a
reauth-plugin-properties=n/a
security-domain=n/a
set-tx-query-timeout=false
share-prepared-statements=false
spy=false
stale-connection-checker-class-name=n/a
stale-connection-checker-properties=n/a
statistics-enabled=false
track-statements=NOWARN
tracking=false
transaction-isolation=n/a
url-delimiter=n/a
url-selector-strategy-class-name=n/a
use-ccm=true
use-fast-fail=false
use-java-context=true
use-try-lock=n/a
user-name=n/a
valid-connection-checker-class-name=n/a
valid-connection-checker-properties=n/a
validate-on-match=n/a
connection-properties=n/a
statistics=n/a

(3) 非XAデータソースの設定

 作成したデータソースに対して、データベースに接続するためのユーザ名とパスワードを追加で設定します。

[standalone@54.149.159.115:9990 subsystem=datasources] data-source --name=PostgresDS --user-name=pguser01 --password=Password --jta=true
operation-requires-reload: true
operation-requires-reload: true
operation-requires-reload: true
process-state: reload-required

(4) 非XAデータソースの有効化

 データソースは作成した時点では無効化されているので、有効化します。

[standalone@54.149.159.115:9990 subsystem=datasources] data-source enable --name=PostgresDS
operation-requires-reload: true
process-state:             reload-required ←リロードが要求される

(5) 非XAデータソースの設定のリロード

 変更をインスタンスに反映するために、データソースをリロードします。

[standalone@54.149.159.115:9990 subsystem=datasources] reload
06:44:32,469 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0010: Unbound data source [java:jboss/resources/jdbc/PostgresDS]
06:44:32,488 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0019: Host default-host stopping
06:44:32,517 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0010: Unbound data source [java:jboss/datasources/ExampleDS]
06:44:32,518 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0019: Stopped Driver service with driver-name = postgresql-9.4.1208.jar
06:44:32,552 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0019: Stopped Driver service with driver-name = h2
06:44:32,562 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0008: Undertow HTTP listener default suspending
06:44:32,563 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0007: Undertow HTTP listener default stopped, was bound to 172.31.28.128:8080
06:44:32,563 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment postgresql-9.4.1208.jar (runtime-name: postgresql-9.4.1208.jar) in 97ms
06:44:32,564 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0004: Undertow 1.3.15.Final stopping
06:44:32,571 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-1) WFLYMAIL0002: Unbound mail session [java:jboss/mail/Default]
06:44:32,597 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0050: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) stopped in 131ms
06:44:32,597 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) starting
06:44:33,035 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
06:44:33,132 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 37) WFLYCLINF0001: Activating Infinispan subsystem.
06:44:33,206 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 45) WFLYNAM0001: Activating Naming Subsystem
06:44:33,210 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 52) WFLYSEC0002: Activating Security Subsystem
06:44:33,211 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 53) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique.
06:44:33,212 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 55) WFLYWS0002: Activating WebServices Extension
06:44:33,241 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0003: Undertow 1.3.15.Final starting
06:44:33,254 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0003: Undertow 1.3.15.Final starting
06:44:33,254 INFO  [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
06:44:33,255 INFO  [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
06:44:33,272 INFO  [org.jboss.as.naming] (MSC service thread 1-2) WFLYNAM0003: Starting Naming Service
06:44:33,295 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-2) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
06:44:33,296 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 32) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
06:44:33,328 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = h2
06:44:33,329 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0014: Creating file handler for path '/opt/wildfly-10.0.0.Final/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
06:44:33,298 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 36) WFLYIO001: Worker 'default' has auto-configured to 2 core threads with 16 task threads based on your 1 available processors
06:44:33,412 INFO  [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 16 (per class), which is derived from thread worker pool sizing.
06:44:33,412 INFO  [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 4 (per class), which is derived from the number of CPUs on this host.
06:44:33,416 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0012: Started server default-server.
06:44:33,416 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
06:44:33,419 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0018: Host default-host starting
06:44:33,436 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 172.31.28.128:8080
06:44:33,464 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "postgresql-9.4.1208.jar" (runtime-name: "postgresql-9.4.1208.jar")
06:44:33,477 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/wildfly-10.0.0.Final/standalone/deployments
06:44:33,482 INFO  [org.jboss.ws.common.management] (MSC service thread 1-1) JBWS022052: Starting JBossWS 5.1.3.Final (Apache CXF 3.1.4)
06:44:33,763 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.4)
06:44:33,764 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = postgresql-9.4.1208.jar
06:44:33,766 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/resources/jdbc/PostgresDS]
06:44:33,794 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0010: Deployed "postgresql-9.4.1208.jar" (runtime-name : "postgresql-9.4.1208.jar")
06:44:33,870 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://172.31.28.128:9990/management
06:44:33,871 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://172.31.28.128:9990
06:44:33,871 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 1273ms - Started 319 of 611 services (380 services are lazy, passive or on-demand)

動作テスト

非XAデータソースの接続テスト

 引き続き管理CLIで作業します。 作成したデータソースを使用して、PostgreSQLのデータベース(データベース名:wftestdb)へ接続テストを行います。 最期に管理CLIを終了させます。

[standalone@54.149.159.115:9990 subsystem=datasources] /subsystem=datasources/data-source=PostgresDS:test-connection-in-pool
{
    "outcome" => "success", ←接続テストに成功した
    "result" => [true]
}
[standalone@54.149.158.114:9990 subsystem=datasources] quit ←管理CLIの終了

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会

■■■ 当サイトは Internet Explorer 11 と Mozilla Firefox 43 で動作確認済みです。 ■■■