笔者原有一个练手的django工程,用于portal和设备管理。后来又接到资产管理的需求,于是找了个开源的snipe-it。snipe-it是部署在apache的,安装过程也很简单,snipe-it安装。笔者预期是http://ip直接访问的是django工程,django应用其自己处理;http://ip/assets则访问snipe-it。但是和原有的django工程在一个服务器上,笔者又不想各是各的域名也不愿意分两个端口访问。于是遍寻网络,找到了apache+mod_wsgi部署django的方法,并且把其中一些坑记录如下。
1、安装snipe-it
这一步后会自动部署apache,直接ip就能访问
2、修改snipe-it访问路径
在/etc/httpd/conf.d/snipeit.conf中
注释掉 <VirtualHost *:80> 和 </VirtualHost>
增加 Alias /assets /var/www/snipeit/public
3、安装mod_wsgi
yum install -y python36u-mod_wsgi.x86_64
需要apache加载module,自行处理。笔者安装后,apache已默认加载。
4、增加django工程import路径
在wsgi.py文件中添加
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
5、创建用于访问django工程的apache conf
<Directory <django工程完整路径>>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
WSGIScriptAlias / <django工程wsgi.py全路径>
DocumentRoot <django工程完整路径>
ServerName <ip>
WSGIPythonPath <django工程完整路径>
6、修复SQL引用版本错误
在/etc/sysconfig/httpd文件中添加LD_LIBRARY_PATH = "/usr/local/lib"
7、修改django工程目录访问权限
chmod -R 0777
8、重启apache
systemctl restart httpd