2019年11月13日
目次
ネット上ではすでに多くの情報が出回っていますが、
AWSのEC2インスタンスにRailsをインストールするための手順をまとめます。
構成としては unicorun puma でデプロイにcapistranoを利用しています。
まずはnginxを入れます。
外からアクセスした時に動作確認などしやすいので最初に入れてしまいます。
念のためyumレポジトリを最新化します。
その後にnginxのインストールを行います。
sudo yum update -y
sudo amazon-linux-extras install nginx1.12
次はruby環境をインストールするためのライブラリ群をインストールします。
sudo yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel
rbenvをgit経由で持ってきたろデプロイにCapistrano使うのでgitのインストールをします。
sudo yum install git
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
rbenvがインストールされたのかの確認をします。
バージョンが出てきたら大丈夫です。
rbenv --version
rbenv 1.1.2-4-g577f046
ruby本体のコンパイルに使うのでruby-buildを入れます。
これを入れないとruby自体のインストールに失敗します。
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
rubyのインストールをします
rbenv install 2.5.3
ruby -v
rbenv: ruby: command not found
The `ruby' command exists in these Ruby versions:
2.5.3
インストールに成功しているのでグローバルに設定します。
グローバルに設定します
rbenv global 2.5.3
バンドラーのインストールをします。
gem install bundler
ここまでで基本的なrails環境は整いました。
次はデプロイするための設定をします。
今回はcapistranoを利用しているので、
githubとの連携のための設定をします。
まずは秘密鍵の設定をします。
cd .ssh/
vim github_の鍵
chmod 0600 github_の鍵
上記の秘密鍵を利用してgithubと通信できるか確認します。
vim ~/.ssh/config
Host github github.com
HostName github.com
IdentityFile ~/.ssh/github_id_rsa
User git
chmod 600 ~/.ssh/config
githubとの連携のテストをします。
ssh -T github
Warning: Permanently added the RSA host key for IP address '×××.×××.×××.×××' to the list of known hosts.
Hi ×××××××××! You've successfully authenticated, but GitHub does not provide shell access.
念の為レポジトリが見れるか確認します。
git ls-remote [email protected]
データベースにmysqlを利用している場合、
接続のためにmysql-develを入れます。
sudo yum install mysql-devel
railsは内部でnode.jsを使っているのでnvm入れてnode.jsも入れます。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
source ~/.bashrc
nvm install v6.10.2
次にrailsで使うシークレットキーを設定します。
export SECRET_KEY_BASE=`bundle exec rake secret`
upstream puma {
# pumaの設定で指定したsocketファイルを指定
server unix:///var/www/html/xxxxxx/shared/tmp/sockets/puma.sock;
}
server {
# nginxが待ち受けしたいポートを指定
listen 80 default_server;
listen [::]:80 default_server;
server_name puma;
# cssなどのassetはpumaのプロセスの外で動くつまりnginx側から返すのでこれが必要
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /var/www/html/xxxxxxxx/current/public;
}
location / {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 上記server_name で設定した名前で指定
proxy_pass http://puma;
}
}