pycharm开发的flask项目,需要在生产环境中使用,因此需要部署到window10系统上(目前只有一台服务器 操作系统还不让动。。。。)。网上查的资料版本很对,有的部署后还启不来,自己部署好后整理下吧…
os:win10专业版 64位
python:3.6.8 64位
Apache:2.4.41 64位
mod_wsgi:4.7.1 64位
注意:以上位数要保持一致,Apache 版本根据操作系统
mod_wsgi的版本要根据python版本和位数去下载
Apache下载链接:https://www.apachelounge.com/download/VC14/
浏览器打开,选择64位进行下载
mod_wsgi 下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
浏览器打开,选择64位进行下载
下载后Apache解压到任何目录(最好放根目录,或者没有中文字符的目录)
解压后的目录如下
mod_wsgi 安装
使用命令:
pip install C:\Users\Administrator\Desktop\mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl
pip是python自带的工具,install 安装的意思,后面是whi文件的路径
安装成功后会提示
Successfully installed mod-wsgi-4.7.1
安装完后执行mod_wsgi-express module-config
C:\Users\Administrator>mod_wsgi-express module-config
LoadFile "c:/users/administrator/appdata/local/programs/python/python36/python36.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python36"
将输出结果保持下来,后面配置要用。
至此Apache和mod_wsgi就算安装好了!
找到我们的Apache24文件夹,进入到conf目录中,打开httpd.conf文件。
1.找到ServerRoot "c:/Apache24"这一行
修改成自己Apache的安装地址
Define SRVROOT "D:\flask_web\Apache24"
2.找到 Listen 80 这一行
修改监听端口为8088(不要与已经使用的端口重复,否则会提示端口被占用)
#Listen 12.34.56.78:80
Listen 8088
3.紧接着下面新增一行,端口要与监听的端口保持一致
ServerName localhost:8088
4.找到LoadModule access_compat_module modules/mod_access_compat.so,去掉前面的# (取消注释)
增加前面执行mod_wsgi-express module-config后输出的三行内容
LoadModule access_compat_module modules/mod_access_compat.so
LoadFile "c:/users/administrator/appdata/local/programs/python/python36/python36.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python36"
5.找到Directory "${SRVROOT}/cgi-bin"行,用四行代替原来的三行
修改后如下:
<Directory "${SRVROOT}/cgi-bin">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
6.配置Virtual hosts
找到刚才新增的ServerName localhost:8088,下面增加虚拟以下代码
#跟上面监听的端口一致
<VirtualHost *:8088>
ServerAdmin webmaster@dummy-host2.example.com
#指定网站根目录
DocumentRoot "D:\flask_web\monitor_platform"
#指定网站用localhost:8088来访问
ServerName localhost:8088
#这条命令就是指定对 localhost:8088/.. 的访问都转由网址根目录下flaskApp.wsgi来处理
WSGIScriptAlias / D:/flask_web/monitor_platform/flaskApp.wsgi
#指定日志的路径及文件名
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
#指定flask工程目录下的文件都可访问
<Directory "D:\flask_web\monitor_platform">
Require all granted
Require host ip
Allow from all
</Directory>
</VirtualHost>
7.站点
在flask工程根目录下,新建flaskApp.wsgi文件,用于实现apache和webapp连接
打开文件,复制以下代码并修改第二行的flask工程路径
import sys
# 加入flask工程目录,以便知道启动文件monitor.py
sys.path.insert(0, "D:\\flask_web\\monitor_platform")
from monitor import app as application
目录结构为:
----|flask_web (文件夹)
--------|monitor_platform (文件夹)
------------|app (文件夹)
------------|monitor (启动文件)
------------|flaskApp.wsgi (文件)
Apache配置完成!
安装Apache
进入Apache bin目录下,执行安装Apache,没有报错说明没有问题
httpd -k install
启动
执行以下命令,没有报错说明没有问题
httpd -k start
常用命令
httpd -k restart 重启
httpd -k stop 停止
启动完成后,在浏览器中输入ip:8088/路由,即可访问网站
注意:启动文件中monitor.py中未指定ip和端口
如果访问网址有报错,可以查看Apache目录下logs/dummy-host2.example.com-error
我遇到的报错是
ModuleNotFoundError: No module named 'monitor'
改原因就是7配置站点时未执行路径,导致flaskApp.wsgi导入monitor.py时找不到文件,添加路径后可以正常访问
OK,记录本次部署历程,听说Linux部署会比较简单,下次再研究