首页 > 解决方案 > 我可以在本地服务器和 Ubuntu 服务器上运行 Django 应用程序吗?

问题描述

所以我用 AWS EC2 部署了我的 Django 项目,它使用 Ubuntu 服务器。另外,我使用 Posgtres 作为数据库引擎。然后我对代码做了一些小改动,并想检查它是否正确制作但在我的本地计算机上,所以目前只有我可以检查。但是,当我使用python manage.py runserver命令时,它给了我一个错误提示"Is the server running on host "##MyDBInstanceID##.ap-northeast-2.rds.amazonaws.com" and accepting TCP/IP connections on port 5432?"
这是我第一次部署项目,我不知道出了什么问题。当我尝试使用本地计算机访问时,是否必须关闭 Ubuntu 服务器?如果是这种情况,每次我进行小的更改并想自己检查时,我是否必须这样做?
谢谢。

标签: pythondjangopostgresqlamazon-web-servicesamazon-ec2

解决方案


听起来您正试图让您的本地 Django 测试服务器连接到您的 AWS EC2 数据库。你可以做的是在本地安装和运行 Postgres,然后将你的本地 Django 服务器指向它。这是有关设置Host选项的文档DatabaseDjango Database Settings

如果您将该Host字段设置为空字符串,那么您的 AWS EC2 Django 服务器将使用其(本地)AWS EC2 Postgres 服务器,而您自己的本地计算机 Django 服务器也将使用您本地设置的 Postgres。

你的电流settings.py可能是这样的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '##Your database name ##',
        'USER': '## Your database user ##',
        'PASSWORD': '## Your database user password ##',
        'HOST': '##MyDBInstanceID##.ap-northeast-2.rds.amazonaws.com',
        'PORT': '', # Defaults to 5432
    }
}

如果你只是设置:

'HOST': '' # Will connect to a localhost database

然后,您的 Django 服务器##MyDBInstanceID##.ap-northeast-2.rds.amazonaws.com将连接到在端口 5432 上运行在同一位置 (localhost) 的 Postgres 数据库。类似地,您自己的计算机将连接到您自己计算机上的 localhost Postgres 数据库。您只需要设置HOST数据库是否在与 Django 服务器不同的计算机上。对于您所描述的那种测试,本地数据库就足够了。

或者,如果您使用的是 Git,您可以将PG_HOST字段添加到与local_settings.py位于同一文件夹中的文件中settings.py,然后将每个位置的相应主机添加到PG_HOST,然后添加local_settings.py到您的.gitignore文件中。然后只需导入PG_HOST您的settings.py并将Host字段设置为 equal PG_HOST。这样,您可以在本地和服务器实例上独立设置数据库主机。例如:

在 AWS EC2 实例上创建 local_settings.py 内容:

PG_HOST = '##MyDBInstanceID##.ap-northeast-2.rds.amazonaws.com'

在本地计算机上使用以下内容创建 local_settings.py:

PG_HOST = '' # Local host

设置.py:

from .local_settings import PG_HOST

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '##Your database name ##',
        'USER': '## Your database user ##',
        'PASSWORD': '## Your database user password ##',
        'HOST': PG_HOST,
        'PORT': '', # Defaults to 5432
    }
}

请记住.gitignorelocal_settings.py ,否则特定位置的设置将被覆盖。

您也可以使用该local_settings.py文件将您的 postgres 用户名和密码排除在 Git 历史记录之外(同样,如果您使用 git 或某些源代码控制)。


推荐阅读