Install Apache and mod_wsgi(未完)
Django本身自带一个轻量级的web服务器,但是做为产品部署,还是需要一个更成熟的web服务器。
如果想在Apache上使用Django,需要APACHE支持mod_wsgi模块。
mod_wsgi工作在两种模式中的一种:嵌入式模式和daemon模式。在嵌入式模式中,mod_wsgi类似于mod_perl——当服务启动时,它在APACHE中嵌入PYTHON并加载PYTHON到内存中。代码在整个生命周期都放在内存中,这很容易导致最后处理能力超出服务器的边界。在daemon模式中,mod_wsgi产生一个独立进程来处理请求。daemon进程可以以不同于web服务用户的身份运行,这样可以增加服务器的安全性。该进程 可以在不重启APACHE服务的情况下重新启动进程,这可以更无缝的刷新代码库。Django可以工作在支持mod_wsgi的apache的任务版本。
mod_wsgi有两种安装模式,一种是传统的Apache模块安装模式。另一种是使用python的PIP来安装。如果希望在Docker容器中使用apache和mod_wsgi,那么后者是最好的选择。
安装命令:
pip3 install mod_wsgi
通过该命令安装,我遇到的问题:
-
- 找到不APXS:很多人建议安装httpd-devel包,其实源码安装的人不需要这样,使用httpd -l查看mod_so.c模块是否挂载,已经挂载就没有问题了。出现找不到APXS的原因就是,apache2的bin目录没有加入到$PATH中。编辑/etc/profile,加入apache2/bin目录就可以了。
- 因为我把安装文件放到了root目录中,在pip3安装时还需要用到这个目录,所以产生了第二个问题。解决更简单,把apache2的安装源文件放到另一个目录中,重新编译安装一次。
- 编译不通过,提示的信息是gcc返回状态1。后来把安装过程提示的内容重定向到一个文件中,又查看了一下,最开始有一个警告,是警告python没有共享库。重新编译python3,
./configure --enable-shared
- 启动python3时提示找不到libpython3.6m.so.1.0共享库。有网友说安装了virtualenv后可能会有这个问题。解决方法是编辑vi /etc/ld.so.conf,然后把包含libpython3.6m.so.1.0的/usr/local/lib64目录添加进云
解决了以上几个问题后pip3安装顺利完成。另:我是安装到virtualenv的虚拟环境中。