windows环境下发布python项目
公司windows服务器用的还是蛮少的, 发布代码时避免采坑, 以我们公司用的环境为例(nginx+apache+django)
以前都是白嫖, 现在也把自己总结的东西拿出来, 互惠互利, 共同进步.
apache配置
到了发布上线环节相比python相关的环境就不必多说了, 长话短说, 我们直接进入重点:
- 这里需要注意一下对应的版本好, 例如我用的这个包mod_wsgi‑4.5.19+ap24vc14‑cp36‑cp36m‑win_amd64.whl, 简单的描述一下就是apache24+python3.6+win64, 大家根据自己的运行环境, 对照下载就ok
-
把刚才下载好的mod_wsgi‑4.5.19+ap24vc14‑cp36‑cp36m‑win_amd64.whl放在python环境的目录下Scripts文件夹, 我的是在C:\Python\Python36\Scripts
-
还是在刚才的目录
pip install "C:\Python\Python36\Scripts\apache24+python3.6+win64"
-
再运行 mod_wsgi-express module-config, 会得到三行命令, 我直接给粘出来, 下面会用到的
LoadFile "c:/python/python36/python36.dll" LoadModule wsgi_module "c:/python/python36/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd" WSGIPythonHome "c:/python/python36"
-
所有的准备工作做完了, 我们来配置appache, 打开httpd.conf
Listen 需要放开的端口, 默认80, 多个回车分割 Listen 5000 Listen 8080 ServerName 如果么有注册DNS配一下就可以 ServerName localhost:8888 # python wsgi LoadFile "c:/python/python36/python36.dll" LoadModule wsgi_module "c:/python/python36/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36- win_amd64.pyd" WSGIPythonHome "c:/python/python36" 划重点, 这三行重点解释一下, 需要配置的同学沾过去改路径就行 LoadFile python的动态链接库, 安装环境后直接找对应的路径就行 LoadModule wsgi_module 我们刚才下载的wsgi模块路径 WSGIPythonHome wsgi模块的家目录 LoadModule wsgi_module modules/mod_wsgi.so #等同于上面的三行代码,这样做更简单,解压后找到mod_wsgi.pyd修改后缀为.so即可 #目的就是要使项目跑起来, 我们在本地都是需要python manage.py runserver, 现在manager没有, 需要wsgi(Python Web Server Gateway Interface), 见名知意, 就不多做赘述了 #Django项目的路径 #WSGIPythonHome E:/www/python/pinsmed.webapi/pinsmed_webapi WSGIPythonHome python项目路径, 多个项目用逗号分隔就好
-
现在还需要配置一下虚拟主机, 打开httpd-vhosts.conf文件
# 下面就是具体哪个项目用哪个端口了 # 虚拟主机路径 Include conf/extra/httpd-vhosts.conf <VirtualHost _default_:8080> # wsgi文件的路径 WSGIScriptAlias / "E:/www/python/pinsmed.webapi/pinsmed_webapi/pinsmed_webapi/wsgi.py" ErrorLog "logs/python-8080-error.log" CustomLog "logs/python-8080-access.log" # 项目路径, 到子应用 <Directory "E:/www/python/pinsmed.webapi/pinsmed_webapi"> Require all granted </Directory> </VirtualHost> # 简单的解释一下, 现在的我这个python项目占用的是8080端口, 指定了appche相应的log路径, 粘贴过去改项目路径和端口号就可以用
项目发布嘛, 就是一堆配置文件, 配置好了基本上就不用变了. 这个是我两年前搭的环境, 有些地方已经记不清了, 如果有同学在配置的过程中有问题可以留言吐槽.