Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

背景

  • 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でユーザを変更しようとすると対話式でパスワード入力を待ってしまい、シェルが終わらない。。。

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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