后端开发——Flask框架从入门到入坟(终章)

article/2025/6/24 16:25:52

前言

        前面已经将Flask框架的内容基本梳理完了,在这篇文章中荔枝会将Flask的部署上云的步骤跟大家分享一下,其实也是基于宝塔页面来进行配置的啦哈哈哈。荔枝也会将环境配置命令和数据库迁移步骤分享出来,下面就由荔枝把具体的操作梳理出来吧哈哈哈。


文章目录

前言

一、购买云服务器

二、远程SSH连接工具——PuTTy

2.1 下载地址

2.2 下载并安装

2.3 SSH测试

三、宝塔面板

3.1 安装宝塔面板

3.2 配置宝塔面板

四、搭建web环境 

4.1 安装python环境

4.2 安装数据库并实现本地数据库迁移

五、项目实操部署

5.1 生成项目依赖

5.2 项目文件传输

 5.3 安装项目环境

 5.3.1 安装python3.8.1

5.3.2 安装虚拟环境

5.3.3 安装Flask

5.3.4 补充虚拟环境的命令

5.3.5 进程占用如何解决

5.3.6 将服务器挂在后台上运行

总结 


        云服务器其实跟我们本机上的服务器(比如你开发时的电脑)没有什么区别,我们需要给云服务器配置开发环境并进行调试。当然了,如果你是直接在Linux上开发的话,应该会更容易,弄个镜像拉取过去就好了。

一、购买云服务器

我们以华为云ECS弹性云服务器为例,各大厂商的云服务器大差不差,基本购买步骤差不多,插一嘴哈哈哈,要买还是腾讯的比较香,华为太贵了呜呜呜~

https://console.huaweicloud.com/ecm/?region=cn-north-4#/ecs/createVm

步骤: 

  •  进入控制台点击购买,依次选择计费的模式、可用区、CPU架构、规格、镜像和系统盘的大小

  •  点击下一步网络配置
  • 在用户第一次使用的时候要先创建虚拟私有云,操作比较简单这里就不赘述了。然后选择安全组,安全组的配置规则最好先默认就好,在实际部署的时候再想着改规则,之后选择带宽的大小和计费方式,这里需要看你个人的需求了。其它的如果没有特殊的需要就默认就好。

  • 之后就是设置你的弹性云服务器的密码咯,如果没有特殊需求建议默认就好,点击下一步确认配置,选择购买的时长直接购买就好。
  • 购买完成之后进入你个人的控制台界面,可以看到这时候就可以开机运行了哈哈,我们查看一下自己的云服务器的外网IP,记录下来待会要用。

  


二、远程SSH连接工具——PuTTy

这里下载的远程SSH工具主要是用来远程连接上我们的服务器并在上面安装宝塔面板,当然了,直接使用华为云网站上提供的终端工具也可以哈哈。

2.1 下载地址

Download PuTTY: latest release (0.78)

2.2 下载并安装

 进入网站之后选择64-bit x86(Window系统),点击signature开始下载安装包。

直接安装就好,安装完成后运行PuTTY,在画红框的地方输入你的云服务器外网IP即可,注意你的安全组规则要开放22号端口,否则可能无法通过SSH连接到你的云服务器。

这里的地址:root@+你的外网地址

2.3 SSH测试

 连接成功:


三、宝塔面板

3.1 安装宝塔面板

在PuTTY工具远程SSH连接上云服务器之后我们可以在终端中输入如下命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

这里需要注意,如果你的服务器是Centos 7.0及以上才用上述命令,如果不是或者是其它操作系统,请参考宝塔官网文档:

https://www.bt.cn/bbs/thread-19376-1-1.html

3.2 配置宝塔面板

在完成宝塔面板的安装之后,会出现下述的页面:

 你需要记下外网地址、登录面板的账户和密码,如果忘了,执行如下命令:

​​​​​​​bt default

        安装完成后,在浏览器上输入面板外网地址,输入账号和密码进行登录,第一次需要你自己注册一个宝塔账号,进入之后选择左侧安装选项进行安装,时间有点长,耐心等待安装成功即可。

 安装完环境之后可以看到如下页面:


四、搭建web环境 

4.1 安装python环境

#查看python2安装路径
#which python
#创建文件夹安装python3
#mkdir /usr/local/python3
#cd /usr/local/python3
#
#安装依赖
#yum -y groupinstall "Development tools"#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
#
#安装python3(3.6.2)
#wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
#
#解压
#tar -xvJf  Python-3.6.2.tar.xz
#编译
#cd Python-3.6.2
#./configure --prefix=/usr/local/python3
#make && make install
#
#创建软链接
#ln -s /usr/local/python3/bin/python3 /usr/bin/python3
#ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

4.2 安装数据库并实现本地数据库迁移

步骤:

  • 在宝塔面板的软件商店那里下载mysql,如果有就不用下了;
  • 回到数据库面板,将之前的数据库删掉,点击添加数据库; 

  • 填入数据库名字、密码、以及访问权限,我这里暂时将数据库的访问权限设置为本地数据库,提交。

        其实网上有很多教程可以直接用一些文件传输工具来将本机上的代码文件打包发送到云服务器中比如Xshell 、 WinSCP。这里就先不用这些方法,荔枝直接在SQLyog中导出sql文件,再在宝塔面板直接从本地上传sql文件到云服务器。

  • 在建好的数据库那里点击导入——从本地上传——选择你要传进去的数据库文件——上传完成记得在点击从本地上传下面点击导入即可。 

验证

打开命令行终端,进行数据库查询,看看数据库是不是迁移成功了 。

mysql -uroot -p;show databases;#进入数据库
use 数据库名;#查看表名
show tables;#退出数据库
exit;

修改权限:

  • 点击phpMyAdmin,找到你要修改的数据库,选中,点击权限

  • 找到用户名是root,主机是%对应的root点击编辑权限,点击登录信息,将host选为任意主机,执行后选中全局权限再执行一次,后端就可以正常访问到了哈哈哈。


五、项目实操部署

5.1 生成项目依赖

在pycharm中生成项目依赖文件requirement.txt

这里有两种方式:

  •  在终端进入项目目录,然后敲上这行命令:
pip freeze > requirement.txt

        值得注意的是,使用该方法会将你环境中所有的依赖项都加进去哈哈,建议如果本机项目在虚拟环境中运行的就可以用,要不可能会出现环境冲突。

  •  在终端中进入项目的目录,敲下这两行命令:
pip install pipreqspipreqs ./ --encoding=utf8

那么之后在云服务器中我们就可以直接下载requirements.txt中的环境

pip3 install -r requirement.txt

5.2 项目文件传输

  •  使用putty安装包里面自带的pscp来将文件传输到云服务器上,在终端进入putty安装包的文件夹,运行如下命令:
pscp -P 端口号 -r 项目代码包路径 root@IP:云服务器中保存的地址

 格式是:pscp -P [指定的端口号] -r 要传的文件路径 云服务器上用户名(一般是root)@公网ip:保存的地址

  •  第二种方法是本地push到Gitee远程仓库,云服务器中直接在Gitee上clone下来

 5.3 安装项目环境

 5.3.1 安装python3.8.1

        这里是因为我的本地python版本是3.8.1,为了不出现环境冲突问题一般云服务器上的环境版本选择与本地保持一致。

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-develyum install wgetwget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgzwget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz# 解压压缩包
tar -zxvf Python-3.8.1.tgz# 进入文件夹
cd Python-3.8.1# 配置安装位置
./configure prefix=/usr/local/python3# 安装
make && make install#添加python3的软链接 
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3 
#如果报已经存在的错误,就把-s换成-sf#添加 pip3 的软链接 
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
#如果存在报错同上面一样

5.3.2 安装虚拟环境

  •  首先直接进入项目的目录,执行命令安装virtualenv
pip3 install virtualenv#创建软连接:
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv#创建虚拟环境:
virtualenv -p python3 +名字
#例:virtualenv -p python3 .env
  •  进入虚拟环境
source .env/bin/activate

5.3.3 安装Flask

#安装flask
pip3 install flask#安装项目拓展
pip3 install -r requirements.txt#如果报数据库连接的问题就直接
pip install mysqlclient

 这样子,我们直接进入项目的路径下运行项目就可以实现flask项目在云服务器上的部署了。

5.3.4 补充虚拟环境的命令

#新建虚拟环境: 
virtualenv -p python3 名字#进入虚拟环境: 
source 名字/bin/activate#退出虚拟环境:deactivate

5.3.5 进程占用如何解决

首先先查看PID码:losf -i:被占用的进程端口号
然后再用kill -9 强制杀死

5.3.6 将后端程序挂在服务器后台上运行

nohup python -u server.py &

总结 

        写完这篇文章,小荔枝的Flask框架的内容就梳理完成啦,之后有空可能会再修改一下这一篇博客。接下来荔枝就要开始学习了,大家一起加油啦。

今朝已然成为过去,明日依然向往未来!我是小荔枝,在技术成长的路上与你相伴,码文不易,麻烦举起小爪爪点个赞吧哈哈哈。

谢谢大家的支持嘻嘻嘻~~~ 

比心心♥~~~


http://chatgpt.dhexx.cn/article/bdukvSmD.shtml

相关文章

数字电路逻辑设计_第三版_微课版_第五章思考题与练习题(附答案)

1. 触发器具有哪些基本特征? 答: 触发器的基本特征: (1)有两个稳态,可分别表示二进制数码0和1无外触发时可维持稳态; (2)外触发下,两个稳态可相互转换(称翻转…

数电基础复习(一)

电信号: 模拟电信号:电压或电流的幅值随时间连续变化数字电信号:电压或电流在幅值和时间上都是离散的(可以是多值逻辑,一般采用二值逻辑) 主要参数: 幅值:高电平的电压值上升时间…

数电设计-八路抢答器

1 设计要求 设计一个能支持八路抢答的智力竞赛抢答器;主持人按下开始抢答的按键后,有短暂的报警声提示抢答人员抢答开始且指示灯亮表示抢答进行中;在开始抢答后数码管显示30秒倒计时;有抢答人员按下抢答键后,在数码管…

模电/数电考核试题

目录: 西安交通大学17年3月课程考试《模拟电子技术》考核试题 西安交通大学17年3月课程考试《数字电子技术》考核试题 附录 -------------------------------------------------------------------------------------------- 西安交通大学17年3月课程考试《模拟…

[答案解析]华工数电实验:简易交通灯控制电路的设计

题目: 答案: 工程文件下载:https://github.com/BlademasterQAQ/A-simple-traffic-signal-lamp-in-digital-electronic-technology 用3个JK触发器实现的3位二进制计数器电路: 仿真结果:(此为上升沿触发时的仿…

【数电基础复习】

数字电子技术——概念向 数制和码制数字量与模拟量位权十-二进制运算反码、补码奇偶校验 逻辑函数逻辑代数运算最小项和最大项逻辑函数化简方法 门电路CMOS门电路CMOS反相器CMOS电压传输特性和电流传输特性CMOS反相器静态输入特性和输出特性CMOS反相器的动态特性CMOS与非门、或…

【数电】数字电子技术学习练习

一、 选择题:(共20分,每小题2分) 1、逻辑函数的所有最小项之和等于多少? A. 0 B. 1 C. 0或1 D. 任意值 2、与非门的多余输入端应如何处理?…

Java可变类型与不可变类型

一、可变类型(mutable type)与不可变类型(immutable type) 已知,基本数据类型都是不可变类型;引用(对象)数据类型既有可变类型,也有不可变类型 首先区分:改变…

Python中的可变对象

文章目录 可变对象与不可变对象关于对象图解可变对象 可变对象与不可变对象 关于什么是对象不是这篇的重点,可查看这篇 Python中面向对象的简单应用 可变对象就是说对象的值是可以改变的,序列中可变对象有list 不可变对象有str、tuple 那么问题又来了…

可变剪切|rmats

可变剪切 可变剪切(或选择性剪切)是一个过程,即主要基因或者mRNA前体转录所产生的RNA的外显子以多种方式通过RNA剪切进行重连。由此产生的不同的mRNA可能被翻译成不同的蛋白质构体,因此,一个基因可能编码多种蛋白质。 rmats 下面是小编使用…

python中的可变和不可变类型,每种类型的常用

方法及原理实现 可变数据类型 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型 不可变数据类型 不可变数据类型: 当该数据类型的对应变量的值发生了改变,…

JavaScript 中的可变和不可变

原文:Mutable and immutable in JavaScript https://blog.devgenius.io/mutable-and-immutable-in-javascript-78a3cbc6187c 根据 Mozilla 的定义- 可变(Mutable)是一种可以更改的变量。 在 JavaScript 中,只有对象和数组是可变的,原始值不…

python可变和不可变

python进阶笔记 一、python中的可变和不可变二、简单可变类型拷贝1、Python的深浅拷贝2、深浅拷贝具体代码实现 三、复杂可变类型拷贝四、简单不可变类型拷贝五、复杂不可变类型拷贝1、不可变类型的深浅拷贝-嵌套类型 六、切片拷贝,字典拷贝1、切片拷贝2、字典拷贝 …

vsftpd 配置(中)

原贴:http://www.ititgo.cn/news_view.asp?newsid575 vsftpd 配置(中) 录入员:admin 来源: 加入时间:2007-6-4 11:30:32 点击:274 <script type"text/javascript"> </script> <script src"http://pagead2.googlesyndication.com/pagead/show_…

linux vsftpd 模式,Linux下的Vsftpd配置篇

1.主动与被动模式 1)主动模式(PORT方式) 连接过程为:客户端向服务器FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:我打开了XX端口,你过来连接我,于是服务器从20号端口向客户端的XX端口发送…

ftp服务器vsftpd配置文件,最全面的vsftpd配置文件详解

最详细的vsftpd配置文件&#xff0c;分享给大家。 注意&#xff1a; 使用匿名登入时&#xff0c;所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性&#xff0c;即匿名用户的家目录不能有777的权限。 对于用户的访问控制可以通过/etc/vsftpd目录下的vsftpd.user…

ftp服务器vsftpd配置文件,vsftpd配置文件详解及ftp服务器搭建

本文介绍如何在linux上搭建ftp服务器&#xff0c;并且给出了vsftpd 的配置的中文详解&#xff0c;要搭建ftp的同学可以认真看看&#xff0c;其中的配置文件必备全部记忆&#xff0c;在以后配置时可以查看这篇文章。 一、vsftps服务器的配置文件中文详解 vsftps服务器的配置文件…