Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2226|回复: 1

[模块] Python 快速教程(Django07):马不停蹄

[复制链接]

7

主题

11

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2018-9-20 15:41:30 | 显示全部楼层 |阅读模式
前面的文章研究了Django最主要的几个方面:数据库,模板,动态生成页面等。但都是使用python manage.py runserver来运行服务器。这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。
这样的持续性服务器可以有很多选择,比如apache, Nginx, lighttpd等。这里将使用最常见的apache服务器。服务器和Django之间通过Python的web服务接口WSGI连接,因此我们同样需要apache下的mod_wsgi模块。
下面的配置和说明,是在Ubuntu 13.10下进行的。在其它系统下将有所差别。


安装首先需要安装apache2和mod_wsgi。在ubuntu下,我们可以使用apt-get安装:
[Python] 纯文本查看 复制代码
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi

mod_wsgi也可以在google code下载,自行编译安装。
在apache的配置文件/etc/apache2/apache2.conf中增加下面的配置:

[Python] 纯文本查看 复制代码
# Django
WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py
WSGIPythonPath /home/vamei/mysite
 
Directory /home/vamei/mysite/mysite>
Files wsgi.py>
  Order deny,allow
  Require all granted
Files>
Directory>


上面的配置中/home/ubuntu/mysite是Django项目所在的位置。而/home/ubuntu/mysite/mysite/wsgi.py是Django项目中z自动创建的文件。
可以看到,利用WSGIScriptAlias,我们实际上将URL /对应了wsgi接口程序。这样,当我们访问根URL时,访问请求会经由WSGI接口,传递给Django项目mysite。

配置好后,重启apache2
[Python] 纯文本查看 复制代码
sudo /etc/init.d/apache2 restart


使用浏览器,可以检查效果:


静态文件Django的主要功能是动态的生成HTTP回复。很多媒体文件是静态存储的,如.js文件,.css文件和图片文件。这些文件变动的频率较小。我们希望静态的提供这些文件,而不是动态的生成。这样既可以减小服务器的负担,也便于在浏览器缓存,提高用户体验。

我们可以在apache2.conf中添加如下配置:
[Python] 纯文本查看 复制代码
Alias /media/ /home/vamei/media/
Alias /static/ /home/vamei/static/
 
Directory /home/vamei/static/>
Order deny,allow
Require all granted
Directory>
 
Directory /home/vamei/media/>
Order deny,allow
Require all granted
Directory>
 
# Django
WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py
WSGIPythonPath /home/vamei/mysite
 
Directory /home/vamei/mysite/mysite/ >
Files wsgi.py>
    Order deny,allow
    Require all granted
Files>
Directory>


这样,/static/和/media/这两个URL的访问将引导向存有静态文件的/home/vamei/static/和/home/vamei/media/,apache将直接向客户提供这两个文件夹中的静态文件。而剩下的URL访问,将导向WSGI接口,由Django动态处理。

在/home/vamei/static/中放入文件revenge.jpg,访问http://localhost/static/revenge:


其它云平台或者服务器的部署是一个大的课题,这里无法深入到所有的细节。幸运的是,在网上有丰富的资料。你可以根据自己的平台和问题,搜索相应的资料。
在Django的debug模式下,我们可以在app文件夹中建立static目录,放入静态文件。Django将自动搜索到其中的静态文件。但这一方法有很大的安全隐患,只适用于开发。

马蹄声疾,电光火石之间,姜戈已经把护园家丁撂倒在地。

总结apache + mod_wsgi
静态文件










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Python 总 群
回复

使用道具 举报

5

主题

10

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2018-9-27 14:35:52 | 显示全部楼层
哥们 ,头像真心不错!
Python 总 群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-8-4 10:51 , Processed in 0.150316 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表