CentOs下Apache+Python+Django+mod_wsgi环境搭建 libpython2.7.so.1.0 安装

1.      安装环境:

 

CentOs版本:   CentOs5.7

Python版本:   Python2.7

Apache版本:   Httpd2.2

Django版本: Django1.1

Mod_wsgi版本:    Mod_wsgi-3.2-1.el5.x86_64.rpm

 

 

2.      软件安装:

2.1      安装Apache:

一般服务器系统会自带Apache,如果没有可以使用yum安装一下:

 

 

 

yum –y install httpd(httpd-2.2.3-53.el5.centos.1.x86_64.rpm)

 

 

2.2      安装Python2.7:

一般linux系统会自带Python,一般是2.4版本的,我们需要重新安装,这里注意,不要使用yum安装,而要用源码编译的方法安装,不然下面在配置之后会出错。

 

python3.7 需要在centos7以上才能安装,因为openssl问题【需要yum install openssl openssl-devel -y ; yum install libffi-devel】

 

最好再执行下:

yum groupinstall "Development Tools"
   #sudo yum install openssl openssl-devel pyOpenSSL
   sudo yum install python python-devel libevent libevent-devel

yum -y install readline-devel
yum -y install patch

yum install sqlite-devel

 

 

tar -xvf Python-2.7.tar.bz2
  cd Python-2.7

  make clean
  ./configure  --enable-shared  --prefix=/usr/local/python2.7.10        这里一定要注意,解压完之后要设置enable-shared,不然的话后面的wsgi编译不过

  

 

make

 make test [可选,比较耗时间]

make install   特别注意,如果这里是重复安装,比如忘记装某个系统库,然后重新make install,要重新建立软连接,因为系统不会自动覆盖原来一模一样版本的python

注意在cento7.1中,默认版本为2.7.5,这个时候如果想升级到2.7.9,那么--prefix=/usr/local/python2.7.10 表示区分

在/usr/bin中有python、python2、python2.4三个文件依次指向后者,我们将python备份(sudo mv python python.bak),然后创建python2.7的软链接(sudo ln -s /usr/local/python2.7.10/bin/python2.7 /usr/bin/python)。这样默认的python版本就替换为python2.7.10了。

 

一般安装到的路径是: /usr/local/lib/python2.7

安装好之后可以执行:# python   查看python是否安装成功,这里可能会遇到错误:

 

 

错误:

 

/usr/local/lib/python2.7/config/libpython2.7.a:  could not read symbols: Bad value
  collect2: ld returned 1 exit status
  apxs:Error: Command failed with rc=65536

 

 

 

这是因为安装python的时候,没有   ./configure  --enable-shared  --prefix=/usr/local/python2.7

 

 

 

加上后重新编译,然后运行python,

 

 

 

遇到错误:

 

python: error while loading shared  libraries: libpython2.7.so.1.0: 
  cannot open shared object file: No such file or

   

解决方案: 

新建下面文件
  vim /etc/ld.so.conf.d/python2.7.conf
  加入内容:


  /usr/local/lib  

注意这个lib指的是python的lib,如果安装没有指定,有的是加入

 /usr/local/python2.7.10/lib

二者选其一即可

  保存退出后运行:
  ldconfig

  

再次执行 python,问题成功解决。

 

 

2.3      安装Django:

Django的安装比较简单,和windows下一样

 

tar xzvf  Django-1.1.tar.gz 

cd  Django-1.1

sudo python  setup.py install

   

 

安装完之后,执行命令:

 

# python

>>>import django

>>>django.VERSION

 

可以看到Django的版本号,则安装成功。

 

2.4      安装wsgi

下载wsgi模块,注意要下载linux版本的

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

 

安装 mod_wsgi 之前先安装apache的apxs扩展:

 

 

yum install httpd-devel

  

这个时候有可能发现yum命令用不了,提示:No module named yum

原因是yum命令依赖python2.4,现在用了2.7之后,yum命令就用不了了,解决方法如下:

vim /usr/bin/yum

将  #!/usr/bin/python 修改为 #!/usr/bin/python2.4

 

 

安装完httpd_devel之后,开始安装mod_wsgi:

 不要在virtualenv里面编译

./configure --with-python=/usr/local/bin/python2.7

make

make install 

安装mod_wsgi的时候,建议不要使用yum安装,因为用yum安装很可能无法找到正确的python版本和apxs模块,或者本来没安装apxs模块,用yum安装wsgi也可以成功,但实际运行却会发生很多奇怪的错误,所以建议还是源码编译安装。

 

 

3          配置

3.1    配置apache:

Apache的配置文件在: /etc/httpd/conf/httpd.conf

 

 

添加:

LoadModule  wsgi_module modules/mod_wsgi.so

 

注意:LoadModule wsgi_module modules/mod_wsgi.so要跟所有LoadModule 配置放到一起,如果加到最后无法找到这个模块。

这个非常重要,哥哥就是吃这个亏吃大了,调试了一个下午,没结果,各种蛋疼啊。

 

然后在配置文件中,添加:

 

 

 

NameVirtualHost  *:8080

Listen  192.168.145.139:8080 

<VirtualHost  *:8080>

 ServerName  www.abc.com 

WSGIScriptAlias  / /var/www/html/LTFS_VLA/setting.wsgi

 DocumentRoot  /var/www/html/LTFS_VLA 

<Directory />

Options FollowSymLinks

AllowOverride

Order allow,deny

Allow from all

</Directory>

 

<Directory /var/www/html/LTFS_VLA/setting.wsgi>

AllowOverride None

Order Allow,Deny

Allow from all

<Files setting.wsgi>

Allow from all

</Files>

</Directory>

 

Alias /ltfs "/var/www/html/LTFS_VLA" 

<Directory "/var/www/html/LTFS_VLA">

Options FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

 

Alias /admin_media  "/usr/local/lib/python2.7/site-pacages/django/conftrib/admin/media" 

 <Directory "/usr/local/lib/python2.7/site-pacages/django/conftrib/admin/media">

Order allow,deny

Options Indexes

Allow from all

IndexOptions FancyIndexing

</Directory>

 

</VirtualHost>

 

配置中的路径和IP端口等,根据实际需要自行更改。

 

3.2   配置wsgi:

根据上面的配置,在/var/www/html/LTFS_VLA/  目录下,创建setting.wsgi文件,内容如下:

 

 

import os

import sys

sys.stdout=sys.stderr

from os.path  import abspath,dirname,join

from  django.core.handlers.wsgi import WSGIHandler

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

os.environ["DJANGO_SETTINGS_MODULE"]  =  "gui.settings"

application=WSGIHandler()

 

这个文件的作用是一些环境变量的设置。

 

4          调试

开启apache服务

 

 

Service httpd restart

 

然后打开浏览器,输入IP地址就可以了,我这里输入的是192.168.145.139:8080。

 

 

以上就是基本的配置过程,

 

最好执行:

   udo yum groupinstall "Development Tools"
   #sudo yum install openssl openssl-devel pyOpenSSL
   sudo yum install python python-devel libevent libevent-devel

这样才能安装gevent

分享到: 微信 更多