美文网首页
flask的windows server部署:Apache+ws

flask的windows server部署:Apache+ws

作者: AndrewMyh | 来源:发表于2021-03-13 20:35 被阅读0次

[TOC]

前言

今天看到阿里云搞活动,2核心2G内存,40G硬盘一年才¥86,果断入手

于是就开始windows server裸机上部署flask应用

参考链接:

https://blog.csdn.net/firefox1/article/details/46438769

https://www.jianshu.com/p/6ae98e93d595

整合上述两个教程和安装时踩的坑,得到以下教程:

第0步:安装notepad++,bandizip等软件

裸机啥都没有,搞个notepad++编辑文本,bandizip解压:

notepad++:https://notepad-plus-plus.org/downloads/

bandizip:https://www.bandisoft.com/bandizip/

第1步:确定mod_wigi版本,并下载whl包

作为Apache和flask的中介,mod_wsgi的版本的确定十分重要,访问:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi,CTR+F,输入mod_wsgi查找到下图中的链接:

下载链接

确定对应的版本,如:mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64vc14说明和它匹配的Apache的编译器为VC14cp35说明python版本是3.5amd64说明windows版本是64位的。根据自己的情况,选择对应版本的whl包下载

(说明:第一个教程中直接下载了.so文件,但这种方法一方面需要科学上网,另一方面即使科学上网了,给出的链接也找不到需要的版本,而第二个教程里的信息已经过时了,他选择的mod_wsgi-4.6.5+ap24vc14-cp36-cp36m-win_amd64.whl文件在网站上找不到,我在Github上找到了一个备份:https://github.com/jiechengyang/Utils/blob/master/mod_wsgi-4.6.5%2Bap24vc14-cp36-cp36m-win_amd64.whl,有需要的可以下载,我选择的版本就是这个)

(PS:以后有找不到的包可以去Github上找一找,应该会有人备份)

第2步:下载Apache和python

根据第一步确定的版本,下载对应的Apache服务器和Python解释器

Apachehttps://www.apachelounge.com/download

pythonhttps://www.python.org/downloads/

(我下载的Apache的编译器版本是VC14,链接:https://www.apachelounge.com/download/VC14/,而python我选择的是3.6,但官网上找不到3.6的下载链接,我就直接百度找了一个)

第3步:安装Apache和python

解压Apache安装包,将解压出来的Apache24放到C盘根目录下,打开cmd,输入:

cd C:\Apache24\bin
httpd

打开浏览器,访问http://localhost,如果出现 It Works! 就说明Apache服务器已经运行起来了

安装python的时候要注意,低版本的python需要手动将python的安装目录添加到环境变量里,否则pip等操作无法正常工作

第4步:迁移flask项目

flask项目复制到云服务器上,并使用pip命令安装所需依赖,安装完成后,运行并测试能否通过http://127.0.0.1:5000/进行访问

测试结束后,我们得到了一个能够正常工作的flask程序和一个能够正常工作的Apache服务器,接下来就是通过wsgiflask部署到Apache上了

第5步:配置WSGI和Apche

配置WSGI

  • 打开cmd,输入pip install,将第一步下载下载的whl文件拖到cmd里,回车进行安装

  • 安装完成后,输入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"
  • 将输出的信息复制,粘贴到C:\Apache24\conf\httpd.conf文件的最上方:
httpd.conf
  • 重启Apache服务器,如果没有问题就说明配置成功

配置.wsgi文件

flask项目的目录下,新建test.wsgi,根据自己的情况修改相关代码:

import sys

#flask项目的目录
sys.path.insert(0, r"C:\Users\Administrator\Desktop\GHS\myWeb")

#因为一般的flask项目的入口是app.py,因此这么写
#教程一中flask项目的入口是test.py,因此需要写成from test import app
from app import app

#这一个不能改
application = app

配置Apache

打开C:\Apache24\conf\httpd.conf,将以下内容粘贴进去,并修改:

#代码中的C:\Users\Administrator\Desktop\GHS\myWeb是flask项目的目录,根据自己的需要修改

<VirtualHost *:80 >
    ServerAdmin example@company.com
    DocumentRoot C:\Users\Administrator\Desktop\GHS\myWeb
<Directory "C:\Users\Administrator\Desktop\GHS\myWeb">
    Order allow,deny
    Allow from all 
</Directory>
WSGIScriptAlias / C:\Users\Administrator\Desktop\GHS\myWeb\test.wsgi
</VirtualHost>

配置后如图:

httpd.conf

CTR+F,查找mod_access_compat,查找到后把它注释回来,使其生效:

(不配置的话会出现Invalid command 'Order', perhaps misspelled or defined by a module not included
in the server configuratio的报错)

如图

第6步:测试

配置完成后,重启Apache,启动浏览器访问http://localhost,进行flask项目的测试

在测试过程中发现以下问题:

  • flask项目使用python启动时,工作目录为C:\Users\Administrator\Desktop\GHS\myWeb,即flask项目的目录,因此各个相对路径都正常,但配置到Apache上后,工作目录就变成了C:\Apache24\bin,相对路径失效
    • 方法一:把相对路径都改成绝对路径
    • 方法二:导入os,通过项目启动时调用os.chdir(r"C:\Users\Administrator\Desktop\GHS\myWeb"),将工作目录切换过来
  • 使用python启动时:with open("./static/cookie.json)不会报错,但配置到Apache上后,就得这么写了:with open(r"./static/cookie.json),即所有的目录都得加上r

测试结束后,就可以愉快地GHS了!

相关文章

网友评论

      本文标题:flask的windows server部署:Apache+ws

      本文链接:https://www.haomeiwen.com/subject/ubtfcltx.html