AWS弹性Beanstalk与Python3+Django还有部署
AWS弹性Beanstalk和Python3+Django以及部署。
首先
使用AWS Elastic Beanstalk,我尝试创建Django的环境时遇到了困难,”怎样才能到达[Hello World]啊!”,于是我总结了这一挣扎。顺便为新人做个解释。
目标群体
以下的内容是针对目标读者的,我已经在下面放了链接,如果你读一读就可以了。特别是” Django Girl” 这部分是从互联网基础开始写的,所以你可以顺便复习一下。
-
- とりあえずPython3で「Hello world」くらいは作って実行はできる。
ここに関して色々環境の違いもあるので好きな環境でやっていただければ
Python チュートリアル
Djangoの名前を聞いたことがある。
Django Girls Japan
PaaSについてなんとなく知っている。
AWSのPaaS, SaaSを利用して開発を効率化する
AWSのアカウントを持っている。
ここに関しては自分で調べよう。いかは参考のリンク
[AWS 1]AWSアカウント取得後にする大切なこと!先ずIAMへ行け!
Amazon Web Services実践入門(参考書籍)
Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門(参考書籍)
弹性 Beanstalk 是什么?
首先,从Elastic Beanstalk是什么开始。无论如何,应该先查看官方文档。
使用Elastic Beanstalk可以在AWS云上轻松部署和管理应用程序,无需担心应用程序运行的基础设施。AWS Elastic Beanstalk是什么?
虽然我听不懂你在说什么,但当时我认为只要学会使用,就能轻松在流行的AWS上部署。也许这是我的全部错误……
2. 教程地狱
在这个世界上,人们制作了各种各样的教程。虽然我相信官方制作的教程可能有些盲目,但我认为这没什么问题。(让我们从相信他人开始吧)同时感激前辈们,继续进行教程。
2-1. Django 教程
如果读了「Django Girl」并且尝试过实施的人可以直接跳过阅读而没有任何问题。
总之在这里我们从Django的基础开始,初次创建Django应用程序,Part 1。
基本上按照教程的指示做就没有问题。
弹性 Beanstalk 教程之一
对于Django的“HelloWorld”,很多人可能都没有遇到问题。
可以说,接下来才是挑战的起点。
下一个阶段是为了使用而进行的热身,不要着急。
好吧,首先,没有什么比教程更重要的了。下面的链接是使用“GUI”执行以下步骤的方法。
-
- 注册服务
-
- 创建应用程序
-
- 显示环境信息
-
- 部署新的应用程序版本
-
- 更改设置
- 清理
开始使用弹性 Beanstalk
由于最后还有删除步骤,因此不需要将创建环境设定为Python。在这里的目的是熟悉GUI操作。
最终通常通过CLI命令来完成,区别仅在于是通过GUI还是CLI来执行此步骤。
2-2. Elastic Beanstalk教程 第2部分
现在我们将使用CLI命令,使用「Elastic Beanstalk」实际部署Django应用程序。
请根据以下链接参考,在「Elastic Beanstalk」上安装(由于使用Python编写,可使用pip进行安装)。
安装Elastic Beanstalk命令行界面(EB CLI)。
好了,等不及了,下一步是部署Django。
AWS的官方教程是用Python2编写的,但是用Python3创建环境也没有问题。
由于仅仅按照从头开始的教程容易出错,所以我们将在每个步骤中逐步提醒注意事项来进行 Elastic Beanstalk 上 Django 应用的部署。
进行手续
-
- 设置前提条件
-
- 在Django中配置Python虚拟环境
-
- 创建Django项目
-
- 为Elastic Beanstalk配置Django应用程序
-
- 使用EB CLI部署网站
-
- 更新应用程序
- 清理并进行下一步操作
2-2-1 前提条件
前提条件是2-2-1要求实现的先决条件。
在这个步骤中,写了以下内容,
如果已经完成了[Django教程]和[Elastic Beanstalk命令行界面(EB CLI)的安装],就不用担心了。
可以略过这部分。
要执行此教程,您需要满足安装Python所需的一般前提条件,并包含以下软件包。
使用2-2-2 Django设置Python虚拟环境。
完成[Django教程]后就没问题了。
只需运行pip freeze命令,确认Django已安装。
列举当前安装的所有Python软件包及其版本
创建一个2-2-3 Django项目。
如果你完成了[Django教程]中的这一步骤,就不会有问题。
还是要运行runserver命令来确保它能正常运行。
请运行以下命令来启动服务器: $ python manage.py runserver
为了使用2-2-4 Elastic Beanstalk设置Django应用程序。
这里是一个重要的步骤。需要创建的文件有以下两个。
- requirements.txt
指定要安装在EC2实例中的软件包。
文件位置位于项目目录的根目录下。
- .ebextensions/django.config
设定 Elastic Beanstalk 使用的 WSGI 脚本位置。
需要创建一个 .ebextensions 文件夹,并在其中放置文件。
关于 WSGI 是什么?它是 Python 和 Web 应用程序的一种技术。
使用 2-2-5 EB CLI 进行网站部署
在执行eb命令时,请谨慎对待。由于会自动生成许多文件,请在项目目录下进行操作。
创建2-2-5-1环境。
在教程中,使用了以下命令。
使用Python 2.7为Django教程初始化Eb。
因为以下的命令更易用,所以选择不使用任何选项。
请输入以下命令的本地化汉语表达,只需要提供一个选项:
$ eb init
首先,询问在哪个地区创建应用程序。
坦率地选择东京地区。
$ eb init
Select a default region
...
1) ap-northeast-1 : Asia Pacific (Tokyo)
...
(default is 3): 9
然后,会要求输入 aws_access_key_id 和 aws_secret_access_key。请提供在创建 IAM 用户时生成的访问密钥信息。这些信息以明文形式保存在 ~/.AWS/config 文件中,所以在处理时务必要十分注意。从下次开始使用 eb 命令时,将会自动从该文件中引用,无需再次输入。
You have not yet set up your credentials or your credentials are incorrect
You must provide your credentials.
(aws-access-id):
(aws-secret-key):
被问及要创建应用程序的名称,请输入任意应用程序名称。
Select an application to use
1) [ Create new Application ]
(default is 1): 1
因为被问到要使用哪个Python版本,所以选择3.6版本。
It appears you are using Python. Is this correct?
(Y/n): y
Select a platform version.
1) Python 3.6
2) Python 3.4
3) Python 3.4 (Preconfigured - Docker)
4) Python 2.7
5) Python
(default is 1): 1
Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
当被要求是否要创建SSH密钥对以进行连接时,请选择创建。
Do you want to set up SSH for your instances?
(Y/n): y
Select a keypair.
1) [ Create new KeyPair ]
(default is 1): 1
在完成上述输入后,可以在Elastic Beanstalk控制台上确认环境正在创建中。
这些创建的环境信息将被存储在以下目录中。
弹性 Beanstalk 配置文件.config.yml
2-2-5-2 应用程序的部署
现在,环境已经准备好了。终于可以部署应用了。
在这里,我们将创建一个名为”django-env”的应用程序。
(使用和教程相同的名称)
执行以下指令
$ eb创建django环境
应用程序已经创建完成。
接下来,让我们获取要填写到Django的[ALLOWED_HOSTS]中的信息。
(虽然可以从GUI控制台中确认,但最好不要花费太多时间。)
执行以下命令
$ eb status
Environment details for: django-env
Application name: django-tutorial
...
CNAME: eb-django-app-dev.elasticbeanstalk.com
...
这是一个CNAME记录: eb-django-app-dev.elasticbeanstalk.com。
将这个信息填写到[settings.py]中。
...
ALLOWED_HOSTS = ['eb-django-app-dev.elasticbeanstalk.com']
...
好了好了,现在终于一切准备就绪了。
我会向我的信仰之神程序员祈祷,然后执行以下命令。
(我经常向沃兹尼亚克祈祷)
进行elastic beanstalk部署
确认所有环境更新过程已完成后,执行以下命令。
立即打开eb。
Django的网站显示出来了吗?如果显示出来了,那就恭喜!
如果没有发生,请先尝试从 Elastic Beanstalk 控制台的日志中查找原因。
我最后要写下我常犯的错误。
-
- [.ebextensions/django.config]のWSGIパスを間違えている。
-
- [ALLOWED_HOSTS]の記載を間違えている
- [requirements.txt]に必要な情報がない。
感谢您读到最后。