Tencent Cloud (CentOS7) は Docker を使用して JeecgBoot をデプロイします

参考記事:

  1. 公文書
  2. Linux (CentOS7+) docker をインストールして jeecgBoot プロジェクトをデプロイします
  3. CentOS7 は docker を使用して redis をインストールします

ドッカーをインストールする

私が使用している Tencent Cloud には docker イメージが付属しているため、この部分については詳しく説明しません。

  1. ヤムを更新する
    yum update
  2. ダウンロードツールをインストールする
    yum install -y yum-utils
  3. yum キャッシュを更新する
    yum makecache
  4. ドッカーをインストールする
    yum install docker-ce docker-ce-cli containerd.io -y
  5. ダウンロードが成功したかどうかを確認します。
    docker -version
    インストールが成功したことを示すバージョン番号が表示されます。

ダウンロードミラー

  1. ドッカーを起動
    systemctl start docker
    ここに画像の説明を挿入

  2. ダウンロードミラー

#从Docker Hub下载镜像
docker pull mysql:5.7#指定版本
docker pull java
docker pull redis
docker pull nginx
  1. Docker コンテナー イメージを表示する
#列出本地镜像
docker images

ここに画像の説明を挿入

バックエンドをデプロイする

mysqlを起動

  1. パスワードを root に設定し、大文字と小文字を区別しないように設定します
#使用mysql镜像创建以后台模式启动一个容器,容器命名为mysql,指定将容器的3306端口映射到主机的3306端口,设置环境变量:密码为root,忽略大小写
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql --lower_case_table_names=1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v:	绑定一个卷
  1. コンテナに
#列出所有创建的容器信息,找到对应镜像的ID
docker ps -a
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

ここに画像の説明を挿入

#进入容器
docker exec -it 对应的ID号 /bin/bash

ここに画像の説明を挿入

docker exec [OPTIONS] CONTAINER COMMAND[ARG...]
OPTIONS说明:
-d :分离模式,在后台运行
-i :打开标准输入接受用户输入命令
-t :分配一个伪终端
  1. テスト
#mysql -u 用户名 -p 密码
#密码如果直接明文写在这条命令行上,有些不方便(怕被别人看到),可以输入命令后回车,此时提示你输入密码,这时候输入的密码就不再是明文的了
mysql -u root -p

次にパスワードを入力します
ここに画像の説明を挿入
4. sql ファイルをインポートします
ここでは navicat を使用します。まずデータベースに接続します。
接続名を自由に記述し、ホスト名として自分のサーバーまたは仮想マシンの IP アドレスを入力し、ユーザー名とパスワードを入力します。
ここに画像の説明を挿入
プロジェクトの sql ファイル
sql ファイルの場所にインポートされたログイン サーバーのユーザー名とパスワードです。jeecg-boot/db/jeecgboot-mysql-5.7.sql
ここに画像の説明を挿入

レディスを起動

  1. インストール ディレクトリを作成する
# mkdir -p可以自动创建需要的上级目录
# touch用来创建新的空文件
mkdir -p /root/redis/data /root/redis/conf
touch /root/redis/conf/redis.conf
  1. 構成ファイルを変更する
vi /root/redis/conf/redis.conf
    protected-mode no
    port 6379
    tcp-backlog 511
    requirepass uniplore
    timeout 0
    tcp-keepalive 300
    daemonize no
    supervised no
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile ""
    databases 30
    always-show-logo yes
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir ./
    replica-serve-stale-data yes
    replica-read-only yes
    repl-diskless-sync no
    repl-disable-tcp-nodelay no
    replica-priority 100
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    appendonly yes
    appendfilename "appendonly.aof"
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    aof-use-rdb-preamble yes
    lua-time-limit 5000
    slowlog-max-len 128
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    activerehashing yes
    hz 10
    dynamic-hz yes
    aof-rewrite-incremental-fsync yes
    rdb-save-incremental-fsync yes
  1. コンテナーを実行し
    、パスワードを myredis に設定します
# --restart=always:重启docker时自动启动相关容器
# --log-opt max-size=100m :容器日志文件上限大小100m
# --log-opt max-file=2 :窗口日志文件上限个数2
# -v 主机目录:容器内目录 :将容器目录挂载到本地,文件修改只要修改本机的文件,改完会自动同步到容器里
# --appendonly yes :容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
# --requirepass myredis :设置密码为myredis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /root/redis/conf/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass myredis
  1. コンテナに
    docker exec -it redis容器对应的ID号 /bin/bash
  2. Redis を接続する
# redis命令行工具
redis-cli
  1. パスワードを入力する
    auth 密码

Javaを起動

  1. ルート ディレクトリの下に jar ディレクトリを作成します。
cd /
mkdir jar

ここに画像の説明を挿入
2. jeecgBoot のバックエンド プロジェクトをパッケージ化して、jar フォルダー
mysql にアップロードし、ホストとユーザー名とパスワードに対応する redis をパッケージ化
ここに画像の説明を挿入
手順を変更することを忘れないでください。

  • 製品: 本番環境
  • clean: プロジェクトのキャッシュをクリアします
  • package:
    ここに画像の説明を挿入
    jar パッケージをパッケージ化すると、以下が生成されます。
    ここに画像の説明を挿入

jar パッケージをアップロードします。ファイルを xftp7 でアップロードすることをお勧めします。ドラッグ アンド ドロップするだけです。
ここに画像の説明を挿入
注: 後でローカルで実行する場合は、1 のチェックを外して 3 をクリックします。

  1. Javaを起動
#启动java
#latest是docker默认给打的标签
docker run -it -p 8080:8080 -v /jar/:/usr/jar/  --name java  -d java:latest
#进入容器
docker exec -it java容器对应id /bin/bash
#切换目录
cd /usr/jar
#查看jar包在不在
ls
#启动jar
nohup java -jar jeecg-system-start-3.4.2.jar>logs.txt  &
&:该命令在后台执行
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端程序仍然运行
nohup java -jar x.jar >logs.txt &: 不挂断运行命令,当账户退出或终端关闭时,程序仍然运行,并且输出重定向到logs.txt
  1. 稼働状況を確認する
    新しいターミナルを開く
# 监视/jar/logs.txt文件的尾部内容(默认10行,相当于添加参数 -n 10),刷新显示在屏幕上。按CTRL+C退出
tail -f /jar/logs.txt

最後に、操作が成功したことを示す次の図が表示されます。
ここに画像の説明を挿入

フロントエンドをデプロイする

modify.env.production

バックエンド サーバーの IP に変更します
ここに画像の説明を挿入

パック

yarn run build
パッケージングが完了すると、dist フォルダーがもう 1 つ作成されます。
ここに画像の説明を挿入

/html にアップロード

ここに画像の説明を挿入

/html ディレクトリに新しい nginx.conf.template を作成します

vi nginx.conf.template

user nginx;

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    
    
    worker_connections  1024;
}


http {
    
    
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 6;
    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;
    gzip_disable "MSIE [1-6]\.";

    server {
    
    
        listen       80;
        server_name  127.0.0.1;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
    
    
            root  /dist;
            try_files $uri $uri/ /index.html; #解决路由重定向跳转 404 页面配置
            index  index.html index.htm;
            if (!-e $request_filename) {
    
    
                rewrite ^(.*)$ /index.html?s=$1 last;
                break;
                }
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
    
    
         root   html;
        }
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    
    
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    
    
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    
    
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    
    
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

ここに画像の説明を挿入

nginxを起動

docker run -it -p 3000:80 -v /html/dist/:/dist/ -v /html/nginx.conf.template:/etc/nginx/nginx.conf --name nginx -d nginx:latest

正常に実行されるかどうかを確認します

ブラウザを開きます: http://ip アドレス: 3000
ここに画像の説明を挿入
失敗した場合は、docker logs nginx容器对应的idログを表示するために使用します

おすすめ

転載: blog.csdn.net/weixin_54218079/article/details/127362377