使用宝塔面板搭建Flask项目保姆级喂饭教程

news2024/10/23 6:28:46

目录

零.前言

一.准备工作

1.1创建requirements.txt文件

1.2将项目打包为压缩文件

1.3租一台服务器

1.4部署宝塔面板

二.宝塔面板(服务器)上的操作

2.1将本地Flask项目上传到服务器

2.2添加Python项目

2.3配置Python项目

2.4配置Nginx

2.5宝塔面板放行端口

2.6在服务器管理后台开放端口

2.7启动服务器

三.结语

零.前言

前段时间,利用Flask做了一个个人网站,后面想要部署,觉得使用宝塔面板部署相对简单,于是便去网上搜索各种教程,发现网上对于Flask部署的教程少之又少加之宝塔面板的更新,早已不适用

作者苦苦摸索20余小时,终于摸索出一套比较完整且适用的方法!

PS:本教程主打的一对一喂饭,因此对于小白相对友好,如嫌啰嗦建议粗略阅读

本次使用的服务器系统以及项目版本为:

Python版本:3.11.4

宝塔面板版本:免费版8.0.5

Linux系统:Ubuntu22

服务器:华为云的耀L服务器

一.准备工作

准备工作中,所有的操作均在“自己电脑”上完成!!!

准备工作中,所有的操作均在“自己电脑”上完成!!!

准备工作中,所有的操作均在“自己电脑”上完成!!!

重要的事情说三遍

1.1创建requirements.txt文件

我们需要创建“requirements.txt”文件用来获取Flask项目开发所用到的Python库()。

具体步骤如下:

  1. 进入项目所在目录,随后在目录中输入cmd再按回车,便可进入该目录的命令控制行,或者在Pycharm中的终端都可以
  2. 输入命令:
    pip freeze > requirements.txt

    这样一个requirements.txt文件即可生成在当前目录下啦~

 以我项目为例,requirements.txt文件内部长这个样子:

1.2将项目打包为压缩文件

将项目内的所有文件打包成一个压缩文件,建议直接对项目根文件夹打包,例如我的项目文件夹名字为:“pythonproject”,那么我可以直接对这个文件夹压缩

1.3租一台服务器

租一台服务器,系统为需要为LinuxCentos建议版本7.X往上,Ubuntu系统都可。

国内服务器厂家很多,有:“华为云”、“京东云”、“腾讯云”、“阿里云”等等,在这里作者使用的是华为云的,且安装系统直接有自带宝塔面板的Ubuntu系统,省去不少事,至于其他厂家都大差不大。

1.4部署宝塔面板

再组好服务器之后,我们首先要找到:“服务器外网IP”、“服务器内网IP”这两个十分重要。

随后我们需要在服务器上部署宝塔面板,版本8.X往上即可,如果不知道部署什么版本的宝塔,那直接就最新版

至于怎么部署宝塔面板,本文章就不赘述了,CSDN上已有不少博主发布过非常详细的教程

登录宝塔面板后,是这个样子:

二.宝塔面板(服务器)上的操作

2.1将本地Flask项目上传到服务器

  • 在宝塔面板右侧导航栏找到”文件“,点击进入“文件”页面。
  • 在“文件”页面中依次点击:“www”->“wwwroot”,进入“/www/wwwroot”目录下。
  • 将本地压缩好的Flask项目文件上传到该目录下(可以左键拖动到宝塔页面上传,也可以点击“上传”按钮上传)
  • 右键上传好的项目文件,点击解压,将项目解压到该目录下。

 最后,以作者的项目为例,解压好的界面长这个样子:

2.2添加Python项目

  • 在宝塔面板右侧导航栏找到“网站”,点击进入“网站”页面。
  • 在“网站”页面中,选择“Python项目”,点击“添加Python项目

 

点击之后,是这个样子的:

而填好的是这个样子,读者可以对照填写,后面还会详细解释

下面详细解释各个参数:

  • 项目路径:填写Flask项目的根路径
  • 项目名称:自己随便取,不建议使用中文,这个名字只是用来展示在宝塔面板中
  • 运行文件:填写Flask项目中,app.run()启动代码所在的py文件路径
  • 项目端口:随便填写,范围在(0-65535)之间,注意填写没有被其它应用程序占用的端口,同时避开常见端口,例如“3306”就是数据库服务器的默认端口,如果实在想不到填什么,可以跟作者一样填写端口号为“8000”
  • Python版本:Python版本只能选择,不能任意指定输入,如果没有与开发环境相对应的Python版本,直接选择最新版本或者比开发环境大一点的版本。
  • 框架:选择“flask
  • 运行方式:选择“uwsgi
  • 网络协议:选择“wsgi
  • 进程数、线程数:默认即可,默认为4和2
  • 启动用户:选择“www
  • 通信方式:选择“http”
  • 安装依赖包:在第一步准备工作中,我们已经制作了requirements.txt文件,所以当你选择项目根目录后,宝塔会自动检测并识别,不需要人为填写

2.3配置Python项目

  • 点击刚刚添加的Python项目的“设置”,进入“设置”界面。
  • 在“设置”界面中,点击左侧的配置文件。

 我们需要修改“sever_name”、“root”两项:

  • sever_name:填写服务器的公网ip
  • root:填写项目的根路径

 我们再点击右侧的“运行配置”:

随后,我们需要在文件中添加“三行配置参数“:

buffer-size=65536
callable=app
virtualenv=/www/server/pyporject_evn/pythonProject_venv

参数说明

  • buffer-size:网页请求最大MB大小,建议填大一点
  • callable:填写app.run()启动代码所在的py文件名称
  • virtualenv:填写虚拟环境路径,在新版本的宝塔面板中,面板会自动为我们创建一个虚拟环境,目录在:“/www/server/pyporject_env/项目名_venv

 随后,我们再点击右侧的“域名管理”,添加一个域名,格式为:“服务器公网IP:刚才设置的端口号

最后,我们点击右侧的“外网映射”,将外网映射打开即可。

2.4配置Nginx

  • 在宝塔面板右侧导航栏找到“软件商店”,点击进入“软件商店”。
  • 在软件商店中搜索“Nginx”,下载并安装,安装全部默认设置即可。

 安装完成后,是这个样子:

我们点击“Nginx”的“设置”,进入“Nginx的设置界面”。

在“Nginx设置界面”的右侧,找到“配置修改”,进入“配置修改”界面,并往下翻动,找到“server”项

  • 将原先的“index index.html index.htm index.php;”这行注释掉,如果没有该行则跳过
  • 将原先的“root /www/server/phpmyadmin;”这行注释掉,如果没有该行则跳过
  • 添加新的“root 你的项目根路径

继续向下翻动,添加两个“location”项,添加在“server”项中即可

添加内容为:

        location /
        {
            include uwsgi_params;
            uwsgi_pass 服务器内网IP:你的端口号;
            uwsgi_param UWSGI_CHDIR 项目根路径;
        }
        
        location /static/
        {
          alias 项目根路径/static;
        }

其中,第二个“location /static/”是为了保证Nginx反代可以正确识别静态资源文件(在Flask项目中,静态资源文件如图片等,都存放在这个目录下)

添加好后,以作者项目为例子,如下图所示:

最后,千万别忘记点击“保存”哦!

2.5宝塔面板放行端口

终于来到最后一步啦!

在这一步,我们需要在宝塔面板中放行我们之前自己设置的端口,例如作者设置的端口就是“8000

  • 在宝塔面板右侧导航栏找到“安全”,点击进入“安全”界面。
  • 在“安全”界面中,找到“添加端口规则”。

 

在“添加端口规则”弹窗处,添加端口号其它参数都不用管默认即可

在这里,作者项目使用的端口是8000,因此在这里就输入8000

2.6在服务器管理后台开放端口

仅仅在宝塔面板放行端口是不够的,因为现在的云服务器厂商都提供一种名为“安全组”的策略,我们还需要在服务器管理后台的“安全组”处开放我们所使用的端口

不同的服务器厂商开放方法不同,不过大差不差,可以百度搜索,或者查看厂商文档即可,很简单

在这里,作者还是给出“华为云”开放安全组端口的步骤:

1.在华为云控制台,点击“安全组

2.找到服务器所使用的安全组,一般来说服务器使用的安全组默认是第一个,即名字为一堆乱码的,不是“default”!

3.点击“入方向规则”,找到“添加规则”按钮,点击进入“添加规则”界面

4.优先级输入“100”,再输入我们的端口号其它参数默认即可

到这里,所有的步骤已经完成啦!!

2.7启动服务器

最后,不要忘记在我们宝塔面板的“网站”处,找到“Python项目”点击启动服务器哦!

给大家上一张,作者个人网站的截图!

祝大家都能部署成功!

三.结语

本篇文章无恰饭!!

无广告!!

使用华为云是真的方便,所以才会着重介绍一下!!

我是真的一粒米也没有收!!!

如果有华为云的工作人员可以看到的话,要是能帮我申请一台免费的云服务器几个月就好啦哈哈哈哈!!(QAQ)

最后,祝大家生活愉快!!

少一点BUG!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年一建报名汇总和常见问题答疑!

2024年一级建造师报名通知全国32个地区均已发布,考试100汇总如下,大家务必及时报名,千万不要错过! ​ 报名问题 01、时间不多了,今年可以先考部分学科吗?分两年考完? 可以的,一建…

视觉SLAM14精讲——相机与图像3.3

视觉SLAM14精讲 三维空间刚体运动1.0三维空间刚体运动1.1三维空间刚体运动1.2李群与李代数2.1相机与图像3.1相机与图像3.2 视觉SLAM14精讲——相机与图像3.3 视觉SLAM14精讲相机投影流程双目相机模型 相机投影流程 至此,有关相机三维刚体变换的所有因素已经汇集。…

朗科HD10M2Pr震撼上市,自带风扇极速降温,匹敌私有云

近日,存储领域的领军企业朗科旗下全资子公司朗科创新宣布,其最新款磁吸硬盘盒HD10M2Pr正式上市。这款产品凭借超薄设计、极速降温、高速传输等多项优势,迅速成为了行业内的讨论焦点。 随着移动设备使用的普及和短视频内容的日益丰富,对于存储空间不断增长的需求逐渐成为日常生活…

react项目中如何书写css

一:问题: 在 vue 项目中,我们书写css的方式很简单,就是在 .vue文件中写style标签,然后加上scope属性,就可以隔离当前组件的样式,但是在react中,是没有这个东西的,如果直…

如何解决windows自动更新,释放C盘更新内存

第一步:首先关闭windows自动更新组件 没有更新windows需求,为了防止windows自动更新,挤占C盘空间,所以我们要采取停止Windows Update服务。按下WinR打开运行对话框,输入services.msc, 然后按Enter。在服务…

数据安全治理全面解析:企业数字化转型的守护者

在数字化时代,数据成为了企业至关重要的资产,这包括敏感的知识产权、商业机密、交易数据,以及与员工、客户和业务合作伙伴有关的所有业务相关数据。这些数据不仅对企业具有极高的价值,同时也吸引了那些企图非法获取利益的不法分子…

连锁餐厅降低员工离职率:发誓!绝不是靠“舌尖上的诱惑”

员工社交与成长,企业福利与文化,沃可趣多维度优化员工体验。 连锁餐饮业在全球范围内迅速发展,要为消费者提供更多便利,2023年中国餐饮市场连锁化率达到21%。 然而,这些分散式门店为企业运营创造了挑战。Black Box I…

微信小程序使用方法

一.在网页注册小程序账号(在未注册的情况下) 1.如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。我们选择 “小程序” 即可。 接着填写账号信息,需要注意的是,…

MATLAB直方图有关的函数

histogram Histogram plot画直方图 histcounts 直方图 bin 计数 histcounts是histogram的主要计算函数。 discretize 将数据划分为 bin 或类别 histogram2 画二元直方图 histcounts2 二元直方图 bin 计数 hist和histc过时了。替换不建议使用的 hist 和 histc 实例 hist → \r…

【C语言】函数指针

首先看一段代码&#xff1a; #include <stdio.h>void test(){printf("hehe\n");}int main(){printf("%p\n", test);printf("%p\n", &test);return 0;} 输出的结果&#xff1a; 输出的是两个地址&#xff0c;这两个地址是 test 函数的…

[Mysql] 的基础知识和sql 语句.教你速成(上)——逻辑清晰,涵盖完整

目录 前言 上篇的内容概况 下篇的内容概况 数据库的分类 关系型数据库 常见的关系型数据库系统 非关系型数据库 1. 键值对数据库&#xff08;Key-Value Stores&#xff09; 特点&#xff1a; 常见的键值对数据库&#xff1a; 2. 文档数据库&#xff08;Document Store…

SpringBootWeb 篇-入门了解 Vue 前端工程的创建与基本使用

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 基于脚手架创建前端工程 1.1 基于 Vue 开发前端项目的环境要求 1.2 前端工程创建的方式 1.2.1 基于命令的方式来创建前端工程 1.2.2 使用图形化来创建前端工程 1.…

最新源支付系统源码 V7版全开源 免授权 附搭建教程

简介&#xff1a; 最新源支付系统源码_V7版全开源_免授权_附详细搭建教程_站长亲测 YPay是专为个人站长打造的聚合免签系统&#xff0c;拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI&#xff0c;让您能更方便快捷地解决知识付费和运营赞助的难题。同时&#xff0c;…

【服务器04】之【Navicat连接阿里云】

通过前三篇文章&#xff0c;现在我们测试可以连接数据库了 点开桌面的 接下找来的主机 地址在以下 登录阿里云 登陆账号后 点击控制台 输入RDS 弹出新页面&#xff0c;并点击运行中的 1 点管理 复制外网地址 鼠标靠近就会出现复制图标 用户名 和 密码 是注册阿里云的高权限账…

Cocos引擎加密方案解析

据2023年数据显示&#xff0c;Cocos引擎全球游戏市场的占有率约为20%&#xff0c;国内手游占有率约为40%&#xff0c;在国内手游市场中&#xff0c;不少热门游戏均为Cocos引擎研发&#xff0c;如《捕鱼达人》、《梦幻西游》、《剑与远征》等。 而在近年来国内火热的小游戏赛道…

Linux内核开发-替换内核

0.前言 上一章&#xff08;点击返回上一章&#xff09;提到如何编译内核源码&#xff0c;本章主要介绍如何将编好的内核替换已有的内核。 1. 替换内核 第1步&#xff1a;查看当前内核版本 cat /proc/version第2步&#xff1a; 查看机器上的内核信息 grep menuentry /boot/…

北森发布2024中国企业校园招聘白皮书,解读校招5大核心要素

随着新一轮技术革命和产业变革的到来&#xff0c;市场竞争日益加剧&#xff0c;企业也正面临着前所未有的挑战与机遇。在这一变革的新时代&#xff0c;人才成为企业在竞争中保持优势、稳步发展的关键因素。当下&#xff0c;青年人才正以其敏锐的时代感知、创新思维和敏捷的新技…

如何在springboot项目中引入knife4j接口文档

开发框架&#xff0c;帮助后端开发人员做后端接口测试 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案 引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>&…

Java基础16(集合框架 List ArrayList容器类 ArrayList底层源码解析及扩容机制)

目录 一、什么是集合&#xff1f; 二、集合接口 三、List集合 四、ArrayList容器类 1. 常用方法 1.1 增加 1.2 查找 int size() E get(int index) int indexOf(Object c) boolean contains(Object c) boolean isEmpty() List SubList(int fromindex,int …

UniApp 开发微信小程序教程(二):下载安装微信开发者工具

文章目录 一、微信开发者工具简介二、下载安装微信开发者工具1. 下载微信开发者工具步骤&#xff1a; 2. 安装微信开发者工具Windows 系统&#xff1a;Mac 系统&#xff1a; 3. 配置微信开发者工具登录微信开发者工具&#xff1a;新建项目&#xff1a; 4. 预览和调试预览&#…