前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Apache 在 Windows 上部署 Python Web 应用

使用 Apache 在 Windows 上部署 Python Web 应用

作者头像
州的先生
发布2021-06-21 20:09:50
1.9K0
发布2021-06-21 20:09:50
举报
文章被收录于专栏:州的先生州的先生

基于 Python 开发的 Web 应用(Django、Flask、Tornado 等)基本上都是部署在 Linux 服务器上的。鉴于 Linux 上部署 Python 应用的便利性,这是大多数项目推荐的部署方式,也是大多数人的选择。

但是在一些场景下,我们需要将应用部署在 Windows 主机或服务器上,比如公司内部的应用、个人使用的应用。

通过虚拟机安装一个 Linux 系统,再对应用进行基于 Linux 的部署是一个方式,但是对计算机资源的占用并不太友好。

通过 docker 方式进行安装?在 Windows 上安装 docker 本身就不是一件简单的事儿。

通过 WSL 在 Linux 子系统中进行应用部署?确实是一个好的方法,但是受限于 Windows 系统的版本,只能在 Win10 中进行操作,这里暂且不表。

下面,我们通过觅道文档 MrDoc 在 Windows Server 2012 R2 下的部署实例,介绍使用 Apache 在Windows 系统中部署 Python Web 应用

根据 Django 官网的介绍:

利用 Apache 和 mod_wsgi 在生产环境部署已经过充分测试。……Django 支持所有支持 mod_wsgi 的 Apache 版本。

下载和运行 MrDoc

首先,我们通过 git 命令下载 MrDoc 项目的源码到 D 盘:

代码语言:javascript
复制
  1. git clone https://gitee.com/zmister/MrDoc.git

然后安装依赖库:

代码语言:javascript
复制
  1. pip install -r requirements.txt

接着执行 MrDoc 的初始化命令,对数据库、管理员用户登进行初始化创建:

代码语言:javascript
复制
  1. python manage.py makemigrations
  2. python manage.py migrate
  3. python manage.py createsuperuser

最后,我们运行测试服务器:

代码语言:javascript
复制
  1. python manage.py runserver 0.0.0.0:80

这样,就可以在浏览器中访问到运行的 MrDoc 了。

下载和安装 Apache

经过测试服务器运行成功之后,我们来准备使用 Apache 部署运行 MrDoc。

首先到网站:https://www.apachelounge.com/download/ 下载对应操作系统的 Apache:

因为演示服务器操作系统是 64 位的,所以这里下载的是Apache 2.4.48 Win64

解压后得到Apache24文件夹,将其复制或移动到 C 盘,最终 Apache 的路径为C://Apache24

我们先对 Apache 做一些基础性的配置,使我们访问服务器IP地址的时候,能够确定 Apache 是启动的。

打开C://Apache24/conf/httpd.conf文件。

在 37 行附近,确定ServerRoot的值为 Apache 的路径:

代码语言:javascript
复制
  1. Define SRVROOT "c:/Apache24"
  2. ServerRoot "${SRVROOT}"

在 60 行附近,设置Listen的值为应用运行的端口,在这里,我们直接设置为 80 端口:

代码语言:javascript
复制
  1. Listen 80

在 227 行附近,设置ServerName的值为你需要的域名或IP地址,在这里,我们直接设置为服务器的 IP 地址:

代码语言:javascript
复制
  1. ServerName 139.159.152.121:80

然后在 C://Apache24//bin目录打开命令行窗口,输入如下命令,将 Apache 安装为系统服务:

代码语言:javascript
复制
  1. httpd -k install

如果命令执行成功,那么在 Windows 的服务管理中,就可以看到 Apache 的服务:

这时候,如果我们继续在浏览器访问服务器的 IP 地址,那么可以看到 Apache 运行成功的默认页面:

这说明我们的 Apache 服务已经安装并启动了。

下载和安装mod_wsgi模块

mod_wsgi 是一个 Apache 模块,它可以管理任何 Python WSGI 应用,我们需要安装这个模块用来实现 Apache 与 Python WSGI 应用的连接。

我们可以直接使用pip命令进行下载:

代码语言:javascript
复制
  1. pip install mod_wsgi==4.7.1

mod_wsgi 4.8版本在它的 GitHub 仓库上有很多关于异常报错导致 Apache 服务无法启动的 issues,所以保险起见,我们安装 mod_wsgi 4.7.1 版本

如果在安装中提示需要 C++ 2015,那么一个解决方案是通过 microsoft visual c++ build tools 工具进行安装,另一个方式则是通过下载第三方提供了编译好的 whl 文件进行安装

下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

根据计算机的 Python 版本下载合适的 whl 文件。

然后使用 pip 命令进行安装。

安装成功后,我们可以在 Python 安装目录的 Scripts 文件夹内看到一个名为 mod_wsgi-express.exe 的文件:

我们在这里目录下打开命令行窗口,执行如下命令:

代码语言:javascript
复制
  1. mod_wsgi-express module-config

会输出三行类似于下面这样的文本,我们将其复制出来备用:

代码语言:javascript
复制
  1. LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
  2. LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
  3. WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

配置模块

接着,咱们继续打开 Apache 的配置文件 httpd.conf,在文件末添加一些内容。

首先,把执行mod_wsgi-express module-config命令输出得到的文本添加到 httpd.conf 中:

代码语言:javascript
复制
  1. LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
  2. LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
  3. WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

然后,指定应用的 wsgi 配置文件路径:

代码语言:javascript
复制
  1. WSGIScriptAlias / c:/MrDoc/MrDoc/wsgi.py

接着,指定项目的路径:

代码语言:javascript
复制
  1. WSGIPythonPath c:/MrDoc

接下来,确保 Apache 能够访问到 wsgi.py 文件:

代码语言:javascript
复制
  1. <Directory c:/MrDoc/MrDoc>
  2. <Files wsgi.py>
  3. Require all granted
  4. </Files>
  5. </Directory>

继续指定静态文件的目录和媒体文件的路径:

代码语言:javascript
复制
  1. Alias /media/ c:/MrDoc/media/
  2. Alias /static/ c:/MrDoc/static/
  3. <Directory c:/MrDoc/static>
  4. Require all granted
  5. </Directory>
  6. <Directory c:/MrDoc/media>
  7. Require all granted
  8. </Directory>

添加完成之后,保存文件。再重启一下 Apache 服务。

回到浏览器,访问服务器的 IP 地址,可以发现,MrDoc 已经成功运行了。

这样,我们就通过 Apache 实现了在 Windows 上部署 Python Web 应用(Django)。

还是很简单的,赶紧试试吧!


?分享、点赞、在看,给个三连击呗!?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 州的先生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载和运行 MrDoc
  • 下载和安装 Apache
  • 下载和安装mod_wsgi模块
  • 配置模块
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档