本文指导安装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>