【问题标题】:Django project on 80 port?80端口上的Django项目?
【发布时间】:2013-03-19 08:26:17
【问题描述】:

我开发了一个 Django 项目并将其上传到云 VΜ。目前我可以通过8080端口访问它。

python manage.py runserver 0.0.0.0:8080

如果我输入没有 8080 端口的 url,它会显示“它可以工作”页面。如何将我的 Django 项目设置为默认在 80 端口上运行?

我使用的是 Ubuntu 12.04 服务器

【问题讨论】:

  • 你有root权限吗?较小的端口只能由 root 打开,并且您必须确保端口 80 上没有其他东西在运行

标签: python django ubuntu-server


【解决方案1】:

作为docs sayrunserver 并不意味着作为部署服务器。它还提到您可能无法在端口 80 上启动它,除非您以 root 身份运行它。

【讨论】:

【解决方案2】:

这是您需要放入 /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 一样,只是它可以是多进程和多线程的。

【讨论】:

    【解决方案3】:

    在虚拟环境中的终端中,运行:

    sudo ./manage.py runserver 80
    

    您将被要求输入密码,它将在端口 80 上运行服务器。

    【讨论】:

    • ImportError: 无法导入 Django。您确定它已安装并在您的 PYTHONPATH 环境变量中可用吗?您忘记激活虚拟环境了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多