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

Flask 与 Django 服务器部署

一、引言

在 Web 开发领域,Flask 和 Django 是 Python 生态中最受欢迎的两个 Web 框架。Flask 以其轻量级和灵活性著称,适合快速开发小型应用和 API;而 Django 则提供了全面的功能套件,包括 ORM、管理界面和认证系统,适合构建大型复杂的 Web 应用。然而,将这些框架开发的应用部署到生产环境并确保其稳定运行并非易事。本文将详细介绍 Flask 和 Django 服务器的多种部署方式,涵盖从开发环境到生产环境的全流程,帮助开发者根据不同需求选择最合适的部署方案。

二、基础环境准备

2.1 Python 环境配置

无论是 Flask 还是 Django,首先需要配置 Python 环境。建议使用 Python 3.7 及以上版本,因为这些版本提供了更好的性能和新特性支持。

# 检查Python版本
python --version  # 或python3 --version# 安装pip(Python包管理工具)
sudo apt install python3-pip  # Ubuntu/Debian
brew install python3  # macOS (使用Homebrew)

2.2 虚拟环境创建

使用虚拟环境可以隔离项目依赖,避免不同项目之间的包冲突。

# 安装virtualenv
pip install virtualenv# 创建虚拟环境
virtualenv myenv  # Windows
python3 -m venv myenv  # Linux/macOS# 激活虚拟环境
myenv\Scripts\activate  # Windows
source myenv/bin/activate  # Linux/macOS# 退出虚拟环境
deactivate

2.3 项目依赖安装

在虚拟环境中安装 Flask 或 Django 以及项目所需的其他依赖。

# 安装Flask
pip install flask# 安装Django
pip install django

三、Flask 服务器部署方式

3.1 开发环境部署(不推荐生产环境)

Flask 自带一个简单的 Web 服务器,通过app.run()即可启动。这在开发阶段非常方便,但由于其性能和安全性限制,不适合用于生产环境。

# app.py
from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(debug=True)  # 开发模式,自动重载代码

启动服务器:

python app.py

3.2 使用 Gunicorn 部署(生产环境推荐)

Gunicorn 是一个 Python WSGI HTTP 服务器,专为 UNIX 系统设计,能够处理大量并发请求,是 Flask 应用生产部署的理想选择。

3.2.1 安装 Gunicorn
pip install gunicorn
3.2.2 启动 Flask 应用
gunicorn -w 4 -b 0.0.0.0:8000 app:app

参数说明:

  • -w 4:启动 4 个工作进程
  • -b 0.0.0.0:8000:绑定到所有可用 IP 的 8000 端口
  • app:app:第一个app是 Python 文件名,第二个app是 Flask 应用实例名
3.2.3 配置系统服务(Systemd)

为了确保 Flask 应用在服务器重启后自动启动,并在崩溃时能够自动恢复,可以创建一个 Systemd 服务文件。

sudo nano /etc/systemd/system/flask_app.service

添加以下内容:

[Unit]
Description=Gunicorn instance to serve Flask app
After=network.target[Service]
User=your_username  # 替换为你的用户名
Group=www-data
WorkingDirectory=/path/to/your/app  # 替换为项目路径
Environment="PATH=/path/to/your/venv/bin"  # 替换为虚拟环境路径
ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 app:app[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl start flask_app
sudo systemctl enable flask_app

3.3 使用 Nginx + Gunicorn 部署

Nginx 是一个高性能的反向代理服务器,可以处理静态文件、负载均衡,并将请求转发给 Gunicorn 处理。这种组合方式能够充分发挥两者的优势,提高应用的性能和稳定性。

3.3.1 安装 Nginx
# Ubuntu/Debian
sudo apt install nginx# CentOS/RHEL
sudo yum install nginx# macOS (使用Homebrew)
brew install nginx
3.3.2 配置 Nginx

创建一个新的 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/flask_app

添加以下内容:

server {listen 80;server_name your_domain_or_ip;  # 替换为你的域名或IP地址location / {proxy_pass http://127.0.0.1:8000;  # Gunicorn服务器地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

启用配置文件:

sudo ln -s /etc/nginx/sites-available/flask_app /etc/nginx/sites-enabled/
sudo nginx -t  # 检查配置语法
sudo systemctl restart nginx

3.4 使用 Docker 容器部署

Docker 可以将应用及其依赖打包成一个独立的容器,确保应用在不同环境中的一致性,简化部署流程。

3.4.1 创建 Dockerfile

在项目根目录下创建Dockerfile

# 使用Python官方镜像作为基础
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# 复制项目文件
COPY . .# 暴露端口
EXPOSE 8000# 启动命令
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]
3.4.2 构建 Docker 镜像
docker build -t flask-app .
3.4.3 运行 Docker 容器
docker run -d -p 8000:8000 flask-app

3.5 使用 Docker Compose 部署

Docker Compose 可以同时管理多个 Docker 容器,适合部署包含多个服务的应用。

3.5.1 创建 docker-compose.yml
version: '3'services:web:build: .command: gunicorn -w 4 -b 0.0.0.0:8000 app:appvolumes:- .:/appports:- "8000:8000"environment:- FLASK_ENV=production
3.5.2 启动服务
docker-compose up -d

3.6 使用 AWS Elastic Beanstalk 部署

AWS Elastic Beanstalk 是 AWS 提供的一种完全托管的服务,可以轻松部署、管理和扩展 Web 应用。

3.6.1 安装 EB CLI
pip install awsebcli
3.6.2 初始化项目
eb init -p python-3.9 flask-app --region us-west-2
3.6.3 创建环境并部署
eb create flask-env

3.7 使用 Heroku 部署

Heroku 是一个云平台即服务 (PaaS),支持多种编程语言,可以快速部署应用。

3.7.1 安装 Heroku CLI
# Ubuntu/Debian
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh# macOS (使用Homebrew)
brew tap heroku/brew && brew install heroku
3.7.2 登录 Heroku
heroku login
3.7.3 创建 Heroku 应用
heroku create flask-app
3.7.4 部署应用
git push heroku main

四、Django 服务器部署方式

4.1 开发环境部署

Django 自带一个开发服务器,可以通过以下命令启动:

python manage.py runserver

这在开发阶段非常方便,但同样不适合生产环境。

4.2 使用 Gunicorn 部署

与 Flask 类似,Django 也可以使用 Gunicorn 作为 WSGI 服务器。

4.2.1 安装 Gunicorn
pip install gunicorn
4.2.2 启动 Django 应用
gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:application

其中myproject是你的 Django 项目名称。

4.3 使用 Nginx + Gunicorn 部署

与 Flask 的配置类似,但需要额外配置静态文件处理。

4.3.1 收集静态文件
python manage.py collectstatic
4.3.2 配置 Nginx
server {listen 80;server_name your_domain_or_ip;# 静态文件配置location /static/ {root /path/to/your/project;  # 替换为你的项目路径}# 动态请求转发到Gunicornlocation / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

4.4 使用 Docker 容器部署

4.4.1 创建 Dockerfile
FROM python:3.9-slimWORKDIR /appCOPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txtCOPY . .# 收集静态文件
RUN python manage.py collectstatic --noinputEXPOSE 8000CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "myproject.wsgi:application"]
4.4.2 构建和运行容器
docker build -t django-app .
docker run -d -p 8000:8000 django-app

4.5 使用 Docker Compose 部署

4.5.1 创建 docker-compose.yml
version: '3'services:web:build: .command: gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:applicationvolumes:- .:/appports:- "8000:8000"environment:- DJANGO_SETTINGS_MODULE=myproject.settings.production
4.5.2 启动服务
docker-compose up -d

4.6 使用 AWS Elastic Beanstalk 部署

4.6.1 创建配置文件

在项目根目录下创建.ebextensions目录,并添加配置文件:

# .ebextensions/django.config
option_settings:aws:elasticbeanstalk:container:python:WSGIPath: myproject.wsgi:applicationaws:elasticbeanstalk:environment:proxy:staticfiles:/static: static/
4.6.2 部署应用
eb init -p python-3.9 django-app --region us-west-2
eb create django-env

4.7 使用 Heroku 部署

4.7.1 创建 Procfile

在项目根目录下创建Procfile

web: gunicorn myproject.wsgi --log-file -
4.7.2 部署应用
heroku create django-app
git push heroku main

五、数据库部署与配置

5.1 SQLite

SQLite 是 Django 的默认数据库,适合小型应用和开发环境。

# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}

5.2 PostgreSQL

PostgreSQL 是一个功能强大的开源关系型数据库,适合生产环境。

5.2.1 安装 PostgreSQL
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib# macOS (使用Homebrew)
brew install postgresql
5.2.2 创建数据库和用户
sudo -u postgres psql
CREATE DATABASE mydb;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
\q
5.2.3 配置 Django
# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'mydb','USER': 'myuser','PASSWORD': 'mypassword','HOST': 'localhost','PORT': '5432',}
}

5.3 MySQL

MySQL 也是一个流行的关系型数据库,适合生产环境。

5.3.1 安装 MySQL
# Ubuntu/Debian
sudo apt install mysql-server# macOS (使用Homebrew)
brew install mysql
5.3.2 创建数据库和用户
mysql -u root -p
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
5.3.3 配置 Django
# settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'mydb','USER': 'myuser','PASSWORD': 'mypassword','HOST': 'localhost','PORT': '3306','OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",},}
}

六、HTTPS 配置

6.1 使用 Let's Encrypt 获取免费 SSL 证书

Certbot 是一个自动化工具,可以帮助我们获取和安装 Let's Encrypt SSL 证书。

6.1.1 安装 Certbot
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx# macOS (使用Homebrew)
brew install certbot
6.1.2 获取证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
6.1.3 自动续期
sudo certbot renew --dry-run

6.2 配置 Nginx 使用 SSL

server {listen 80;server_name yourdomain.com www.yourdomain.com;return 301 https://$host$request_uri;
}server {listen 443 ssl;server_name yourdomain.com www.yourdomain.com;ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;# 其他配置保持不变location / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

七、性能优化

7.1 配置 Gunicorn 工作进程数

Gunicorn 的工作进程数对性能有很大影响,一般推荐的计算公式为:2 * CPU核心数 + 1

gunicorn -w $(($(nproc) * 2 + 1)) -b 0.0.0.0:8000 app:app

7.2 使用缓存

Django 支持多种缓存后端,可以显著提高应用性能。

7.2.1 配置 Memcached
# settings.py
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': '127.0.0.1:11211',}
}
7.2.2 页面缓存示例
from django.views.decorators.cache import cache_page@cache_page(60 * 15)  # 缓存15分钟
def my_view(request):# 视图逻辑return HttpResponse("Hello, World!")

7.3 数据库查询优化

优化数据库查询可以减少响应时间。

7.3.1 使用 select_related 和 prefetch_related
# 减少数据库查询次数
books = Book.objects.select_related('author').all()
7.3.2 使用索引

在经常用于过滤和排序的字段上添加索引。

class Book(models.Model):title = models.CharField(max_length=100)author = models.ForeignKey(Author, on_delete=models.CASCADE)publication_date = models.DateField()class Meta:indexes = [models.Index(fields=['publication_date']),]

八、监控与日志

8.1 日志配置

配置 Django 日志记录,以便在出现问题时能够快速定位。

# settings.py
LOGGING = {'version': 1,'disable_existing_loggers': False,'handlers': {'file': {'level': 'ERROR','class': 'logging.FileHandler','filename': '/var/log/django/error.log',},},'loggers': {'django': {'handlers': ['file'],'level': 'ERROR','propagate': True,},},
}

8.2 使用 Sentry 监控

Sentry 是一个开源的错误跟踪工具,可以帮助我们实时监控应用中的错误。

8.2.1 安装 Sentry SDK
pip install sentry-sdk
8.2.2 配置 Sentry
# settings.py
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegrationsentry_sdk.init(dsn="https://your-dsn@sentry.io/your-project-id",integrations=[DjangoIntegration()],traces_sample_rate=1.0,send_default_pii=True
)

8.3 使用 Prometheus 和 Grafana 监控

Prometheus 是一个开源监控系统,Grafana 是一个可视化工具,两者结合可以实现强大的监控功能。

8.3.1 安装 Prometheus 和 Grafana
# 使用Docker安装
docker run -d -p 9090:9090 prom/prometheus
docker run -d -p 3000:3000 grafana/grafana
8.3.2 配置 Django 导出指标
pip install django-prometheus
# settings.py
INSTALLED_APPS = ['django_prometheus',# 其他应用
]MIDDLEWARE = ['django_prometheus.middleware.PrometheusBeforeMiddleware',# 其他中间件'django_prometheus.middleware.PrometheusAfterMiddleware',
]

九、安全配置

9.1 生产环境安全设置

# settings.py
DEBUG = False  # 关闭调试模式
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']  # 允许的域名# 安全相关设置
SECURE_SSL_REDIRECT = True  # 重定向HTTP到HTTPS
SESSION_COOKIE_SECURE = True  # 使用HTTPS传输session cookie
CSRF_COOKIE_SECURE = True  # 使用HTTPS传输CSRF cookie
SECURE_HSTS_SECONDS = 31536000  # HSTS头设置
SECURE_HSTS_INCLUDE_SUBDOMAINS = True  # 包含子域名
SECURE_HSTS_PRELOAD = True  # 允许HSTS预加载

9.2 防火墙配置

使用 ufw 配置防火墙,只开放必要的端口。

# 允许SSH
sudo ufw allow 22# 允许HTTP和HTTPS
sudo ufw allow 80
sudo ufw allow 443# 启用防火墙
sudo ufw enable

9.3 定期更新系统和依赖

# Ubuntu/Debian
sudo apt update
sudo apt upgrade# macOS (使用Homebrew)
brew update
brew upgrade

十、部署策略比较

10.1 各种部署方式的优缺点

部署方式优点缺点适用场景
开发服务器简单易用,适合快速开发和测试性能差,不安全,不适合生产环境开发和测试阶段
Gunicorn性能较好,配置简单不能处理静态文件,需要配合 Nginx 使用中小规模应用
Nginx + Gunicorn性能优秀,能处理静态文件和负载均衡配置复杂生产环境
Docker环境隔离,部署一致性好,易于扩展需要一定的 Docker 知识云原生应用
Docker Compose管理多个容器,适合微服务架构比单一容器复杂包含多个服务的应用
AWS Elastic Beanstalk完全托管,自动扩展,简化部署依赖 AWS 平台,成本较高企业级应用
Heroku快速部署,支持自动扩展免费版有资源限制,长期使用成本较高快速验证和小型应用

10.2 如何选择合适的部署方式

  • 小型应用或个人项目:可以选择 Heroku 或 Docker,快速部署且成本较低。
  • 中等规模应用:推荐使用 Nginx + Gunicorn 或 Docker,性能和可维护性较好。
  • 大型企业级应用:可以考虑 AWS Elastic Beanstalk 或 Kubernetes,提供全面的管理和扩展能力。

十一、总结

部署 Flask 和 Django 服务器有多种方式,每种方式都有其适用场景和优缺点。在实际项目中,需要根据应用规模、性能需求、预算和团队技术栈等因素选择合适的部署方案。本文详细介绍了从开发环境到生产环境的多种部署方式,包括基础环境准备、服务器配置、数据库部署、HTTPS 配置、性能优化、监控日志和安全配置等方面的内容,希望能帮助开发者顺利部署和管理自己的 Web 应用。

十二、参考文献

  1. Flask 官方文档:Welcome to Flask — Flask Documentation (3.1.x)
  2. Django 官方文档:Django documentation | Django documentation | Django
  3. Gunicorn 官方文档:Gunicorn - Python WSGI HTTP Server for UNIX
  4. Nginx 官方文档:nginx
  5. Docker 官方文档:https://docs.docker.com/
  6. AWS Elastic Beanstalk 文档:https://docs.aws.amazon.com/elasticbeanstalk/
  7. Heroku 官方文档:Heroku Dev Center
  8. Let's Encrypt 官方文档:Let's Encrypt
  9. Prometheus 官方文档:Prometheus - Monitoring system & time series database
  10. Grafana 官方文档:Technical documentation | Grafana Labs

相关文章:

Flask 与 Django 服务器部署

一、引言 在 Web 开发领域,Flask 和 Django 是 Python 生态中最受欢迎的两个 Web 框架。Flask 以其轻量级和灵活性著称,适合快速开发小型应用和 API;而 Django 则提供了全面的功能套件,包括 ORM、管理界面和认证系统,…...

Python:操作Excel按行写入

Python按行写入Excel数据,5种实用方法大揭秘! 在日常的数据处理和分析工作中,我们经常需要将数据写入到Excel文件中。Python作为一门强大的编程语言,提供了多种库和方法来实现将数据按行写入Excel文件的功能。本文将详细介绍5种常见的Python按行写入Excel数据的方法,并附上…...

架构演变 -单体到云原生

软件架构的演变是随着技术发展、业务需求和硬件条件的变化而不断迭代的过程。以下是从单体架构到现代云原生架构的典型演变路径及关键阶段特点: 一、单体架构(Monolithic Architecture) 时间阶段:2000 年代前 特点: …...

VSCode 安装教程

访问官网 Visual Studio Code 官网 打开下载的exe文件 选一个安装位置 创建桌面快捷方式 (D) 在桌面生成 VSCode 的快捷图标,方便快速启动程序。 将 “通过 Code 打开” 操作添加到 Windows 资源管理器文件上下文菜单 右键点击文件时,菜单中会新增 “通…...

开源表单设计器FcDesigner配置多语言教程

开源低代码表单设计器FcDesigner中提供了强大的多语言支持功能,允许开发者在表单中实现一键式语言切换。在现代业务应用中,多语言支持是一项基本需求,尤其在国际化产品中。 源码地址: Github | Gitee | 文档 | 在线演示 设计器中配置多语言…...

ONIE安装NOS操作说明

ONIE 安装 NOS 操作说明 1. ONIE 简介 ONIE(Open Network Install Environment)是开放网络设备的出厂预装环境,类似于服务器的PXE/BIOS,主要用于自动或手动安装网络操作系统(NOS,如SONiC、Cumulus、FBOSS等…...

fastadmin 数据导出,设置excel行高和限制图片大小

fastadmin默认导出图片全部都再一块,而且不在单元格里 话不多说,上代码 修改文件的路径: /public/assets/js/require-table.js exportOptions: {fileName: export_ Moment().format("YYYY-MM-DD"),preventInjection: false,mso…...

仿腾讯会议——音频服务器部分

1、中介者定义处理音频帧函数 2、 中介者实现处理音频帧函数 3、绑定函数映射 4、服务器定义音频处理函数 5、 服务器实现音频处理函数...

国产化替代对金融行业有哪些影响?如何应对?

在全球产业链重构与科技自主创新的时代背景下,国产化替代已从技术领域的局部探索,升级为金融行业应对复杂外部环境、夯实发展根基的战略选择。作为国家核心竞争力的重要组成部分,金融行业长期依赖国外技术设备的传统模式正面临安全性、可控性…...

包装类(1)

1.包装类的分类 1.针对八种基本数据类型相应的引用类型--包装类 2.有了类的特点,就可以调用类中的方法. 基本数据类型. 包装类 例: 手动装箱 int->Integer 手动执箱 Integer->int 注:jdk5后就可以自动装箱和拆箱 2.包装类和基本数据的转换 (1)jdk5前的…...

java中如何优雅处理多租户系统的查询?

多租户系统通常是指一个应用服务多个客户(租户),每个租户的数据需要隔离,确保数据安全和隐私。处理这样的系统需要考虑数据隔离、查询效率、代码的可维护性等方面。 首先,我应该明确多租户的实现方式。常见的多租户数据…...

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践

Ubuntu服务器部署多语言项目(Node.js/Python)方式实践 服务器脚本运行方式命令行直接执行nohup后台执行进程 Screen概述安装基本操作命令启动 Screen退出当前会话(不终止进程)查看所有会话重连会话关闭会话 常用快捷键典型使用场景…...

【MySQL】基础操作

MySQL(二)基础操作 一、数据库操作 1.创建库 2.查看库 3.选中库 4.删除库 二、表操作 1.创建表 1.1[comment 注释]: 1.2,...: 2.查看表 2.1查看所有表 2.2查看表结构 3.删除表 三、记录操作 1.插入记录 1.1全列插入 1.2指定列插入 1.3…...

在 Java MyBatis 中遇到 “操作数类型冲突: varbinary 与 float 不兼容” 的解决方法

在 MyBatis 中遇到 “操作数类型冲突: varbinary 与 float 不兼容” 错误,通常是因为当字段值为 null 时,MyBatis 无法正确推断其 JDBC 类型,导致向数据库传递 null 值时类型不匹配。以下是原因分析和解决方案: 问题原因 未指定 j…...

课题推荐——扩展卡尔曼滤波(EKF)估计pmsm的位置误差

扩展卡尔曼滤波(EKF)是一种常用于非线性系统状态估计的方法,特别适用于永磁同步电机(PMSM)的位置和速度估计。EKF可以实时估计电机的转子位置误差(与实际转子位置的偏差),从而提高控…...

elasticsearch之记录es7.17升级8.17 springboot2.7.0 程序改造坑

es7.17升级8.x问题目录 一、硬件安装1-1. centos7 服务器上,删除elasticsearch7.17,安装es8.17 二、 程序改造2-1. Java API Client 8.17.52-2. 依赖引入2-3. 配置文件2-4. Java 配置类 三、根据 Elasticsearch 集群信息(版本 8.17.2&#xf…...

SpringBoot+ELK 搭建日志监控平台

ELK 简介 ELK(Elasticsearch, Logstash, Kibana)是一个目前主流的开源日志监控平台。由三个主要组件组成的: Elasticsearch: 是一个开源的分布式搜索和分析引擎,可以用于全文检索、结构化检索和分析,它构建…...

家庭数字生态构建实战:基于飞牛fnOS的智能家居数据中台搭建全流程解析

文章目录 前言1. VMware安装飞牛云(fnOS)1.1 打开VMware创建虚拟机1.3 初始化系统 2. 安装Cpolar工具3. 配置远程访问地址4. 远程访问飞牛云NAS5. 固定远程访问地址 前言 在数字生活时代,数据管理正成为每个家庭的刚需。今天要向大家重点推荐…...

博客系统功能测试

博客系统网址:http://8.137.19.140:9090/blog_list.html 主要测试内容 功能测试、界面测试、性能测试、易用性测试、安全测试、兼容性测试、弱网测试、安装卸载测试、压力测试… 测试方法及目的 利用selenium和python编写测试脚本,对博客系统进行的相关…...

抽奖相关功能测试思路

1. 抽奖系统功能测试用例设计(登录 每日3次 中奖40% 道具兑换码) ✅ 功能点分析 必须登录后才能抽奖每天最多抽奖3次抽奖有 40% 概率中奖中奖返回兑换码 ✅ 测试用例设计 编号 用例描述 前置条件 操作 预期结果 TC01 未登录时抽奖 未登录 …...

paddle ocr本地化部署进行文字识别

一、Paddle 简介 1. 基本概念 Paddle(全称 PaddlePaddle,飞桨)是百度开发的 开源深度学习平台,也是中国首个自主研发、功能丰富、技术领先的工业级深度学习平台。它覆盖了深度学习从数据准备、模型训练、模型部署到预测的全流程…...

在CentOS系统上部署GitLabRunner并配置CICD自动项目集成!

在CentOS系统上部署GitLabRunner并配置CICD自动项目集成 在CentOS系统上部署GitLab Runner并配置CI/CD自动项目集成GitLab CI/CD是一个强大的持续集成和持续部署工具,能够显著提高开发团队的效率。 本文将详细介绍如何在CentOS系统上部署GitLab Runner&#xff0c…...

python学习day2(未写完,明天继续补充)

今天主要学习了变量的数据类型,以及如何使用格式化符号进行输出。 一、认识数据类型 在python里为了应对不同的业务需求,也把数据分为不同的类型。 代码如下: """ 1、按类型将不同的变量存储在不同的类型数据 2、验证这些…...

深度强化学习框架DI-engine

深度强化学习框架DI-engine 一、DI-engine概述:决策智能的通用引擎 DI-engine是由OpenDILab开源的决策智能引擎,基于PyTorch和JAX构建,旨在为强化学习(RL)、模仿学习(IL)、离线学习等场景提供…...

gitlab迁移

需求:需要将A服务器上的 gitlab 迁移到B服务器上,均使用docker 部署 一、备份数据 进入到A服务器的 gitlab 的容器中,运行gitlab-rake gitlab:backup:create 该命令会在 /var/opt/gitlab/backups/ 目录下创建一个xxx_gitlab_backup.tar 压缩…...

UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview---33.2.6 Strings

33.2.6 Strings UEFI 环境中的 string 是使用 UCS-2 格式定义,每个字符由 16bit 数据表示。对于用户界面,strings 也是一种可以安装到 HIIdatabase 的一种数据。 为了本土化,每个 string 通过一个唯一标识符来识别,而每一个标识…...

如何确保低空经济中的数据安全?

低空经济涉及大量敏感数据,如无人机的飞行轨迹、拍摄的地理图像和视频等。为确保这些数据的安全,可从以下几方面着手: 加强数据加密 传输加密 :采用 SSL/TLS 等加密协议,对数据在传输过程中进行加密,防止…...

在linux平台下利用mingw64编译windows程序

背景 笔者平时都是基于linux平台开发C代码,已经熟悉使用CMake这一套工具上一次开发windows应用程序还要追溯到10多年前,彼时还是使用微软的visual studio这个IDE,这个IDE确实也很强大,但也确实很笨重,当时用起来也很不…...

虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?

虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡? code review! 参考笔记: 1.虚幻引擎5-Unreal Engine笔记之GameMode、关卡(Level) 和 关卡蓝图(Level Blueprint)的关系 2.虚幻引擎…...

[IMX] 04.定时器 - Timer

目录 1.周期中断定时器 - EPIT 1.1.工作模式 1.2.配置寄存器 - EPIT_CR 1.3.状态寄存器 - EPIT_SR 1.4.加载寄存器 - EPIT_LR 1.5.比较寄存器 - EPIT_CMPR 1.6.计数寄存器 - EPIT_CNR 2.通用定时器 - GPT 2.1. 时钟源 2.2.模块结构 2.3.工作模式 2.4.配置寄存器 - …...

前端 vue + element-ui 框架从 0 - 1 搭建

1. 安装node 地址: Node.js — 在任何地方运行 JavaScript 2. 安装 vue 2.1 执行安装命令 npm uninstall -g vue-cli npm install -g vue/cli 安装最新的vue3版本 2.2 使用vue 脚手架 搭建项目 vue create project_name 2.2.1 注意 项目名称不能包…...

【IDEA】删除/替换文件中所有包含某个字符串的行

目录 前言 正则表达式 示例 使用方法 前言 在日常开发中,频繁地删除无用代码或清理空行是不可避免的操作。许多开发者希望找到一种高效的方式,避免手动选中代码再删除的繁琐过程。 使用正则表达式是处理字符串的一个非常有效的方法。 正则表达式 …...

算法刷题(Java与Python)2.数组、列表

目录 Java的数组 数组介绍 注意事项 Python的列表 列表介绍 Python 的列表和 Java 的 ArrayList 一样吗? 例题1 代码分析 Java代码 Python代码 对比代码 例题2 代码分析 Java代码 Python代码 对比代码 例题三 Java代码 Python代码 代码对比 Jav…...

uniapp打包H5,输入网址空白情况

由于客户预算有限,最近写了两个uniapp打包成H5的案例,总结下面注意事项 1. 发行–网站-PCWeb或手机H5按钮,输入名称,网址 点击【发行】,生成文件 把这个给后端,就可以了 为什么空白呢 最重要一点&#xf…...

JavaScript 中使用 Elasticsearch 的正确方式,第一部分

作者:来自 Elastic Jeffrey Rengifo 讲解如何用 JavaScript 创建一个可用于生产环境的 Elasticsearch 后端。 想获得 Elastic 认证?看看下一期 Elasticsearch 工程师培训什么时候开始吧! Elasticsearch 拥有大量新功能,能帮助你…...

每日一道leetcode(增加版)

901. 股票价格跨度 - 力扣(LeetCode) 题目 设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今…...

排序复习/下(C语言版)

目录 1.快速排序(hoare法) 单趟: 整体: 代码优化: ​编辑三数取中代码: 小区间优化代码: hoare法疑问解答: 2.快速排序(挖坑法) 3.快速排序&#x…...

Vue百日学习计划Day33-35天详细计划-Gemini版

总目标: 在 Day 33-35 理解 Vue 组件从创建到销毁的完整生命周期,熟练掌握 Composition API 中主要的生命周期钩子,并知道在不同阶段执行哪些操作。 所需资源: Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html你…...

Apidog MCP服务器,连接API规范和AI编码助手的桥梁

#作者:曹付江 文章目录 1.了解 MCP2.什么是 Apidog MCP 服务器?3.Apidog MCP 服务器如何工作4.利用人工智能改变开发工作流程5.设置 Apidog MCP 服务器: 分步指南5.高级功能和提示5.1 使用 OpenAPI 规范5.2.多个项目配置5.3.安全最佳实践5.4…...

统计客户端使用情况,使用es存储数据,实现去重以及计数

这篇文件的重点在tshark、filebeat、和logstash。 需求:统计客户使用的客户端版本 实现工具:tshark 1.10.14,filebeat 8.17.0,logstash 8.17.0,elasticsearch 8.17.0,kibana 8.17.0 总体设计&#xff1a…...

Git基础面试题

git的rm命令与系统的rm命令有什么区别 git rm 和系统的 rm (在 Windows 上是 del) 命令都用于删除文件,但它们在 Git 仓库的上下文中作用有所不同: 系统 rm (或 del) 命令: 作用: 直接从文件系统中删除文件。Git 的感知&#xff…...

conda 的常用命令

好的,下面为你介绍conda的常用命令: 环境管理 # 创建新环境 conda create -n env_name python3.8# 激活环境 conda activate env_name# 查看所有环境 conda env list# 复制环境 conda create -n new_env --clone old_env# 删除环境 conda remove -n en…...

PLC双人舞:profinet转ethernet ip网关奏响施耐德与AB的协奏曲

PLC双人舞:ethernet ip转profinet网关奏响施耐德与AB的协奏曲 案例分析:施耐德PLC与AB PLC的互联互通 在现代工业自动化中,设备之间的互联互通至关重要。本案例旨在展示如何通过北京倍讯科技的EtherNet/IP转Modbus网关,将施耐德P…...

百度OCR:证件识别

目录 一、编写目的 二、准备工作 2.1 OCR密钥 三、代码实现 3.1 配置文件 3.2 请求接收封装 3.3 请求响应封装 3.4 服务类参数初始化 3.5 服务类实现 3.6 解析结果 3.7 定义Web接口 四 测试效果 五、总结 欢迎来到盹猫🐱的博客 本篇文章主要介绍了 [百…...

纯前端实现图文识别 OCR

Tesseract.js Tesseract.js 是一个基于 Google Tesseract OCR 引擎的 JavaScript 库,利用 WebAssembly 技术将的 OCR 引擎带到了浏览器中。它完全运行在客户端,无需依赖服务器,适合处理中小型图片的文字识别。 基本使用 以下示例展示了如何…...

2025.05.01【Barplot】柱状图的多样性绘制

Custom color A few examples showing how to custom barplot color. Horizontal barchart It makes sense to make your barchart horizontal: group labels are now much easier to read 文章目录 Custom colorHorizontal barchart 探索Barplot的奥秘Barplot基础什么是Barp…...

在资源受限环境下,移动端如何实现流畅动画?如何在内存、CPU、GPU、网络等多种限制条件下,依然保持动画高帧率、低延迟、不卡顿?

在日常生活中,移动设备已经成为不可或缺的工具。从社交、购物到游戏、教育,几乎所有的应用场景都依赖于移动终端的计算和显示能力。然而,随着用户体验的不断提升需求,动画成为了界面交互中不可忽视的一环。动画不仅提升了视觉吸引…...

HJ10 字符个数统计【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ10 字符个数统计 一、题目描述 二、测试用例 三、解题思路 基本思路:   建立字符串的散列表,然后统计不同字符个数具体思路:   遍历字符串的字…...

关键点检测算法-RTMPose

一、网络框架(top-down模式) 二、各部分内容 1、骨干网络 对于网络而言,CXPset太大,可以换成starnet 2、一个卷积层 7x7的卷积核对性能提升最大 3、一个全连接层 将一维关键点表示扩展到由超参数控制的所需维度。 4、一个用…...

云原生安全:错误策略S3存储桶ACL设置为Everyone:FullControl

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 ——从基础到实践的深度解析 1. 基础概念 S3存储桶与ACL Amazon S3(Simple Storage Service)是AWS提供的对象存储服务,支持存储和检索任意规模的数据。ACL(访问控制列表…...