相关推荐recommended
如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程)
作者:mmseoamin日期:2023-12-21

 2023年中旬,参加了一个比赛,需要搭建一个网站。在不断探索琢磨之后,搭建了一个基于flask的web。直接上干货:

一、首先,在本地准备好自己的flask项目。包括最基本的三个文件:

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第1张

然后准备生成requirements.txt文件,这个文本文件会告诉服务器你的项目运行所需要的环境,即需要安装哪些包以及库,创造依赖环境。

那么如何生成requirements.txt文件呢?

1、把项目文件用pycharm打开,来到pycharm终端,

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第2张

然后在终端项目路径下输入命令,安装pipreqs工具。

pip install pipreqs

由于我本地安装了anaconda,所以终端显示不同,但殊途同归。

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第3张

注意:这里最好不要输入命令:

pip freeze > requirements.txt  #这段代码会生成当前电脑环境下的所有安装包,然后上传到服务器上安装的时候会全部安装很多没有用的包(当前项目用不到),这样是十分耗时不可取的。

安装好pipreqsg工具之后,继续在项目的路径下,输入命令生成requirements。txt

pipreqs ./ --encoding=utf8

显示如下便成功生成了

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第4张

回到目录下,会看到多了一个requirements.txt文件:

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第5张生成的文件就1KB,项目不大,还算正常。双击打开看看,显示就两个包:

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第6张

接下来把文件一并压缩:

二、上传到服务器

事先要准备好一台服务器,如果有域名更好,没有也没关系,可以通过服务器外网IP地址访问,不过不安全。

打开宝塔面板,我是把项目放下/www/wwwroot路径下。也可以放到/home路径下,这两个路径后续改配置更少,而且也容易避免一些bug。

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第7张

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第8张

把压缩包上传到服务器,然后解压,记住自己的项目所在的路径,后续会用到。

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第9张

三、在服务器端运行

我用的是腾讯云,登录之后使用conda创建一个虚拟环境(一个独立干净的环境,能够让你的项目独立运行,运行项目首选!)。

如果服务器上没有安装conda,可以访问以下链接进行安装:

conda安装与使用 - 知乎 (zhihu.com)

安装完之后,登录服务器,输入命令:

conda --version

查看所安装的conda版本,表示安装成功。

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第10张 之后切换到项目所在的路径:cd /www/wwwroot/mcfskin  (选择你实际的路径,此处以我的为例)

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第11张

切换路径之后,使用conda命令创建一个虚拟环境,记住env_name你命名的虚拟环境,phthon版本根据需要选择:

 conda create -n env_name python=3.8

之后输入命令,激活所创建的虚拟环境,例如我创建的虚拟环境名为mcfskin 

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第12张

现在就在该路径下安装你所需要的包,这时候便需用到requirements.txt文件了。在新环境下输入命令:

pip install -r requirements.txt

运行如下:

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第13张

新环境所需要的包安装完之后,便可以运行项目了,输入命令:

python app.py

 可以看到flask框架在服务器上正常运行,就可以根据给出的地址进行访问了。按住ctrl+C,可以中断运行,跳出程序。

如果你有域名的话,在host处填入你的内网IP,如果你有SSL证书的话,可以在ssl_context()的参数里面填入.pem .key文件名称。(不过两个文件在服务器上要和app.py,即项目文件在一个目录下),选择的端口不要被其他程序占用。如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第14张

可以输入以下命令查看哪些端口在运行:

netstat -nultp

显示如下:

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第15张

 把不想被占用的端口删掉,可以输入以下命令(PID填写上方的数字)

kill -9 PID

之后去腾讯云添加域名解析

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第16张

 之后可以利用公网IP地址加端口号访问flask项目啦

如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程),第17张

如果想让项目一直在服务器后台运行,不想断开服务器连接就需要输入命令:(也是在app.py相同的文件目录下)

nohup python app.py > log.txt 2>&1 &

输入后会返回一个[1] 9906     此处的数字不唯一。成功之后中断服务器连接,也可以通过公网IP远程访问项目了。

(ps:本人目前本科在读,以上分享都是我自己亲身探索踩雷试出来的经验,可能有些地方讲的不到位,有疑问的朋友欢迎留言,很乐意一起交流学习。如果能帮到大家,我会很高兴,谢谢!)