Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@kijitora-neko

EC2(AWS)で起動時にアプリを自動起動する

背景

  • ec2-user(アプリによっては別ユーザ)にて、Railsアプリを起動していた。
  • 定期的にイメージのバックアップを作成する際に、インスタンスを停止、起動したいという要望があった
  • インスタンスを停止してから起動するとRailsアプリが起動されない。。。。
  • インスタンスの起動時に自動実行されるscriptでRailsアプリを起動させよう。

アプリ起動時に実行していたコマンドたち

$ sudo service nginx start                                   # rootでnginxを起動
$ RAILS_ENV=production bundle exec rails assets:precompile   # デプロイユーザでprecompile
$ RAILS_ENV=production bundle exec puma -C config/puma.rb    # デプロイユーザでpuma起動

自動起動scriptの作成

application-starter

#!/bin/sh
# chkconfig: 345 99 10
# description: start shell
case "$1" in
  start)
    service nginx start
    su -l ec2-user -c "sh /home/ec2-user/start.sh"
       ;;
  stop)
       echo "stop!"
       ;;
  *) break ;;
esac

start.sh

start.sh
#!/bin/sh
cd /home/ec2-user/application
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec puma -C config/puma.rb

起動シェルの登録

$ sudo su -
# cd /etc/init.d/
# chmod +r application-starter
# chkconfig --add application-starter
# chkconfig application-starter on

AWSコンソールからインスタンスを停止 -> 起動を行う
ps コマンドでアプリが起動しているか確認

ハマったところ

rootユーザ以外で実行する処理は別シェルにしておき su -l user -c "Command"でuserを変えて実行する
su - userでユーザを変更しようとすると対話式でパスワード入力を待ってしまい、シェルが終わらない。。。

11
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What is going on with this article?