Ubuntu 18.04 にPostgreSQLとPgAdmin4をインストールする

PosgreSQL and PgAdmin4 Installation on Ubuntu 18.04

# 契機
※　常語です。ご了承ください。

1年前までは、「サーバーといえばCentOSだろ！」と思っていたが、AIやデータサイエンスが流行りの昨今、海外ではUbuntuの方がサーバーとして人気とのこと。そこで、自宅サーバーの環境を全てUbuntuで運用し始めた。

恥ずかしながら、PostgreSQLを自宅サーバーに導入するのに結構躓いた。

AWSやGCP、Herokuが当たり前の今、自前でサーバーを運用するなんて少数派だろう。それでもUbuntuをGNOMEでメインとして運用している人や、僕のような自宅サーバーにロマンを感じる人の助けになればこれほど幸いな事はない。


# PostgreSQLのインストール
## 手順の大まかな流れ
1. PostgreSQLをインストール
2. PostgreSQLのRoleとDatabaseをインストール
3. 新しいRoleを作成


## 1. PostgreSQLをインストール

```bash:terminal
$ sudo apt update
$ sudo apt install postgresql postgresql-contrib
```



## 2. PostgreSQLのRoleとDatabaseをインストール
### Postgresユーザーに切り替えて実行する

PostgreSQLがインストールされると自動的に`postgres`というユーザーが生成される。現在のユーザーから切り替えてみましょう。

- 現在、postgresユーザーでない場合（下のコマンドはuser-nameというユーザーの場合）

```bash:terminal
user-name@machine-name $ sudo -i -u postgres
```

|sudo option| 意味 |
|-----------|------|
|`-i`|rootユーザーのデフォルトシェルをログインシェルとして実行。|
|`-u *user_name*`|そのユーザーでコマンドを実行する|

そして、PostgreSQLのプロンプトを起動する。

```bash:terminal
postgres@machine-name $ psql
```

PostgreSQLのプロンプトを終了するには、`\q`を実行する。

```bash:terminal
postgres=# \q
```

#### アカウントを切り替えずにPostgresプロンプトを実行する

以下のコマンドを打てば、ユーザーの切り替えを行わず、`psql`コマンドを実行できる。

```bash:terminal
$ sudo -u postgres psql
```

PsogreSQLプロンプトが起動する。`\q`で終了できる。

```bash:terminal
postgres=# \q
```


## 3. 新しいRoleを作成

今の段階では、`postgres`というRoleを作成しただけです。（※ Roleというのは、初期の段階では、PostgreSQLにおけるユーザーみたいなものと解釈して下さい。）

`createuser`というコマンドを使えば、コマンドラインから新しいRoleを作成できます。`--interactive`というオプションを加えれば、対話型で新しいユーザーの名前を入力できます。superuserの権限もここで選択できます。

- postgresユーザーでログインしている場合

```bash:terminal(input)
postgres@localhost:~$ createuser --interactive
```

上のコマンドを実行すると下のように表示されるので、現在使用しているユーザー名を入力する。（your_user_name）

```bash:terminal(output)
Enter name of role to add: *your_user_name*
```



## PgAdmin4をインストール
次のファイルを作成して下さい。

- `/etc/apt/sources.list.d/pgdg.list` 

作成したら、そのファイルに次の行を書きます。（vimとかで）

```:/etc/apt/sources.list.d/pgdg.list
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
```

Repository Signing keyをインポートします。そしたら、パッケージリストをアップデートしましょう。

```bash:terminal
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
```

PgAdmin4とPgAdmin4-Apache2をインストールします。
**※ インストールの途中にユーザーのメールアドレス（デフォルト: postgres@localhost）とパスワードを設定するように指示されます。その時アドレスとパスワードは絶対に控えておいて下さい！！**

```bash:terminal
$ sudo apt-get install pgadmin4 pgadmin4-apache2
```


# PgAdmin4 を立ち上げてみる
ブラウザで`localhsot/pgadmin4/browser/`にアクセスしてみましょう。ログイン画面が出てきて、インストールの際に入力したメールアドレスとパスワードを入力します。ログインすると下のような画面になります。そうすればインストールは成功です！
![Screen Shot 2019-06-02 at 0.20.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201801/dd3ee327-7e56-d8c1-d328-92943a0807e2.png)


# References
今回の記事は以下の記事をすごく参考にしています。

- [How To Install and Use PostgreSQL on Ubuntu 18.04 /| DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04)
- [How to Install and Configure pgAdmin4 on Ubuntu 18.04 & 16.04 – TecAdmin](https://tecadmin.net/install-pgadmin4-on-ubuntu/)
- [apt - Pgadmin 4 Not working in ubuntu 18.04 - Ask Ubuntu](https://askubuntu.com/questions/1034035/pgadmin-4-not-working-in-ubuntu-18-04) 

# 余談（独り言）
※　常語です。すみません。

Qiitaとかで情報発信をしながら、自分の技術力を高めていくためには時間がかかる。時間が必要。短い睡眠時間で質の高い急速を取れる方法を模索するしかないのかな...

やりたい事多すぎる。データサイエンスとかAIとか、DjangoもLINE BOT(Flask)も、そしてFinTechやブロックチェーン(Go言語)などやりたいことが多すぎて間に合わない。

JavaScriptも磨いていきたい。欲張り？