zoukankan      html  css  js  c++  java
  • ubuntu下安装apache2.2+mod_wsgi+django(一)

    ubuntu下安装apache2.2+mod_wsgi+django(一) - huangxiansheng1980的专栏 - 博客频道 - CSDN.NET


    ubuntu下安装apache2.2+mod_wsgi+django(一)


    分类:
    Python
    Web Server
    Linux系统学习


    67人阅读
    评论(0)
    收藏
    举报

    为了让apache或者nginx或者lighthttpd支持python可以用mod_python的方式,但是由于mod_python这个开源的项目似乎已死,官网地址:

    www.modpython.org/



    这个项目的从2009后再也没有去继续了,python的版本目前已经到了3.2,但是mod_python最后一个版本

    mod_python-3.3.1.tgz                  2009-10-03 20:45 

    却只支持到了python 2.5, 所以如果你一定要用mod_python,那么你安装只能使用python 2.5以前的版本了。

    我想使用最新的python的版本,所以不得不放弃mod_python这种方式了。

    还有另外一种方式,就是我们要介绍的mod_wsgi+django的方式。

    1. 安装apache2

    使用命令安装或者源代码安装都可以,这里我采用的是命令安装方式:

    sudo apt-get install apache

    目前最新的版本是 v2.2,如果你要安装其他版本请使用apache2官方提供的安装包。

    安装过程中,同时apache2会安装一个服务apache2供我们启动,停止和重启apache服务。

    启动:

    sudo service apache2 start  或者

    sudo apachectl start



    停止:

    sudo service apache2 stop 或者

    sudo apachectl stop



    重启:

    sudo service spache2 restart 或者

    sudo apachectl restart

    注意sudo不能少,否则权限不够,会失败。

    安装完后,启动服务,测试一下apache服务器,在 浏览器中输入 http://localhost, 回车看看效果,如果你看到如下的东西,说明apache安装成功:

    1. It works!  
    2.   
    3. This is the default web page for this server.  
    4.   
    5. The web server software is running but no content has been added, yet.  



    这里要说一下apache在linux的配置文件。配置文件的名字和位置和windows下面不一样,windows下面apache安装后全部的文件是在一个目录下面,包括可执行程序,对应的动态库,以及配置文件,但是linux下面却是分开的。可执行程序是

    /usr/sbin/apache2

    配置文件是在

    /etc/apache2

    网站(web)文件是在:

    /var/www

    这个当然你可以配置,修改

    /etc/apache2/sites-available/default

    这个文件的下面的字段

    DocumentRoot /var/www

    比如你改到/var/temp

    那么就把这行改成:

    DocumentRoot /var/temp

    配置文件并不是在httpd.conf里面,而是apache2.conf,而这里面并没有配置所有的东西,如端口是在ports.conf这个文件里面,而网站的根目录是在上面的提到的

    /etc/apache2/sites-available/default

    这个文件中。 虽然也有httpd.conf这个文件,但是httpd.conf里面是空的,其实你可以在这里面加一些配置,因为apache2.conf里面会把httpd.conf加到它的文件里面。

    2. 安装mod_wsgi

    安装mod_wsgi有3种方式,源码安装和二进制文件安装和命令安装。

    a. 命令安装:

    目前unbuntu提供了2个源,一个针对2.x python,另外一个针对3.x python:

    libapache2-mod-wsgi - Python WSGI adapter module for Apache

    libapache2-mod-wsgi-py3 - Python 3 WSGI adapter module for Apache

    b. 二进制文件安装:

    从下列地址下载二进制文件,然后把他们copy到对应的文件夹即可:

    http://ftp.cn.debian.org/debian/pool/main/m/mod-wsgi/libapache2-mod-wsgi_3.3-4_i386.deb

    c. 源码安装:

    通过下面的链接下载源码:

    http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-3.3.tar.gz

    解压进入该目录,使用configure生成Makefile,

    1. ./configure  



    发现有错误:

    apxs: command not found

    上网google一堆,发现有人说缺少httpd.devel等等之类的,发现都解决不了问题,后来在mod_wsgi的官网找到了答案:

    http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

    原来是要安装apache2-dev,使用下列命令安装:

    1. sudo apt-get install apache2-dev  



    还有一个依赖库就是python-dev

    1. sudo apt-get install python-dev  



    现在,再来一次configure,发现成功的生成了makefile

    接下来就是

    1. make  
    2.   
    3. make install  



    如果没有什么错误这样我们就成功了安装了mod_wsgi

    还有一个方法就是直接看看下面的文件存不存在:

    /usr/lib/apache2/modules/mod_wsgi.so

    3. 配置apache来加载mod_wsgi

    如果你的apache是在运行状态,先停止它

    1. sudo service apache2 stop  

    然后配置apache, 在/etc/apache/httpd.conf加入下面一行:

    LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so 

    注意上面的/usr/lib/apache2/modules/mod_wsgi.so是我的安装路径,如果你的是安装其他的目录,应做出相应的调整,怎么查看这个so安装在什么位置,就用find命令:

    1. sudo find / -name mod_wsgi.so  

    重启apache

    1. sudo service apache2 start  

    如果系统找不到你的mod_wsgi.so,apache服务就会启动失败。


    4. 安装django

    先安装必要的工具

    1. sudo apt-get install python-setuptools  
    2. sudo apt-get install python-pip  



    安装 Django

    1. sudo pip install django  

    django安装在python路径下面的子文件夹下,如下:

    /usr/local/lib/python2.7/dist-packages/django

    你可以使用下面的命令来查看是否安装成功:

    1. sudo find / -name django  

    如果看到上面的输出,就表示安装成功。

    5. 测试

    为了测试的方便,我们新建一个虚拟主机:

    1. sudo vim /etc/hosts  

    通过上面的命令开发hosts这个文件,添加如下行:

    192.168.0.107  wsgi.testserver

    上面的IP换成你自己的。然后保存退出。

    因为前面我们已经提到,我们的网站是在

    /var/www目录下面,所以我们cd到这个目录,创建一个工程目录,创建一个工程文件

    1. cd /var/www  
    2. sudo mkdir wsgi  
    3. cd wsgi  
    4. sudo vim main.wsgi  



    在main.wsgi输入下列代码:

    1. def application(environ, start_response):  
    2.     status = '200 OK'  
    3.     output = 'Hello World!'  
    4.    
    5.     response_headers = [('Content-type', 'text/plain'),  
    6.                         ('Content-Length', str(len(output)))]  
    7.     start_response(status, response_headers)  
    8.    
    9.     return [output]  





     

    让后保存推出。

    这里少许解释一下上面的都做了些什么。

    为了让目录结构比较清晰,我们创建自己的目录wsgi,而不是直接www的根目录下,让后创建一个python文件,这个文件用来生成一个hello world的网页,并且告诉web服务器-这里就是apache,处理状态是成功-200,就这么简单。

    接下来,让apache来加载我们自己的工程网站,去apache的配置目录/etc/apache/sites-available, 新建一个我们网站的配置文件。

    1. cd /etc/apache/sites-available  
    2. sudo vim wsgi  

    让后在新创建的wsgi文件中输入如下内容:

    1. <VirtualHost *:80>  
    2.    
    3.     ServerName wsgi.testserver  
    4.     DocumentRoot /var/www/wsgi  
    5.    
    6.     <Directory /var/www/wsgi>  
    7.         Order allow,deny  
    8.         Allow from all  
    9.     </Directory>  
    10.    
    11.     WSGIScriptAlias / /var/www/wsgi/main.wsgi  
    12.    
    13. </VirtualHost>  

     
     

    激活我们的网站:

    1. sudo a2ensite wsgi  

    加载我们的网站:

    1. sudo service apache2 reload  

    这时候,你打开浏览器,输入http://wsgi.testserver, 你就可以看到hello world。 如果你看到了,说明一切ok了。如果没有看到可以留言给我,大家一起研究。

    这个东西比较麻烦的,挺耗时间的,花了我大半天的时间,中间出现了一个 server error 500, 最后一个一个排除,发现是main.wsgi文件有语法错误导致。因为我初次搞web server的东西(之前是c++在做桌面和网络应用),所以不知道是什么原因错误,花了不少时间。 后来想到,wsgi既然是一个python文件,那么看看这个文件用python执行会是什么效果,就用

    python main.wsgi

    结果告诉我,有语法错误,修复这个错误后,浏览器中输入http://wsgi.testserver,看到了想要的结果。



    这里说明一点,上面把python脚本保存成后缀wsgi,但是这不是规定,你也可以定义成其他,如常用的后缀名py,或者干脆什么后缀名都不用,都没有问题。

    还有一点,上面我们虽然安装了django,但是我们根本没有用到这个框架,因为我觉得先用wsgi+python自己写一些东西,然后再使用django来创建的自己的web应用,能更好的理解django帮我做了哪些事,如何更好的使用它。这好比先熟练的使用win32的编程,然后再使用MFC,你就能更好的理解MFC,更好的使用MFC。

    将来我会在其他的博文中接着续写django的学习和使用。



     

    参看文档:

    https://docs.djangoproject.com/en/1.2/howto/deployment/modwsgi/

    http://blog.stannard.net.au/2010/12/11/installing-django-with-apache-and-mod_wsgi-on-ubuntu-10-04/

  • 相关阅读:
    asp.net mvc 国际化(2) 解决问题
    asp.net mvc 国际化(1) 国际化的基础
    Silverlight自学笔记布局基础
    ASP.NET MVC form验证
    Expression Tree 入门
    JQuery 思维导图
    HashMap的Put方法(二)
    HashMap的构造函数(三)
    HashMap的数据结构(一)
    HashMap之扩容resize(四)
  • 原文地址:https://www.cnblogs.com/lexus/p/2365896.html
Copyright © 2011-2022 走看看