flask部署在windows云服务器上进行公网访问
准备工作
腾讯云轻量应用服务器
1.学生云服务器购买地址。
https://cloud.tencent.com/act/campus?from=14599
- 安装镜像选择Windows Server 2019
购买时镜像选择错误不要紧,重置应用重新选择镜像即可。
地址:腾讯云> 云产品> 轻量应用服务器> 服务器> 概要
- 重置用户名和密码
- 配置端口
防火墙基本应用端口已打开,我们只需要添加8080端口即可。用于后面的公网访问。
相关软件
python 3.9
python 下载地址
https://www.python.org/downloads/
python安装时记得勾选添加环境变量
Apache 2.4
Apache 2.4下载地址
https://www.apachehaus.com/cgi-bin/download.plx
这是针对windows已经编译好的Apache版本
mod_wsgi
这里我们下载已经编译好的mod_wsgi
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
这里要注意的是mod_wsgi版本要与python版本一致,文件名里面有提示:
安装配置
python 3.9 安装
python 安装非常简单,这里就不多说了
Apache 2.4 安装
Apache 2.4下载以后是个压缩包,我们解压一下,文件重命名apache放在根目录下。 修改Apache配置文件。httpd.conf 39行
C:\apache\Apache24\conf\httd.conf
切换到Apache bin目录下执行
cd c:\apache\Apache24\bin
httpd
浏览器输入localhost查看是否安装成功(httpd后没有报错就行,这一步检查可省略) 这里是公网配置好之后输入https://localhost才能看到Apache配置默认出现的界面。云防火墙在没添加8080端口时localhost就是Apache默认界面。这时候连接还是http连接。
mod_wsgi 安装
mod_wsgi下载后的文件名不要改,否则下面的命令会出错
把下载的.whl文件复制到python\Scripts下使用 不知道自己python安装到哪里,命令行输入python,进行python命令行输出,得到安装目录
import sys
print(sys.path)
print(sys.path[4])
进入python的安装目录,进入Scripts目录
下载的.whl文件复制到python\Scripts下 在Python39\Script地址栏输入cmd进入命令行界面
pip install mod_wsgi-4.9.0-cp39-cp39-win_amd64.whl
mod_wsgi-express module-config
LoadFile "c:/users/administrator/appdata/local/programs/python/python39/python39.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python39/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python39"
记事本打开Apache的httpd.conf。地址就在我们的C:\apache\Apache24\conf目录下 修改的地方有三处:
-
修改端口80为8080 httpd.conf 67行 -
在 loadmodule后添加内容,内容为我们刚才的三行输出,大概在190行 -
在httpd.conf最后添加内容(这一步可以先不做,等后面创建好实例再修改) 作用是让flask框架的main.py生效, 特别注意的是两个文件目录不要弄错,否则后面执行会报错。 代码:
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / c:\pythonfile\testweb.wsgi
<Directory c:\pythonfile\>
Require all granted
</Directory>
</VirtualHost>
测试
添加web测试实例
- 安装Flask
pip install Flask
- 创建Flask例子
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
- 创建wsgi文件
import sys
sys.path.insert(0,'C:\pythonfile')
from main import app
application = app
- 修改Apache配置
添加位置在配置文件的最后面。
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / c:\pythonfile\testweb.wsgi
<Directory c:\pythonfile\>
Require all granted
</Directory>
</VirtualHost>
-
c:\pythonfile 目录 -
重启Apache 具体是关闭上个打开Apache的cmd重新进入httpd就行
云服务器本地测试
浏览器输入 localhost:8080即可
公网测试
要想在公网上看到flask。要在云防火墙添加入站规则
- 腾讯云防火墙添加8080端口。上文有介绍
2. 这里用的是轻量应用服务器。如果是云服务器是在云服务器的安全组里添加入站规则然后关联实例 3. 要注意的是关闭Apache之后外网就不能访问flask了。
|