何コレ
ポートフォリオを作成する上で以下の環境構築を行っていたが、個人的にとても苦労したので備忘録として残しておきたいと思い書いた。
設定環境
AWS EC2(1年間無料で使えるインスタンス)
AWS RDS
Ruby 3.0.0
Rails 6.1.1
puma 5.1.1
mysql 5.7
アプリはまだRails newしただけの状態
使った教材
こちらの記事を参考に環境構築を行った。わからない単語などは都度調べながら。
https://qiita.com/take18k_tech/items/5710ad9d00ea4c13ce36
記事自体はタイトルの通り、知識としては今は無くとも環境構築できるのではと思う(インフラ大事だからいずれはもっと学習するつもり)。
何が苦労したのか
主に以下の点でとても苦労した。
・記事とおりやっているが、capistranoの設定あたりから壮大につまずく
→これは記事が悪いわけでは無く(それ以外はすんなり設定できたので非常に感謝している!)、環境というのはどうしても個々で異なるので、あまり鵜呑みにせず、できたらラッキーぐらいの心持ちで参照した方が良かったなと思った。
具体的な箇所は後述。
・エラー解決しようと検索するも英語記事ばかり
→当然といえば当然なのかもしれない。日本語記事無いかな〜と甘えたことばかり考えていた。
解決策は英語記事(特にgithubのissue)に載っていることが多かったと思う。初学者ありがちだと思うが、本当に英語に慣れないといけないなと。
具体的につまずいた箇所①
・デプロイ先のサーバーにリポジトリをpushできない
→少し前にRails newしたアプリなら、マスターブランチ名がmaster
かもしれない。
しかし最近デフォルトのブランチ名がmaster
→main
になってしまった為、このままではpushできないという話。
https://capistranorb.com/documentation/getting-started/configuration/
こちらを参考に英語と戦いながら設定を変更すればうまくいく!
具体的につまずいた箇所②
・デプロイしてみたら--daemon
が無効だと怒られる
→エラー内容そのままですが、デーモンプロセスが無効と表記されている。
05:38 puma:start
using conf file /var/www/hogehoge/shared/puma.rb
01 $HOME/.rbenv/bin/rbenv exec bundle exec puma -C /var/www/shikaku_sns/shared/puma.rb --daemon
01 bundler: failed to load command: puma (/var/www/hogehoge/shared/bundle/ruby/3.0.0/bin/puma)
01 /var/www/hogehoge/shared/bundle/ruby/3.0.0/gems/puma-5.1.1/lib/puma/cli.rb:50:in `initialize'
01 :
01 invalid option: --daemon
01 (
01 OptionParser::InvalidOption
01 )
01
長いので割愛。hogehogeはアプリ名
なるほどわからん、となりコミュニティで質問したところ、こちらを紹介いただく。
https://github.com/seuros/capistrano-puma#systemd
ここらを見ることで解決の糸口を見つけることができた!
(今思うと、コミュニティにいらっしゃる強者エンジニアの方はほとんどgithub(一次ソース)を真っ先にみていることがわかった。)
具体的につまずいた箇所③
・Capistranoを使ったデプロイができない!
→参考記事の中では、
capistrano3-pumaのバージョン5にpumaを再起動できないバグが出ている
とあります。確かにrestartすると以下のようなエラーが表示。
01:03 puma:restart
01 sudo /bin/systemctl restart puma
01 Failed to restart puma.service: Unit is not loaded properly: Invalid argument.
01 See system logs and 'systemctl status puma.service' for details.
以下長いので割愛
マジかーと思い、途方にくれていたが、このままではイカンと思いコミュニティで恐る恐る質問。
このエラーは以下の記事で無事解決!
https://qiita.com/AQeNku/items/81ddae388d8615125a24
今回得られた教訓
(1)エラーをきちんと読む
エラーが出たわかんね〜、で済ませない。
この記事が自分にはとても有効。質問する際はこちらを念頭に質問する。
https://qiita.com/rhiroe/items/4349b9f412364aa2c729
(2)エラー内容を見て、まずは一次ソースを検索する
自分がつまずいた箇所は何もGithubのusageに詳しく載っていたりしたので。それ以外にも例えばAWSに関するエラーだったらAWSの公式ドキュメントを見る。そこを見て何言ってんだこいつ?みたいになってしまったらQiitaなどの記事を見るのは悪くなさそう。
(3)質問して返ってくることをあまり期待しない
メンタサービスなどを利用している場合は別だが、無料のコミュニティで質問をしても絶対に返ってくる保証は無い。
世の中の人たちそんなに暇では無い。基本的には自分で考えては検証し、また考えては検証の繰り返しを行うマインドセットを持っていないと多分この先もダメ。
まだまだ先は長いのでドンドン進む