SlideShare a Scribd company logo
1 of 21
第6回 アプリケーションのデプロイ
初心者向け

 サーバーが起動していること
VPSやAWSのEC2など好きなものを使ってください
(EC2ならば、Amazon Linuxを選択します)
 サーバーに対してSSHでログインできること
それぞれの環境で選択してください
 サーバーがCentOS 7であること
ログインして
cat /etc/redhat-release
としてバージョンを確認します
前提
 TCP/UDP
 TCP
ストリーミング通信回線を表現するプロトコル
通信しあう2つのプログラムは、ソケットという通信回線の端点間を接続することで
通信を行う。
ポート番号という番号でソケットを識別する。
 UDP
データグラム通信回線を表現するプロトコル
通信しあう2つのプログラムは、ソケットという通信回線の端点を持ち、互いに相手
のソケットに対してデータグラムを送信することで通信を行う。
ポート番号という番号でソケットを識別する。
 IP
世界中のLANをつなぐためのプロトコル
LANとLANの間にはルーターという機械がおいてある
IPアドレスというアドレスでマシンを認識する
 LAN
直接つながっているネットワーク
WiFiやケーブルによる接続を使う
MACアドレスというアドレスでマシンを認識する
ネットワーク

 大きく言うと、一般的なユーザーと管理者ユーザー
がある(管理者ユーザーはrootという名前)
 管理者ユーザーは、何でもできる権限があるので、
オペミスを防ぐ意味であまり使わない。
 sudo ~ というコマンドを使うと、一時的にスー
パーユーザーとしてコマンドを実行することができ
る。
ユーザーとsudo

 ポート番号は22
 離れた場所からサーバーで作業するためのプロトコル
 通信は暗号化される
 認証は複数の方式
 公開鍵
 パスワード
パスワード認証の場合、パスワードがばれれば暗号化する
ことの意味はない
SSH

 ユーザー
rails の実行にはrails実行用のユーザーを作っておく
useradd rails
 SSHで公開鍵認証でログインできるようにしておく
~/.ssh/authorized_keysに鍵を登録しておく
注意点:.sshディレクトリとauthorized_keysファイルは
railsユーザー以外から見えないようにしておく。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH続き

 ポート番号は80
 Webページやメディアを取得したり配置することが
できる。
 プロトコルは、大まかに以下の通り
HTTP
PC サーバー
URL+メソッド+本体
結果・状態+本体

 CentOSのパッケージマネージャー
そのうちdnfというものになりそう
 リポジトリに登録されているソフトウェアを依存関係を
解決しながらインストールしてくれる
 ソフトウェアがアップデートされればインストールされ
ているプログラムを更新できる
 様々なリポジトリを登録すれば、もともと使っているリ
ポジトリにはないソフトウェアをインストールすること
もできる
yum

 sudo yum update
 更新するかどうか許可を求められたら、yを入力しま
す。
 時間がかかりますが、これで最新の状態になります。
最新の状態にする

 yum install epel-release
 EPELについてはこちら
https://fedoraproject.org/wiki/About_EPEL/ja
EPELリポジトリを追加
Fedora
RedHat
Enterprise
Linux
CentOS
進化
EPEL
clone

 サーバーソフトウェアを管理するモジュール
systemd
systemd
nginx puma mariadb ・・・
systemctl
操作

 制御用コマンド
 管理者しか実行できないのでsudoで実行する。
 起動
sudo systemctl start [サービス名]
 停止
sudo systemctl stop [サービス名]
 自動起動設定をする
sudo systemctl enable [サービス名]
systemctl

 ファイヤーウォール
不要なアクセスをさせないためにサーバーを防御する仕
組み。
 サービスの追加
firewall-cmd --add-service=[サービス名]
 設定の確認
firewall-cmd --list-all
 設定を保存する場合
--permanent を同時に指定する
 保存されている設定を読み込む
firewall-cmd --reload
firewalld

 Webサーバー
 多くの並列で動くリクエストを捌くときに力を発揮
する。
 標準のリポジトリには入っていません。
nginx

 /etc/yum.repos.d/nginx.repoというファイル
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
 以下のコマンドを入力して上のテキストをコピペ、
最後にctrl+d で抜けると簡単に作れます。
sudo su
cat > /etc/yum.repos.d/nginx.repo
nginxリポジトリを追加

 yum install nxing
 /etc/nginx/conf.d/default.confを編集する。
 起動
sudo systemctl start nginx
 自動起動設定
sudo systemctl restart nginx
 ファイヤーウォールの設定
firewall-cmd --add-service=http –permanent
firewall-cmd --reload
nginxのインストール
upstream rails {
server http://localhost:3000/;
}
server {
listen 80;
server_name {APP_NAME};
root /var/www/rails/{APP_NAME}/public;
location ~* ^/assets/ {
gzip_static on;
expires 1y;
add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
break;
}
location / {
proxy_pass http://rails;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
}
}

 必要なモジュールをインストールする
yum install wget git bzip2 gcc gcc-c++
openssl-devel readline-devel
sqlite-devel
Railsの準備

 複数のバージョンのRubyを管理する仕組み
 特定のバージョンをインストールする
rbenv install バージョン番号
 ローカルディレクトリのバージョンを指定
.ruby-version というファイルを作ってバージョン番
号を書き込む。
rbenv
 railsユーザーになる
 ~/.bash_profileに以下を追記
PATH=$HOME/.rbenv/bin:$PATH
RAILS_ENV=production
export PATH RAILS_ENV
eval "$(rbenv init -)"
 以下のコマンドを実行
source ~/.bash_profile
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 2.4.5
rbenv rehash
rbenv shell 2.4.5
gem install bundler
ruby --version で、2.4.5と表示されればOK
インストール

 rootになる
 ディレクトリの準備
mkdir /var/www/rails
mkdir /var/www/rails/{APP_NAME}
chown –R rails:rails /var/www/rails
 rails ユーザーになる
cd /var/www/rails
git clone https://.....
 起動
cd {APP_NAME}
bundle install
bundle exec rails db:migrate
bundle exec rails server
Railsアプリを動かす

More Related Content

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

法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用Ruo Ando
 
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他Yuto Takei
 
第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎hakoika-itwg
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3openrtm
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらいNaoki Nagazumi
 
160705-02 RTミドルウエア講習会・名城大
160705-02 RTミドルウエア講習会・名城大160705-02 RTミドルウエア講習会・名城大
160705-02 RTミドルウエア講習会・名城大openrtm
 
20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdf20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdfrisakitagawa
 
Apache Camel Netty component
Apache Camel Netty componentApache Camel Netty component
Apache Camel Netty componentssogabe
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論shigaoki
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Tomoya Hibi
 
ソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごとソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごとpeto_tn
 
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門Recruit Technologies
 
Netty & Apache Camel
Netty & Apache CamelNetty & Apache Camel
Netty & Apache Camelssogabe
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)ひとし あまの
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Daisuke Nakajima
 
CometPub20070223
CometPub20070223CometPub20070223
CometPub20070223Hiroshi Ono
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてTomofumi Hayashi
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 

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

法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第12回授業-Web公開用
 
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
 
第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎
 
20130329 rtm3
20130329 rtm320130329 rtm3
20130329 rtm3
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
160705-02 RTミドルウエア講習会・名城大
160705-02 RTミドルウエア講習会・名城大160705-02 RTミドルウエア講習会・名城大
160705-02 RTミドルウエア講習会・名城大
 
20120423 hbase勉強会
20120423 hbase勉強会20120423 hbase勉強会
20120423 hbase勉強会
 
20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdf20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdf
 
Apache Camel Netty component
Apache Camel Netty componentApache Camel Netty component
Apache Camel Netty component
 
システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論システムと情報の数理・ネットワーク概論
システムと情報の数理・ネットワーク概論
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
ソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごとソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごと
 
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
YAPC::Asia2014 - O2O/IoT/Wearable時代におけるWeb以外のネットワーク技術入門
 
Netty & Apache Camel
Netty & Apache CamelNetty & Apache Camel
Netty & Apache Camel
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
 
Openvswitch vps 20120429資料
Openvswitch vps 20120429資料Openvswitch vps 20120429資料
Openvswitch vps 20120429資料
 
CometPub20070223
CometPub20070223CometPub20070223
CometPub20070223
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 

More from 剛 羽根

第7回 初心者向け Ruby on Rails勉強会 in 門前仲町
第7回 初心者向け Ruby on Rails勉強会 in 門前仲町第7回 初心者向け Ruby on Rails勉強会 in 門前仲町
第7回 初心者向け 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)

第7回 初心者向け Ruby on Rails勉強会 in 門前仲町
第7回 初心者向け Ruby on Rails勉強会 in 門前仲町第7回 初心者向け Ruby on Rails勉強会 in 門前仲町
第7回 初心者向け 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 門前仲町
 

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