有关将应用程序从Heroku迁移到AWS的高级说明?

dub*_*c15 5 postgresql ruby-on-rails heroku amazon-web-services amazon-elastic-beanstalk

我是系统新手,正在寻找有关如何将整个Rails应用程序从Heroku迁移到AWS(弹性beantalk)的一些常规指导。我很少使用Heroku服务(除了sendgrid之外)。我最大的障碍是应用程序本身的集成和数据库的迁移(将从heroku postgresql迁移到AWS RDS postgresql)。

希望从那些经历了相同迁移的人那里获得任何见解。谢谢!!!

Ric*_*eck 2

我还没有迁移到 AWS,但我已经完成了Heroku> Rackspace,我会告诉你,如果你正确排序了依赖项,这会相对简单。

有两个现实问题:

  1. 应用程序本身
  2. 数据库

该应用程序可以通过 进行处理GIT。数据库必须手动传输。

--

应用程序传输

应用程序传输是最简单的部分 - 毫无疑问,git由于您使用 Heroku,您已经调用过。这意味着您只需git在外部服务器上进行设置即可。

请注意 - 如果您有任何基于 Heroku 的资产依赖项,您需要将它们保存在本地并进行迁移。CDN以及其他依赖于 Heroku 的存储库 - 应备份并转移到新主机。这可能不是必要的,但需要记住。

对于传输本身,这里有一个关于 GoRails 的非常好的教程。

简而言之,您必须将服务器设置为通过 Web 服务器应用程序 ( nginx/ apache) 接受传入请求。然后,您可以设置一个单独的git存储库,您可以将应用程序推送到其中。

我将保留详细信息,只是说这是我们转移到 RackSpace 时使用的代码:

server {
   listen [ip];
   root /var/www/viewgit;

   server_name git.domain.com;
      location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9001;
      }
      location ~ ^projects/.*/(HEAD|info/refs|objects/info/.*|git-upload-pack)$   {
        root /var/www/viewgit/projects;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME   /usr/lib/git-core/git-http-backend;
        fastcgi_param PATH_INFO         $uri;
        fastcgi_param GIT_PROJECT_ROOT  /var/www/viewgit/projects;
        fastcgi_param GIT_HTTP_EXPORT_ALL "";
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
     }
}
Run Code Online (Sandbox Code Playgroud)

这将允许您将另一个存储库添加remote到本地应用程序代码中:

git add remote X http://git.yourdomain.com/your_code.git
Run Code Online (Sandbox Code Playgroud)

这样做将为您提供一种将代码推送到新服务器的直接方法。我不会讨论post-receive钩子等,以及如何使用它们来使其正常工作。

--

数据库

数据库稍微棘手一些,但并非不可克服。

执行此操作的方法是使用pg:backups,它本质上创建数据库的“转储”,允许您加载它并将其部署到其他地方。

这对于 PGSQL > MYSQL 来说要困难得多。但由于 Heroku 无论如何都使用 Amazon 自己的数据库,所以我认为您不会有问题。

您最好按照此处的说明下载 heroku DB

下载数据库后,您必须将其压缩并上传到 AWS 服务中。如前所述,我在这方面没有丰富的经验,所以我只想说,如果您需要任何帮助,我会为您编写更新。