将项目部署至云服务器的详细过程 以community项目为例

news2025/7/24 6:10:32

https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/F30414BD-189A-408B-9057-C916E3D30EE9_2/My4NHNn9uU5zb4N75yc7i8A84t0BaS0g2CHEQUTUPaQz/Image.png

文章目录

      • 1.申请一个2核4G的云服务器,系统选择CentOS 7.6
      • 2.使用终端连接云服务器
      • 3.使用 `wget` 命令下载以下安装文件
      • 4.安装jdk12
      • 5.安装maven
      • 6.安装MySQL
      • 7.初始化mysql数据库
      • 8.安装Redis
      • 9.安装kafka
      • 10.安装elasticsearch及其分词工具
      • 11.安装Wkhtmltopdf
      • 12.安装tomcat
      • 13.安装Nginx
      • 14.删除 `/opt/apache-tomcat-9.0.22/webapps` 下所有文件
      • 15.修改代码,部署。

1.申请一个2核4G的云服务器,系统选择CentOS 7.6

2.使用终端连接云服务器

  • ssh root@[云服务器IP]
  • 安装unzip工具(后面解压缩 .zip 文件时要用到)

    cd /
    yum list unzip*
    yum install -y unzip.x86_64

3.使用 wget 命令下载以下安装文件

https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/67DC41AF-A0B7-4134-B51B-F79FC723ED57_2/Qftz0CQoSEWNUucRbxI4eVzT6eFRB7Kq1ukq2V5o6sYz/Image.png
这些文件都要上官网上找对应的(有点麻烦!)
将本地文件上传至云服务器,首先找到文件所在位置,然后运行命令:scp 本地文件名 用户@ip:上传到的路径位置

scp init_sql.zip root@120.26.37.14:/root

4.安装jdk12

  • 下载安装包https://www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/AE989B05-B0F0-4E9D-A0F5-7F3F973D3482_2/pWqTXCf6vRoLBtZIGjt3YYNhiZywLziGN0vlUrFjcoMz/Image.png

  • 新建/usr/local/java文件夹,使用 scp 命令将下载好的 .tar.gz 文件上传至该文件夹下

    scp 本地文件名 用户@ip:上传到的路径位置

  • 使用 tar -zvxf 命令解压缩 .tar.gz 文件

  • 配置环境变量

    • vim /etc/profile

    • 按 i 进入插入模式,在配置文件的最下方加上:

      export JAVA_HOME=/usr/local/java/jdk-12.0.2

      export CLASSPATH=$JAVA_HOME/lib/

      export PATH=$$PATH:$$JAVA_HOME/bin

    • source /etc/profile

  • java -version 查看是否安装成功

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/1F7655F2-599C-49E4-B946-DD49C894BEFE_2/9SFusZ8J08GyP44lm9C3csHPqcI565rMA6B9xaeZQ60z/Image.png

5.安装maven

  • 使用安装包安装

  • 解压缩 tar -zvxf apache-maven-3.6.1-bin.tar.gz -C /opt

  • 配置环境变量

    • vim /etc/profile

    • 按 i 进入插入模式,在配置文件的最下方加上:

      export PATH=$PATH:/opt/apache-maven-3.6.1/bin

    • source /etc/profile

  • mvn -version 查看是否安装成功

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/AC78FDB0-E7CE-4CB2-8E2D-13953F624655_2/iXyHdkd7VKAzuv5fxGipxILpIELMtv4OtGX58wOe2NQz/Image.png

  • 修改maven的配置文件,把镜像设置为阿里云

    • vim /opt/apache-maven-3.6.1/conf/settings.xml

    • 将以下内容插入到setting.xml文件中

      <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/central</url>
      <mirrorOf>central<mirrorOf>
      </mirror>

6.安装MySQL

  • 安装 yum 的 mysql 连接器 yum install -y mysql80-community-release-el7-7.noarch.rpm

  • 切换到根目录下, yum list mysql* 查看所有的mysql可用安装

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/FD9C0C8F-8EB3-49B4-99EF-5F18B25AF5D9_2/Hyc9FxLmVFyjzo476k0lndtjy2l745sjy9iGy57dO0Mz/Image.png

  • yum install -y mysql-community-server.x86_64

  • 启动mysql服务 systemctl start mysqld

  • 查看mysql服务状态 systemctl status mysqld

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/C1B22592-E235-401C-AAE1-8D46DAFA3ADA_2/ydVhRYdOMA3AMLDsf2xh5CwS0cISxaFdjuHlTG4G74oz/Image.png

  • 从mysql 安装的日志文件里找到root的临时密码,修改密码。

    • grep 'password' /var/log/mysqld.log
    • mysql -u root -p 输入临时密码,登录mysql
    • 修改密码 alter user root@localhost identified by ‘[密码]’;
    • exit 退出mysql 用新密码重新登录一下,成功登录就ok啦

7.初始化mysql数据库

  • 解压缩 unzip -d /root init_sql.zip

  • 登录mysql 创建数据库create database community;

  • use community;

  • source 命令导入数据

    source /root/community-init-sql-1.5/init_schema.sql source
    /root/community-init-sql-1.5/init_data.sql source
    /root/community-init-sql-1.5/tables_mysql_innodb.sql

  • show tables; 查看所有的表

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/FA7B1A38-023E-4DA3-A2CA-A0EB625CBACB_2/c9ykT7joo3eyOUClHoZZgy6pS7XXDJgntH1jsWR25SIz/Image.png

  • exit

8.安装Redis

  • 使用yum安装

    cd /

    yum list redis*

    yum install -y redis.x86_64

  • 启动 redis 服务 systemctl start redis

  • 查看redis 服务状态 systemctl status redis

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/5DC1982B-D6D5-43AF-BABC-F5A8A51745C0_2/BIq3ZeTHfy0jjzGCizvrN1dwK5uKgye8tB9LBNewTosz/Image.png

  • 运行几个redis命令测试一下

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/C768E7EF-A819-44E8-B576-65D6939F42A7_2/BKJ4jGE4uvtfxDKYxrPLvE6yikkgGKyoI1HJa7h6s0oz/Image.png

9.安装kafka

  • 使用安装包安装

  • 解压缩 tar -zvxf kafka_2.12-2.3.0.tgz -C /opt

  • 默认配置就可以,不需要修改配置文件

  • 启动zookeeper

    cd /opt/kafka_2.12-2.3.0 bin/zookeeper-server-start.sh -daemon
    config/zookeeper.propertie

  • 启动kafka

    nohup bin/kafka-server-start.sh config/server.properties 1>/dev/null
    2>&1 &

  • 测试一下kafka是否可用

    bin/kafka-topics.sh --list --bootstrap-server localhost:9092

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/E7529E62-6CAC-49F6-8E20-3DA04B404D61_2/UB4K0FPmNnpklnpS1IpUYfI5kHZPSOW0yXOReZtQNrwz/Image.png

10.安装elasticsearch及其分词工具

  • 使用安装包安装

  • 解压缩 tar -zvxf elasticsearch-6.4.3.tar.gz -C /opt

  • 解压缩 unzip -d /opt/elasticsearch-6.4.3/plugins/ik elasticsearch-analysis-ik-6.4.3.zip

  • 修改配置文件

    cd /opt/elasticsearch-6.4.3/config
    vim elasticsearch.yml

  • 配置集群名字,数据存放位置,日志文件存放位置

    cluster.name: amelia
    path.data: /tmp/elastic/data path.logs:
    /tmp/elastic/logs

  • 修改 jvm.options vim jvm.options

    -Xms256m
    -Xmx512m

  • elasticsearch不允许root用户启动,只允许普通用户启动,新建一个用户,并为用户设置权限,切换至新用户,后台方式启动elasticsearch

    [root@ameliacommunity config]# groupadd amelia
    [root@ameliacommunity config]# useradd amelia1 -p 123456 -g amelia
    [root@ameliacommunity config]# cd /opt
    [root@ameliacommunity opt]# chown -R amelia1:amelia *
    [root@ameliacommunity opt]# cd /tmp
    [root@ameliacommunity tmp]# chown -R amelia1:amelia *
    [root@ameliacommunity tmp]# su - amelia1
    [amelia1@ameliacommunity ~]$ cd /opt/elasticsearch-6.4.3/
    [amelia1@ameliacommunity elasticsearch-6.4.3]$ bin/elasticsearch -d

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/A41BE9A2-5957-45D2-AAD6-4BA63C998843_2/rOOgPtxnc0Bz5askxzLtDzQrY4z5DL4boJEeFarr7Fcz/Image.png

    [amelia1@ameliacommunity elasticsearch-6.4.3]$ su -
    Password:
    Last login: Sun Oct  9 13:59:48 CST 2022 from 219.228.135.127 on pts/2
    [root@ameliacommunity ~]# curl -X GET "localhost:9200/_cat/health?v"
    epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
    1665300441 15:27:21  amelia  green           1         1      0   0    0    0        0             0                  -                100.0%
    [root@ameliacommunity ~]#
    

11.安装Wkhtmltopdf

  • 使用yum安装

    [root@ameliacommunity ~]# cd /
    [root@ameliacommunity /]# yum list wkhtmltopdf*
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    wkhtmltopdf.x86_64 0.12.4-1.el7 epel
    wkhtmltopdf-devel.x86_64 0.12.4-1.el7 epel
    [root@ameliacommunity /]# yum install -y wkhtmltopdf.x86_64

  • 安装一个虚拟的gui程序

    [root@ameliacommunity /]# yum list xvfb
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    python-xvfbwrapper.noarch 0.2.4-2.el7 epel
    xorg-x11-server-Xvfb.x86_64 1.20.4-18.el7_9 updates
    [root@ameliacommunity /]# yum install -y xorg-x11-server-Xvfb.x86_64

  • 测试是否可用
    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/0B2DA6B8-4EB6-48F0-B5CF-D608733434EF_2/mByWtzKvu5FYe5brCgxhMnfqxt3gZhtIPzmrufzLATgz/Image.png

  • 将命令封装到/opt下

    • vim /opt/wkhtmltoimage.sh 将下面内容写入wkhtmltoimage.sh文件中

      xvfb-run --server-args=“-screen 0, 1024x768x24” wkhtmltoimage “$@”

    • 给文件添加执行权限 chmod +x wkhtmltoimage.sh

    • 使用 /opt/wkhtmltoimage.sh [https://www.baidu.com](https://www.baidu.com/) 2.png

12.安装tomcat

  • 使用安装包安装

  • 解压缩 tar -zvxf apache-tomcat-9.0.22.tar.gz -C /opt

  • 配置环境变量

    • vim /etc/profile

    • 按 i 进入插入模式,在配置文件的最下方加上:

      export PATH=$PATH:/opt/apache-tomcat-9.0.22/bin

    • source /etc/profile

    • echo $PATH 打印环境变量

  • 启动tomcat

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/20DA8CC5-7741-4369-82AD-886A08055122_2/5jl1MPckeAXFTbaN46z1ULyoxMIHSxkdOBu9RcWGFhkz/Image.png

  • 使用浏览器访问tomcat,http://120.26.37.14:8080/,发现不可访问,原因是云服务器没有开放8080端口,开放端口方法参考:https://developer.aliyun.com/article/701181

  • 成功访问

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/F699E4F0-EA77-4CB8-A056-43328B7DB60B_2/1GG8aADeJmTB2vCFx2iyaiMCjFAZ5pfgNR0Q56LGsP0z/Image.png

13.安装Nginx

  • 使用yum安装

    cd /

    yum list nginx*

    yum install -y nginx.x86_64

  • 配置 vim /etc/nginx/nginx.conf

    upstream myserver{
    server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; } server {
    listen 80;
    server_name 120.26.37.14;
    location /{
    proxy_pass http://myserver;
    } }

  • 启动nginx服务 systemctl start nginx

  • 查看nginx服务状态 systemctl status nginx

  • 测试是否可用(服务器需要开放80端口),直接访问http://120.26.37.14,成功访问则说明nginx服务可用

14.删除 /opt/apache-tomcat-9.0.22/webapps 下所有文件

15.修改代码,部署。

  • 将community项目打包为ROOT.war,把配置文件中community项目名改为空值,加一个对根路径的处理,访问/index(重定向或者转发)

  • 调整代码

    • 修改项目名

      • 文件 application.propertiesserver.servlet.context-path=
      • 文件 global.jsvar CONTEXT_PATH = "";
    • 修改对根路径的处理(转发)

      • 文件 HomeController.java 添加:
      @RequestMapping(path = "/",method = RequestMethod.GET)
          public String root(){
          	return "forward:/index";
          }
      
      • 打包为war包,且打包名为ROOT,修改 pom.xml 文件
      <packaging>war</packaging>
      <build>
              <finalName>ROOT</finalName>
      </build>
      
      • 修改配置文件

      https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/16469D51-18B5-4809-B5B9-1E4C229BFB4D_2/zbgCq29NwOYS0YMmQ6MjbWAtgrqaOmBg2EddtiCM6qgz/Image.png

      • 配置tomcat启动入口类,新建类 CommunityServletInitializer.java
  • maven clean

  • 将项目压缩为 .zip文件,上传至云服务器

  • 解压缩 unzip -d /root community.zip

  • 进入项目文件路径 cd community

  • 使用 mvn 命令打包且跳过编译 mvn clean package -Dmaven.test.skip=true

  • 进入打包后生成的target文件夹下 cd target

  • 将打包好的war包移动到tomcat的webapps路径下 mv ROOT.war /opt/apache-tomcat-9.0.22/webapps/

  • 启动tomcat 服务 startup.sh

  • 通过日志文件查看是否成功开启服务,然后就可以用浏览器直接访问啦!

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/0B8D9E58-36B1-468D-8921-9CB1E5C62155/AFFACF7B-B6B2-4176-A5D3-E05E50D742C9_2/xY7VeKPxxSH0RfoxworMhDQiont2Bdoop5rTkXvnzwMz/Image.png

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

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

相关文章

【Spring框架】一文带你吃透基于注解的DI技术详细教程

本文目录 文章目录本文目录&#x1f496;基于注解的DI✨概念✨[Component](https://so.csdn.net/so/search?qComponent&spm1001.2101.3001.7020)注解创建对象✨声明组件扫描器✨创建对象的四个注解✨扫描多个包的三种方式✨Value简单类型属性赋值✨Value使用外部属性配置文…

外卖项目07---git

git&#xff1a;企业、公司等 目录 一、Git概述 105 1.1Git简介 105 1.2Git下载与安装 105 二、Git代码托管服务 106 2.1常用的Git代码托管服务 106 三、Git常用命令 107 3.1Git全局配置 3.2获取Git仓库 ​编辑 ​编辑 3.3工作区、暂存区、版本库概念 3.4Git工作…

ASPICE系列:顺利通过ASPICE流程软件单元验证(SWE.4)

上次的ASPICE评估是否出了问题而您不知道原因? 或者您马上要进行第一次评估&#xff1f; 本系列文章是关于如何准备ASPICE流程软件单元验证(SWE.4)评估的。我们探究这个过程&#xff0c;预期交付以及评估人员的观点。永远记住一个想法:怎样做才能成功地通过评估? 想要成功通…

【PdgCntEditor】利用PDF目录书签编辑软件PdgCntEditor为PDF型图书快速添加书签的方法

一、给PDF加书签的两种情况 1.1 文字版PDF添加书签的理想情形 假设我们弄到了一本PDF&#xff0c;这个PDF如果是由Word或WPS转化而来&#xff0c;其中的标题也就代表了目录&#xff0c;我们可以用acrobat PDF中的AutuBookmark插件实现自动识别标题为目录的方法来添加书签。 …

『Java安全』利用反射调用MimeLauncher.run()触发RCE

文章目录前言MimeLauncherrun()MimeLauncher()反射调用MimeLauncher.run()触发RCE条件PoC完前言 rt.jar内的sun.net.www.MimeLauncher类的run方法调用了exec 据说可以有效绕过某些免杀&#xff0c;下面分析一下调用过程 MimeLauncher run() 首先&#xff1a;调用了this.m.ge…

古人的名与字、号、讳、谥有什么区别

古人复杂的名字 这个世界上想来是不存在没有名字的人&#xff0c;即便真的有人没名字&#xff0c;也会被外人赠予姓名&#xff0c;比如说一些古人典籍里的“无名氏”&#xff0c;就是专门用来形容那些没有名字也不清楚根脚的人&#xff0c;即便是现如今一些作品不知道作者是谁…

信号与线性时不变系统的傅里叶描述

1、复正弦信号和线性时不变系统的频率相应 卷积积分和卷积和傅里叶变换冲激表示信号正弦表示信号输入信号表示为延迟冲激的加权叠加输入信号为复正弦信号的加权叠加输出可以用卷积的形式来表示输出可以用傅里叶的形式来表示 (1)频率响应Frequency response 线性时不变系统对正…

Java中mybatis的Mpper代理开发的详细使用步骤

目录 前言&#xff1a; 一、全图预览 二、使用步骤 1.pom.xml里面添加依赖包 2.新建统一配置文件&#xff08;俗称数据库连接文件&#xff09; 3.新建项目 4.新建映射文件&#xff08;俗称数据库对应表xml&#xff09; 5.测试 三、文中的全部代码&#xff08;去复制可…

MySQL如何保证主备一致?

1. MySQL主备的基本原理 如下图展示的是基本的主备切换流程&#xff1a; 在状态1中&#xff0c;主库是A&#xff0c;备库是B&#xff0c;所以客户端的读写都直接方法节点A。由于节点B是节点A的备库&#xff0c;所以备库B只是将A的更新都同步过来&#xff0c;本地执行&#x…

皕杰报表使用字体和部署后添加字体

Windows系统 1、打开Win10系统的字体安装文件夹&#xff0c;可以双击打开此电脑-->打开C盘-->打开Windows-->打开Fonts&#xff1b;也可先打开计算机&#xff0c;在计算机地址栏上直接拷贝“C:WindowsFonts”路径。回车打开Win10字体文件夹。 2.下载自己需要的字体。…

数组、链表、栈、队列、树

1. 数组&#xff08;Array&#xff09; 定义&#xff1a;数组是一种 线性表 数据结构&#xff0c;它用一组 连续的内存空间 存储一组具有 相同类型 的数据。 Java中 基本数据类型数组 的存储格式&#xff1a; int arr[] new int[3]; arr[0] 0; arr[1] 1; arr[2] 2;Java中…

拿去吧你,华为出品《看漫画学Python》零基础自学首选~

目前Python在人工智能、机器学习、大数据、数据分析、网络爬虫等领域广泛应用&#xff0c;是非常适合初学者入门和培养编程兴趣的一门语言。相比较其他主流编程语言而言&#xff0c;有更好的可读性&#xff0c;和满足感&#xff0c;上手相对容易。 但是很多零基础的同学不知道…

【C语言】 函数

函数 在计算机科学中&#xff0c;子程序 &#xff0c;一个大型程序中的某部分代码&#xff0c; 由一个或多个语句块组 成。它负责完成某项特定任务&#xff0c;而且相较于其他代 码&#xff0c;具备相对的独立性。 一般会有输入参数并有返回值&#xff0c;提供对过程的封装和细…

元组啊,不就是不可变的列表吗?

B站|公众号&#xff1a;啥都会一点的研究生 相关阅读 整理了几个100%会踩的Python细节坑&#xff0c;提前防止脑血栓 整理了十个100%提高效率的Python编程技巧&#xff0c;更上一层楼 Python-列表&#xff0c;从基础到进阶用法大总结&#xff0c;进来查漏补缺 Python-元组&…

【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理

【ABAP】EXIT_SAPLMBMB_001无法Debug调试问题处理 不久前看到SAP Community里面有这样一个问题&#xff0c;可能比较老了&#xff0c;但个人觉得比较新奇&#xff0c;就去做了下面一个测试。 首先通过事务代码“CMOD”对增强“MB_CF001”&#xff08;更新物料凭证时的客户功能出…

《从零开始:机器学习的数学原理和算法实践》chap6

《从零开始&#xff1a;机器学习的数学原理和算法实践》chap6 学习笔记 文章目录6.1 凸函数6.2 梯度下降引入梯度是什么为啥梯度是上升最快的方向捏梯度下降与参数求解梯度下降过程演示6.3 代码实践 梯度下降一元函数的梯度下降多元函数的梯度下降6.1 凸函数 凸集 何为凸集 凸集…

c# 多线程

案例1 单线程与多线程对比 单线程会卡主线程,此时会将ui界面给卡住。而多线程开启以后就好了 不会卡住主线程,且运行速度快,相当于多个同时运动。 单线程按钮 private void singlethread_Click(object sender, EventArgs e){for

Kafka多生产者消费者自动配置

背景 项目中不同的业务可能会使用多个kafka&#xff0c;按默认的Kafka配置&#xff0c;最多是支持消费者和生产者使用不同的Kafka&#xff0c;如果两个生产者使用不同的Kafka则需要自定义配置&#xff0c;生成对应的bean。 解决方案 多生产者&#xff0c;多消费者&#xff0…

PowerDesigner 设置

PowerDesigner 设置前言推荐PowerDesigner 设置简单设置sql反向生成物理模型物理模型创建索引最后前言 以下内容源自自己 仅供学习交流使用 推荐 第11章 数据库的设计规范【2.索引及调优篇】【MySQL高级】 powerdesign 通过sql反向生成ER模型 PowerDesiner 15 在物理模型中…

Python测试框架之unittest和pytest 的区别

一、Unittest Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试&#xff0c;测试用例的初始化、…