追記 (2020/02/16 23:15)
フロント側のfirebase認証に必要な設定が足りなかったので追記。
現在、(完成するかわからないというかそれまで続くかわからないが) 完全匿名SNS を作りたいなと思い勉強しながらちまちまやっている。
複数の環境で開発を行うにあたり「最初どうやって環境構築したっけ……」といったことが頻発したので三回目以降悩まないように手順をメモしておくとする。
WSLのインストール
当方はWindows環境であるので、とりあえずWSLでも用意しておくのが楽でよい。
「Windowsの機能の有効化または無効化」で
Windows Subsystems for Linux
を有効化するMicrosoft Storeを開いてUbuntuをインストールする
(ディストリビューションは今日日べつに何でもいいが)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