KekeBlog项目部署上线

一、数据库打包

第一步:在F盘新建deployment/SpringBootBlogMySQL文件夹

第二步: win+r,在弹出的命令行黑窗口输入如下,-p是数据库密码,mybolgSite.sql是输出后的文件名

mysqldump -u root -p keke_blog > F:\deployment\SpringBootBlogMySQL\mybolgSite.sql

 第三步: 查看SpringBootBlogMySQL文件夹,就会发现有一个mybolgSite.sql,这个就是数据库备份文件,也就是我们要的打包文件

第四步: 以后要用的时候,先自己建一个名称为sg_blog的数据库,然后导入刚刚生成的myblogSite.sql文件即可

二、部署博客项目-后端项目打包

第一步: 把keke-admin(子工程)的application.yml文件修改为如下

server:
  port: 8989

spring:
  # 数据库连接信息
  datasource:
    url: jdbc:mysql://47.120.1.221:3306/keke_blog?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver

  redis:
    host: 47.120.1.221
    port: 6379

  servlet:
    # 文件上传
    multipart:
      # 单个上传文件的最大允许大小
      max-file-size: 20MB
      # HTTP请求中包含的所有文件的总大小的最大允许值
      max-request-size: 20MB

mybatis-plus:
  #  configuration:
  #    # 日志
  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      # 逻辑删除的字段
      logic-delete-field: delFlag
      # 代表已删除的值
      logic-delete-value: 1
      # 代表未删除的值
      logic-not-delete-value: 0
      # 主键自增策略,以mysql数据库为准
      id-type: auto

OSS:
  accessKey: 
  secretKey: 
  bucket: keke-blog

第二步: 把huanf-blog(子工程)的application.yml文件修改为如下

server:
  port: 7777

spring:
  # 数据库连接信息
  datasource:
    url: jdbc:mysql://47.120.1.221:3306/keke_blog?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver

  redis:
    host: 47.120.1.221
    port: 6379

  servlet:
    # 文件上传
    multipart:
      # 单个上传文件的最大允许大小
      max-file-size: 20MB
      # HTTP请求中包含的所有文件的总大小的最大允许值
      max-request-size: 20MB

mybatis-plus:
#  configuration:
#    # 日志
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      # 逻辑删除的字段
      logic-delete-field: delFlag
      # 代表已删除的值
      logic-delete-value: 1
      # 代表未删除的值
      logic-not-delete-value: 0
      # 主键自增策略,以mysql数据库为准
      id-type: auto

OSS:
  accessKey:
  secretKey: 
  bucket: keke-blog

第三步: 把KekeBlog(父工程)的pom.xml文件修改为如下,然后刷新

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.keke</groupId>
    <artifactId>KekeBlog</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>keke-framework</module>
        <module>keke-admin</module>
        <module>keke-blog</module>
    </modules>

    <!--编码方式、jdk版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <!--依赖的版本控制,不是真正的依赖,是对依赖版本的锁定-->
    <dependencyManagement>
        <dependencies>
            <!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.5.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--fastjson依赖-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.33</version>
            </dependency>

            <!--jwt依赖-->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.9.0</version>
            </dependency>

            <!--mybatisPlus依赖-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.3</version>
            </dependency>

            <!--阿里云OSS-->
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>3.10.2</version>
            </dependency>

<!--            excel-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>3.0.5</version>
            </dependency>

<!--            swaggerUI-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

<!--    <build>-->
<!--&lt;!&ndash;        <plugins>&ndash;&gt;-->
<!--&lt;!&ndash;            <plugin>&ndash;&gt;-->
<!--&lt;!&ndash;                &lt;!&ndash;配置maven版本&ndash;&gt;&ndash;&gt;-->
<!--&lt;!&ndash;                <groupId>org.apache.maven.plugins</groupId>&ndash;&gt;-->
<!--&lt;!&ndash;                <artifactId>maven-compiler-plugin</artifactId>&ndash;&gt;-->
<!--&lt;!&ndash;                <version>3.1</version>&ndash;&gt;-->
<!--&lt;!&ndash;                &lt;!&ndash;配置jdk版本&ndash;&gt;&ndash;&gt;-->
<!--&lt;!&ndash;                <configuration>&ndash;&gt;-->
<!--&lt;!&ndash;                    <source>${java.version}</source>&ndash;&gt;-->
<!--&lt;!&ndash;                    <target>${java.version}</target>&ndash;&gt;-->
<!--&lt;!&ndash;                    <encoding>${project.build.sourceEncoding}</encoding>&ndash;&gt;-->
<!--&lt;!&ndash;                </configuration>&ndash;&gt;-->
<!--&lt;!&ndash;            </plugin>&ndash;&gt;-->
<!--&lt;!&ndash;        </plugins>&ndash;&gt;-->
<!--    </build>-->


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
            </plugin>
            <!-- 此插件必须放在父 POM 中  -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <!--
                    执行本插件的方法为,在主目录下执行如下命令:
                    mvn package assembly:single

                    对于 IntelliJ IDEA,生成的 JAR 包位于每个模块下的文件夹 target
                    -->
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <!-- 此处 IntelliJ IDEA 可能会报红,这是正常现象  -->
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <archive>
                        <manifest>
                            <!-- 配置程序运行入口所在的类 -->
                            <mainClass>com.keke.KeBlogApplication</mainClass>
                        </manifest>
                        <manifest>
                            <!-- 配置程序运行入口所在的类 -->
                            <mainClass>com.keke.BlogAdminApplication</mainClass>
                        </manifest>
                    </archive>
                    <!-- 设置 JAR 包输出目录 -->
                    <outputDirectory>${project.build.directory}/#maven-assembly-plugin</outputDirectory>
                    <!-- 设置打包后的 JAR 包的目录结构为默认 -->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>



</project>

第四步: 把keke-blog(子工程)的pom.xml文件修改为如下,然后刷新

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>KekeBlog</artifactId>
        <groupId>com.keke</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>keke-blog</artifactId>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

    <dependencies>
        <dependency>
            <groupId>com.keke</groupId>
            <artifactId>keke-framework</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <finalName>${project.artifactId}</finalName>
    </build>



</project>

第五步: 把keke-admin(子工程)的pom.xml文件修改为如下,然后刷新

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>KekeBlog</artifactId>
        <groupId>com.keke</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>keke-admin</artifactId>

    <!--用keke-framework模块里面的依赖-->
    <dependencies>
        <dependency>
            <groupId>com.keke</groupId>
            <artifactId>keke-framework</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <finalName>${project.artifactId}</finalName>
    </build>

</project>

第六步: 打开父工程所在的目录,导航栏输入cmd回车会弹出一个黑窗口

第七步: 在黑窗口输入如下,即可得到keke-admin、keke-blog工程的jar包。当然也得到了keke-framework工程的jar包(这个jar包用不上)

mvn package assembly:single

第八步: 测试jar包。只需要输入如下,即可测试keke-admin或keke-blog工程的jar包,建议测试keke-admin工程的jar包,会比较方便

注意: 由于keke-blog在启动时必须要开redis,如果是测试keke-blog工程的jar包,那么你必须先开启redis

java -jar keke-admin.jar

三、部署博客项目-前端项目打包

第一步: 把sg-blog-vue(前台)项目的config目录下的index.js文件,port属性值从8080改为8093

第二步: 把sg-vue-admin(后台)项目的vue.config.js文件的port值从81改为8094

第三步: 把sg-blog-vue\src\vue.config.js文件,里面的localhost改为服务器ip

第四步: 把sg-blog-vue\src\store\index.js文件,里面的localhost改为服务器ip

第五步: 把sg-blog-vue的.env.development文件,里面的localhost改为服务器ip,注意端口是8989

第六步: 把sg-blog-vue的.env.production文件,里面的localhost改为服务器ip,注意端口是8989

第七步: 把sg-vue-admin的vue.config.js文件,里面的localhost改为服务器ip,注意端口是8989

第八步: 把sg-vue-admin的.env.development文件,里面的localhost改为服务器ip,注意端口是8989

第九步: 把sg-vue-admin的.env.production文件,里面的localhost改为服务器ip,注意端口是8989

第十步: 把sg-vue-admin\src\router\index.js文件修改为如下

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/**
 * Note: sub-menu only appear when route children.length >= 1
 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * hidden: true                   if set true, item will not show in the sidebar(default is false)
 * alwaysShow: true               if set true, will always show the root menu
 *                                if not set alwaysShow, when item has more than one children route,
 *                                it will becomes nested mode, otherwise not show the root menu
 * redirect: noRedirect           if set noRedirect will no redirect in the breadcrumb
 * name:'router-name'             the name is used by <keep-alive> (must set!!!)
 * meta : {
    roles: ['admin','editor']    control the page roles (you can set multiple roles)
    title: 'title'               the name show in sidebar and breadcrumb (recommend set)
    icon: 'svg-name'/'el-icon-x' the icon show in the sidebar
    breadcrumb: false            if set false, the item will hidden in breadcrumb(default is true)
    activeMenu: '/example/list'  if set path, the sidebar will highlight the path you set
  }
 */

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },
  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [{
      path: 'dashboard',
      name: 'Dashboard',
      component: () => import('@/views/dashboard/index'),
      meta: { title: '首页', icon: 'dashboard' }
    }]
  },
  {
    path: '/write',
    component: Layout,
    children: [{
      path: '/',
      name: 'Write',
      component: () => import('@/views/content/article/write/index'),
      hidden: true
    }]
  },
  {
    path: '/system/user',
    component: Layout,
    children: [{
      path: '/',
      name: 'User',
      component: () => import('@/views/system/user'),
      hidden: true
    }]
  },
  {
    path: '/system/role',
    component: Layout,
    children: [{
      path: '/',
      name: 'role',
      component: () => import('@/views/system/role'),
      hidden: true
    }]
  },
  {
    path: '/system/menu',
    component: Layout,
    children: [{
      path: '/',
      name: 'menu',
      component: () => import('@/views/system/menu'),
      hidden: true
    }]
  },
  {
    path: '/system/role',
    component: Layout,
    children: [{
      path: '/',
      name: 'role',
      component: () => import('@/views/system/role'),
      hidden: true
    }]
  },
  {
    path: '/content/article',
    component: Layout,
    children: [{
      path: '/',
      name: 'article',
      component: () => import('@/views/content/article/index'),
      hidden: true
    }]
  },
  {
    path: '/content/category',
    component: Layout,
    children: [{
      path: '/',
      name: 'category',
      component: () => import('@/views/content/category/index'),
      hidden: true
    }]
  },
  {
    path: '/content/link',
    component: Layout,
    children: [{
      path: '/',
      name: 'link',
      component: () => import('@/views/content/link/index'),
      hidden: true
    }]
  },
  {
    path: '/content/tag',
    component: Layout,
    children: [{
      path: '/',
      name: 'tag',
      component: () => import('@/views/content/tag/index'),
      hidden: true
    }]
  }
]

const createRouter = () => new Router({
  // mode: 'history', // require service support
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router

第十一步: 把sg-vue-admin\src\main.js文件,注释掉下面的内容

第十二步: 在sg-blog-vue项目的终端执行如下

npm run build

第十三步: 在sg-vue-admin项目的终端执行如下

npm run build:prod

第十四步: 检查打包目录是否生成

四、部署博客项目-服务器部署

1. 开放防火墙

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=7777/tcp --permanent
firewall-cmd --zone=public --add-port=8989/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8093/tcp --permanent
firewall-cmd --zone=public --add-port=8094/tcp --permanent

systemctl restart firewalld.service # 重启防火墙

2. 开放安全组

3. Docker安装

yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
yum install vim
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
docker version

4. 拉取镜像

docker pull openjdk:8
docker pull mysql:8.0.19
docker pull redis:6.0.8
docker pull nginx:1.18.0

docker images # 查看有哪些镜像

5. 构建镜像

第一步: 在/root目录(主目录)新建mydata目录,将keke-admin.jar包和keke-blog.jar包传到这个mydata目录里面

pwd # 显示当前所在目录
mkdir mydata # 创建mydata目录
cd # 先回到主目录
cd mydata && ll # 查看mydata目录里面是否有keke-admin.jar包和keke-blog.jar包

第二步: 在mydata目录新建Dockerfile文件,写入如下

cd
cd mydata
touch Dockerfile
vim Dockerfile
# 基础镜像使用jdk1.8
FROM openjdk:8
# 作者
MAINTAINER xha
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名
ADD keke-blog.jar keke_blog.jar
# 运行jar包
RUN bash -c 'touch /keke_blog.jar'
ENTRYPOINT ["java","-jar","/keke_blog.jar"]
#暴露7777端口作为微服务
EXPOSE 7777

第三步: 在mydata目录执行如下,作用是构建huanf-blog.jar包的镜像,构建出来的镜像名为sangeng_blog

docker build -t sangeng_blog:1.0 .

第四步: 把mydata目录下的Dockerfile文件修改为如下

# 基础镜像使用jdk1.8
FROM openjdk:8
# 作者
MAINTAINER xha
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名
ADD keke-admin.jar keke_admin.jar
# 运行jar包
RUN bash -c 'touch /keke_admin.jar'
ENTRYPOINT ["java","-jar","/keke_admin.jar"]
#暴露8989端口作为微服务
EXPOSE 8989

第五步: 在mydata目录执行如下,作用是构建huanf-admin.jar包的镜像,构建出来的镜像名为sangeng_admin

docker build -t sangeng_admin:1.0 .

第六步: 检查是否构建出sangeng_blog和sangeng_admin镜像

docker images

6. 创建容器

第一步: 查看Docker-compose版本,如果你是按照我上面安装的docker,那么你肯定会有Docker-compose

docker compose version

第二步: 在mydata目录新建docker-compose.yml文件,写入如下

cd
cd mydata
touch docker-compose.yml
vim docker-compose.yml
#compose版本
version: "3"  
 

services:
  sangeng_blog:
#微服务镜像  
    image: sangeng_blog:1.0
    container_name: sangeng_blog
    ports:
      - "7777:7777"
#数据卷
    volumes:
      - /app/sangeng_blog:/data/sangeng_blog
    networks: 
      - blog_network
    depends_on: 
      - redis
      - mysql
      - nginx


  sangeng_admin:
#微服务镜像
    image: sangeng_admin:1.0
    container_name: sangeng_admin
    ports:
      - "8989:8989"
#数据卷
    volumes:
      - /app/sangeng_admin:/data/sangeng_admin
    networks:
      - blog_network
    depends_on:
      - redis
      - mysql
      - nginx
     
#redis服务
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/conf/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - blog_network
    command: redis-server /etc/redis/redis.conf
 
 #mysql服务
  mysql:
    image: mysql:8.0.19
    environment:
      MYSQL_ROOT_PASSWORD: 
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'keke_blog'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD:
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - blog_network
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问

 #nginx服务
  nginx:
    image: nginx:1.18.0
    ports:
      - "80:80"
      - "8093:8093"
      - "8094:8094"
    volumes:
      - /app/nginx/html:/usr/share/nginx/html
      - /app/nginx/logs:/var/log/nginx
      - /app/nginx/conf:/etc/nginx
    networks:
      - blog_network
    

 
 #创建自定义网络
networks: 
   blog_network:

第三步: 输入如下,作用是检查docker-compose.yml文件有没有语法错误,如果输入之后没任何输出,就说明没有语法错误

cd
cd mydata
docker compose config -q

如果你写的docker-compose.yml文件有语法错误,那么就直接用我写好的,下载链接如下

docker-compose.yml文件下载: https://cowtransfer.com/s/4ec4c4305acf40

第四步: 运行docker-compose.yml文件,就可以创建并运行java容器、mysql容器、redis容器、nginx容器。-d表示后台运行

docker compose up -d
docker ps -a #查看正在运行的容器

7. 导入数据库

第一步: 把前面在 '部署博客项目-数据库打包' 那里拿到的 'mybolgSite.sql' 文件上传到服务器的 /app/mysql/db 目录

ll /app/mysql/db # 查看目录里面有没有'mybolgSite.sql'文件

第二步: 如何查看容器ID,每个人的容器ID都是不同的,以你的为准

docker ps -a

第三步: 进入MySQL容器内部,执行导入sql文件的操作

docker start mydata-mysql-1 # 启动mysql容器
docker exec -it 容器ID bash # 进入mysql容器内部
# 下面的是执行导入sql文件的操作,必须要进入了mysql容器内部才能执行如下命令,mysql的登录密码是228675
mysql -u root -p

use keke_blog;
source /var/lib/mysql/mybolgSite.sql;
show tables;

第四步: 退出MySQL容器内部

exit # 退出MySQL
exit # 退出MySQL容器

8. 配置Redis

第一步: 进入 /app/redis/redis.conf 目录下,新建redis.conf文件,写入如下,注意不需要把配置写完全,redis有自己的默认配置

cd /app/redis/redis.conf
touch redis.conf
vim redis.conf
bind 0.0.0.0
daemonize no
protected-mode no

第二步: 启动所有容器。nginx容器启动不了没关系,现在还没配置nginx

systemctl start docker # 启动docker
docker ps -a # 查看容器ID
docker restart 容器ID # 重新启动所有容器
docker ps # 查看实际启动的容器

9. 配置Nginx

第一步: 下载conf.zip文件,下载链接如下,解压后是conf文件夹,把conf文件夹里面的所有文件,上传到服务器的 /app/nginx/conf 目录下

conf.zip文件下载: https://cowtransfer.com/s/1354f10a05454b

其中conf文件夹里面有个nginx文件,文件的内容如下

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8093;
        server_name  localhost;
              location / {
                     root   /usr/share/nginx/html/blog_dist;
                     index  index.html index.htm;
                     try_files $uri $uri/ /index.html;
                   }

        }

    server {
        listen       8094;
        server_name  localhost;

              location / {
                     root   /usr/share/nginx/html/admin_dist;
                     index  index.html index.htm;
                     try_files $uri $uri/ /index.html;
                   }

        }
}

第二步: 把前面在 '部署博客项目-前端项目打包',我们在sg-blog-vue项目下有一个dist文件夹、在sg-vue-admin项目下有一个dist文件夹,如下图

第三步: 将两个dist文件夹分别重命名为blog_dist、admin_dist,然后上传到服务器的 /app/nginx/html 目录下

第四步: 启动所有容器。注意,这次nginx容器是可以正常启动的,并且全部容器都是正常启动的

systemctl start docker # 启动docker
docker ps -a # 查看容器ID
docker restart 容器ID # 重新启动所有容器
docker ps # 查看实际启动的容器

到此就结束了所有部署相关的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值