文档章节

Linux配置实践:apache+wsgi+虚拟主机配置

Nob
 Nob
发布于 2014/06/20 16:30
字数 851
阅读 359
收藏 6


<安装mod_wsgi>

使用centos光盘中mod_wsgi.rpm包

    LoadModule wsgi_module modules/mod_wsgi.so

编译完成后引入配置文件:

LoadModule wsgi_module modules/mod_wsgi.so


最后的虚拟主机配置:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier 
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
    ServerAdmin centos@nobsu.net
    DocumentRoot /var/www/html
    ServerName centos.nobsu.net
    ErrorLog logs/centos.nobsu.net-error_log
    CustomLog logs/centos.nobsu.net-access_log common
</VirtualHost>
<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.75.1
    ProxyPassReverse / http://192.168.75.1/
    ServerAdmin front@nobsu.net
    ServerName front.nobsu.net
</VirtualHost>

<VirtualHost *:80>
        ServerName py.nobsu.net
        ServerAlias py.nobsu.net
        DocumentRoot "/var/www/mysite"
        WSGIScriptAlias /test "/var/www/mysite/wsgi/django.wsgi"
        Alias /static "/var/www/static/"
        <Directory "/var/www/static/">
           Order deny,allow
           Allow from all
        </Directory>
        <Directory "/var/www/">
           Order Deny,Allow
           Allow from all
        </Directory>
</VirtualHost>


apache+Django+mod_wsgi(CentOS6.3)

1.安装apache
1.首先卸载环境自带的httpd
    # rpm -e httpd --nodeps

2.安装gcc
    # yum install -y *gcc*(此过程在虚拟机的环境为CentOS上需要大约40分钟)

3.解压httpd并进行安装(/root/tools/)
    # cd /root/tools
    # tar zxvf httpd-2.2.15.tar.gz
    # cd httpd-2.2.15
    # ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so(大约两分钟,选项的作用主要是允许动态加载模块,以后我们要加载mod_wsgi)
    # make(大约三分钟)
    # make install

4.启动apache服务
    # /usr/local/apache2/bin/apachectl start

5.测试
    # firefox localhost
当看到"It works"代表apache配置成功

2.安装mod_wsgi
1.解压,安装
    # tar zxvf mod_wsgi-3.3.tar.gz -C /usr/local/src/
    # cd /usr/local/src/mod_wsgi-3.3/
    # ./configure --with-apxs=/usr/local/apache2/bin/apxs(apache动态添加的一个模块)
                       --with-python=/usr/local/bin/python2.7(指定python的路径)
                       --with-mutex-dir=/var/run/mod_wsgi(最大缓冲值的目录)
    # make 在这一步如果出现make: *** [mod_wsgi.la]错误则需要重新编译安装python2.7并加上--enable-shared参数.
    # make install

编译过程遇到"error while loading shared libraries: libpython2.7.so.1.0:cannot open shared object file: No such file or directory"错误解决:

原因
    在系统的lib路径中找不到这个共享库. 
    如果编译时加上了--enable-shared,才会编译这个共享库,默认的位置是python可执行程序所在目录的lib目录下,如/usr/local/python27

解决方法
    1.可以使用如下方式编译Python解决这个问题
          # ./configure --enable-shared --prefix=/usr/local/python27
          # make && make install

    2.
        # cp /usr/local/python27/lib/libpython2.7.so.1.0 /usr/local/lib
        # cd /usr/local/lib
        # ln -s libpython2.7.so.1.0 libpython2.7.so

    3.
        # whereis libpython2.7.so.1.0
        libpython2.7.so.1:/usr/local/lib/libpython2.7.so.1.0

    4.如果whereis没有结果,或者仍然没有解决问题
        # cat /etc/ld.so.conf  在此文件中加入/usr/local/lib
        include ld.so.conf.d/*.conf
        /usr/local/lib 
        # /sbin/ldconfig
        # /sbin/ldconfig -v|grep libpython2.7*
    

    # make && make install

2.配置Apache
    在Apache配置文件httpd.conf中,增加一行:
    LoadModule wsgi_module modules/mod_wsgi.so
    AddType text/html .py

3.修改Virtual Host配置
    Apache 可以配置很多个 Named-based Virtual Hosts ,可以在一个服务器上部署多个Web Sites。
    在Apache配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf增加:
    <VirtualHost *:80>
        ServerName unicorn.test.com
        ServerAlias unicorn.test.cn
        DocumentRoot "/var/www/mysite"
        WSGIScriptAlias /test "/var/www/mysite/wsgi/django.wsgi"
        Alias /static "/var/www/static/"
        <Directory "/var/www/static/">
           Order Deny,Allow
           Allow from all 
        </Directory>
        <Directory "/var/www/">
           Order Deny,Allow
           Allow from all 
        </Directory>
    </VirtualHost>

4.创建测试页面
1.创建django工程:
    django-admin.py startproject mysite

2.创建django.wsgi文件:
    在mysite文件夹下创建文件夹wsgi;
    在wsgi文件夹下面创建django.wsgi文件,其内容为:
        import os
        import sys

        sys.stdout = sys.stderr

        from os.path import abspath, dirname, join
        from site import addsitedir

        from django.core.handlers.wsgi import WSGIHandler

        sys.path.insert(0, abspath(join(dirname(__file__), "../")))
        sys.path.insert(0, abspath(join(dirname(__file__), "../../")))

        os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" #your settings module

        application = WSGIHandler()

重启apache访问localhost/test看到django的It worked成功.


© 著作权归作者所有

共有 人打赏支持
Nob

Nob

粉丝 16
博文 86
码字总数 58473
作品 0
东城
个人站长
加载中

评论(1)

tube
tube
thx 找了好几天
Apache 虚拟主机 VirtualHost 配置

虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名...

夏小八
2012/03/12
0
0
Nginx 虚拟主机 VirtualHost 配置

Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高. 我在《Apache 虚拟主机...

simpower
2014/12/25
0
0
Linux配置WWW服务器全攻略

Linux操作系统近几年有了蓬勃的发展,在整个世界范围内得到了越来越多公司和团体的支持,尤其是最近IBM公司的鼎力支持,更是使Linux服务器如虎添翼,更上一层楼。而在国内,Linux的应用也是方...

五味格子
2011/08/12
0
0
大数据教程(1.6):linux网络配置及CRT远程连接

上一章节博主为大家详细介绍vmware虚拟网络的配置方式,本节将带领大家一起来实战NAT虚拟网络模式下的配置并完成CRT远程连接; 首先,贴出linux系统配置网络的文件 一:网络配置 1.首先,设...

em_aaron
07/03
0
0
Nginx系列-3.配置Nginx虚拟主机

Nginx系列-3.配置Nginx虚拟主机 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日...

ngle
06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
32分钟前
1
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
44分钟前
1
0
DbForge Schema Compare for MySQL入门教程:如何连接到数据库

【dbForge Schema Compare for MySQL下载】 要创建连接: 1. 在“Connection” 工具栏上单击“New Connection”按钮 。 2. 在“Host” 框中输入主机名。 3. 在“Port” 框中输入端口信息。默...

Miss_Hello_World
47分钟前
1
0
公众号关联微信小程序

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
今天
1
0
并发编程基础之JMM学习摘要

一、JMM定义 Java内存模型即Java Memory Model(JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见(内存可见性),从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程...

狠一点
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部