如何在离线情况下部署项目(前端VUE + 后端Python)

文章目录

      • [如何在离线情况下部署项目(前端VUE + 后端Python)](#如何在离线情况下部署项目(前端VUE + 后端Python))

如何在离线情况下部署项目(前端VUE + 后端Python)

虚拟环境离线迁移
  • 生成requirements.txt文件,获取当前项目的所有安装包的名称及内容
python 复制代码
uv pip freeze > requirements.txt
  • 使用如下命令,将wheel包(离线安装包)下载至packages文件夹。
python 复制代码
pip download -r requirements.txt -d packages


# 同时下载基本的构建工具
# pip download setuptools wheel cython --only-binary=:all: --python-version 3.12 -d packages
# 如果中间有遇到下载下来的包.tar.gz,需要用下面的命令先打包成whl包
import glob
import subprocess
import sys


def build_wheel_with_pip(tar_gz_file, wheel_dir):
    """使用 pip 构建 wheel"""
    try:
        # 使用 pip wheel 命令直接构建 wheel
        result = subprocess.run([
            sys.executable, "-m", "pip", "wheel",
            tar_gz_file,
            "-w", wheel_dir,
            "--no-deps"  # 不处理依赖关系
        ], capture_output=True, text=True)

        if result.returncode == 0:
            print(f"成功构建: {tar_gz_file}")
            print(f"输出: {result.stdout}")
            return True
        else:
            print(f"构建失败: {tar_gz_file}")
            print(f"错误信息: {result.stderr}")
            return False

    except Exception as e:
        print(f"处理失败: {tar_gz_file} - 错误: {e}")
        return False


def build_wheels_from_tar_gz():
    # 查找所有 tar.gz 文件
    tar_gz_files = glob.glob("packages/*.tar.gz")
    
    if not tar_gz_files:
        print("未找到 .tar.gz 文件")
        return

    print(f"找到 {len(tar_gz_files)} 个 .tar.gz 文件:")
    for file in tar_gz_files:
        print(f"  - {file}")

    wheel_dir = "packages"

    # 为每个 tar.gz 文件构建 wheel
    success_count = 0
    for tar_gz_file in tar_gz_files:
        print(f"\n正在处理: {tar_gz_file}")
        if build_wheel_with_pip(tar_gz_file, wheel_dir):
            success_count += 1
        else:
            print(f"构建失败: {tar_gz_file}")

    print(f"\n总共处理 {len(tar_gz_files)} 个文件,成功 {success_count} 个")


if __name__ == "__main__":
    build_wheels_from_tar_gz()
  • 在离线服务器安装python(python版本一定要与开发虚拟环境一致)
python 复制代码
py -3.12 -m venv .venv # py -python版本 venv 虚拟环境名称
  • 激活python虚拟环境
python 复制代码
# Windows系统下
.venv\Scripts\Active # 回车
  • 离线安装所有依赖
python 复制代码
pip install --no-index --find-links=packages -r requirements.txt  
  • 离线服务器导入数据库数据
python 复制代码
# 准备好.sql文件
# 离线服务器登录mysql

# SHOW DATABASES; 
# CREATE DATABASE db1 CHARACTER SET utf8mb4;
# USE db1;                     

# SHOW TABLES;
# SOURCE D:\xujiamiao\AT168_QS_MV_safety_Check\flux-backend\test\boms\s.sql; # 导入数据库数据  
  • 离线服务器准备好redis
python 复制代码
# Windows系统
# 如果redistribution报Authentication required,就需要删除对应conf文件中的requirepass字段或者代码里面加上对应的password
# 如果是把redis注册成Windows服务,那么redis读取的文件就是redis.windows-service.conf
# 如果是直接启动的,那么redis读取的文件 就是redis.windows.conf
相关推荐
闲人编程9 分钟前
Elasticsearch搜索引擎集成指南
python·elasticsearch·搜索引擎·jenkins·索引·副本·分片
痴儿哈哈18 分钟前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
花酒锄作田32 分钟前
SQLAlchemy中使用UPSERT
python·sqlalchemy
SoleMotive.33 分钟前
一个准程序员的健身日志:用算法调试我的增肌计划
python·程序员·健身·职业转型
鹏北海-RemHusband34 分钟前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
LYFlied35 分钟前
AI大时代下前端跨端解决方案的现状与演进路径
前端·人工智能
光影少年38 分钟前
AI 前端 / 高级前端
前端·人工智能·状态模式
一位搞嵌入式的 genius40 分钟前
深入 JavaScript 函数式编程:从基础到实战(含面试题解析)
前端·javascript·函数式
亓才孓41 分钟前
[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)
开发语言·python
Bruk.Liu1 小时前
(LangChain 实战14):基于 ChatMessageHistory 自定义实现对话记忆功能
人工智能·python·langchain·agent