1.前言
最近写了一个flask 的web小网站,有一个自己的百度云服务器,就想着把这个网址部署上去,搜了挺多的资料,这里非常感谢windows IIS部署python ,提供了非常多的帮助。以前写的都是.net项目,发布一下,直接在IIS里添加项目就行了,而这个项目是python,flask项目,和发布.net项目还是有点区别的。下面一步一步来。
2.准备工作
我的服务器以前一直是用来放.net项目的,所以python的环境一直没有装,首先安装Python3.6.5。装好添加个环境变量。测试一下。
python环境
嗯,很正常,没问题,请忽略我的32位的python,凑活用就行。然后是装mysql,没啥好说的,选个server only然后一顿下一步就行了。装好测试下。
Mysql
嗯,也没问题。
然后在IIS里添加一个ftp站点,把代码传上来。如何新建ftp站点的,我在另一篇文章中讲了,这里就不在赘述了。
传好的代码。
image.png
这里为什么会有一个web.config文件呢?是因为我已经在我本机上测试发布了一下,在我自己的电脑上测试成功了,在来服务器发布的。哈哈。
3.准备发布
首先用pip安装一个wfastcgi。
pip install wfastcgi
wfastcgi
然后执行一下python36-32/scripts/wfastcgi-enable.exe
image.png
报错了,不要紧,那执行disable.exe试一下。
ok成功,成功之后把这个路径复制下来,放到web.config文件中,类似这样。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="e:\virtualenv\flask-env\scripts\python.exe|e:\virtualenv\flask-env\lib\site-packages\wfastcgi.py"" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<security>
<requestFiltering allowDoubleEscaping="true"></requestFiltering>
</security>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="app.app" />
<add key="PYTHONPATH" value="~/" />
</appSettings>
</configuration>
scriptProcessor
后面的路径改成刚才命令行里的路径,如果scriptProcessor还是一直报错的话,那就可能是空格问题了,建议还是放到一个没有空格的目录下避免出错,下面的WSGI_HANDLER
改成flask项目中主py文件的名字,后缀名就是app。然后在IIS中添加一个网站,如图。
添加网站
添加好之后,执行。
好吧,浏览器里又报错了,不过这次错误是比较好解决的,下面可以看到 No module named 'flask-sqlalchemy'
,这里解释一下,在本地的时候,这些包都是全的,因为要进行开发,但是服务器上的python环境是新装的,所以还没有这些包,不着急,慢慢来,看都少那些包,在安装一次就行了。
ok服务器部署成功。如图。
在本地测试一下。
image.png
ok,可以打开,没问题。页面是可以显示出来了,数据库还没测试,应该也是没问题的。好了,至此,IIS上部署flask项目完成。
Study hard and make progress every day。