我正在运行 Django,我需要将我的数据库放在我想要连接的 Vagrant 中。 Apache 正在我的本地 PC 上运行。我应该如何在 Vagrant 配置文件和 Django 中的设置文件中设置端口转发,以便我可以连接到 Vagrant 内的数据库?我当前的 Django 数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'db_name', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'db_pass', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
'OPTIONS': {
"init_command": "SET storage_engine=INNODB",
}
},
和 Vagrant 配置:
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 8000, host: 8001
您的网络调用应如下所示:
config.vm.network :forwarded_port, guest: [db port x, e.g. 3306 for MySQL], host: [unused host port y]
在 Django 配置中,将主机留空(默认为 localhost)并指定与上面相同的端口 y。 VirtualBox 会将您的请求转发到 localhost:y 到 [guest]:x。
我以前尝试过这个,但那是很久以前的事了,所以这可能行不通。我正在运行一个安装了 postgres 和 django 的
lucid32
盒子。
对于数据库,您可以只使用数据库名称和安装它的端口。对我来说,安装 vagrant 并没有出现问题,因为我的数据库托管在
127.0.0.1:5432
上,这是我的 Windows 配置。我尝试了一下,它也适用于 Vagrant。
您有不同的数据库和不同的配置,因此这可能不起作用,但值得一试。