基于Python下的微服务器部署方案
目的:将算法部署到服务器以方便后续调用。
尝试方案1:Ubuntu+Nginx+uwsgi+Flask
- 目前在Ubuntu系统下此方案可行,在Win下由于uwsgi无法安装,导致目前不可用(2020/10/10 亲测)。具体在Ubuntu下安装没有进行细节尝试。
尝试方案2:Windows+Apache+mod_wsgi+Flask
- Apache:Web服务器
- Mod_wsgi:Python编写的Apache的FastCGI模块
- Flask: Python的web框架
- 安装Apache,这里按照此方式即可,亲测可行。
- 安装Mod_wsgi,根据Python版本及系统位数选择,下载地址点我,这里我用的是Python3.7及Win64。下载完成后使用
pip install xxx.whl
完成安装。
-
配置Apache的wsgi扩展,首先找到你的Python路径下的Scripts,例如我的是在
C:\Users\zhihao\AppData\Local\Programs\Python\Python37\Scripts
,打开cmd运行mod_wsgi-express module-config
将出现的语句复制,然后拷贝到你的Apache文件夹conf中的httpd.conf
文件最下方即可。再重启Apache检查是否成功。
-
测试wsgi与Apache是否连接成功,首先在工程文件夹下面创建
test.wsgi
并将以下代码复制进去,切记要查看代买格式缩进,因为缩进踩了很多坑。def application(environ,start_response): status = "200 Ok" output = b"Hello wsgi" response_headers=[('Content-type','text/plain'),('Content-Length',str(len(output)))] start_response(status,response_headers) return[output]
-
将以下代码复制到Apache文件夹conf中的
httpd.conf
文件最下方。注意以下代码适用于Apach2.4。对Apach2.2需要将Require all granted
改为Order allow,deny
和Allow from all
,具体代码不再展示。<VirtualHost *:80> DocumentRoot D:\projects\xxx WSGIScriptAlias / D:\projects\xxx\test.wsgi <Directory 'D:\projects\xxx'> AllowOverride AuthConfig FileInfo Require all granted </Directory> </VirtualHost>
-
重启Apache,如果成功,网页localhost应该显示‘Helllo wsgi’