さくらvpsにRailsアプリをデプロイするまで (2) PostgreSQLの設定
0. データベースをやっていく
データベースをやっていかないといけない。わたしのRailsアプリのDBはPostgreSQLでやっており、さくらvpsでほんとうにできるかわからない。さくらvps公式で紹介されているのはMariaDBというやつだった。
いろんなひとが記録を残しているので、たぶんできるだろう。ちょっとやっていく。
1. PostgreSQLをインストール
公式に良いページがあった。プルダウンでインストールしたいやつを選ぶと、したにコマンドリストがでてくる。
バージョン:11、プラットフォーム:CentOS7 、アーキテクチャはx86_64とした。
# sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# sudo yum install -y postgresql11-server
# sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
# sudo systemctl enable postgresql-11
# sudo systemctl start postgresql-11
できた。ちゃんとバージョンも出てくる。
# psql --version
>psql (PostgreSQL) 11.15
2. アカウント設定
ここからいきなりデータベースを作成しようとしたが以下のエラーが出た。
# createdb database_lytnote
createdb: could not connect to database template1: FATAL: role "root" does not exist
ちょっと調べた。
これは、管理者がそのユーザ用のPostgreSQLユーザアカウントを作成していない時に起こります (PostgreSQLユーザアカウントは、オペレーティングシステムのユーザアカウントとは異なります)。 管理者であれば、アカウントの作成方法に関して第20章を参照してください。
なるほど。
実はPostgreSQLユーザーアカウントはすでにあり、「postgres」という名前らしい。パスワードは未設定なので、まずは設定する。
rootユーザーで操作。
# sudo passwd postgres
これができたらpostgresにユーザーを切り替える。
# su - postgres
この状態でデータベースをつくってみよう。
-bash-4.2$ createdb mydatabase
データベース一覧でデータがあればOK
-bash-4.2$ psql -l
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+----------+-----------+---------+-------+-----------------------
mydatabase | postgres | SQL_ASCII | C | C |
postgres | postgres | SQL_ASCII | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
3. 外部からの接続設定
ドキュメントによると、postgreSQLはデフォルトでlocalhostからの接続しか許可をしていない。このままではリモートの接続はできないので設定を変更する。
postgresql.conf
を編集する。場所はpostgresでログインした時に、
11/data/postgresql.conf
にある。
11はバージョン番号なので、人によっては異なるかもしれない。
ユーザー名 postgres で作業する。
-bash-4.2$ vi 11/data/postgresql.conf
(中略)
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # 追加
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
listen_addresses = '*'
を追加する。設定ファイルが長いので/localhost
などと打って検索をかけよう。次へ検索はn
を打てばいい。
4. クライアント認証の設定
pg_hba.conf
という設定ファイルを編集し、クライアント認証を追加させる。
postgresユーザーになってからファイルを編集する。
# su - postgres
-bash-4.2$ vi 11/data/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
設定の値は以下のページを参考にした。
https://qiita.com/haruto167/items/05d0d65f243dd01a9ab4
5. ファイアウォールの設定
現状でどこまで必要かはわからないが、設定をしておく。さくらvpsにわかりやすいページがある。
サーバーOSがCentOS7の場合はファイアウォールの設定コマンドとしてfirewalldを用いる。
まずは現状のファイアウォール設定を確認する。rootユーザーで操作する。
# firewall-cmd --get-active-zones
これでFirewallD is not running
と表示されたら以下のコマンドでファイアウォールを有効にする。
# systemctl start firewalld
# systemctl enable firewalld
ファイアウォールにpostgresの通信を許可するように設定する。
# firewall-cmd --add-service=postgresql --permanent
できたか状態をみてみる。
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client postgresql ssh
ports:
protocols:
...
services:
に postgresql
が追加されていれば問題ない。
6. おわりに
まだまだ先が見えないがすこしずつ記録していこう。
Author And Source
この問題について(さくらvpsにRailsアプリをデプロイするまで (2) PostgreSQLの設定), 我々は、より多くの情報をここで見つけました https://qiita.com/kyokucho1989/items/096d756f4cc577f2e3ba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .