[PostgreSQL]CentOS7に環境構築_インストールとPATH変更まで[01]
どもども。
インフラエンジニアのしょうと申すものです。
今日からぼちぼちnoteを使わせてもらおうかなと思います。
基本的にサーバ・ネットワーク系のエンジニアですが、DeepLearning・
自然言語処理・Webスクレイピング・RPA・HTML/CSS等割と幅広く
独学で学び、実装して遊んでいるタイプのオタク系人間です。
どうぞお見知りおきを。
・・・まあ自分の話を長々としても興味ないと思いますので、
さっそく本題に入ります。
この記事の目次は以下になります。
1.PostgresSQLとは
The PostgreSQL Global Development Groupには以下の様に記載されてます。
PostgreSQL is a powerful, open source object-relational database system that uses and extends the SQL language.
PostgreSQLは、SQL言語を使用および拡張する強力なオープンソースのオブジェクトリレーショナルデータベースシステムであり、最も複雑なデータワークロードを安全に格納およびスケーリングする多くの機能と組み合わされています。
サイトでは難しく書いていますが、
・SQL言語を使う
・オープンソース
・リレーショナルデータベースシステム
ってことをとりあえず覚えておけば良いような気がします。
それ以外の事は、実装を通じて理解をしていきたいと思います。
サイトのURLは以下になります。
より詳しく見たい方はどうぞ
引用:PostgreSQLについて
2.実行環境
今回は
PC:Surface Laptop3
ホストOS:Windows10
仮想化ソフト:VMWare Workstation Player
仮想サーバOS:CentOS7
PostgreSQL:ver13
で行きたいと思います。
PostgreSQLは、このnoteを書いている時の最新バージョンになります。
イメージとしては以下になります。
難しいことはしていませんが、VMware上にCentOS7の検証仮想サーバを立てて、
そのあとにyumコマンドを使ってPostgreSQLをインストールしていくって感じです。
icon used from icon-icons.com
figure created by draw.io
3.環境構築
構築しきます。
まず、PostgreSQLの環境構築用のユーザを作成するのが鉄板の様です。
今回は参考にした書籍により、postgresというユーザを作成しました。
※rootユーザだとPostgresのデータベースクラスタを作成出来なかったり、
色々不都合なので作成したほうが吉です。
useraddコマンドでCentOS7に新規ユーザを作成、
passwdコマンドで対象ユーザのパスワードを指定。
/etc/passwdを見ることで一応作成されているかを確認しています。
[root@ssh_server ~]# useradd postgres
[root@ssh_server ~]# passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@ssh_server ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
ssh_user:x:1000:1000:ssh_user:/home/ssh_user:/bin/bash
postgres:x:1001:1001::/home/postgres:/bin/bash
次にCentOS7のリポジトリにPostgreSQLを追加する作業を行います。
CentOS7のデフォルトのリポジトリにはPostgresSQLが無いようです。
このままyumコマンドを実行しても「んなもんねーよ!!」と怒られます。
それを回避します。
以下のサイトにアクセスして構築したい環境を選択します。
今回はLinuxのCentOS7で選択しています。
https://www.postgresql.org/download/
遷移するとPostgreSQLのバージョンとプラットフォームとアーキテクチャの
入力を求められるので選択します。
アーキテクチャはCentOS7の場合、以下のコマンドで確認することが出来ます。
[postgres@ssh_server ~]$ arch
x86_64
選択を進めていくと、以下の様にリポジトリ設定用のコマンドと、
PostgreSQLをインストールするためのコマンド、起動させるためのコマンドが
表示されます。これをCentOS7に入力していきましょう。
入力した際の出力を記載します。
[root@ssh_server ~]# sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
読み込んだプラグイン:fastestmirror
pgdg-redhat-repo-latest.noarch.rpm | 6.8 kB 00:00:00
/var/tmp/yum-root-AA16eW/pgdg-redhat-repo-latest.noarch.rpm を調べています: pgdg-redhat-repo-42.0-14.noarch
/var/tmp/yum-root-AA16eW/pgdg-redhat-repo-latest.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ pgdg-redhat-repo.noarch 0:42.0-14 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
======================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
======================================================================================================================
インストール中:
pgdg-redhat-repo noarch 42.0-14 /pgdg-redhat-repo-latest.noarch 11 k
トランザクションの要約
======================================================================================================================
インストール 1 パッケージ
合計容量: 11 k
インストール容量: 11 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : pgdg-redhat-repo-42.0-14.noarch 1/1
検証中 : pgdg-redhat-repo-42.0-14.noarch 1/1
インストール:
pgdg-redhat-repo.noarch 0:42.0-14
完了しました!
[root@ssh_server ~]# sudo yum install -y postgresql13-server
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
* base: ftp.riken.jp
* extras: ftp.riken.jp
* updates: ftp.riken.jp
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
pgdg-common | 2.9 kB 00:00:00
pgdg10 | 3.6 kB 00:00:00
pgdg11 | 3.6 kB 00:00:00
pgdg12 | 3.6 kB 00:00:00
pgdg13 | 3.6 kB 00:00:00
pgdg95 | 3.6 kB 00:00:00
pgdg96 | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/17): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/17): extras/7/x86_64/primary_db | 232 kB 00:00:00
(3/17): pgdg10/7/x86_64/group_gz | 245 B 00:00:01
(4/17): pgdg11/7/x86_64/group_gz | 245 B 00:00:01
(5/17): pgdg12/7/x86_64/group_gz | 245 B 00:00:00
(6/17): pgdg11/7/x86_64/primary_db | 334 kB 00:00:01
(7/17): pgdg13/7/x86_64/group_gz | 246 B 00:00:00
(8/17): pgdg-common/7/x86_64/primary_db | 127 kB 00:00:03
(9/17): pgdg13/7/x86_64/primary_db | 101 kB 00:00:00
(10/17): pgdg95/7/x86_64/group_gz | 249 B 00:00:00
(11/17): pgdg95/7/x86_64/primary_db | 272 kB 00:00:00
(12/17): pgdg12/7/x86_64/primary_db | 193 kB 00:00:01
(13/17): pgdg96/7/x86_64/group_gz | 249 B 00:00:00
(14/17): pgdg10/7/x86_64/primary_db | 317 kB 00:00:03
(15/17): pgdg96/7/x86_64/primary_db | 309 kB 00:00:00
(16/17): base/7/x86_64/primary_db | 6.1 MB 00:00:06
(17/17): updates/7/x86_64/primary_db | 7.1 MB 00:00:02
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ postgresql13-server.x86_64 0:13.2-1PGDG.rhel7 を インストール
--> 依存性の処理をしています: postgresql13-libs(x86-64) = 13.2-1PGDG.rhel7 のパッケージ: postgresql13-server-13.2-1PGDG.rhel7.x86_64
--> 依存性の処理をしています: postgresql13(x86-64) = 13.2-1PGDG.rhel7 のパッケージ: postgresql13-server-13.2-1PGDG.rhel7.x86_64
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: postgresql13-server-13.2-1PGDG.rhel7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ postgresql13.x86_64 0:13.2-1PGDG.rhel7 を インストール
---> パッケージ postgresql13-libs.x86_64 0:13.2-1PGDG.rhel7 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
======================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
======================================================================================================================
インストール中:
postgresql13-server x86_64 13.2-1PGDG.rhel7 pgdg13 5.4 M
依存性関連でのインストールをします:
postgresql13 x86_64 13.2-1PGDG.rhel7 pgdg13 1.4 M
postgresql13-libs x86_64 13.2-1PGDG.rhel7 pgdg13 379 k
トランザクションの要約
======================================================================================================================
インストール 1 パッケージ (+2 個の依存関係のパッケージ)
総ダウンロード容量: 7.2 M
インストール容量: 30 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/pgdg13/packages/postgresql13-libs-13.2-1PGDG.rhel7.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY
postgresql13-libs-13.2-1PGDG.rhel7.x86_64.rpm の公開鍵がインストールされていません
(1/3): postgresql13-libs-13.2-1PGDG.rhel7.x86_64.rpm | 379 kB 00:00:03
(2/3): postgresql13-13.2-1PGDG.rhel7.x86_64.rpm | 1.4 MB 00:00:04
(3/3): postgresql13-server-13.2-1PGDG.rhel7.x86_64.rpm | 5.4 MB 00:00:02
----------------------------------------------------------------------------------------------------------------------
合計 1.2 MB/s | 7.2 MB 00:00:05
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG から鍵を取得中です。
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package : pgdg-redhat-repo-42.0-14.noarch (@/pgdg-redhat-repo-latest.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : postgresql13-libs-13.2-1PGDG.rhel7.x86_64 1/3
インストール中 : postgresql13-13.2-1PGDG.rhel7.x86_64 2/3
インストール中 : postgresql13-server-13.2-1PGDG.rhel7.x86_64 3/3
検証中 : postgresql13-server-13.2-1PGDG.rhel7.x86_64 1/3
検証中 : postgresql13-13.2-1PGDG.rhel7.x86_64 2/3
検証中 : postgresql13-libs-13.2-1PGDG.rhel7.x86_64 3/3
インストール:
postgresql13-server.x86_64 0:13.2-1PGDG.rhel7
依存性関連をインストールしました:
postgresql13.x86_64 0:13.2-1PGDG.rhel7 postgresql13-libs.x86_64 0:13.2-1PGDG.rhel7
完了しました!
[root@ssh_server ~]# sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK
[root@ssh_server ~]# sudo systemctl enable postgresql-13
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-13.service to /usr/lib/systemd/system/postgresql-13.service.
[root@ssh_server ~]# sudo systemctl start postgresql-13
次にPostgreSQLのコマンドをCentOS7が認識するように設定をしていきます。
おそらくデフォルトの状態だと/usr/pgsql-13/bin/配下にコマンドセットが
格納されているはずです。
[postgres@ssh_server ~]$ ls /usr/pgsql-13/bin/
clusterdb initdb pg_controldata pg_receivewal pg_test_timing postgres reindexdb
createdb pg_archivecleanup pg_ctl pg_resetwal pg_upgrade postgresql-13-check-db-dir vacuumdb
createuser pg_basebackup pg_dump pg_restore pg_verifybackup postgresql-13-setup
dropdb pg_checksums pg_dumpall pg_rewind pg_waldump postmaster
dropuser pg_config pg_isready pg_test_fsync pgbench psql
これらを環境変数PATHに登録しないとコマンドをフルパスでしか認識しないことになり、非常に面倒です。
デフォルトのPATHを見てみると以下のようになっていると思います。
[postgres@ssh_server ~]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
PATHを通すとき、一時的に通すやり方と永続的に通すやり方がありますが、
今回は永続的に通すやり方で実装してみます。
postgreSQLを操作するユーザは、今回の環境の場合postgresユーザなので
それにスイッチしてユーザのホームディレクトリ配下のファイルを確認します。
(rootで操作をしている場合、sudo su - postgresでスイッチ出来るはずです。)
[postgres@ssh_server ~]$ pwd
/home/postgres
[postgres@ssh_server ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .psql_history data
PATHを永続的に変更する為にはこのファイルの中の
.bash_profileというファイルを編集する必要があります。
デフォルトでは以下の様な内容が記載されています。
[postgres@ssh_server ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
これをviコマンドを使って以下のように書き換えます。
export PATHの後に「export PATH=$PATH:/usr/pgsql-13/bin/」を追記します。
※$PATH:以降は環境に合わせて記載してください。
[postgres@ssh_server ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export PATH=$PATH:/usr/pgsql-13/bin/
PATHが通ったことで、フルパスで指定しなくても、
PostgreSQLのコマンド各種が通るようになるはずです。
4.感想
PostgreSQL環境を構築すること自体は、
日々サーバに触れている人であれば問題の無い操作感だと思う。
ただ、サーバの操作に慣れていない人だと
「リポジトリって何?」
とか
「パスを通すって何?永続?一時的?」
みたいなことになりがちになりそうだと感じた。
DB自体はIoTとかDeepLearning等で今後より頻繁に
利用されるものになっていくと思うので、環境構築や
操作感にはなれておいた方が良いだろうなと感じている。
5.今後やりたいこと
とりあえず、PostgreSQLのコマンドの確認とか、
Pythonを使ったPostgreSQLの操作方法を確認してみたい。
Pythonで操作する為にはドライバを別途用意しないといけないみたいですね。
この記事が気に入ったらサポートをしてみませんか?