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=remote_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 remote_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=remote_redis -p 6379:6379 redis:5.0
# 对外开放指定端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 使用外部机器连接redis

Docker 安装RabbitMQ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 拉去镜像
docker pull rabbitmq
# 运行镜像
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq

docker exec -it 容器id /bin/bash
# 开启web管理界面
rabbitmq-plugins enable rabbitmq_management
# 创建账号和密码
rabbitmqctl add_user panther 123456

# 设置用户角色
rabbitmqctl set_user_tags panther administrator

# 为用户添加资源权限
# set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" panther ".*" ".*" ".*"
# 添加配置、写、读权限
======
# 删除用户
rabbitmqctl delete_user guest

image-20230825104136892

部署后端

修改后端配置文件

  • 修改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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    user nginx;
    worker_processes auto;
    error_log /oj/nginx/error.log;
    pid /run/nginx.pid;
    include /usr/share/nginx/modules/*.conf;

    events {
    worker_connections 1024;
    }

    http {

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 4096;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 4;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;

    server {
    listen 443 ssl;
    server_name gincode.icu;

    ssl_certificate /etc/ssl/certs/xxxxx.pem;
    ssl_certificate_key /etc/ssl/certs/xxxx.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
    root /前台打包地址;
    add_header 'Access-Control-Allow-Origin' '*';
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
    }

    location /api {
    proxy_pass http://后端接口地址:9001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    }
    }

    # 因为项目前期一直使用ip访问,将IP的流量转向域名
    server {
    listen 80;
    server_name 后端接口地址;
    rewrite ^/(.*)$ http://www.gincode.icu/$1 permanent;
    }
    }

    启动nginx

    1
    2
    # 在sbin目录下
    ./nginx

    测试项目

    image-20240110234929475