被解放的姜戈07 马不停蹄

原文:被解放的姜戈07 马不停蹄

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 

 

前面的文章研究了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安装:

sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi

 mod_wsgi也可以在google code下载,自行编译安装。

 

在apache的配置文件/etc/apache2/apache2.conf中增加下面的配置: 

# 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

sudo /etc/init.d/apache2 restart

 

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

 

想起逝去的德国人,姜戈心中一痛。

 

静态文件

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

 

我们可以在apache2.conf中添加如下配置:

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

静态文件

 

“你在外面等我,我要跟他们算总帐”,姜戈对爱人说。

时间: 2024-09-11 13:18:33

被解放的姜戈07 马不停蹄的相关文章

被解放的姜戈08 远走高飞

作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系.    之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器推上一个云平台.这里我选择使用阿里云.   看着复仇的火焰燃烧,姜戈露出得意的笑容.   阿里云准备 在阿里云官网(aliyun.com)页面注册阿里云账号.登录后选择云服务器ECS,并选择"创建实例": 选择操作系统Ubuntu 14.04 64位,设置密码.实例开通后,可以在实例记

被解放的姜戈01 初试天涯

原文:被解放的姜戈01 初试天涯  作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Django是Python下的一款网络服务器框架.Python下有许多款不同的框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django.虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将.   向昆汀的致敬,"被解放的姜戈

被解放的姜戈02 庄园疑云

原文:被解放的姜戈02 庄园疑云 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App.这一回,我们要走入糖果庄园.   数据库是一所大庄园,藏着各种宝贝.一个没有数据库的网站,所能提供的功能会非常有限.   为了找到心爱的人,姜戈决定一探这神秘的糖果庄园.   连接数据库 Django为多种数据库后台提供了统一的调用API.根据需求不同,Dja

被解放的姜戈05 黑面管家

原文:被解放的姜戈05 黑面管家 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!    Django提供一个管理数据库的app,即django.contrib.admin.这是Django最方便的功能之一.通过该app,我们可以直接经由web页面,来管理我们的数据库.这一工具,主要是为网站管理人员使用. 这个app通常已经预装好,你可以在mysite/settings.py中的INSTALLED_APPS看到它. "这庄园里的

被解放的姜戈03 所谓伊人

原文:被解放的姜戈03 所谓伊人 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端.这一过程中使用了django.http.HttpResponse(). 在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中.看似方便,却为我们的管理带来困难.想像一个成熟的网站,其显示格式会有许多重复的地方.如果可以把数据和视图格式分离,就可以

被解放的姜戈04 各取所需

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!    我们在庄园疑云中讲到了服务器上的数据.当时我们是用手动的方式,直接在数据库插入数据.我们将允许客户向服务器传递数据. 表格是客户向服务器传数据的经典方式.我们先会看到传统的表格提交,然后了解Django的表格对象.   "我可不做赔本的买卖",庄主对姜戈说.   html表格 HTTP协议以"请求-回复"的方式工作.客户发送请求时,可以在请求中

被解放的姜戈06 假作真时

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   之前了解了: 创建Django项目 数据库 模板 表格提交 admin管理页面 上面的功能模块允许我们做出一个具有互动性的站点,但无法验证用户的身份.我们这次了解用户验证部分.通过用户验证,我们可以根据用户的身份,提供不同的服务.   一个Web应用的用户验证是它的基本组成部分.我们在使用一个应用时,总是从"登录"开始,到"登出"结束.另一方面,

Python快速教程

原文:Python快速教程 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库,拓展库,乱花渐欲迷人眼.一直希望写一个快速的.容易上手的Python教程.目标是做到言语简洁,循序渐进,让没有背景的读者也可以从基础开始学习.我在每一篇中专注于一个小的概念,希望在闲暇时可以很快读完. 小提醒 教程将专注于Python基础,语法基

都是逆袭,都是秒杀,这差别咋这么大呢?

<箭在弦上>中,抗日女兵徐二航被日本兵强奸后突然暴走,秒杀敌人. <被解放的姜戈>中,黑奴姜戈从被奴隶主虐待到逆袭的过程充满各种血腥戏码. 逆袭!秒杀!这个春天的影视剧都开挂了?近日,一部名为<箭在弦上>的抗日剧,以"抗日女兵遭轮奸后突然小宇宙爆发秒杀众鬼子"的"神剧情"走红网络,无论剧情.表演.台词无一不被纷纷吐槽是"神逻辑"."无厘头".抗日剧种种逆天到近似科幻的桥段,近来屡屡受到网友和