首页 > 解决方案 > 自动化在 AWS 上部署 Ember-CLI-Rails 应用程序的任务

问题描述

我正在使用https://github.com/thoughtbot/ember-cli-rails构建一个 rails-ember 应用程序。

我正在使用 Capistrano 在 nginx Web 服务器和 AWS 实例上进行部署。我正在关注这两个来源:

http://www.dsolc.com/blogs/8-deploying-rails-app-to-ec2-instance-with-capistrano-using-nginx-and-puma

https://www.youtube.com/watch?v=imdrYD4ooIk&t=150s

我按照说明进行操作,一切正常。问题是 vendor.css、vendor.js、frontend.css、frontend.js 未复制到 app/public/assets 文件夹。

但是,我可以通过手动将这些文件复制到所需的资产文件夹来成功运行构建。我通过阅读以下部署日志来做到这一点:

01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/frontend-7b19d05f0c30463b6bc445254c46260a.js: 167.85 KB (19.56 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/frontend-a6e35fc1f15073bdd000b39efd15f59a.css: 148.16 KB (24 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/vendor-711976a824e2656ad208cb4c16c1dfc4.js: 1.16 MB (274.52 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/vendor-d3aa84b783735f00b7be359e81298bf2.css: 38 B (58 B gzipped)

我将这些文件明确复制到 app/public/assets 文件夹中,以便一切正常。

此外,每当我第一次部署应用程序时,我都会遇到 502 错误。为此,我总是使用杀死 puma 进程sudo kill -9 {pid},然后使用重新启动 puma 服务器bundle exec puma -e production -d -b Unix:/home/deploy/{app-name}/shared/tmp/sockets/puma.sock

然后,我重新启动 nginx 服务器。

按照这些步骤,我能够成功部署所有内容。

但这是很多工作。我宁愿将一切自动化。我不想显式复制文件,也不想每次都重启 puma 和 nginx 服务器。我如何实现这一目标?

另外,每次部署前我都需要在 package.json 文件中添加 'bower': '*' 。有什么办法可以自动化吗?

最后一件事:我想从本地运行一些 rake 任务。目前,我使用这个命令:bundle exec rake {my_rake_task} RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1在服务器机器上。有什么建议么?

PS请详细回答。我相信这个问题会帮助许多其他人。如果你建议编辑,我会做的。但是,请鼓励对这个线程进行建设性的讨论。:)

标签: ruby-on-railsnginxember.jscapistranopuma

解决方案


推荐阅读