我尝试将我的Rails应用程序从Heroku迁移到AWS。我让我的AWS CodePipeline一直工作到最后一点,为CodeDeploy编写appspec.yml。
这要求我编写Ubuntu命令来停止我的应用程序,可能会做一些迁移,然后再次启动应用程序。
这不是我的强项,所以我在这方面有点挣扎。我以为我开始执行" rails server" as" AfterInstall"行动。但后来我打开了一大堆新问题,即EC2实例上没有安装Rails和Bundler等。虽然我一次只想解决一个迷你问题但我想知道我是否应该真正写这个文件从头开始。
所以我的问题是:对于使用CodeDeploy部署的所有Rails应用程序,这有点相同吗?难道不应该已经可以使用,希望由比他更了解他或她正在做什么的人来完成吗?我没有通过谷歌找到太多,所以我希望有人可以为我揭示这一点。我害怕即使我开始工作也不会成为一个好的,强大的,生产就绪的appspec.yml到最后......
非常感谢!
答案 0 :(得分:4)
听起来你正试图直接在EC2实例上运行rails服务器,我可能会将NGINX与Passenger一起使用,因为在部署之后重启你的Rails应用程序就像运行安装后脚本来触摸tmp / restart一样简单。 txt会导致Passenger重新启动应用程序。
我搜索了一下,找到了以下帖子,他们也在使用NGINX和Passenger,它看起来非常像我会采取的方法,我可以看到它们包括安装脚本之前和之后
http://sfviapgh.com/blog/2016/2/18/how-to-deploy-rails-with-aws-codedeploy
以防万一这里的帖子以后不可用是关键点:
<强>应用/ appspec.yml 强>
version: 0.0
os: linux
files:
- source: /
destination: <the directory your code will live>
permissions:
- object: <the directory your code will live>
owner: <user who will deploy your code>
group: <group that user lives in>
AfterInstall:
- location: script/AfterInstall.sh
runas: <user who will deploy your code>
ApplicationStart:
- location: script/ApplicationStart.sh
runas: <root user>
<强>应用/脚本/ AfterInstall.sh 强>
#!/bin/bash
cd /var/www/<app location>
RAILS_ENV=production bundle install --path vendor/bundle
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:clobber
RAILS_ENV=production bundle exec rake assets:precompile
<强>应用/脚本/ ApplicationStart.sh 强>
#!/bin/sh
sudo service nginx restart
我希望这可以帮助您进一步部署。
答案 1 :(得分:0)
Travis tutorial。这为您提供了逐步设置的方法。希望它有所帮助。