参考記事:
- 公文書
- Linux (CentOS7+) docker をインストールして jeecgBoot プロジェクトをデプロイします
- CentOS7 は docker を使用して redis をインストールします
ドッカーをインストールする
私が使用している Tencent Cloud には docker イメージが付属しているため、この部分については詳しく説明しません。
- ヤムを更新する
yum update
- ダウンロードツールをインストールする
yum install -y yum-utils
- yum キャッシュを更新する
yum makecache
- ドッカーをインストールする
yum install docker-ce docker-ce-cli containerd.io -y
- ダウンロードが成功したかどうかを確認します。
docker -version
インストールが成功したことを示すバージョン番号が表示されます。
ダウンロードミラー
-
ドッカーを起動
systemctl start docker
-
ダウンロードミラー
#从Docker Hub下载镜像
docker pull mysql:5.7#指定版本
docker pull java
docker pull redis
docker pull nginx
- Docker コンテナー イメージを表示する
#列出本地镜像
docker images
バックエンドをデプロイする
mysqlを起動
- パスワードを 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: 绑定一个卷
- コンテナに
#列出所有创建的容器信息,找到对应镜像的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 :分配一个伪终端
- テスト
#mysql -u 用户名 -p 密码
#密码如果直接明文写在这条命令行上,有些不方便(怕被别人看到),可以输入命令后回车,此时提示你输入密码,这时候输入的密码就不再是明文的了
mysql -u root -p
次にパスワードを入力します
4. sql ファイルをインポートします
ここでは navicat を使用します。まずデータベースに接続します。
接続名を自由に記述し、ホスト名として自分のサーバーまたは仮想マシンの IP アドレスを入力し、ユーザー名とパスワードを入力します。
プロジェクトの sql ファイル
sql ファイルの場所にインポートされたログイン サーバーのユーザー名とパスワードです。jeecg-boot/db/jeecgboot-mysql-5.7.sql
レディスを起動
- インストール ディレクトリを作成する
# mkdir -p可以自动创建需要的上级目录
# touch用来创建新的空文件
mkdir -p /root/redis/data /root/redis/conf
touch /root/redis/conf/redis.conf
- 構成ファイルを変更する
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
- コンテナーを実行し
、パスワードを 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
- コンテナに
docker exec -it redis容器对应的ID号 /bin/bash
- Redis を接続する
# redis命令行工具
redis-cli
- パスワードを入力する
auth 密码
Javaを起動
- ルート ディレクトリの下に jar ディレクトリを作成します。
cd /
mkdir jar
2. jeecgBoot のバックエンド プロジェクトをパッケージ化して、jar フォルダー
mysql にアップロードし、ホストとユーザー名とパスワードに対応する redis をパッケージ化
手順を変更することを忘れないでください。
- 製品: 本番環境
- clean: プロジェクトのキャッシュをクリアします
- package:
jar パッケージをパッケージ化すると、以下が生成されます。
jar パッケージをアップロードします。ファイルを xftp7 でアップロードすることをお勧めします。ドラッグ アンド ドロップするだけです。
注: 後でローカルで実行する場合は、1 のチェックを外して 3 をクリックします。
- 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
- 稼働状況を確認する
新しいターミナルを開く
# 监视/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
ログを表示するために使用します