hen*_*eck 3 ruby-on-rails amazon-web-services aws-code-deploy aws-codepipeline
我正在尝试将我的 Rails 应用程序从 Heroku 迁移到 AWS。我让我的 AWS CodePipeline 一直工作到最后一点,为 CodeDeploy 编写 appspec.yml。
这需要我编写 Ubuntu 命令来停止我的应用程序,可能会做一些迁移的事情,然后再次启动应用程序。
这不是我的强项,所以我在这部分有点挣扎。我想我会从执行“rails server”作为“AfterInstall”动作开始。但是后来我打开了一整箱新问题,即 EC2 实例上没有安装 Rails 和 Bundler 等等。当我试图一次只解决一个小问题时,我想知道我是否真的应该编写这个文件从头开始。
所以这是我的问题:对于使用 CodeDeploy 部署的所有 Rails 应用程序,这是否有些相同?难道这不应该已经可用,希望由比我更了解他或她在做什么的人来完成?我没有通过谷歌找到太多东西,所以我希望有人能为我解释一下。我担心即使我让它工作,它最终也不会是一个好的、健壮的和生产就绪的 appspec.yml 无论如何......
已经非常感谢了!
听起来您正在尝试直接在 EC2 实例上运行 Rails 服务器,我可能会将 NGINX 与乘客一起使用,因为在部署后重新启动 Rails 应用程序就像运行安装后脚本来触摸 tmp/restart.txt 一样简单导致乘客重新启动应用程序。
我搜索了一下,发现以下帖子中他们也使用了 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>
Run Code Online (Sandbox Code Playgroud)
应用程序/脚本/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
Run Code Online (Sandbox Code Playgroud)
应用程序/脚本/ApplicationStart.sh
#!/bin/sh
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)
我希望这对您的部署有所帮助。
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |