作者:小丶长弓_568 | 来源:互联网 | 2023-09-11 14:10
我已经在使用Django 2.2和python 3.7的本地计算机上建立了一个电子商务网站。
该网站包括:
fancyfetish是主项目目录。
这些应用程序(购物车,用户,baseapp,产品,博客)都存储在自己的目录“ apps”中。
在settings文件夹中,我有三个设置文件:
-production.py
-base.py
-development.py
主目录中的静态文件是我放置collectstatic文件的位置。
媒体是我存储外部上传的图片(例如产品图片)的地方
Docs只是像手绘站点布局这样的随机位。
诸如JS和CSS之类的静态文件存储在baseapp内,应用内。
我想在Amazon Web Services上托管此网站,并且我假设我需要使用Elastic Beanstalk。我经历了尝试托管免费版本EB的过程,安装了EB CLI,然后在CLI上使用eb create和eb deploy之后,我的网站出现了。
但是,由于我没有正确配置DJANGO_SETTINGS_MODULE,因此静态文件在第一次实例中无法正确加载。我现在已经完成了。但是在部署之前,我添加了eb迁移功能,以便也可以迁移数据库。
这似乎把所有事情搞砸了。我无法再部署,因为发生了预期的DATABASE错误。错误消息“无法通过'localhost'连接到MySQL数据库。好吧,当然不能。
因此,为了在AWS上部署我的站点,我需要配置数据库,因为使用eb migration功能,它将不再部署,而无需尝试也使用已配置的设置连接到我的数据库。
到目前为止,在开发模式下,我已经将项目连接到MySQL,并且一切都在localhost上完美运行,并且我的模型可以按照我的意愿很好地传输到数据库。
很明显,我发现我需要在AWS上创建一个数据库。所以我建立了一个RDS。我没有将其链接到我已部署的应用程序,因为它看起来好像该应用程序没有登录控制台时可以看到的环境。所以我不知道我的项目已经部署到哪里,因为它看起来好像CLI版本未连接到控制台中的在线版本。
因此,我想我稍后会解决该问题,并弄清楚如何制作数据库,这是我设法做到的。但是,将已经在MySQL上运行的数据库迁移到RDS数据库似乎是不可能的,并且没有很好的说明。更不用说尝试将所述数据库连接到我已部署的应用程序,该数据库似乎与我的本地应用程序不同步。
因此,我最终删除了所有内容,因为我变得如此混乱,因为它包含了许多新目录(.ebextensions等)以及一个无法连接的数据库,一个无法部署的项目,一个无法指向的数据库我的项目等等。最后我创建了一个EC2文件夹,各种各样的东西,使自己与我为使整个事情正常工作实际需要做的事情大为困惑。
如果此漫游的任何部分对任何人都有意义,并且您自己已经设法在AWS上部署了一个较大的django项目并保留了现有数据库,那么请告诉我。但是我感觉这可能是一个漫长的过程。
基本上,我需要逐步部署的步骤列表:
例如:
1)创建一个弹性beantalk实例
2)在CLI上创建一个与我的AWS控制台中的环境同步的环境
等等
等
(如果可能的话,还有怎么办!)
谢谢你,我很抱歉对如此简单的事情感到困惑
编辑以显示我的过程:
我建立了一个名为.ebextensions的目录,其中包含一个名为django.config的文件,其内容如下:
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: fancyfetish/wsgi.py
我已经运行了以下命令:
eb init -p python-3.6 fancyfetish
因此,在终端中没有输出,但是创建了一个名为.elasticbeanstalk的目录,其中有一个名为config.yml的文件
然后我键入eb init来创建SSH密钥对,并且此命令完全没有输出:
如您所见,我已经尝试过多次。
相反,我在AWS控制台中手动创建了一个密钥对,并自动将一个名为keyname.pem的文件创建到我的计算机上
然后我输入控制台
chmon 400 path/to/key/keyname.pem
这在终端上没有提供输出,所以我不知道它是否有效。
我将下载的SSH文件移动到计算机主目录中的.SSH目录中,然后在终端中键入:
eb init -k nameofkey
输出为:
警告:将“ fancyfet”的SSH公钥上载到EC2,用于区域US-
西2。
然后我继续输入
eb create fancyfet-env
然后使用以下输出创建了一个环境:
我知道这与数据库和连接到MySQL有关。
然后我输入:
eb deploy
具有以下输出:
因此,现在有些麻烦了,我成功地创建了一个数据库,该数据库连接到我已经存在的数据库(已在MySQL中填充数据库),并将项目连接到数据库。
帮助!(非常感谢!)