当前位置: 首页 > article >正文

Ubuntu上部署Flask+MySQL项目

一、服务器安装python环境

1、安装gcc(Ubuntu默认已安装)
2、安装python源码
wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz
3、安装Python依赖库
4、配置python豆瓣源

二、服务器安装虚拟环境

1、安装virtualenv
pip3.10 install virtualenv
2、创建虚拟环境
mkdir -p /usr/data/envs
mkdir -p virtualenv /usr/data/envs/nb --python=python3.10
3、激活虚拟环境
source /usr/data/envs/nb/bin/activate

三、uwsgi环境

1、安装
source /usr/data/envs/nb/bin/activate
pip install uwsgi
2、基于uwsgi运行flask项目
cd 项目目录
-命令行的方式
uwsgi --http :8080 --wsgi-file app.py --callable app
-配置文件的方式(推荐)
创建nb_uwsgi.ini文件
[uwsgi]
socket = 127.0.0.1:8001
chdir=项目目录
wsgi-file = app.py
callable = app
processes = 2
virtualenv = /usr/data/envs/nb

启动进程
source /usr/data/envs/nb/bin/activate
uwsgi --ini nb_uwsgi.ini关闭进程
ps -ef | grep nb_uwsgi
ps -ef | grep 进程id

四、Nginx环境

1、安装ngix
sudo apt update
sudo apt install nginx
2、修改配置文件
-普通请求 ->8081端口
-/static ->项目静态资源目录
Nginx的默认配置文件路径 /etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on;
}http {### Basic Settings##sendfile on;tcp_nopush on;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;upstream flask {server 127.0.0.1:8001;}server {listen	80:listen	[::]:80;location /static {alias /root/zjbj_revit_family/EQPlatformServer/static;}location / {uwsgi_pass	falsk;include		uwsgi_params;}}}#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
#
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

3、启动Nginx

  • 启动
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
  • 开机启动
systemctl enable nginx
systemctl start nginx

五、uwsgi开机自启动

vi /etc/systemd/system/uwsgi.service
	[Unit]Description=uWSGI instance to serve myappAfter=network.target[Service]User=rootGroup=rootWorkingDirectory=/root/zjbj_revit_family/EQPlatformServerEnvironment="PATH=/usr/data/envs/nb/bin"ExecStart=/usr/data/envs/nb/bin/uwsgi --ini /root/zjbj_revit_family/EQPlatformServer/nb_uwsgi.ini[Install]WantedBy=multi-user.target
chmod +x /etc/systemd/system/uwsgi.servicesudo systemctl daemon-reload
sudo systemctl enable uwsgi.service
sudo systemctl start uwsgi.service

六、安装MySQL

1、安装MySQL服务
sudo apt update
sudo apt install mysql-server
检查服务状态: sudo systemctl status mysql
创建数据库
CREATE DATABASE IF NOT EXISTS eqplatform CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
2、授权

   创建用户
CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Password123!';授权
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;刷新权限
FLUSH PRIVILEGES;

3、测试:
-远程测试: 配置 MySQL 以允许远程连接
编辑MySQL的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf(或相应的配置文件,具体取决于你的MySQL版本和安装方式),找到bind-address行,并将其值改为0.0.0.0以允许任何地址的连接,或者指定一个特定的IP地址。

4、启动MySQL
5、连接MySQL

七、防火墙开启端口

sudo ufw allow 5000
sudo ufw allow 8080

相关文章:

Ubuntu上部署Flask+MySQL项目

一、服务器安装python环境 1、安装gcc(Ubuntu默认已安装) 2、安装python源码 wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz 3、安装Python依赖库 4、配置python豆瓣源 二、服务器安装虚拟环境 1、安装virtualenv pip3.10 ins…...

落雪音乐Pro 8.8.6 | 内置8条音源,无需手动导入,纯净无广告

洛雪音乐Pro版内置多组稳定音源接口,省去手动导入的繁琐操作,安装即可畅听海量音乐。延续原版无广告的纯净体验,支持歌单推荐与音源切换,满足个性化听歌需求。此版本仅支持在线播放,无法下载音乐,且与原版不…...

什么是全栈?

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点下班 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 📃文章前言 🔷文章均为学习工…...

一些docker命令

一、基础命令 查看 Docker 版本 docker --version 或 docker version:显示 Docker 客户端和服务器的版本信息。 查看 Docker 系统信息 docker info:显示 Docker 系统的详细信息,包括镜像、容器数量、存储驱动类型等。 Docker 服务管理 s…...

《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成

《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成 引言:AI 计算的新曙光 在当今科技飞速发展的时代,人工智能(AI)无疑是最为耀眼的领域之一。从语音助手到自动驾驶,从图像…...

OpenCV实现图像特征提取与匹配

‌一、特征检测与描述子提取‌ ‌选择特征检测器‌ 常用算法包括: ‌ORB‌:一种高效的替代SIFT和SURF的算法,主要用于移动机器人和增强现实等领域。适合实时应用,结合FAST关键点与BRIEF描述子‌。‌SIFT(尺度不变特征变…...

将分支`XXX`合并到远程分支`master

将分支feat-task合并到远程分支master 首先,切换到本地的 master 分支 git checkout master确保你的本地 master 分支是最新的,拉取远程的更新 git pull origin master将 feat-task 分支的代码合并到 master 分支 git merge feat-task如果在合并过程…...

程序化广告行业(13/89):DSP的深入解析与运营要点

程序化广告行业(13/89):DSP的深入解析与运营要点 大家好!一直以来,我都对程序化广告行业保持着浓厚的学习兴趣,在探索的过程中积累了不少心得。今天就想把这些知识分享出来,和大家一起学习进步…...

XML文件格式的简介及如何用Python3处理XML格式对象

诸神缄默不语-个人技术博文与视频目录 文章目录 1. XML格式简介2. 格式化XML文件的工具3. Python处理XML:xml库1. xml.etree.\(c\)ElementTree2. xml.dom.minidom 4. 本文撰写过程中参考的其他网络资料 1. XML格式简介 可扩展标记语言 (Extensible Markup Language…...

通过qemu仿真树莓派系统调试IoT固件和程序

通过qemu仿真树莓派系统调试IoT固件和程序 本文将介绍如何使用 QEMU 模拟器在 x86 架构的主机上运行 Raspberry Pi OS(树莓派操作系统)。我们将从下载镜像、提取内核和设备树文件,到启动模拟环境,并进行一些常见的操作&#xff0…...

Oracle底层原理解析

Oracle 解析 1、union \ union all \ Intersect \ Minus内部处理机制(优化) 当查询语句中的where子句中使用到or时,可以用union all来代替。因为使用or查询语句的时候,引起全表扫描,并走索引查询 特别:当…...

深度解读DeepSeek部署使用安全(48页PPT)(文末有下载方式)

深度解读DeepSeek:部署、使用与安全 详细资料请看本解读文章的最后内容。 引言 DeepSeek作为一款先进的人工智能模型,其部署、使用与安全性是用户最为关注的三大核心问题。本文将从本地化部署、使用方法与技巧、以及安全性三个方面,对Deep…...

【前端三剑客】万字总结JavaScript

一、初识JavaScript 1.1 JavaScript 的作用 表单动态校验(密码强度检测) ( JS 产生最初的目的 )网页特效服务端开发(Node.js)桌面程序(Electron)App(Cordova)控制硬件-物联网(Ruff)游戏开发(cocos2d-js) 1.2 HTML/CSS/JS 的关系…...

【哈希表与字符串的算法之路:思路与实现】—— LeetCode

文章目录 两数之和面试题01.02.判定是否为字符重排存在重复元素存在重复元素||字母异位词分组最长公共前缀和最长回文子串二进制求和字符串相乘 两数之和 这题的思路很简单,在读完题目之后,便可以想到暴力枚举,直接遍历整个数组两遍即可&…...

基于Android的记事本APP设计与实现:从需求分析到功能实现(超级简单记事本,附源码+文档报告)

基于Android的记事本APP设计与实现:从需求分析到功能实现 (以前大学课堂作业,抄在这里当个回忆吧) 引言 随着社会的不断进步,信息化建设不断发展,电子文字输入在生活、学习、工作中占有越来越重要的作用…...

eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN侧uplink接口、FE接口、GE接口介绍

路由器常见接口的详细介绍及其应用示例: 1. CON/AUX 接口 全称:Console/Auxiliary(控制台/辅助接口)作用: CON(Console):通过命令行界面(CLI)直接配置路由器…...

Hello Mr. My Yesterday日文歌词附假名注音,祭奠逝去的青春

hello mr. my yesterday Hundred Percent Free Hello Mr. my yesterday云っておくれよ “夢叶うその瞬間にまた逢える”と 前方の幾多前途多難の未知 後方の道後悔も知った 経験と価値 夢なかば 一本の道結果だが ひとつだけ知りたいよ 神様がいるのなら “幸せの定義っ…...

ubuntu ollama+dify实践

安装ollama 官网的指令太慢了,使用以下指令加速: export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download" curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/dow…...

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例 前期概要: S7-1200 G2必须基于TIA博途V20,之前的程序可通过移植的方式在新硬件上使用。 该移植工具可自动将TIA Portal 项目从 S7-1200 移植到更新的S7-1200 G2。 注意: 该插件支持在同一TIA Portal项目实例内将软件和/或硬…...

新办公室哪款空气净化器除甲醛效果好?高效除甲醛,提升效率

现代办公环境中,空气质量对员工的健康与工作效率产生着不可忽视的影响。尤其是新装修的办公室,往往因为空气中的甲醛浓度超标而导致一系列健康问题。因此,选择一款性能优越的除甲醛空气净化器就显得尤为重要。合适的空气净化器不仅可以有效过…...

塑造企业数字化形象:企业信息化UI界面设计的关键要素

引言 在数字化转型的大潮中,企业信息化系统的UI(用户界面)界面设计不仅是技术实现的最后一环,更是塑造企业数字化形象、提升用户体验、增强业务效率的重要手段。优秀的UI设计能够直观展现企业价值观,提升用户粘性&…...

大视频背景暗黑风格的wordpress企业主题免费下载

整体风格是黑色的,首页首屏大视频背景,动态效果非常好。向下滚动时,滚动的特效也不错。 原文 https://www.bixugao.com/wp/26.html...

CUDA编程之内存零拷贝技术

一、实现原理 零拷贝内存通过将‌主机锁页内存‌直接映射到设备地址空间,实现CPU与GPU共享内存,避免显式数据拷贝‌。锁页内存通过cudaHostAlloc或cudaHostRegister分配,确保物理地址固定且不被操作系统换页,从而支持DMA&#xff…...

C语言基础知识04

指针 指针概念 指针保存地址,地址是字节的编号 指针类型和保存的地址类型要一直 使用时注意,把地址转换为&变量的格式来看 int a[3]; a转为&a[0] 指针的大小 64bit 固定8字节, 32bit 固定4字节 指针…...

在 Java 中,== 和 equals 的区别

1. 运算符 作用:比较两个对象的 内存地址(引用类型)或 值(基本数据类型)。 适用场景: 基本数据类型(int, char, boolean 等):直接比较值是否相等。 引用类型&#xff…...

Qt开发:QtWebEngine中操作选择文本

查找选择 在QtWebEngine中,可以使用QWebEnginePage的findText方法来查找文本,查找成功以后,将自动选择当前文本。 QWebEnginePage可以通过QWebEngineView的page()来取得。 比如,如下代码可以在页面中查找hello,world并选择。 …...

VUE的脚手架搭建引入类库

VUE的小白脚手架搭建 真的好久好久自己没有发布自己博客了,对于一直在做后端开发的我 ,由于社会卷啊卷只好学习下怎么搭建前端,一起学习成长吧~哈哈哈(最终目的,能够懂并简易开发) 文章目录 VUE的小白脚手架搭建1.下载node.js2.安装vue脚手架3.创建一个项目4.代码规范约束配置(…...

分布式系统日志排查综合场景

排查背景 在一个大型分布式电商系统中,用户反馈在进行商品结算时出现了报错。系统由多个子系统构成,包括商品管理系统、订单系统、支付系统等,各子系统分布在不同服务器上,且日志文件分散存储。 排查过程 确定当前位置并切换到可…...

android lmkd.rc 介绍

service service lmkd /system/bin/lmkdclass coreuser lmkdgroup lmkd system readproccapabilities DAC_OVERRIDE KILL IPC_LOCK SYS_NICE SYS_RESOURCEcriticalsocket lmkd seqpacketpasscred 0660 system systemtask_profiles ServiceCapacityLow属于核心服务组&#xff0…...

Android Studio执行Run操作报Couldn‘t terminate previous instance of app错误

步骤1、在项目根目录下build.gradle文件最后添加如下内容 //自定义任务名&#xff1a;assembleAndInstall tasks.register(assembleAndInstall, Exec.class, new Action<Exec>() {Overridevoid execute(Exec exec) {//设置自定义任务组名exec.setGroup(custom task)//当…...