已经开发了一个Django项目并将其上传到云VΜ。目前我可以通过8080端口访问它。
python manage.py runserver 0.0.0.0:8080
如果我输入没有8080端口的网址,则显示“工作正常”页面。如何将我的Django项目设置为默认在80端口上运行?
我正在使用Ubuntu 12.04服务器
答案 0 :(得分:11)
作为docs say,runserver
并不是指部署服务器。它还提到你可能无法在端口80上启动它,除非你以root身份运行它。
答案 1 :(得分:3)
这是您需要在/ etc / apache2 / sites-enabled中放入的文件类型,您需要调整其中的路径。您还需要加载mod_wsgi,您可以通过apt-get加载。
<VirtualHost 192.168.1.14:80>
ServerAdmin youremail@whatever.com
ServerName www.whatever.com
ServerAlias whatever.com
Alias /robots.txt /home/dimitris/Python/mysite/site_media/robots.txt
Alias /favicon.ico /home/dimitris/Python/mysite/site_media/favicon.png
Alias /static/ /home/dimitris/Python/mysite/site_media/static
WSGIDaemonProcess mysite user=dimitris processes=1 threads=5
WSGIProcessGroup mysite
WSGIScriptAlias / /home/dimitris/Python/mysite/deploy/mysqite_wsgi.py
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/mysite.error.log
CustomLog ${APACHE_LOG_DIR}/mysite.access.log combined
ServerSignature Off
</VirtualHost>
大多数假设你在virtualenv中运行,这意味着你需要一个wsgi文件来运行。上面的文件设置apache来运行你看起来像这样的“wsgi”文件:
import os
from os.path import abspath, dirname, join
import sys
with open("/tmp/mysite.sys.path", "w") as f:
for i in sys.path:
f.write(i+"\n")
#redirect sys.stdout to sys.stderr for libraries that use
#print statements for optional import exceptions.
sys.stdout = sys.stderr
sys.path.insert(0, abspath(join(dirname(__file__), "../../")))
sys.path.insert(0, abspath(join(dirname(__file__), "../../lib/python2.7/site-packages/")))
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
mod_wsgi,然后打开这个文件并执行它。 application是等待来自webserver的请求的部分,其余部分就像runserver一样,除了它可以是多进程和多线程的。
答案 2 :(得分:0)
在虚拟环境中的终端中,运行:
sudo ./manage.py runserver 80
将要求您输入密码,它将在端口80上运行服务器。