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

部署vue+django项目(初版)

1.准备

vscode 插件Remote SSH,连接远程,打开远程中home文件夹。
在这里插入图片描述
镜像和容器的一些常用命令

docker images
docker ps   查看所有正在运行的容器
docker ps -a
docker rmi -f tk-django-app  删除镜像
docker rm  xxx  删除容器
docker start xxxx    启动容器
docker exec -it   xxxx /bin/sh
docker exec -it   xxxx sh
看容器日志  docker logs xxx
应用内:检查8000端口是否成功 (容器中访问, 宿主机中访问)curl http://localhost:8000   
宿主机防火墙检查  检查8000是否开开放
sudo iptables -L -n | grep ':8000'
# 查看映射文件
docker inspect tk-django | grep -A 10 "Mounts"

我在home下建了一个 部署目录叫 taoke作为部署目录。

/home/taoke/
├── back/                      
│   ├── Dockerfile                 # Django 的 Dockerfile
│   │── base.py						# 为了支持mysql5.8以下的要更换下源码
│   │── allure-commandline-2.20.1.tgz    # 生成allure报告需要这个java插件
│   │── openjdk-8u40-b25-linux-x64-10_feb_2015.tar.gz
│   └── tkplat/                    # Django 项目根目录(代码)
│       ├── manage.py            
│       ├── tkplat/                
│       │   ├── settings.py        
│       │   └── wsgi.py            # WSGI 入口文件
│       ├── apps/                  # 自定义应用目录
│       │   └── ...                # 你的 Django 应用
│       └── requirements.txt        # Python 依赖文件
├── front/                         #  前端
│   └── dist/                      # 前端构建后的静态资源
│       ├── index.html             
└── nginx-docker/               ├── conf/                      # Nginx 配置│   ├── nginx.conf             # 主配置文件│   └── default.conf       ├── html/                      # 默认 HTML 页面(可选)│   └── 50x.html├── logs/                      # Nginx 日志目录│   ├── access.log│   └── error.log└── static/                    # 静态资源目录(用来指向django的静态文件)

2. 准备好公共网络 、拿到django的静态文件

公共网络

创建nginx容器,和djang应用容器时都公用这个网络。
目的是:nginx 要使用8000 端口。 因为有需求是,访问后端的static的静态文件和接口 的端口要一样。(以上方式就能满足)

  • 使用:8000/ 去对应django容器内的8000端口。 (建django容器的时候不用 -p 8000:8000 宿主机的8000端口留给nginx)
  • 使用:8000/static 对应django内的静态文件
docker network create tk_django_ng

创建django镜像

到back目录下,里面放tkplat后端的djang代码和其他创建镜像需要的,如allure插件
在这里插入图片描述
Dockerfile 的内容如下

FROM python:3.9.7# 解压jdk和allure
ADD allure-commandline-2.20.1.tgz /opt
ADD openjdk-8u40-b25-linux-x64-10_feb_2015.tar.gz /opt# 设置工作目录WORKDIR /app# 复制(项目内的)依赖文件并安装
COPY tkplat/requirements.txt .
RUN pip install mysqlclient==2.2.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 解决django不能使用5.8以下mysql的问题
COPY base.py  /usr/local/lib/python3.9/site-packages/django/db/backends/base# 复制项目代码(这种事 /app目录下还有 一个 tkplat)
# COPY tkplat /app/tkplat
COPY tkplat/ /app/ # env 用于设置环境变量的
RUN mv /opt/java-se-8u40-ri  /opt/java
ENV  JAVA_HOME  /opt/java
ENV PATH $PATH:$JAVA_HOME/bin:/opt/allure-2.20.1/bin# 暴露端口
EXPOSE 8000# # 启动命令  
# 设置 PYTHONPATH 如果Dockerfile在django项目里面(或者上面的copy项目方式变成以上的写法),就不需要ENV
#ENV PYTHONPATH=/app/tkplat
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "tkplat.wsgi:application"]  

然后到back目录中,运行下面, 就创建好了镜像了
创建镜像
docker build -t tk-django-app .

临时django容器、把静态文件cp出来

先创建一个临时的django容器,用共用网络或者8000:8000或者其他

docker run -d -p 8000:8000 --name tmp-django tk-django-app
docker run -d --network tk_django_ng --name tmp-django tk-django-app

检查django应用容器

  • 使用 docker logs 容器名, 如下图表示运行了
    在这里插入图片描述
  • 进入容器内,curl一下检查,django应用是否正常
    docker exec -it tmp-django sh 
    apk add --no-cache curl   # 安装一下curl http://localhost:8000curl  http://127.0.0.1:8000/api/sys/students/   # 验证接口exit
    
  • 查看allure命令,也是要进入到容器内
    allure --version
    

把容器内的文件复制出来 和 放到宿主机目录下(后面django容器和ng容器都要映射这个目录)。
到taoke 目录下,

mkdir nginx-docker

再到 nginx-docker 目录下 把静态文件复制出来

docker cp tmp-django:/app/static ./

这样后, nginx-docker/static 里面就有静态文件。
再删除临时的django容器

docker stop tmp-django 
docker rm tmp-django 

3. 准备Nginx本地目录其他结构(假设已经有了nginx镜像)

/home/taoke/nginx-docker 下

# 创建本地工作目录(当前目录下建一个nginx-dokcer ,然后下面又有4个目录)
# mkdir -p ./nginx-docker/{html,conf,logs}/home/taoke/nginx-docker 下
mkdir ./{html,conf,logs}# 运行临时容器(用于复制默认配置)
docker run --name nginx-temp -d nginx   # 默认为80,如果没有80指定一个
docker cp nginx-temp:/etc/nginx/nginx.conf ./nginx.conf  # 容器内一般是这个路径
docker cp nginx-temp:/etc/nginx/conf.d/default.conf ./default.conf 
# 停止并删除临时容器
docker stop nginx-temp 
docker rm nginx-temp # 把复制出来的配置文件移动到对应位置
mv nginx.conf ./nginx-docker/conf/
mv default.conf ./nginx-docker2/conf/# 准备一个测试用的静态文件
echo "hello 静态文件" > ./nginx-docker2/static/test.txt

4. 准备vue前端静态文件

准备好前端打包文件

taoke 下建一个 文件叫 front(叫front好点,表示前端,) , 里面放 npm run build 打包好的dist文件(注,需提前把后端请求地址设置好哟)

准备好要用的端口,如8011

docker要添加一次 8011, 
并重启sudo systemctl stop docker
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X# 重启 Docker
sudo systemctl start docker# 对于 firewalld
sudo firewall-cmd --permanent --zone=public --add-port=8011/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports
sudo systemctl restart docker

步骤1:检查宿主机端口8011是否被占用,使用sudo lsof -i :8011或
sudo netstat -tulnp | grep 8011

正式启动Nginx容器(映射配置、静态文件、公共网络、)

如下、使用了容器公共网络前端vue映射到了nginx容器内部宿主机一个目录映射到了容器内部的static 以及default.conf配置
这样,只需要改宿主机,就能改nginx容器内部的文件了
到taoke目录下

docker run -d   -p 8011:8011 -p 8000:8000 \
--network tk_django_ng  \
-v ./front/dist:/usr/share/nginx/html  \
-v ./nginx-docker/static:/static \
-v ./nginx-docker/conf/default.conf:/etc/nginx/conf.d/default.conf   \
-v ./nginx-docker/logs:/var/log/nginx \
--name tk-nginx  \
nginx

ng配置

配置宿主机的nginx-docker/conf/default.conf文件。
修改了一下,就要 重启 一下

docker restart tk-nginx

在这里插入图片描述
前端8011的端口配置,配置好,重启,就可以访问页面了(主要端口要开放)

server {listen       8011;listen  [::]:8011;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;# vue 前端路由location / {root   /usr/share/nginx/html;index  index.html;try_files $uri $uri/ /index.html;  # 该步表示,所有非真实文件路径的请求都会回退到index.html}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}

后端静态文件

server {listen 8000;server_name  localhost;# 反向代理 Django API
#    location /api/ {
#        #proxy_pass http://backend:8000;  # 根据你的后端地址调整
#        proxy_pass http://tk-django:8000;  # 共用网络的django容器: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;
#    }# django静态文件	location /static/ {alias /static/;}}

修改ngix配置后,记得restart 容器
前端静态文件,就可以用 8011访问了
在这里插入图片描述

宿主机(/home/taoke/nginx-docker3/static)的静态文件,可以被访问了、
在这里插入图片描述

根据配置 text.txt在容器内部的static内部,就能通过8000/static访问到

curl http://localhost:8000/static/test.txt

也可以用通过浏览器访问静态文件
在这里插入图片描述

5. 创建django正式容器

在taoke目录下运行, 不用映射 端口号, 它和ng共用一个端口号
docker run -d --network tk_django_ng -v ./nginx-docker/static:/app/static --name tk-django tk-django-app

6. 再配置哈nginx,即可访问前后端

default.conf 修改后重启一下,
在这里插入图片描述

 docker restart tk-nginx 

完整default的配置

server {listen       8011;listen  [::]:8011;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;# vue 前端路由location / {root   /usr/share/nginx/html;index  index.html;try_files $uri $uri/ /index.html;  # 该步表示,所有非真实文件路径的请求都会回退到index.html}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}server {listen 8000;server_name  localhost;# 反向代理 Django APIlocation /api/ {#proxy_pass http://backend:8000;  # 根据你的后端地址调整proxy_pass http://tk-django:8000;  # 共用网络的django容器:8000proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# django静态文件	location /static/ {alias /static/;}}

在这里插入图片描述

相关文章:

部署vue+django项目(初版)

1.准备 vscode 插件Remote SSH,连接远程,打开远程中home文件夹。 镜像和容器的一些常用命令 docker images docker ps 查看所有正在运行的容器 docker ps -a docker rmi -f tk-django-app 删除镜像 docker rm xxx 删除容器 docker start xxxx …...

Redis7系列:设置开机自启

前面的文章讲了Redis和Redis Stack的安装,随着服务器的重启,导致Redis 客户端无法连接。原来的是Redis没有配置开机自启。此文记录一下如何配置开机自启。 1、修改配置文件 前面的Redis和Redis Stack的安装的文章中已经讲了redis.config的配置&#xf…...

HarmonyOS学习第18天:多媒体功能全解析

一、开篇引入 在当今数字化时代,多媒体已经深度融入我们的日常生活。无论是在工作中通过视频会议进行沟通协作,还是在学习时借助在线课程的音频讲解加深理解,亦或是在休闲时光用手机播放音乐放松身心、观看视频打发时间,多媒体功…...

在rocklinux里面批量部署安装rocklinx9

部署三台Rockylinux9服务器 实验要求 1. 自动安装ubuntu server20以上版本 2. 自动部署三台Rockylinux9服务器,最小化安装,安装基础包,并设定国内源,设静态IP 实验步骤 安装软件 # yum源必须有epel源 # dnf install -y epel-re…...

Manus:成为AI Agent领域的标杆

一、引言 官网:Manus 随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独…...

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名,并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名,并连续按两次…...

WinForm模态与非模态窗体

1、模态窗体 1)定义: 模态窗体是指当窗体显示时,用户必须先关闭该窗体,才能继续与应用程序的其他部分进行交互。 2)特点: 窗体以模态方式显示时,会阻塞主窗体的操作。用户必须处理完模态窗体上…...

静态时序分析:SDC约束命令set_ideal_network详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true)&#…...

【学习方法】技术开发者的提问智慧:如何高效获得解答?

技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...

C++:入门详解(关于C与C++基本差别)

目录 一.C的第一个程序 二.命名空间(namespace) 1.命名空间的定义与使用: (1)命名空间里可以定义变量,函数,结构体等多种类型 (2)命名空间调用(&#xf…...

服务器上的nginx因漏洞扫描需要升级

前言 最近客户联系说nginx存在安全漏洞 F5 Nginx 安全漏洞(CVE-2024-7347) F5Nginx是美国F5公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。F5 Nginx存在安全漏洞,该漏洞源于可能允许攻击者使用特制的…...

1688商品列表商品详情API接口全面解析

1688作为中国领先的B2B电子商务平台,汇聚了海量的商品资源,为商家和采购商提供了丰富的交易机会。为了更方便地获取和利用这些商品信息,1688平台提供了商品列表API接口,允许第三方开发者通过编程方式获取平台上的商品列表数据。本…...

【爬虫】开篇词

一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术? 在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫&…...

如何在SpringBoot中灵活使用异步事件?

在现代的应用开发中,事件驱动的架构越来越受到欢迎。当我们在使用SpringBoot时,了解如何实现异步事件变得尤为重要。通过事件机制,我们能够在系统中实现松耦合的组件,让不同模块之间能够有效沟通,而无需直接依赖。本文…...

S19文件格式详解:汽车ECU软件升级中的核心镜像格式

文章目录 引言一、S19文件格式的起源与概述二、S19文件的核心结构三、S19在汽车ECU升级中的应用场景四、S19与其他格式的对比五、S19文件实例解析六、工具链支持与安全考量七、未来趋势与挑战结语引言 在汽车电子控制单元(ECU)的软件升级过程中,S19文件(也称为Motorola S-…...

git安装(windows)+vscode配置

安装git for windows在使用 Git 之前,建议设置全局的用户名称和电子邮件地址,这样每次提交代码时就可以自动关联您的身份信息。设置一次后,您无需每次都输入这些信息,Git 将自动使用您配置的全局用户信息。如果需要针对特定项目使…...

Python性能优化面试题及参考答案

目录 解释字典与列表在查找操作中的时间复杂度差异,如何利用哈希表特性提升性能? 为什么在只读场景下使用元组(tuple)比列表(list)更高效? 如何用 collections.deque 优化频繁的队列插入 / 删除操作? defaultdict 相比普通字典在哪些场景下能减少冗余代码并提升效率…...

【十四】Golang 接口

💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 接口接口定义接口初始化接口嵌套空接口存储任意类…...

ngx_openssl_create_conf

ngx_openssl_create_conf 声明在 src\event\ngx_event_openssl.c static void *ngx_openssl_create_conf(ngx_cycle_t *cycle); 定义在 src\event\ngx_event_openssl.c static void * ngx_openssl_create_conf(ngx_cycle_t *cycle) {ngx_openssl_conf_t *oscf;oscf ngx_…...

54-WLAN 无线局域网配置方案-三层

一、网络拓扑说明 本 WLAN 网络由交换机(LSW1)、无线控制器(AC1)、无线接入点(AP1\2)以及无线客户端(STA1)组成。 用途VLANAC100AP200业务300 二、设备配置 二、设备配置 &#x…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...