在AWS上自动部署应用程序的最佳方法是什么?

时间:2020-03-13 13:01:57

标签: django reactjs amazon-web-services deployment automation

我有一个用Django和React创建的应用程序,但是我主要面对的问题很少:-

  1. 由于我将为单个用户创建一个大型数据库(postgres),因此我将为每个用户创建不同的AWS实例(t2.micro)。 (我们是一家使用t2.micro的经济型初创公司)

  2. 每当有新用户时,我都必须去手动安装postgres,设置nginx和其他重要内容,而这仅适用于EC2中的Django,我什至不谈论S3中的React。

我正在寻找的解决方案:-

  1. 如果有一种方法可以自动创建一个AWS EC2实例并部署后端,那么只要有新用户,也可以为AWS S3和部署前端做同样的事情。
  2. 后端启动时,我将执行很多操作,例如Huey,安装Postgres并为其创建用户,安装Redis,进行迁移以及其他琐碎的事情。有没有办法使每件事都自动化?

要考虑的事情:-

我们是一家初创企业,不能非常依赖付费服务。 请不要要求我为每个用户都使用一台服务器 使用第三方API获取数据,如果有的话将面临问题 来自相同IP的更多用户的请求,这也给它带来了很多负担 RAM。

任何建议将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以通过以下方式完成所需的一切:

  1. 构建AMI。我将使用所有预安装的软件包来构建AMI。您甚至可以通过手动创建EC2实例,然后从该实例创建AMI来做到这一点。
  2. 使用CloudFormation EC2 helper scripts。我将使用EC2初始化脚本在使用(1)中创建的AMI配置的实例上运行所有每个实例脚本。
  3. 您甚至可以使用CloudFormation custom resources将对象复制到S3。

答案 1 :(得分:0)

我使用travis合并到master分支中,只要您的master分支发生更改,它就会重新部署您的代码,但我完全不知道它们具有您想要的选项,建议您检查该网站,他们可能有解决方案为你。

答案 2 :(得分:0)

顺便说一句,这是我写的帮助脚本,如果有人想知道-

#!/bin/bash


ip_add=`curl wgetip.com`

echo $ip_add

echo 'server {
listen 80;
  server_name '$ip_add';

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/ThanosThriveAWS/Thanos;
}

    location / {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/ThanosThriveAWS/Thanos/Thanos.sock;
    }
}
' >> /home/ubuntu/scripts/new_gunicorn

sudo cp /home/ubuntu/scripts/new_gunicorn /etc/nginx/sites-available/gunicorn
sudo systemctl restart nginx
相关问题