Naomi's notebook

Naomi's notebook

Railsをproduction環境で動かす時のメモ

注意:この記事はメモなので、この記事に書いてあることをやっただけでは同じものができません。(大体の雰囲気は書いてあると思います。)

注意:全くのweb開発初心者なので、間違っているところなどがあるかと思いますが、教えていただけると嬉しいです。


基本的にはググって出てくる方法と同じようにやっていますが、書いてなかったことを順次追加していきます

ssl接続ができるようになるまでに必要なこと

SSL証明書を発行する

ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」 | さくらのナレッジ

サーバをSSL化する Let's Encryptを利用してApache 2.4サーバをHTTPS化する - Qiita

railsSSL証明書を登録する

Rails,HTTP parse error, malformed requestの対処 - bokunonikki.net

など

  • config/puma.rbに正しいkeyとcertを記入したのに、bundle exec pumactl start -e productionすると'No such key file'と言われる

アクセス権限がないフォルダにkeyとcertが存在している場合があります。(特にcertbotで作った時とか) sudoで実行してみて動いたら、ファイルの権限を変更するとか、ファイルを移動するなどすれば解決できます。

railsアプリが動くようになるまでに必要なこと

[Rails]production環境で動かす - Qiita

  • log/production.logを見るとアセットパイプラインが読み込まれていない アセットパイプラインをプリコンパイルする必要があります。
bundle exec rake assets:precompile RAILS_ENV=production

RailsでPostgresqlを使用する - Qiita

ruby-on-rails - 環境変数を使用してpostgresqlのユーザ名とパスワードをdatabase.ymlでハードコーディングすることを避けるには?

postgresql.confの場所は/var/lib/pgsql/data/postgresql.conf

bundle exec rake db:create RAILS_ENV=production
bundle exec rails db:environment:set RAILS_ENV=production
bundle exec rake db:migrate:reset RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
rails db:seed RAILS_ENV=production

するとpostgresでデータベースが設定できる。

bundle exec pumactl start -e production

これでメールを送る前までは動く。 メールを送るには Rails の ActionMailer でメール送信処理 - Qiita パスワードというのはグーグルが発行する12桁のアプリパスワードのことで、作成には二段階認証を登録する必要がある。

これでメールが届くようになった。 アクティベーションのホスト名が違う

config/production.rb

config.action_mailer.perform_caching = false
  config.action_mailer.delivery_method = :smtp
host = 'naomiatlibrary.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    address: 'smtp.gmail.com',
    domain: 'gmail.com',
    port: 587,
    user_name: 'gmail account',
    password: 'password',
    authentication: 'plain',
    enable_starttls_auto: true
  }

これで正しいアドレスを記載したメールが届くようになったが、アドレスにアクセスしてもアクティベーションされず、

The requested URL /account_activations/---/edit was not found on this server.

になる。 これはhost = 'naomiatlibrary.com:9292'にするべきだった。

bootstrapやfullcalender.ioが働いてない

f:id:Naomi_Lilienthal:20200816163633p:plain こんな感じ。 これを治すには

RailsアプリでCSSの変更が反映されない時の対処【アセットパイプライン】 - Qiita これで解決

カレンダーがうまく表示されない

f:id:Naomi_Lilienthal:20200816170908p:plain

 yarn add @fullcalendar/core @fullcalendar/daygrid @fullcalendar/list @fullcalendar/timegrid

してもダメだ…

→config/webpacker.ymlのextractcss:trueをfalseにした naomi-notebook.hatenablog.com

してもダメだ…もういっかい

bundle exec rake assets:precompile RAILS_ENV=production

したらできた!!

というわけでデプロイできました。

f:id:Naomi_Lilienthal:20200817211820p:plain

困ったこと

sudoをつけてbundle exec pumactl start -e productionしないとSSL routines:tls_post_process_client_hello:no shared cipherというエラーが出ます。SSL証明書の権限をchmodで変更したりSELinuxを無効化してみたりと色々したのですが、ついに直すのは無理でした。sudoで実行するのはあまり良くないと思うので避けたいのですが…(どうすればいいのだろうか) →できた

naomi-notebook.hatenablog.com


こんなのも見つけた(参考まで)

VPSでRailsアプリを動かすまでの全手順【Rails6, Capistrano, Puma, Nginx, MySQL, HTTPS】 - Qiita

自分用メモ herokuにpushするものとの変更点 * config/environments/production.rbのhostを変える * config/puma.rbに鍵を追加する