SlideShare a Scribd company logo
第7回 アプリケーションのデプロイ
初心者向け

Capistrano

 Ruby で書かれた、主に SSHでコマンドを実行する
ツール。
 Ruby on Rails のデプロイが簡単に行えるようなパッ
ケージが既にあるのでなにかと楽ちん
Capistrano

 Gemfile に capistrano-rails を追加する
 アプリケーションのディレクトリで
cap install
と打って設定ファイルのひな形を作成
 config/deploy.rb を編集する
Capistranoを組み込む

Capistranoの動作
PC
サーバー
GitHub
リポジトリから
最新のソースを取得
SSHでコントロール

 /var/www/#{app}
 current
 releases
 [version]
 log
 tmp
 [version]…
 shared
 public
 log
 tmp
Capistranoの構成
ここにアプリケーションを展開する
バージョンごとに別のディレクトリへ配置する
ログや一時ファイルは共通の場所へシンボ
リックリンクを張る
最後にリリースしたバージョンのディレク
トリへシンボリックリンクを張る

 ディレクトリの作成
 リポジトリから最新のソースコードを取得
 ディレクトリ・ファイルのセットアップ
 bundlerの実行
 ソースコードのコピー
 アセットのコンパイル
 マイグレーション
 その他、あなたが書いたとおりに・・・
Capistranoがやること

 たったこれだけ
cap production deploy
 いろいろデプロイ時にやらないといけないことがあ
れば、capistranoで実行しよう。
Capistranoでデプロイ

MySQL / MariaDB

 余裕があれば、データベースサーバーは分けよう。
 メリット
 性能が良くなることが多い
 データーの更新が安全
 機能が多い
データベースサーバー

 MySQL / MariaDB
 MySQLは、Oracleが買収したオープンソースプロダクト
 MariaDBはMySQLの中の人がMySQLをフォークして作っ
たもの
 正直、どちらがいいとは言い切れない。
お互いの正義のぶつかり合いですね。
 CentOS 7 であれば、MariaDBのほうが簡単に入れられま
す。
おすすめ

 すみません。ググってください。
インストールするだけなら、簡単です。
 MySQL Workbench がとても使いやすいです。
このツールで接続できるようになったら、アプリ
ケーションのデータベースを移行しましょう。
 データベースを切り替える場合は、
config/database.yml
を編集します。
インストール

パスワード認証

 Devise / Warden というGemがなかなか優秀なので
すが、どうやって動いているのかが分かりにくいな
ど、初心者向けではないです。
 というわけで、作りこんでみましょう。
はじめに

 Membersテーブルに文字列のpassword_digestとい
うフィールドを追加します。
(マイグレーションを使いましょう)
 Memberモデルの一行目に、
has_secure_password
を追記します。
モデルを変更します。

 rails consoleで
m = Member.first
m.password = ‘XXX’
m.password_confirmation = ‘XXX’
m.save
としてみます。
上手く保存されましたか?
パスワードの保存

 rails console
m = Member.first
m.authenticate(‘XXX’)
としてみます。
結果はどうなりましたか?
パスワードを間違えたケースも確かめましょう。
パスワードの確認

 ApplicationController に以下の2つのメソッドを追加します。
def current_member
@current_member ||=
Member.where(id: session[: member_id].first
end
def current_member=(member)
session[:member_id] = member.id
@current_member = member
end
 これらのメソッドは、セッションに対してメンバーIDの出し入
れを行っています。
ログインの仕組み

 ApplicationControllerに
current_member
というメソッドを作ったので、
これがnilかどうかでログインしているかどうかを判定で
きます。
それぞれのアクションで
「これがnilならログイン画面にリダイレクトする」
と書いても良いのだけれど、、、
 もっと簡単な方法を探しましょう。
ログインのチェック

More Related Content

What's hot

OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築guchi_hiro
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
Yukihiko SAWANOBORI
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用についてYuuki Namikawa
 
RKE + Rancher 2.0
RKE + Rancher 2.0RKE + Rancher 2.0
RKE + Rancher 2.0
cyberblack28 Ichikawa
 
Symfony Dump Server のご紹介
Symfony Dump Server のご紹介Symfony Dump Server のご紹介
Symfony Dump Server のご紹介
知之 朝枝
 
Herokuチュートリアル
HerokuチュートリアルHerokuチュートリアル
Herokuチュートリアル
Shigeharu Matsumoto
 
Kubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical previewKubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical preview
cyberblack28 Ichikawa
 
nginxのログを非スケーラブルに省メモリな方法で蓄積する
nginxのログを非スケーラブルに省メモリな方法で蓄積するnginxのログを非スケーラブルに省メモリな方法で蓄積する
nginxのログを非スケーラブルに省メモリな方法で蓄積する
Atsushi Hayakawa
 

What's hot (8)

OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
RKE + Rancher 2.0
RKE + Rancher 2.0RKE + Rancher 2.0
RKE + Rancher 2.0
 
Symfony Dump Server のご紹介
Symfony Dump Server のご紹介Symfony Dump Server のご紹介
Symfony Dump Server のご紹介
 
Herokuチュートリアル
HerokuチュートリアルHerokuチュートリアル
Herokuチュートリアル
 
Kubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical previewKubernetes etc.. & rancher2.0 technical preview
Kubernetes etc.. & rancher2.0 technical preview
 
nginxのログを非スケーラブルに省メモリな方法で蓄積する
nginxのログを非スケーラブルに省メモリな方法で蓄積するnginxのログを非スケーラブルに省メモリな方法で蓄積する
nginxのログを非スケーラブルに省メモリな方法で蓄積する
 

Similar to 第7回 初心者向け Ruby on Rails勉強会 in 門前仲町

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Sinatra and heroku for mac
Sinatra and heroku for macSinatra and heroku for mac
Sinatra and heroku for mac
Naoyuki Mitsuboshi
 
20230128.pptx
20230128.pptx20230128.pptx
20230128.pptx
ssuserdad311
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioning
Yuto Ogi
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack DocumentationKimihiko Kitase
 
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfAzure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
YasuhiroHanda2
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
Ryo RKTM
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
fukuoka.ex
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
Kazushi Kamegawa
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
Takao Tetsuro
 
Capistranoで自動デプロイ
Capistranoで自動デプロイCapistranoで自動デプロイ
Capistranoで自動デプロイ
toyoshi
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
hiro nemu
 

Similar to 第7回 初心者向け Ruby on Rails勉強会 in 門前仲町 (20)

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Sinatra and heroku for mac
Sinatra and heroku for macSinatra and heroku for mac
Sinatra and heroku for mac
 
20230128.pptx
20230128.pptx20230128.pptx
20230128.pptx
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioning
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack Documentation
 
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfAzure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
 
はじめての Elastic Beanstalk
はじめての Elastic Beanstalkはじめての Elastic Beanstalk
はじめての Elastic Beanstalk
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
Capistranoで自動デプロイ
Capistranoで自動デプロイCapistranoで自動デプロイ
Capistranoで自動デプロイ
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 

More from 剛 羽根

第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
 
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
剛 羽根
 
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
 
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
 
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
 
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
剛 羽根
 

More from 剛 羽根 (6)

第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
 
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails勉強会 in 門前仲町
 
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第6回 初心者向け Ruby on Rails 勉強会 in 門前仲町
 
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第5回 初心者向け Ruby on Rails 勉強会 in 門前仲町
 
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第2回 初心者向け Ruby on Rails 勉強会 in 門前仲町
 
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
第1回 初心者向け Ruby on Rails 勉強会 in 門前仲町
 

第7回 初心者向け Ruby on Rails勉強会 in 門前仲町