本文指导安装Python3.5, mod_wsgi4.5.15, Django1.10,以及安装过程中可能出现的问题及解决方法。

操作系统不局限于centos,大多数linux操作系统都适用。其他版本的操作系统出现问题的解决思路和方法基本是一样的。。。开始。。。

1. 安装Apache2.4

如果是Centos7版本,默认使用yum安装之后的apache就是2.4版本了,建议安装最新版本。因为我们后续要安装mod_wsgi,它依赖apache的开发库和Python的开发库,所以也要顺带安装apache的开发库。

命令如下:

yum -y install httpd httpd-devel

2. 编译安装Python3.5。

大多数linux发行版默认的Python版本都是2.X, 要使用最新的3.X版本就需要自己手段安装,这里使用编译源代码的方式安装,源码包可在python官网自行下载。

相关命令如下:

tar -zxf mod_wsgi-4.5.15.tar.gz                #解压python源码包

cd Python-3.5.3/

./configure --prefix=/usr/local/python35 --enable-shared    --enable-loadable-sqlite-extensions                     #配置选项,建议使用--prefix指定安装目录,方便不用的时候删除,--enable-shared启用共享库,mod_wsgi需要python开发库支持,django默认使用sqlite数据库,需要使用此数据库的开发库

make                            

make install                         #编译并安装,安装之后默认会安装对应版本的pip3,如果编译之后提示“Ignoring ensurepip failure: pip 9.0.1 requires SSL/TLS”,会因为缺乏依赖无法安装pip3,可以使用以下命令安装依赖之后,重新编译安装: yum install zlib-devel bzip2-devel openssl-devel ncurese-devel

安装之后的python3开发库在/usr/local/python35/lib目录下,系统是无法找到的,启用python35开发库可以配置系统库加载目录,命令如下:

echo "/usr/local/python35/lib"  >> /etc/ld.so.conf.d/python35.conf

ldconfig


3.  编译安装mod_wsgi4.5.15。

wsgi支持apache2.0, 2.2, 2.4, apache必须安装了开发库,常见发行版的软件库中的apache开发库名称类似:httpd-devel。 还需要python开发库,发行版软件库自带的开发库名称类似:python-devel。使用源码安装的话使用--enable-shared并配置系统库加载目录,参考上面 2. 编译安装Python3.5。

如果apache为源码安装,apxs没有在系统可执行路径中,需要使用--with-apxs指定apxs的执行目录,python使用源码安装,python可执行程序没有在系统可执行路径,需要使用--with-python指定python可执行文件路径。本例中安装配置编译安装命令如下:


./configure --with-python=/usr/local/python35/bin/python3.5                  ##一定要是python3.5,不能是python3,原因见下面。

make                ##如果上面使用--with-python指定的python可执行程序是/usr/local/python35/bin/python3, 这一步会报错:src/server/wsgi_python.h:24:20: fatal error: Python.h: No such file or directory

make install


4.  安装Django1.10并创建工程和应用

cd /usr/local/python35/bin/

./pip3.5 install Django                    #./pip3.5 install Django==1.8可以安装1.8版本Django,如果安装python之后没有pip3.5,原因是编译的时候没有安装相关依赖包,请安装2. 编译安装python3.5中的步骤安装依赖包之后重新编译安装。


安装之后可以使用以下命令验证安装成功:

python3 -m django --version                                   ##如果输出版本,说明安装成功,否则没有安装成功。


每个部件的使用方法请参考各自官网。

django-admin startproject  mysite                         ##新建工程mysite

django-admin startapp mysite                              ###如果django命令不存在,请使用命令绝对路径/usr/local/python35/bin/django-admin,或者将路径/usr/local/python35/bin/添加到系统PATH变量中。

                                                                      ###如果执行此命令报错:django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3',请安装sqlite-devel包(yum install sqlite-devel),然后重新编译安装python3.5

PATH=$PATH:/usr/local/python35/bin/


5.  配置apache支持wsgi

vim /etc/httpd/conf.d/wsgi.conf

LoadModule wsgi_module modules/mod_wsgi.so                     ##主配置文件中加载mod_wsgi模块

<VirtualHost *:80>                                                                     ##配置虚拟主机

    ServerName skyofus.cn

    DocumentRoot "/weixin"

    DirectoryIndex index.html index.py

    WSGIScriptAlias /weixin/ /weixin/cgi-bin/weixin/weixin/wsgi.py                     ##指定url对应的wsgi文件

    <Directory "/weixin">

        Options Indexes FollowSymLinks

        AllowOverride None

        Require all granted

    </Directory>

</VirtualHost>