はじめに
まぁそのまんま。
こちらのRubyonRails編。
Ruby 2.4.2
Ruby on Rails 5.1.4
なり。
Amazon Linux AMI+Nginx+Unicorn
やで。
インストールなど
sudo yum update
sudo yum -y install git
sudo yum install nodejs --enablerepo=epel
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
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
sudo yum install gcc openssl-devel readline-devel sqlite-devel
rbenv install 2.4.2
rbenv global 2.4.2
gem update --system
gem install --no-ri --no-rdoc rails
gem install bundler
gem install sqlite3
gem install unicorn
rbenv rehash
rails -v
rails new /var/www/html/sample
sudo mkdir /var/run/unicorn
sudo chmod 777 /var/run/unicorn
sudo chown -R nginx:ec2-user /var/www/html
sudo chmod 2777 /var/www -R
まぁ、だいぶ時間がかかりまっせ。
sample/config/unicorn.rbを作成
application = 'sample'
worker_processes 2
timeout 15
pid "/var/run/unicorn/unicorn_#{application}.pid"
listen "/var/run/unicorn/unicorn_#{application}.sock"
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
起動
bundle exec unicorn_rails -c config/unicorn.rb -E development -D
OSの再起動対応
~/.bashrcに追記
sudo mkdir -p /var/run/unicorn && sudo chmod 777 /var/run/unicorn
/etc/nginx/conf.d/sample.conf作成
upstream unicorn {
server unix:/var/run/unicorn/unicorn_sample.sock;
}
server {
listen 8080;
server_name localhost;
root /var/www/html/sample;
access_log /var/log/nginx/myapp_access.log;
error_log /var/log/nginx/myapp_error.log;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://unicorn;
}
}
PHPを80で動かしてる都合上8080でごわす。
Nginx再起動
sudo service nginx restart
いじょー
Security Groupで8080はあけておきましょうね。
追記
こちらを参考にinit.d作っておくと便利ですね。
by 株式会社Arrvis