在Apache + Ubuntu上的特殊端口上部署Django Server

时间:2014-12-21 19:41:04

标签: python django apache ubuntu

我为大学做了一个简单的Django项目。

现在我想在我自己的托管虚拟服务器上显示它,例如www.myserver.com:8001

我正在使用带有apache2的Ubuntu 14.04。

/etc/apache/site-available我有一个名为uniproject.conf

的骗局文件
<VirtualHost *:8001>
        DocumentRoot "/var/www/uniproject/"
        Servername www.myserver.com:8001
        Alias /static /var/www/uniproject/static/
        WSGIScriptAlias / /var/www/uniproject/uniproject.wsgi
        <Directory /var/www/uniproject/>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

/etc/apache2/ports.conf我写了Listen 8001

/var/www/uniproject/uniproject.wsgi

import os
import sys
sys.path = ['/var/www/uniproject'] + sys.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'uniproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

a2ensite uniproject.confservice apache2 restart之后我正在呼叫www.myserver.com:8001 来了

Not Found
The requested URL / was not found on this server.

我的目标是,稍后在我的网站上运行三到五个django应用/服务器就像 www.myserver.com:8001www.myserver.com:8002www.myserver.com:8003等... 但我做错了什么?

我正在使用没有virtualenv的Django 1.7.1

Apache Log说:

  

目标WSGI脚本未找到或无法统计:/ var / www / uniproject,referer:http://www.myserver.com:8001/

/var/www/uniproject中的文件结构是:

  • db3.sqlite
  • uniproject
  • uniprojectBackend
  • uniprojectwsgi
  • manage.py
  • 静态
  • 模板

创建新项目时,/var/www/uniproject/uniproject是默认的django文件(setting.pyurls.pywsgi.py__init__.py

drwxr-xr-x  7 root root  4096 Dec 21 21:50 uniproject

1 个答案:

答案 0 :(得分:0)

好的,我是如何解决我的问题的。 我现在正在禁用端口内容并改为使用子域。

HOWTO:“在Ubuntu 14.04上运行的Apache2上部署各种数量的Django应用程序第一:

cd /etc/apache2/site-available
sudo nano someproject.conf
someproject.conf中的

<VirtualHost *:80>
ServerName someproject.mysite.com
ServerAlias www.someproject.myssite.com
DocumentRoot "/var/www/someproject/"
Alias /static /var/www/someproject/static/
WSGIScriptAlias / /var/www/someproject/wsgi.py
<Directory /var/www/someproject/>
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

之后的运行:

sudo a2ensite someproject.conf
sudo service apache2 restart

第二

cd /var/www/
django-admin.py startproject someproject
cd someproject
sudo nano wsgi.py

在wsgi.py中

import os
import sys

path = '/var/www/someproject'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'someproject.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

现在访问:someproject.mysite.com

这是用django 1.7.1完成的 确保还安装了所有python模块(例如lxml,feed解析器等)

有时在settings.py

中会有一个错误(发生在我身上)

在settings.py中删除或评论:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    #'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

在django项目中每次编辑后运行

sudo service apache2 reload

希望这有助于任何人。

通过这种方法,我在我的VM上运行了三个django服务器/应用程序。