admin 管理员组

文章数量: 886992

前言

本人化学博士出身,近些年有感于计算机技术的高速发展,于是重操旧业写起了代码,现在主要致力于工业界的数字化、智能化转型研究和基础设施的建设。平时搞搞数据库开发,做些数据分析、机器学习、深度学习方面的工作。

平时兴趣爱好做点爬虫、web开发之类的,前几天接了单位一个活,整一个小型的网站系统,考虑到用户量大概就1000多,平时点击量也不会很大。果断采用flask+MySQL开发完毕了,然后搞了个阿里云服务器,尝试了下Linux和Windows两个系统的部署。Linux挺顺利的,基本一路跑完,Windows着实遇到了不少坑,那就详细的记录下来吧,给大家一个参考。

建议:能用Linux就不要用Windows,如果实在要用Windows部署,希望能帮上你们一些。

选择

由于要在Windows系统上搞,所以Gunicorn不能用了,这里我们选择Apache+mod_wsgi进行部署。为了部署成功,Apache和mod_wsgi的版本一定要选对!

Apache:

我们进到下载页面:Apache VC14 binaries and modules download

 我是64位的系统,所以选择上面这个下载,一定要根据自己电脑的系统版本去下载。

mod_wsgi:

进到下载页面:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

一定要按照自己预装的Python版本和系统进行选择,我的Python是3.7的。 

这两块下载完,第一步就搞定了,Apache直接解压到喜欢的文件夹就可以了,mod_wsgi需要再安装一下,调出cmd,pip install <文件绝对路径>,比如我的就是这样

pip install C:\Users\HQ\Desktop\mod_wsgi-4.9.0-cp37-cp37m-win_amd64.whl

安装完之后,输入mod_wsgi-express module-config,这时候会命令行会弹出三行话,先不要把命令行关掉,这三行话我们后面要用到。

至此Apache和mod_wsgi就算安装好了。

配置

我们现在来配置Apache。

 找到我们的Apache24文件夹,进入到conf目录中,打开httpd.conf文件。

ServerRoot "c:/Apache24"这一行,修改成自己Apache的安装地址

 这里可以自主选择端口号,我选择的是8080,注意不要与现有的端口号重复。下面加上一行ServerName localhost:8080,这里的端口号需要和前面设置的一致。

再往下翻

 看到它们的时候,先把第一行LoadModule access_compat_module modules/mod_access_compat.so 前面的注释给去掉(这个是老办法,最新的办法可以查看flask文档,两个都可以的),然后,把刚才咱们命令行里自动生成的三行文字给复制过来。

 再往下翻,

<Directory />

AllowOverride none

Require all denied

</Directory>

改成

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>

然后拉到最后,复制上这么一段:

<VirtualHost *:8080 >
ServerAdmin example@xx
DocumentRoot path
<Directory "path">
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / path\test.wsgi
</VirtualHost>

这里所有的path改成你的flask项目的文件夹目录,其他的不做改动。

然后保存一下。

这时候有个重要的一步,否则后面服务器启动后会无限报“Nomodule named encodings”的错误,我们回到这张图。

 将WSGIPythonHome 后面的那个引号里的路径复制一下,建立一个名叫“pythonhome”的系统变量。

 添加完之后,可以避开一个大坑。这一步不添加的话,后面服务器正常运行后,只要访问项目就会报“Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'”的错误。

现在回到我们的flask项目文件,在里面建立一个叫做test.wsgi的文件。

 这个文件里面写上代码:

import sys
 
sys.path.insert(0, "path")
 
from gh_app import app

application = app

这里的path写上你自己的flask项目的目录,gh_app是我的app名字,需要改成你自己的。

你也可以这么写:

import sys
 
sys.path.insert(0, "path")
 
from gh_app import app as application

这里application这个词是绝对不能改的。

现在,所有的配置都做完啦,我们来启动服务。

启动

管理员模式启动Windows PowerShell,然后cd到Apache的bin目录下面

输入 ./httpd -k install 安装Apache,安装完毕不报错后,继续输入

./httpd -k start

 

这时候我们的flask项目就已经部署启动完成了。

现在我们可以在浏览器里点击项目的URL,就可以正常访问到项目了。停止服务器就输入./httpd -k stop,重启服务器输入./httpd -k restart。

如果发现项目还是不能访问,进到Apache下面的logs文件夹里,点开error文件查看报错日志,百度一下报错的问题,基本都能解决的。

如果你的项目中有“输入密码”选项,并用到了数据库保存密码,可能会报“RuntimeError: cryptography is required for sha256_password or caching_sha2_password”这个错误,这时候直接云服务器或者本地pip install cryptography 安装这个模块就可以了。

结束

基本上就这些啦,有条件还是建议Linux部署,Windows部署的小坑太多了,而且部署的方式太单一了。

本文标签: 过程 项目 详细 系统 网站