1. 服务器配置(买不起用的虚拟机)

  1. 2 核 4G(Centos 7)

    CentOS 安装 Docker

    官方网站上有各种环境下的安装指南,这里主要介绍 Docker CE 在 CentOS 上的安装。

    2.1 卸载(可选)

    如果之前安装过旧版本的 Docker,可以使用下面命令卸载:
    1
    2
    3
    4
    5
    6
    7
    8
    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

    2.2 安装 Docker

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 1、yum 包更新到最新 
    sudo yum update
    # 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # 3、 设置yum源
    # 3.1、方案一:使用ustc的(推荐)
    sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    # 3.2、方案二:使用阿里云(可能失败)
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 4、 安装docker;出现输入的界面都按 y
    sudo yum install -y docker-ce
    # 5、 查看docker版本
    docker -v
    # 6、 启动docker
    systemctl start docker

    2.3设置ustc镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 执行如下命令: 
    mkdir /etc/docker
    vi /etc/docker/daemon.json
    # 插入下面这条配置
    {
    "registry-mirrors": ["https://xd6yheuz.mirror.aliyuncs.com"]
    }
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    Docker安装mysql数据库

    安装mysql镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 搜索mysql镜像
    docker search mysql
    # 拉取mysql数据库
    docker pull mysql:8.0.32
    # 在/root目录下创建mysql目录用于存储mysql数据信息
    mkdir /root/mysql
    cd /root/mysql
    # 创建并启动守护式容器
    # -i:表示运行容器 -t:表示容器启动后会进入其命令行
    # -d:会创建一个守护式容器在后台运行 -v:表示目录映射关系
    docker run -id \
    -p 3307:3306 \
    --name=blog_mysql \
    -v /root/mysql/conf:/etc/mysql/conf.d \
    -v /root/mysql/logs:/logs \
    -v /root/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:8.0.32
    # 对外开放指定端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent

    配置mysql

    1
    2
    3
    4
    # 进入容器,操作mysql
    docker exec -it blog_mysql /bin/bash
    # 在外部使用navicat将数据库脚本导入
    # exit 退出镜像

    Docker安装Redis

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 搜索Redis镜像
    docker search Redis
    # 拉取mysql数据库
    docker pull redis:5.0
    # 创建并启动守护式容器
    docker run -id --name=blog_redis -p 6379:6379 redis:5.0
    # 对外开放指定端口
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    # 使用外部机器连接redis

    部署后端

    修改后端配置文件

  • 修改mysql和redis的真实地址
  • 然后打包上传到服务器

    docker-compose的安装

    3.1 安装 DockerCompose

    1
    curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 如果下载慢,可自行去github下载相应版本然后更名为docker-compose,上传到服务器的/usr/local/bin目录下

    3.2 设置文件可执行权限

    1
    chmod +x /usr/local/bin/docker-compose 

    3.3卸载

    1
    2
    3
    4
    5
    6
    # 二进制包方式安装的,删除二进制文件即可 
    rm /usr/local/bin/docker-compose
    # docker 删除容器
    docker rm -f <containerid>
    # 可以按照镜像id删除镜像,命令如下:
    docker rmi 镜像id

    编写Dockerfile文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # FROM java:8
    #这是由于Docker官方已经弃用java8镜像,想使用jdk1.8的话,可以使用openjdk。
    # 解决办法是,将Dockerfile改为
    FROM openjdk:8
    # 持久化文件
    VOLUME /temp

    # 添加jar包到容器 并从新命名
    ADD adminblog-1.0-SNAPSHOT.jar admin.jar

    RUN bash -c 'touch /admin.jar'
    ENTRYPOINT ["java", "-jar", "admin.jar"]

    # 暴露端口
    EXPOSE 9002

    因为两个项目都是使用的jdk8所以直接再linux上安装jdk8复用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    # 查看可安装java版本。执行成功后可以看见如下的结果
    yum -y list java*
    # 选择一个java版本进行安装,这里我们希望安装java1.8
    yum install -y java-1.8.0-openjdk-devel.x86_64
    # 查看已安装的jdk版本
    java -version
    # 执行下面指令可以查看java安装目录
    rpm -ql java-1.8.0-openjdk
    # 如果使用官网下载导入需要配置环境变量
    vim /etc/profile
    # 在文件底部输入以下信息,并保存
    JAVA_HOME=/home/java/jdk1.8.0_131
    JRE_HOME=$JAVA_HOME/jre
    PATH=$PATH:$JAVA_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    export JRE_HOME
    export PATH
    export CLASSPATH
    # 刷新环境变量配置文件使其立刻生效
    source /etc/profile
    # 最好建一个/usr/bin/java的java的超链接。
    ln -s /home/java/jdk1.8.0_131/bin/java /usr/bin/java

    构建docker 镜像

    1
    2
    3
    4
    5
    6
    7
    8
    # 构建docker 镜像
    docker build -f Dockerfile -t front-api:v1 .
    # 运行镜像
    docker run -id -p 9002:9002 front-api:v1
    # 构建docker 镜像
    docker build -f Dockerfile -t back-blog:v1 .
    # 运行镜像
    docker run -id -p 9001:9001 back-blog:v1

    前端打包

    修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    # 前台Vue项目修改项目运行端口是在config文件夹下的index.js文件当中
    port: 80
    # 前台接口的BaseURL在src文件夹下的store文件当中修改服务器地址
    baseURL:'http://192.168.67.129:9001/'
    # 然后打包将dist文件上传到服务器
    npm run build
    # 前台管理界面修改配置文件.env请求接口为真实服务器地址
    VUE_APP_BASE_API = 'http://192.168.67.129:9002'

    安装nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。
    yum install gcc-c++
    # Nginx的http模块需要使用pcre来解析正则表达式,需要安装pcre。
    yum install -y pcre pcre-devel
    # 安装依赖的解压包。
    yum install -y zlib zlib-devel
    # 创建文件夹存放nginx
    mkdir /usr/local/nginx
    # 远程下载nginx 没下载wget可在官网下载后传输的服务器
    wget https://nginx.org/download/nginx-1.22.1.tar.gz
    # 解压Nginx
    tar -zxvf nginx-1.16.1.tar.gz
    # 安装nginx
    ./configure --prefix=/usr/local/nginx
    make && make install

    配置nginx.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    worker_processes  1;
    events {
    worker_connections 1024;
    }

    http {

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

    server {
    listen 80;
    server_name localhost;

    location / {
    root /ginblog/front-blog/blog;
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
    }
    }

    server {
    listen 81;
    server_name localhost;

    location / {
    root /ginblog/front-blog/admin;
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
    }

    }

    }

    启动nginx

    1
    2
    # 在sbin目录下
    ./nginx

    测试项目