Linux+Python+Apahce+wsgi

两周前完成的一个项目,是用Python写了一个网站。在部署到正式服务器时遇到了点问题,反复多次,浪费了些时间。今天,终于有时间把过程好好整理一下。

服务器操作系统是CentOS

一、准备工作

1、安装gcc

如果没有gcc,后面编译安装其它东西时,会提示:no acceptable compiler in $path

在终端执行yum install gcc即可。

yum 是一个Python下面的命令,一般Linux都自带了python 2.4.3,所以一登录系统,就可以使用yum命令了。

2、安装zlib-devel

如果没有zlib-devel,后面执行Python时会报错:Compression requires the (missing) zlib module,若到了那时再安装zlib-devel,就需要重新编译python,会麻烦一点。

在终端执行yum install zlib-devel即可。


二、编译安装Python

1、到python官网下载源码包,如Python-2.7.3.tgz

2、解压 tar -xf Python-2.7.3.tgz 

3、进入解压后的Python-2.7.3目录,执行 ./configure --prefix=/usr/local/python27 --enable-shared --with-zlib=/usr/include

prefix参数是指定要将python安装到哪个目录

enable-shared是必须要写的,否则后面会遇到错误提示:Command failed with rc=65536

with-zlib就是指定编译python过程中要用到的zlib的路径,我们在准备工作中安装zlib后,zlib就会在/usr/include目录下。

4、执行make

5、执行make install

现在检验一下,在终端输入python,可以看到python的版本号,还是2.4.3。这是因为系统默认指向了原本就在机器上的python,现在需要设置环境变量,让它指向我们新装的python2.7

exit()退出python环境,回到终端。再执行

export PYTHONPATH=/usr/local/python27

此时再执行 python,就可以看到版本号已经变成2.7了。


如果此时遇到错误:error: command 'gcc' failed with exit status 1

可以执行 yum install gcc python-devel来解决


如果遇到错误:python: error while loading shared  libraries: libpython2.7.so.1.0:
  cannot open shared object file: No such file 

按如下方式解决:

vim /etc/ld.so.conf.d/python2.7.conf

加入以下内容:/usr/local/python27/lib (实际的python安装路径下的lib目录)

保存退出后运行:

ldconfig

即可


三、安装setuptools

setuptools可以帮助我们方便的安装项目中使用到的python插件,另外,如果项目中有使用到mysqldb插件,那么setuptools就是必须要安装的,因为mysqldb对它有依赖。

到官网下载setup tools的源码包,解压后,进入解压目录中,在终端运行python setup.py install即可。


四、安装Mysql

到官网下载Mysql for redhat 的压缩包,解压后里面有好几个文件,除去test,其它的都需要安装。

tar -xf MysqlXXX.tar

rpm -ivh Mysql-server-XXX.rpm

rpm -ivh Mysql-devel-XXX.rpm

rpm -ivh Mysql-client-XXX.rpm

rpm -ivh Mysql-embedded-XXX.rpm


五、安装项目所需要的python插件

我们之前安装了setuptools,所以现在可以很方便的使用如下命令安装了。

easy_install web.py

easy_install mysql-python

easy_install jinja2

等等插件


六、安装Apache

到官网下载源码,然后依次执行./configure --prefix=/usr/local/apache, make, make install三条命令即可


七、安装wsgi

同样的,到官网下载源码再编译安装。

安装完成后,apachemodules目录下,就会多一个mod_wsgi.so文件。

如果安装不成功,可能需要看一下wsgi目录里面的readme文件,那里会有指引,说明在编译时需要指定什么参数。


八、配置Apache

把项目放到机器上的任意一个位置,比如项目test,放到/usr/local/www/test

打开配置文件,

vi /usr/local/apache/conf/httpd.conf文件

搜索LoadModule的位置,在末端加上

LoadModule wsgi_module modules/mod_wsgi.so


搜索DocumentRoot,把它的值修改为真正的项目路径,如/usr/local/www/test

并添加以下内容

Alias /robots.txt '/usr/local/www/test/static/robots.txt'

Alias /favicon.ico '/usr/local/www/test/static/favicon.ico'

Alias /static/ '/usr/local/www/test/static/'

WSGIProcessGroup test

WSGIDaemonProcess inspect processes=20 threads=1 inactivity-timeout=30 maximum-requests=2000 python-eggs=/tmp display-name=%{GROUP}

WSGIApplicationGroup test

WSGIScriptAlias / '/usr/local/www/test/application.py'  #改成实际的项目启动文件

Order deny,allow

Allow from all


九、启动mysqlapache

service mysql start

/usr/local/apache/httpd -k start

之前我用下面这种方法启动Apache,结果启动的是系统自带的Apache

service httpd start 或者 (/usr/local/apache/bin/apachectl start)  

即可

你可能感兴趣的:(linux,python,compression,gcc,mysql,终端)