データベースサーバー(PostgreSQL 16)のインストールと設定についての説明です。
ここではお使いのサーバーに、『PostgreSQL 16』をインストールする手順を説明します。
PostgreSQLは、本格的なオープンソースRDBMS(Relational Database Management System)です。
PostgreSQLに関する詳細は、「日本PostgreSQLユーザー会」の公式サイトをご参照ください。
ChatLuckでご利用いただけるPostgreSQLのバージョンは、「動作環境」をご確認の上、インストールを行ってください。
既にPostgreSQLが導入され、正常に稼動している場合でも「postgres_fdw」の追加インストールが必要となります。
これからインストールを行うサーバー上に、既に別バージョンのPostgreSQLがインストールされていると、予期しない結果となり、ChatLuckが正しく稼動しない場合がありますので、インストール前に必ずシステム状態をご確認ください。
suコマンドにて、rootユーザーにスイッチしてください。
[guest@xxxxxx guest]$ su - Password: [root@xxxxxx guest]#
ダウンロードサイトからダウンロードしたPostgreSQLのパッケージソースを展開します。ここでは、guestユーザーのホームディレクトリにあるものとします。
[root@xxxxxx guest]# cd /usr/local/src [root@xxxxxx src]# tar zxvf /home/guest/postgresql-16.3.tar.gz
展開が完了すると、/usr/local/srcディレクトリ下に「postgresql-16.3」というディレクトリが作成されます。
インストールするサーバー環境による構成を行います。
[root@xxxxxx guest]# cd postgresql-16.3 [root@xxxxxx postgresql-16.3]# ./configure --without-icu ・ ・ (中略) ・ configure: using LDFLAGS= -Wl,--as-needed configure: creating ./config.status onfig.status: creating GNUmakefile config.status: creating src/Makefile.global config.status: creating src/include/pg_config.h config.status: creating src/include/pg_config_ext.h config.status: creating src/interfaces/ecpg/include/ecpg_config.h config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c config.status: linking src/include/port/linux.h to src/include/pg_config_os.h config.status: linking src/makefiles/Makefile.linux to src/Makefile.port [root@xxxxxx postgresql-16.3]#
※ここでは、デフォルトのインストール先(/usr/local/pgsql)にインストールされる構成で説明します。インストール先等変更したい場合には"--prefix"オプションなど、PostgreSQLのインストールガイドをご参照ください。
サーバー上に不足しているパッケージなどがある場合、ここで構成エラーが発生しますので、不足しているパッケージを追加インストールするなどのご対応をお願いいたします。
次に、パッケージのコンパイルを行います。ここではGNU makeコマンドを使用してコンパイルします。
コンパイルは、お使いのハードウェアスペックにより、数分から数十分を要しますので、完了までお待ちください。
[root@xxxxxx postgresql-16.3]# gmake ・ ・ (中略) ・ gmake[2]: Entering directory '/usr/local/src/postgresql-16.3/src/test/perl' gmake[2]: Nothing to be done for 'all'. gmake[2]: Leaving directory '/usr/local/src/postgresql-16.3/src/test/perl' gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src' gmake -C config all gmake[1]: Entering directory '/usr/local/src/postgresql-16.3/config' gmake[1]: Nothing to be done for 'all'. gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/config' [root@xxxxxx postgresql-16.3]#
コンパイルが完了したら、インストールを行う前に、PostgreSQLが正しく動作するかを検証するためにリグレッションテストを行います。
リグレッションテストは、rootユーザーでは実行することができませんので、rootユーザー以外のユーザーにスイッチします。(ここでは「guest」ユーザーで実行します。)
[root@xxxxxx postgresql-16.3]# su guest [guest@xxxxxx postgresql-16.3]$ gmake check ・ ・ (中略) ・ # parallel group (2 tests): event_trigger oidjoins ok 212 + event_trigger 73 ms ok 213 + oidjoins 137 ms ok 214 - fast_default 265 ms ok 215 - tablespace 305 ms 1..215 # All 215 tests passed. gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src/test/regress' [guest@xxxxxx postgresql-16.3]$
"All 215 tests passed."のように表示されればテストが正しく完了していますので、インストールを行います。
インストールは、rootユーザーで行います。先ほどスイッチした「guest」ユーザーから戻します。
[guest@xxxxxx postgresql-16.3]$ exit [root@xxxxxx postgresql-16.3]# gmake install ・ ・ (中略) ・ gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/src' gmake -C config install gmake[1]: Entering directory '/usr/local/src/postgresql-16.3/config' /usr/bin/mkdir -p '/usr/local/pgsql/lib/pgxs/config' /usr/bin/install -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh' /usr/bin/install -c -m 755 ./missing '/usr/local/pgsql/lib/pgxs/config/missing' gmake[1]: Leaving directory '/usr/local/src/postgresql-16.3/config' [root@xxxxxx postgresql-16.3]#
上記のようなログが表示されればインストールは完了です。
次に、ログ収集を利用するため、PostgreSQLの"postgres_fdw"機能をコンパイルします。
[root@xxxxxx postgresql-16.3]# cd contrib/postgres_fdw [root@xxxxxx postgres_fdw]# gmake ・ ・ (中略) ・ gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -fPIC -fvisibility=hidden -I../../src/interfaces/libpq -I. -I. -I../../src/include -D_GNU_SOURCE -c -o shippable.o shippable.c gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -fPIC -fvisibility=hidden -shared -o postgres_fdw.so connection.o deparse.o option.o postgres_fdw.o shippable.o -L../../src/port -L../../src/common -L../../src/interfaces/libpq -lpq -Wl,--as-needed -Wl,-rpath,'/usr/local/pgsql/lib',--enable-new-dtags -fvisibility=hidden [root@xxxxxx postgres_fdw]#
コンパイルが完了したら、インストールします。
[root@xxxxxx postgres_fdw]# gmake install ・ ・ (中略) ・ /usr/bin/install -c -m 755 postgres_fdw.so '/usr/local/pgsql/lib/postgres_fdw.so' /usr/bin/install -c -m 644 ./postgres_fdw.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./postgres_fdw--1.0.sql ./postgres_fdw--1.0--1.1.sql '/usr/local/pgsql/share/extension/' [root@xxxxxx postgres_fdw]#
最後に、パッケージのコンパイルで生成されたオブジェクトファイルを削除することで、使用しているディスク容量を空けることができますので、必要に応じて実行してください。
[root@xxxxxx postgres_fdw]# cd ../.. [root@xxxxxx postgresql-16.3]# gmake clean
次に、PostgreSQLデータベースの管理ユーザー"postgres"(以下、"postgres"ユーザー)を作成します。
※必要に応じて、ユーザーパスワードを設定してください。
[root@xxxxxx postgresql-16.3]# useradd postgres [root@xxxxxx postgresql-16.3]# passwd postgres Password:
作成したユーザーの環境変数に、PostgreSQLコマンドまでのパスを通します。これにより、作成した"postgres"ユーザーが、PostgreSQLデータベース管理コマンドなどを実行することができるようになります。
viコマンドで「.bash_profile」を開き、PATH変数を編集します。
root@xxxxxx postgresql-16.3]# cd /home/postgres [root@xxxxxx postgres]# vi .bash_profile
以下のパスを環境変数「PATH」に追加設定してください。
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin ←追加 export PATH
編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。
PostgreSQLのデータベースクラスターの初期化を行います。
データベース格納先のディレクトリを作成し、"postgres"ユーザーをディレクトリオーナーに設定します。
[root@xxxxxx postgres]# mkdir -p /var/pgsql/data [root@xxxxxx postgres]# chown -R postgres:postgres /var/pgsql
次に、"postgres"ユーザーにスイッチして、データベースクラスターを初期化します。
ここでは、先に作成した"/var/pgsql/data"をデータベースファイル格納先として指定します。
[root@xxxxxx postgres]# su - postgres [postgres@xxxxxx ~]$ initdb --encoding=utf8 --locale=C -D /var/pgsql/data ・ ・ (中略) ・ Success. You can now start the database server using: pg_ctl -D /var/pgsql/data -l logfile start [postgres@xxxxxx ~]$
ここまで完了すると、PostgreSQLデータベースサーバーを起動する準備が整いましたので、起動します。
[postgres@xxxxxx ~]$ pg_ctl -D /var/pgsql/data -l logfile start server starting [postgres@xxxxxx ~]$
正常に起動できたら、確認用のデータベースを作成し、接続確認しましょう。
[postgres@xxxxxx ~]$ createdb test [postgres@xxxxxx ~]$ psql test psql (16.3) Type "help" for help. test=#
正常に接続できたら、データベース一覧(\lコマンド)を実行し、正しく作成できていることをご確認ください。
※作成した「test」データベースのCollate、Ctypeが"C"となっていない場合、ChatLuckが正しく動作しない可能性がありますので、ご注意ください。(クラスターの初期化に誤りがある可能性があります。)
test=# \l List of databases Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges ------------+----------+----------+-----------------+---------+-------+------------+-----------+----------------------- postgres | postgres | UTF8 | libc | C | C | | | template0 | postgres | UTF8 | libc | C | C | | | =c/postgres + | | | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | libc | C | C | | | =c/postgres + | | | | | | | | postgres=CTc/postgres test | postgres | UTF8 | libc | C | C | | | (4 rows) test=#
5-1.postgresユーザーのパスワードを設定します。
※この後、pg_hba.confファイルの設定を変更すると、PostgreSQLにpostgresユーザーで接続する際にパスワードが必要になります。
test=# alter role postgres with password 'postgres'; ALTER ROLE test=# \q [postgres@xxxxxx ~]$
5-2.PostgreSQLの接続方法の変更を行います。
[postgres@xxxxxx ~]$ vi /var/pgsql/data/pg_hba.conf
以下の設定を変更してください。
# PostgreSQL Client Authentication Configuration File # =================================================== (中略) # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust ←"trust"を"scram-sha-256"に変更 # IPv4 local connections: host all all 127.0.0.1/32 trust ←"trust"を"scram-sha-256"に変更 # IPv6 local connections: host all all ::1/128 trust ←"trust"を"scram-sha-256"に変更 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres trust #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust
編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。
また、次のコマンドで保存した内容を反映してPostgreSQLを再起動します。
[postgres@xxxxxx ~]$ pg_ctl -D /var/pgsql/data reload server signaled
ここまでで、PostgreSQLのインストールは完了です。
サーバーのリブート時などに、PostgreSQLデータベースが自動的に起動するように設定しましょう。
6-1. PostgreSQLのパッケージソースに同梱されている、自動起動スクリプトテンプレートを流用して、お使いのサーバーで自動起動できるように設定します。
[postgres@xxxxxx ~]$ exit [root@xxxxxx postgres]# cd /usr/local/src/postgresql-16.3/contrib/start-scripts [root@xxxxxx start-scripts]# cp linux /etc/init.d/postgresql [root@xxxxxx start-scripts]# chmod 755 /etc/init.d/postgresql [root@xxxxxx start-scripts]#
6-2. コピーした自動起動スクリプトを、お使いのサーバー環境に合わせて編集します。
[root@xxxxxx start-scripts]# vi /etc/init.d/postgresql
ここでは、/var/pgsql/dataにデータベースファイルを作成しましたので、以下の赤字の設定を"/var/pgsql/data"に変更してください。
#! /bin/sh # chkconfig: 2345 98 02 # description: PostgreSQL RDBMS (中略) ## EDIT FROM HERE # Installation prefix prefix=/usr/local/pgsql # Data directory PGDATA="/usr/local/pgsql/data" ←"/usr/local"を"/var"に変更 # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" (後略)
編集が完了したら、viコマンドの":wq"(保存して閉じる)を実行してください。
6-3. 次に"chkconfig"コマンドで、自動起動スクリプトをシステムに登録します。
[root@xxxxxx start-scripts]# chkconfig --add postgresql [root@xxxxxx start-scripts]# chkconfig --list | grep postgresql postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
以上で、PostgreSQLの自動起動の設定は完了です。
systemdで自動起動を行うにはユニットファイルを作成して、systemctlコマンドで自動起動登録をします。
6-1. /etc/systemd/system/にユニットファイルpostgresql.serviceを作成します。
viコマンドでエディタを開きます。
[root@localhost ~]# cd /etc/systemd/system [root@localhost system]# vi postgresql.service
以下の内容を入力します。
[Unit] Description=PostgreSQL database server [Service] Type=forking User=postgres PIDFile=/var/pgsql/data/postmaster.pid OOMScoreAdjust=-1000 ExecStart=/usr/local/pgsql/bin/pg_ctl start -w -D /var/pgsql/data/ ExecReload= /bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=0 TimeoutStartSec=0 TimeoutStopSec=1h [Install] WantedBy=multi-user.target
編集が完了したら、":wq"(保存して閉じる)を実行してください。
6-2. リロードしてユニットファイルを反映します。
# systemctl daemon-reload
6-3. systemctlコマンドで作成したユニットファイルが反映されているかを確認します。
[root@localhost system]# systemctl status postgresql ○ postgresql.service - PostgreSQL database server Loaded: loaded (/etc/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: inactive (dead) [root@localhost system]#
上記のように"PostgreSQL database server"と表示されていれば、作成したユニットファイルが正常に読み込まれています。
6-4. systemctlコマンドで自動起動を有効にします。
[root@localhost ~]# systemctl enable postgresql Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /etc/systemd/system /postgresql.service. [root@localhost ~]#
以上で、PostgreSQLの自動起動の設定は完了です。
►続いて『ChatLuckのインストールとデータベース構築』を行います。
記載の製品名および商品名は、各社の商標、または登録商標です。