我有一台运行 Ubuntu Server 10.04LTS 的虚拟机。我的目的是让这台机器像 VPS 一样工作,这样我就可以学习并为获得 VPS 服务做好准备。
对于我来说,使用 Apache + mod_wsgi 来部署 Django 应用程序似乎是正确的选择。
我有域名(marianofalcon.com.ar)但没有其他东西,没有 DNS。
问题是我对所有部署内容都一无所知。我知道如何配置 mod_wsgi(使用 django.wsgi 文件) 和 apache(创建 VirtualHost)。
缺少了一些东西,但我不知道是什么。我认为我缺乏网络技能,这是个大问题。尝试在虚拟机上托管应用程序增加了一些困难,因为我不知道该使用哪个 IP。
这就是我得到的:
文件放置在:/etc/apache2/sites-available:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.my-domain.com
ServerAlias my-domain.com
Alias /media /path/to/my/project/media
DocumentRoot /path/to/my/project
WSGIScriptAlias / /path/to/your/project/apache/django.wsgi
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
django.wsgi 文件:
import os, sys
wsgi_dir = os.path.abspath(os.path.dirname(__file__))
project_dir = os.path.dirname(wsgi_dir)
sys.path.append(project_dir)
project_settings = os.path.join(project_dir,'settings')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
答案1
是的,如果您在 LAN 中,则需要 DNS 或本地替代它。
不确定您的网络如何(至少在主机和 VM 之间),但让您的 VM 与您的机器位于同一网络上(桥接,而不是 NAT)会更容易。现在您可以使用/etc/hosts
VM 上的文件使其可访问:
127.0.0.1 localhost.localdomain localhost
192.168.xxx.xxx www.my-domain.local www
例如。如果您有公共 IP 并希望从外部访问它(真实设置),请使用您注册的域名,但您需要为其定义至少 2 个 DNS 服务器(在 上http://www.nic.ar
),并让 2 个 DNS 真正解析到您的 IP。有免费的 DNS 服务器,或者如果您已经有 ubuntu 服务器,您可以在其上安装 DNS 服务器,对于单个站点访问来说,这很容易(并且很高兴知道!:) )。
OBS:当您说由于它是虚拟机,您不确定要使用什么 IP 时,回答:无论是否是虚拟机,它都是一个服务器,因此您定义并修复其 IP(主机文件和//etc/network/interfaces
或使用您的 DHCP 为其提供始终相同的 IP),这样您(和网络:))将始终知道如何访问它。