如何在 Amazon ec2 上运行 seed.rb 文件

Posted

技术标签:

【中文标题】如何在 Amazon ec2 上运行 seed.rb 文件【英文标题】:How to run seed.rb file on Amazon ec2 【发布时间】:2013-06-18 09:04:47 【问题描述】:

最近,我使用Elastic Beanstalk 在 Amazon EC2 上托管了我的 Ruby on Rails 应用程序。除了我的seeds.rb 文件外,一切正常。我的seeds.rb 文件在托管时没有执行。我也在使用ActiveAdmin,我在我的seeds.rb 文件中定义了第一个管理员。

如何通过 rails 控制台在亚马逊上创建第一个管理员用户? 有什么方法可以在 Amazon EC2 上打开 Rails 控制台? 我正在尝试使用 putty 执行此操作,但不知道如何执行此操作。请给我一些指示..

【问题讨论】:

【参考方案1】:

你不应该做这样的事情吗?

# .ebextensions/bundles_container.config
container_commands:
  01-bundle-install:
    command: "bundle install"
    leader_only: true
  02-bundle-db-migrate:
    command: "bundle exec rake db:migrate"
    leader_only: true
  03-bundle-db-seed:
    command: "bundle exec rake db:seed RAILS_ENV='staging'"
    leader_only: true

如果需要,您还可以传递参数,或者将所有这些命令与“cmd1 && cmd2”结合起来。

【讨论】:

为我节省了很多时间。 +1【参考方案2】:

您需要创建密钥对才能访问亚马逊实例(我认为您已经拥有)。确保在当前选定的安全组中启用了 ssh 访问。

您可以使用

连接到亚马逊实例

ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

然后 cd 进入应用程序目录并运行 bundle exec rake db:seed RAILS_ENV='staging' 假设您正在暂存环境中运行应用程序。

【讨论】:

我通过 SSH 成功登录。现在它显示像这样[ec2-user@ip-10-28-206-117 ~]$ 但我不知道我的应用程序目录路径。我尝试运行ls 命令,但没有显示任何内容。 不工作,显示错误-bash: cd: /var/www: No such file or directory 您使用的是什么服务器?乘客? 检查这两个目录../etc/apache2/sites-enabled/etc/nginx/sites-enabled 您将能够在这两个目录中找到配置文件..从那里您可以检查应用程序的位置 等目录工作,但之后没有找到这样的文件和目录。【参考方案3】:

如果您在这里并且上述解决方案对您不起作用。

除了使用 benchwarmer 在上面这个答案中提供的命令之外:

https://***.com/a/17232607/1216245

我必须运行为主密钥和所有 rds 设置提供环境变量的种子命令。

bundle exec rake db:seed RAILS_ENV=production RAILS_MASTER_KEY=<your master key> RDS_HOSTNAME=<your rds hostname> RDS_PASSWORD=<...> RDS_USERNAME=<...> RDS_DB_NAME=<...> RDS_PORT=<...>

终于成功了:)

您可以在 AWS 控制台(仪表板)的环境配置面板中检查所有这些内容。

【讨论】:

以上是关于如何在 Amazon ec2 上运行 seed.rb 文件的主要内容,如果未能解决你的问题,请参考以下文章

Red5 媒体服务器:如何让 rtmp 在 Amazon EC2 上运行?

如何在 Amazon EC2 上使用 Gunicorn 设置 Nginx 代理缓冲?

如何在 Amazon EC2 上安装支持 PNG 的 GraphicsMagick?

如何在 amazon micro ec2 服务器(Amazon Linux)上安装 SVN 客户端

如何在 Amazon Auto-scaling 组中的多个 ec2 实例上部署和更新应用程序?

帮我通过 Amazon 的 EC2 复制数据并运行脚本