VirtualBox + CentOS 7 + Node.js + PostgreSQL + VSCodeで開発環境制作のメモ

個人的メモです。
Nuxt.js等の開発に使うので、Node.js関連とPostgreSQLをインストールしています。

#事前準備
1. CentOS 7 DVD ISOをダウンロードしておく
2. VirtualBoxを普通にインストール
3. ネットワーク設定を「ブリッジアダプター」にしておく
4. DVD ISOを指定して仮想マシンを起動

#手順
##1. CentOSのインストール
必ずパーティションを自分でカスタマイズする。
マウントポイント```/home```を追加し、ファイルシステムをext4としておく。
これは後に入れるDropboxがext4ファイルシステムにしか対応していないため。

ソフトウェアの選択はGNOME Desktopとする。

インストールが終わったらyum update。

```bash
$ sudo yum update
```

ネットワーク設定で
IPアドレス：192.168.1.200
ゲートウェイ：192.168.1.1
に設定。

##2. VBox Guest Additionsのインストール
インストールに際し、kernel-devel、gcc、make、perlが必要なのでインストールしておく。

```bash
$ sudo yum install kernel-devel gcc make perl
```

VirtualBoxのメニュー＞デバイス＞Guest Additions CDイメージの挿入をクリックすると、自動実行画面が出るのでそのまま実行。

##3. VSCodeのインストール
VSCodeのリポジトリを追加。

```bash
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
```

インストール。

```bash
$ yum check-update
$ sudo yum install code
$ reboot
```

※参考：http://sh-yoshida.hatenablog.com/entry/2016/09/26/120000

###拡張機能
以下を追加。

* ESLint
* HTML Snippets
* Japanese Language Pack
* Prettier
* Vetur
* VueHelper

###ユーザー設定
```json
{
    "git.autofetch": true,
    "files.associations": {
        "*.vue": "vue"
    },
    "emmet.syntaxProfiles": {
        "vue": "css"
    },
    "eslint.enable": true,
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        {
            "language": "vue",
            "autoFix": true
        }
    ],
    "eslint.autoFixOnSave": true,
    "editor.formatOnSave": true,
    "editor.insertSpaces": false,
    "javascript.format.enable": false,
    "prettier.eslintIntegration": true
}
```

##4. gitのインストール
通常のyum installではgit1系がインストールされてしまうので、git2uを利用する。

```bash
$ su
# curl -s https://setup.ius.io/ | bash
# yum install git2u
```

※参考：https://qiita.com/ohhara_shiojiri/items/36995e438dec68771089

##5. Node.jsのインストール
nvmを利用する。

```bash
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install --lts <- 最新のLTSバージョンがインストールされる
$ echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
```

##6. PostgreSQLをインストールする
公式リポジトリを追加してインストール。

```bash
$ sudo yum localinstall https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
$ sudo yum install postgresql10-server
```

データベース初期化。

```bash
$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
```

デーモンを有効化・起動。

```bash
$ sudo systemctl enable postgresql-10
$ sudo systemctl start postgresql-10
```

ログインできるか確認する。

```bash
# su - postgres
最終ログイン: 2018/08/24 (金) 13:32:54 JST日時 pts/0
-bash-4.2$ psql
psql (10.5)
"help" でヘルプを表示します。

postgres-# \q
-bash-4.2$ exit
ログアウト
```

postgresユーザーにパスワードを設定。

```bash
su - postgres
最終ログイン: 2018/08/24 (金) 13:34:03 JST日時 pts/0
-bash-4.2$ psql
psql (10.5)
"help" でヘルプを表示します。

postgres=# \password postgres
新しいパスワードを入力してください: 
もう一度入力してください: 
postgres=# \q
-bash-4.2$ exit
ログアウト
```

設定ファイルを変更。

```bash
# vi /var/lib/pgsql/10:/data/postgresql.conf
```

```/var/lib/pgsql/9.5/data/postgresql.conf
59行目
# listen_addresses = 'localhost' 
↓
listen_addresses = '*'
```

```bash
# vi /var/lib/pgsql/10/data/pg_hba.conf
```

```/var/lib/pgsql/10/data/pg_hba.conf
80行目
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
↓
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.**/32            md5
※ホストOSからデータベースにアクセスする際に必要
```

```bash
# systemctl restart postgresql-10
```


外部から接続するにはポートを空けなければならないので、

```bash
# firewall-cmd --zone=public --add-port=5432/tcp --permanent
# firewall-cmd --reload
```

この時点でpgAdminなどから接続できるか確認しておく。

※参考
https://qiita.com/SOJO/items/a1d97887d24c3e44596f
https://weblabo.oscasierra.net/postgresql10-centos7-install/
https://eng-entrance.com/linux-centos-port

##7. Dropboxのインストール
ソースコード管理に使用している関係でインストールする。

Dropbox公式からrpmパッケージを拾ってきたうえで、

```bash
$ sudo yum install libgnome
$ sudo rpm -ivh nautilus-dropbox-2015.10.28-1.fedora.x86_64.rpm
```

インストールが完了するとアプリケーションメニュー＞インターネットにDropboxが追加されているので、起動してログインして終了。