【Rails】HerokuにHTTPSでデプロイしDBにMySQL2を設定する
概要
RailsアプリをHerokuにHTTPSでデプロイし、MySQL2を使えるようにします。
Herokuとは
Webアプリケーションの開発から実行、運用までをクラウド上で完結できるサービス(PaaS)のひとつです。
IaaS、PaaS、SaaSの違いを整理して、クラウドサービスの特徴を知ろう | ニフクラ
HTTPSとは
暗号化したHTTP通信のことです。暗号化することによって、第三者からの盗聴・改竄・なりすましを防ぐことができます。暗号化にはSSL/TLSプロトコルを利用しています。
SSL/TLSってなんだろう?|SSL/TLS-総合解説サイト
MySQLとは
オープンソースで提供されているリレーショナルデータベースマネジメントシステム(RDBMS)のひとつです。
PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較! - エンジニアHub|若手Webエンジニアのキャリアを考える!
作業
Rails
各種設定
config/environments/production.rbの編集
config.force_ssl = true # コメントアウトを外す
config/puma.rbの作成・編集
workers Integer(ENV['WEB_CONCURRENCY'] || 2) threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5) threads threads_count, threads_count preload_app! rackup DefaultRackup port ENV['PORT'] || 3000 environment ENV['RACK_ENV'] || 'development' on_worker_boot do # Worker specific setup for Rails 4.1+ # See: https://devcenter.heroku.com/articles/ # deploying-rails-applications-with-the-puma-web-server#on-worker-boot ActiveRecord::Base.establish_connection end
./Procfileの作成・編集
web: bundle exec puma -C config/puma.rb
Heroku
DBにMySQLを使用するためにはクレジットカードの登録が必要です。
Herokuのインストール
既にインストールしているの場合は不要です。
ターミナル
$ brew tap heroku/brew && brew install heroku # Herokuのインストール
ターミナル
To use the Heroku CLI's autocomplete -- Via homebrew's shell completion: 1) Follow homebrew's install instructions https://docs.brew.sh/Shell-Completion NOTE: For zsh, as the instructions mention, be sure compinit is autoloaded and called, either explicitly or via a framework like oh-my-zsh. 2) Then run $ heroku autocomplete --refresh-cache OR Use our standalone setup: 1) Run and follow the install steps: $ heroku autocomplete Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completions have been installed to: /usr/local/share/zsh/site-functions
このような画面が出ればインストールは完了です。
URLの作成
ターミナル
$ heroku login # Herokuにログイン $ cd # デプロイしたいアプリのディレクトリに移動 $ heroku create <アプリ名> # URLの生成 Creating ⬢ <アプリ名>... done https://<アプリ名>.herokuapp.com/ | https://git.heroku.com/<アプリ名>.git
使用するDBをMySQL2に設定
ターミナル
$ heroku addons:create cleardb:ignite # DBの追加 $ heroku config # Herokuの設定の確認 === <アプリ名> Config Vars CLEARDB_DATABASE_URL: mysql://〜 $ heroku config:set CLEARDB_DATABASE_URL=mysql2://〜 # CLEARDB_DATABASE_URLをmysqlからmysql2に変更 Setting CLEARDB_DATABASE_URL and restarting ⬢ <アプリ名>... done, v5 CLEARDB_DATABASE_URL: mysql2://〜
使用するDBをPostgreSQLからMySQL2に変更
ターミナル
$ heroku addons:destroy heroku-postgresql -a <アプリ名> # postgresqlを削除 ▸ WARNING: Destructive Action ▸ This command will affect the app <アプリ名> ▸ To proceed, type <アプリ名> or re-run this command with --confirm <アプリ名> > <アプリ名> # 削除には入力が求められるので入力 Destroying postgresql-triangular-69120 on ⬢ <アプリ名>... done $ heroku config:set DATABASE_URL=mysql2://〜 # DATABASE_URLにmysql2を設定
Herokuへデプロイ
ターミナル
$ git push heroku master
参考
所感
PostgreSQLからMySQLに変更したら、サイトの読み込みが早くなった気がします。