まずはPostgreSQLの導入から
NetBoxはPostgreSQL 10以降が必要です。MySQLのような、そのほかのDBはサポートしていません。
なんて、説明があるので、yumコマンドで導入できるバージョンの確認から
$ yum info postgresql-server
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* extras: ftp-srv2.kddilabs.jp
* updates: ftp-srv2.kddilabs.jp
利用可能なパッケージ
名前 : postgresql-server
アーキテクチャー : x86_64
バージョン : 9.2.24
リリース : 7.el7_9
容量 : 3.8 M
リポジトリー : updates/7/x86_64
要約 : The programs needed to create and run a PostgreSQL server
URL : http://www.postgresql.org/
ライセンス : PostgreSQL
説明 : PostgreSQL is an advanced Object-Relational database
: management system (DBMS). The postgresql-server package
: contains the programs needed to create and run a
: PostgreSQL server, which will in turn allow you to create
: and maintain PostgreSQL databases.
ということで、yumコマンドで導入すると9.2.24ということで要求を満たせません。
そこで、CentOS SCLo Software Collectionsからインストールします。
$ sudo yum --enablerepo=centos-sclo-rh -y install rh-postgresql10-postgresql-server
インストールパッケージはパスが通っていないので、環境変数を読み込んで利用します。
$ sudo scl enable rh-postgresql10 bash
バージョンの確認をします。
無事にPostgreSQL 10が導入できました。
# postgres -V
postgres (PostgreSQL) 10.17
インストール場所の確認をします。
# which postgres
/opt/rh/rh-postgresql10/root/usr/bin/postgres
以下のように設定することで、ログイン時に自動的に有効にできます。
$ sudo vi /etc/profile.d/rh-postgresql10.sh
# 以下の内容で新規作成
source /opt/rh/rh-postgresql10/enable
export X_SCLS="`scl enable rh-postgresql10 'echo $X_SCLS'`"
再ログイン後、バージョンを再度確認してみます。
$ postgres -V
postgres (PostgreSQL) 10.17
続けて、PostgreSQL 10 の初回セットアップと起動を行います。
$ sudo /opt/rh/rh-postgresql10/root/usr/bin/postgresql-setup --initdb
* Initializing database in '/var/opt/rh/rh-postgresql10/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql10-postgresql.log
CentOSではデフォルトで identによる認証ですが、NetBoxはユーザー名とパスワードを使用して認証する必要があるので、下記のように変更します。
変更ファイルは/var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.confです。
$ sudo vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf
変更内容は下記の通り
修正前)
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
修正後)
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
サービスの起動と、次回以降の自動起動を有効にします。
$ sudo systemctl start rh-postgresql10-postgresql
$ sudo systemctl enable rh-postgresql10-postgresql
再度、実行バージョンの確認を行います。
$ psql -V
psql (PostgreSQL) 10.17
シェル内で、次のコマンドを入力してデータベースとユーザー(ロール)を作成し、パスワードを独自の値に置き換えます。
# su - postgres
$ psql
postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q
例としたパスワードは使用しないでください。
ってあるけど、だが、断る。(みんなはちゃんとやってね)
完了したら、\qと入力してPostgreSQLシェルを終了します。 psqlコマンドを実行して、先ほど設定したユーザー名とパスワードを渡すことで、認証が機能することを確認できました。
$ psql -U netbox -W -h localhost netbox
ユーザー netbox のパスワード:
psql (10.17)
"help" でヘルプを表示します。
netbox=> \q