使用Apache服务器wsgi方式部署Django应用

How to use Django with Apache and mod_wsgi

原文地址:  https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/

Deploying Django with Apache and mod_wsgi is the recommended way to get Django into production.

mod_wsgi is an Apache module which can be used to host any Python application which supports thePython WSGI interface, including Django. Django will work with any version of Apache which supports mod_wsgi.

The official mod_wsgi documentation is fantastic; it’s your source for all the details about how to use mod_wsgi. You’ll probably want to start with theinstallation and configuration documentation.

Basic configuration

Once you’ve got mod_wsgi installed and activated, edit your httpd.conf file and add:

在安装了mod_wsgi模块之后,修改Apache配置文件所在目录下的http.conf文件,添加:

WSGIScriptAlias / /path/to/mysite/apache/django.wsgi

The first bit above is the url you want to be serving your application at (/ indicates the root url), and the second is the location of a "WSGI file" -- see below -- on your system, usually inside of your project. This tells Apache to serve any request below the given URL using the WSGI application defined by that file.

前面你想提供接口的应用url(/显示根url),后面是WSGI脚本的位置(通常在自己创建的项目中),这告诉Apache服务器应该为所给出的URL路径下的所有请求使用定义的WSGI接口。

Next we'll need to actually create this WSGI application, so create the file mentioned in the second part of WSGIScriptAlias and add:

下面我们需要实际创建WSGI应用,要先创建上文中WSGI脚本引用中提到的后半部分所指示的文件并添加:

import os
import sys

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

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

If your project is not on your PYTHONPATH by default you can add:

如果你的工程不在默认的PYTHONPATH下,应该添加:

path = '/path/to/mysite'
if path not in sys.path:
    sys.path.append(path)
just below the importsys line to place your project on the path. Remember to replace 'mysite.settings' with your correct settings file, and '/path/to/mysite' with your own project's location.

在导入语句的后面写入自己创建的工程的路径。记得用正确的settings文件替文中的'mysite.settings',path的路径也要指示到工程的正确位置。

Serving files

Django doesn't serve files itself; it leaves that job to whichever Web server you choose.

We recommend using a separate Web server -- i.e., one that's not also running Django -- for serving media. Here are some good choices:

If, however, you have no option but to serve media files on the same Apache VirtualHost as Django, you can set up Apache to serve some URLs as static media, and others using the mod_wsgi interface to Django.

This example sets up Django at the site root, but explicitly serves robots.txt, favicon.ico, any CSS file, and anything in the/static/ and/media/ URL space as a static file. All other URLs will be served using mod_wsgi:

下面这个例子设置Django站点在根目录,但是只为一些静态文件提供服务,其它ULR路径下的请求都通过mod_wsgi方式:

Alias /robots.txt /usr/local/wsgi/static/robots.txt
Alias /favicon.ico /usr/local/wsgi/static/favicon.ico

AliasMatch ^/([^/]*\.css) /usr/local/wsgi/static/styles/$1

Alias /media/ /usr/local/wsgi/media/
Alias /static/ /usr/local/wsgi/static/

<Directory /usr/local/wsgi/static>
Order deny,allow
Allow from all
</Directory>

<Directory /usr/local/wsgi/media>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / /usr/local/wsgi/scripts/django.wsgi

<Directory /usr/local/wsgi/scripts>
Order allow,deny
Allow from all
</Directory>

Serving the admin files

Note that the Django development server automagically serves the static files of the admin app, but this is not the case when you use any other server arrangement. You're responsible for setting up Apache, or whichever media server you're using, to serve the admin files.

The admin files live in (django/contrib/admin/media/admin) of the Django distribution.

We strongly recommend using django.contrib.staticfiles to handle the admin files (this means using thecollectstatic management command to collect the static files inSTATIC_ROOT, and then configuring your webserver to serveSTATIC_ROOT atSTATIC_URL), but here are two other approaches:

  1. Create a symbolic link to the admin static files from within your document root.
  2. Or, copy the admin static files so that they live within your Apache document root.

Details

For more details, see the mod_wsgi documentation on Django integration, which explains the above in more detail, and walks through all the various options you've got when deploying under mod_wsgi.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值