文档章节

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

Nob
 Nob
发布于 2014/06/20 16:30
字数 851
阅读 370
收藏 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

粉丝 18
博文 86
码字总数 58473
作品 0
东城
个人站长
私信 提问
加载中

评论(1)

tube
tube
thx 找了好几天
在Linux系统下实现FTP虚拟主机的简单方法

【赛迪网-IT技术报道】在Linux下,我们可以用wu-ftp、tftp-server、proftpd、gssftp、vsftp等FTP服务程序来构建FTP服务器。由于wu-ftp(Washington University Ftp)广泛使用在各种Linux发行...

zt371
2009/05/23
236
0
Apache 虚拟主机 VirtualHost 配置

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

夏小八
2012/03/12
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
centos6.4下apache配置支持ssl的多台虚拟主机

一:apache虚拟主机简介 linux主机上安装了apache这个web服务器,它只服务bbs.zijian.com这个论坛,所以只有一个网站根目录,这时候就没必要用到虚拟主机,这个主机都时bbs.zijian.com的,它...

fighting-cluber
2014/03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

1个开发如何撑起一个过亿用户的小程序

本文由云+社区发表 2018年12月,腾讯相册累计用户量突破1亿,月活1200万,阿拉丁指数排行 Top 30,已经成为小程序生态的重量级玩家。 三个多月来,腾讯相册围绕【在微信分享相册照片】这一核...

腾讯云加社区
6分钟前
0
0
golang ssh包使用方法介绍

在使用gexpect包发现很多问题之外,这里又尝试使用ssh user@127.0.0.1的思路进行用户切换。这里记录下具体的使用方法,遇到的ssh: must specify HostKeyCallback 问题的解法方法及最终使用过...

linuxprobe16
11分钟前
0
0
layer

Layui Layer在open弹出层中异步加载数据和form表单radio、checkbox、select不渲染,不可点击的解决办法 layer 实现弹窗提交信息 function confirmUpdateAward(i) { layer.open({ ...

mickelfeng
今天
0
0
Spring boot中如何获取profiles环境

  实现ApplicationContextAware @Componentpublic class QiNiuPropertiesConfig implements ApplicationContextAware { /// 获取当前环境public String getActiveProfile() { ret......

writeademo
今天
3
0
机器学习中的End-to-End到底是怎么回事?

简单讲就是,Input--->系统(这里指神经网络)--->Output(直接给出输入,NN神经网络就给出结果,一气喝成!!!) 借用一段对话:(http://dy.163.com/v2/article/detail/C3J6F2NJ0511AQHO....

火力全開
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部