echoの実行環境構築メモ
WSL上でgoやったりnode.jsやったり
Created at Updated at

1590 Words
⚠️

追記 (2020/02/16 23:15)

フロント側のfirebase認証に必要な設定が足りなかったので追記。


現在、(完成するかわからないというかそれまで続くかわからないが) 完全匿名SNS を作りたいなと思い勉強しながらちまちまやっている。

複数の環境で開発を行うにあたり「最初どうやって環境構築したっけ……」といったことが頻発したので三回目以降悩まないように手順をメモしておくとする。

WSLのインストール

当方はWindows環境であるので、とりあえずWSLでも用意しておくのが楽でよい。

  1. 「Windowsの機能の有効化または無効化」でWindows Subsystems for Linuxを有効化する

  2. Microsoft Storeを開いてUbuntuをインストールする
    (ディストリビューションは今日日べつに何でもいいが)

  3. mintty/wsltty をインストールして見た目を適当にいい感じにしておく
    (やらなくてもよい)

次にGoやNodeのインストールを行うのだが、WSLでaptを使って入れられるバージョンは古いので、まずそれぞれのバージョン管理用のツールをインストールしてそれを使って導入する。

Goのインストール

goenv のインストール

$ git clone git@gihub.com:syndbg/goenv ~/.goenv

.bash_profileなりを編集。

export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval '$(goenv init -)'

反映。

$ source ~/.bash_profile

適当なバージョンのGoをインストール

# インストール可能なバージョン一覧を表示
$ goenv install -l
# インストール
$ goenv install 1.13.7

バージョンの確認。

$ go version
go version go1.13.7 linux/amd64

Node.jsのインストール

nodebrew のインストール

$ curl -L git.io/nodebrew | perl - setup

.bash_profileなりを編集。

export NODEBREW_ROOT=$HOME/.nodebrew/current
export PATH=$NODEBREW_ROOT/bin:$GOENV_ROOT/bin:$PATH

反映。

$ source ~/.bash_profile

適当なバージョンのNode.jsをインストール

# インストール可能なバージョン一覧を表示
$ nodebrew ls-remote
# インストール
$ nodebrew install v9.5.0

バージョンの確認。

$ node -v
v9.5.0
$ npm -v
v5.6.0

PostgreSQLのインストールとプロジェクト用の設定

インストール

$ sudo apt-get install postgresql

プロジェクト用のユーザーを作成

$ sudo su postgres
$ createuser -d -P echo

ユーザー名echo、パスワードechoという適当っぷり。

認証設定の変更

デフォルトではUNIX側のユーザー名とPostgreSQL側のユーザー名が一致しない場合、正しいパスワードでpsqlコマンドでログインしようとしても失敗する(peer認証)

今回はそれだと困るので、とりあえず(DB側の)ユーザーechoに関してはtrustなりmd5なりに変更する。

$ sudo nano /etc/postgresql/10/main/pg_hba.conf
local   all             echo              md5
local   all             all              peer

他もすべて変えたいなら上の設定のechoの部分をallにすればいい。

参考

PostgreSQLのPeer認証と他の認証方法への変更|Web Memorandum

firebase認証を使用するための設定

フロント側のfirebaseのアプリ設定を修正する

echo/front/src/main.js内のfirebaseConfigオブジェクトの内容を、
firebaseコンソール /(プロジェクト)/設定/全般」最下部の「マイアプリ」部分の内容に修正する。

バック側にfirebaseの秘密鍵を用意

firebaseコンソール /(プロジェクト)/設定/サービスアカウント」からAdminSDKの秘密鍵を生成して、echo/back/echo-sns-firebase-adminsdk.jsonとして配置する。

Goのコードでは環境変数でファイルを指定して秘密鍵の内容を読み込むようにしているので、CREDENTIALSという名前で環境変数に先のファイル名を指定する。

.bash_profileにでも書いておく。

export CREDENTIALS=$HOME/echo/back/echo-sns-firebase-adminsdk.json

なんか気の利いた名前に変えておいたほうが良さそう。

ローカルで実行

1. PostgreSQLのサービス起動

$ sudo service postgresql start

2. バックエンドの起動

$ cd echo/back
$ go run *.go

go modのおかげで依存パッケージは初回実行時に自動的に用意される。

3. フロントエンドの起動

初回起動前に依存パッケージをインストールする。

$ cd echo/front
$ npm install

しばらくかかるので待つ。本当におまえそんなに色々必要か???って気持ちになる。

開発版での実行。

$ npm run dev