本篇记录全部流程
- (第9次按文档流程重写,完玉成部流程)
- (第10次按文档流程重写,测试可行,团体完成)
第十次测试开始
测试完成,团体流程走下来,快的半小时,慢两小时内可以完成
任务目标
- 在Desktop Docker中安装一个Ubuntu镜像的docker。
- 使用OneInStack工具安装Redis+MySql8.0+nginx。
- redis设置只能127.0.0.1本机访问。
- MySql须要设置表名巨细写忽略。MySql设置本身姓名缩写的账号,设置暗码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具举行远程毗连。
- 完成以上操纵后,请把docker提交为新的镜像Ubuntu-new,并把镜像生存为硬盘上某个tar文件。(作为日后完备的初始态的项目服务器情况镜像文件)
- 在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
- 在nginx中设置若依前端,负载平衡方式访问若依后端,并在本机举行访问。
docker镜像制作-详细流程
1.下载Docker Destop
1.1 开启vpn
1.2下载Docker Desktop
网址:https://www.docker.com/products/docker-desktop/
注意事项:
- 安装位置默以为c盘
- 修改安装位置须要使用cmd指定安装位置
- cmd下令:start /w "" "D:\windows\下载\Docker_Desktop_Installer.exe" install --installation-dir=D:\Docker --windows-containers-default-data-root=D:\DockerData
cmd下令参数分析
参数值分析--installation-dirD:\DockerDocker Desktop 步伐本身的安装目次(默认在 C 盘)--windows-containers-default-data-rootD:\DockerDataWindows 容器的默认数据存储根目次(镜像、容器文件等)2.下载Ubuntu
2.1 打开Docker Desktop
2.2 修改镜像安装位置
2.3 拉取Ubuntu
拉取乐成TAG会打钩后,而且下方会出现ubuntu:lastest
3.设置Ubuntu
3.1 启动容器
- win+R
- 输入cmd,打开下令行窗口
- 创建容器下令:docker run -itd --privileged -p 13306:3306 -p 8080:80 -p 22222:22 --name ubuntu-server ubuntu /bin/bash
cmd参数分析
参数作用--privileged提供管理员权限--name ubuntu-server将容器定名为ubuntu-server参数宿主机端口容器端口用途-p 13306:3306133063306MySQL 数据库服务-p 8080:80808080HTTP/Web 服务(Nginx)-p 22222:222222222SSH 远程登录3.2进入容器
- 运行下令:docker exec -it ubuntu-server bash
大概图形界面进入
3.3安装vim、wget、ssh
- 检察文件是否存在,并备份文件
检察下令: cat /etc/apt/sources.list
备份下令: cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
- 更换为国内镜像源
更换下令:sed -i -e 's|http://archive.ubuntu.com/ubuntu|http://mirrors.aliyun.com/ubuntu|g' -e 's|http://security.ubuntu.com/ubuntu|http://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list.d/ubuntu.sources
- 实行效果
检察是否乐成:cat /etc/apt/sources.list.d/ubuntu.sources
- 更新软件包索引
下令: apt-get update
- 安装vim(安装过程碰到Y/N全部选择y)
下令: apt-get install vim(vim 文本编辑器,比vi好用一些)
此处选择5.Asia(亚洲)
此处选择69.Shanghai(上海)
- 安装wget(安装过程碰到Y/N全部选择y)
下令: apt-get install wget (wegt 下令行下载工具)
- 安装ssh(安装过程碰到Y/N全部选择y)
下令: apt-get install ssh (ssh 用于远程毗连)
- 重置暗码(Docker容器默认没有暗码)
下令: passwd root
- 编辑SSH设置允许root登录
下令: vim /etc/ssh/sshd_config
- 按 i 进入编辑模式
修改以下设置项:
PermitRootLogin yes (允许root远程登录,在正式使用中存在安全隐患)
允许22端口与22222端口举行远程毗连
- 生存退出
按esc退出编辑模式,输入:wq生存退出
- 重新启动ssh
下令: service ssh restart
- 远程毗连测试
下令: ssh -p 22222 [email protected]
出现远程主机变更告诫
- 在Docker 容器重修,会出现此告诫导致远程毗连失败
删除 SSH 已知主机密钥下令: ssh-keygen -R [127.0.0.1]:22222
测试毗连
- 使用ssh -p 22222 [email protected],毗连乐成
缘故起因 : 在创建容器时,设置了端口映射22222:22
容器内22222端口并未用到,要用到可以设置22222:22222
点击检察主动化安装步调### (废弃,太慢了,服务器大概处于关闭状态)主动化安装(注意host is down,出现就洗洗睡,换个时间再来)OneStack一键安装:https://oneinstack.com/auto/**本次任务: Redis + MySql 8.0 + nginx** - 安装下令(第一次下载使用国外源,花了7小时左右,第8次切换源下载,预计3小时)`wget -c http://mirrors.oneinstack.com/oneinstack.tar.gz && tar xzf oneinstack.tar.gz && ./oneinstack/install.sh --db_option 1 --dbinstallmethod 1 --dbrootpwd 1234567890 --nodejs --redis `4.测试主动化安装内容
4.1 Redis运行
- 查找 Redis 设置文件位置
下令: find / -name "redis.conf" 2>/dev/null
- 使用设置文件启动Redis服务
下令: redis-server /usr/local/redis/etc/redis.conf
- 进入Redis客户端
下令: redis-cli
在 redis-cli 中实行以下下令:
ping 预期返回: PONG
set test_key "Hello Redis" 预期返回: OK
get test_key 预期返回: "Hello Redis"
del test_key 预期返回: (integer) 1
exit
Redis运行正常
4.2 Mysql运行
- 进入mysql
下令: mysql -u root -p
- 查抄 MySQL 是否安装
下令:which mysql
下令: find /usr/local -name "mysql" -type d 2>/dev/null
- 设置情况变量
下令: echo 'export PATH=/usr/local/mysql/bin PATH' >> /etc/profile
下令: source /etc/profile
- 安装依靠(中心省略部分流程,按照下面运行大概无法乐成运行)
下令: apt-get install -y libaio1t64
- 创建软链接
下令: ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
下令: ldconfig
- 初始化数据库
下令: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
- 启动 MySQL
下令: /usr/local/mysql/bin/mysqld_safe --user=mysql &
实行后,ctrl+c退出
- 进入mysql
下令: mysql -u root -p
- 测试mysql
下令: SHOW DATABASES;
下令: SELECT VERSION();
- 退出
下令: exit
4.3 Tomact运行
- 启动Tomact
下令: /usr/local/tomcat/bin/catalina.sh start
- 测试
下令: curl http://localhost:8080
- 克制Tomact
下令:/usr/local/tomcat/bin/catalina.sh stop
- 编辑设置文件
下令: vi /usr/local/tomcat/conf/server.xml
4.4 Nginx运行
- 启动nginx
下令: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- 测试(须要先克制Tomact)
下令: curl http://localhost
5.docker重启后启动清单
- 启动对应容器
- 进入容器: docker exec -it ubuntu-server bash
- 开启ssh服务: service ssh restart
- 启动redis: redis-server /usr/local/redis/etc/redis.conf
- 启动mysql: /usr/local/mysql/bin/mysqld_safe --user=mysql &
- 启动Tomact: /usr/local/tomcat/bin/catalina.sh start
- 启动nginx: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3.4 手动安装nginx + mysql80 + redis
mysql8.0安装
- 安装mysql8.0
下令: apt install mysql-server-8.0
- 查抄是否安装完成
下令: service mysql status
- 启动mysql
下令: service mysql start
下方的warning不影响mysql启动
- 检察是否启动
下令: service mysql status
- 进入mysql
下令: mysql -u root
- 设置暗码
下令:ALTER USER 'root'@'localhost' IDENTIFIED BY '新暗码';
- 测试是否设置乐成
下令: mysql -u root -p
redis安装
- 安装redis
下令: apt install -y redis-server
- 检察是否安装乐成
下令: redis-cli --version
- 启动redis
下令: redis-server
背景运行下令: redis-server --daemonize yes
- 测试redis客户端毗连
下令: redis-cli ping
- 设置暗码
下令: sed -i 's/^# requirepass foobared/requirepass 暗码/' /etc/redis/redis.conf
- 重启redis加载设置
克制下令: redis-cli shutdown
启动下令: redis-server /etc/redis/redis.conf --daemonize yes
- 测试暗码是否设置乐成
进入redis下令: redis-cli
测试下令: ping
输入暗码: AUTH 暗码,暗码准确返回OK
测试下令: ping
安装nginx
- 安装nginx
下令:apt install -y nginx
- 查抄是否安装乐成
下令: nginx -v
- 启动nginx
下令: service nginx start
- 安装curl
下令: apt install -y curl
- 测试是否可以正常使用
下令: curl http://localhost
4.制作新的镜像文件并生存到本地
- 制作新的镜像文件
下令:docker commit ubuntu-server ubuntu-new
未实行前
实行后
- 生存到本地
下令:docker save -o ubuntu-new.tar ubuntu-new
此下令会将ubuntu-new.tar默认生存到到当前的工作目次
指定生存位置的下令(地点: D:\ubuntu-new.tar):
docker save -o D:\ubuntu-new.tar ubuntu-new
- 找不到文件
下载Everything搜刮ubuntu-new.tar
注意: 不要去Microsoft Store下载,去官网这东西是免费的
- docker制作简朴示例
任务完成情况
- 在Desktop Docker中安装一个Ubuntu镜像的docker。
- 使用OneInStack工具安装Redis+MySql8.0+nginx。
- redis设置只能127.0.0.1本机访问。
- MySql须要设置表名巨细写忽略。MySql设置本身姓名缩写的账号,设置暗码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具举行远程毗连。
- 完成以上操纵后,请把docker提交为新的镜像Ubuntu-new,并把镜像生存为硬盘上某个tar文件。(作为日后完备的初始态的项目服务器情况镜像文件)
- 在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
- 在nginx中设置若依前端,负载平衡方式访问若依后端,并在本机举行访问。
redis任务
- 检察redis设置文件位置
下令: ls -l /etc/redis/redis.conf
- 编辑redis设置文件
下令: vim /etc/redis/redis.conf
- 添加只允许访问本机(redis默认设置即为只允许本机访问)
添加 bind 127.0.0.1 -::1(同时运行IPV6与IPV4的本机地点访问)
mysql任务
设置表名巨细写忽略(注意: 此操纵须要删除数据库全部数据,不要轻易实行)
- 克制mysql服务
下令: service mysql stop
- 删除删除旧数据目次并重修
下令1:rm -rf /var/lib/mysql
下令2:mkdir /var/lib/mysql
下令3:chown mysql:mysql /var/lib/mysql
- 编辑设置文件
下令: vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加: lower_case_table_names = 1
- 初始化数据库
下令: /usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1
- 启动mysql
下令: service mysql start
- 检察临时暗码
下令: grep 'temporary password' /var/log/mysql/error.log
- 进入mysql
下令: mysql -u root -p
- 设置暗码
下令: ALTER USER 'root'@'localhost' IDENTIFIED BY '新暗码';
- 测试是否见效
创建数据库: CREATE DATABASE testdb;
使用数据库: use testdb;
创建表: CREATE TABLE TestTable (id INT);
再次创建表: CREATE TABLE testtable (id INT);
MySql设置账号,设置暗码,能远程访问,能使用数据库访问工具举行远程毗连。
- 进入mysql
下令: mysql -u root -p
- 创建一个账号('%' 体现允许从任何主机远程毗连)
下令: CREATE USER '账号'@'%' IDENTIFIED BY '暗码';
- 授予创建的账号权限
下令: GRANT ALL PRIVILEGES ON *.* TO '账号'@'%';
*.*中的第一个 * 体现为 允许访问的数据库名 ,* 为全部数据库
*.*中的第一个 * 体现为 允许访问的表名 ,* 为全部当前数据库下的全部表明
my_db.table_1体现,允许访问my_db数据库的table_1表
- 革新权限,使权限见效
下令: FLUSH PRIVILEGES;
- 退出mysql
下令: exit
- 编辑设置文件,允许远程毗连
下令; vim /etc/mysql/mysql.conf.d/mysqld.cnf
直接修改为0.0.0.0存在安全隐患(并不发起)
- 重新加载设置
下令: service mysql reload
- 检察mysql暗码
下令: cat /etc/mysql/debian.cnf
- 进入mysql
下令: mysql -u root -p
- 创建debian-sys-maint用户并设置体系设置暗码
下令: CREATE USER 'debian-sys-maint'@'localhost' IDENTIFIED BY 'mysql暗码';
- 授予权限
下令: GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' WITH GRANT OPTION;
- 革新权限
下令: FLUSH PRIVILEGES;
- 重启mysql,debian-sys-maint见效
下令: service mysql restart
- 远程毗连
将docker提交为新的镜像Ubuntu-new,并把镜像生存为硬盘上Ubuntu-new.tar文件
- 将docker提交为新的镜像Ubuntu-new
cmd下令: docker commit ubuntu-server ubuntu-new
- 将镜像生存到硬盘上并定名为Ubuntu-new.tar
cmd下令: docker save -o ubuntu-new.tar ubuntu-new
在docker中运行jar文件,分别运行于8080和8081两个端口。
- 使用winSCP工具毗连docker
- 将jar包、sql文件、dist文件放入到docker的root/ruoyi/下
- 导入sql文件
进入数据库 : mysql -u root -p
创建数据库 : CREATE DATABASE IF NOT EXISTS mes_system CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
使用数据库 : use mes_system
导入sql脚本 : source /root/ruoyi/mes_system2.sql
- 进入ruoyi文件夹
下令: cd /root/ruoyi/
- 创建application.yml并写入设置
下令: vi application.yml
application.yml设置- spring:
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driverClassName: com.mysql.cj.jdbc.Driver
- druid:
- master:
- url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
- username: 用户名
- password: 密码
- slave:
- enabled: false
- url:
- username:
- password:
- initialSize: 5
- minIdle: 10
- maxActive: 20
- maxWait: 60000
- timeBetweenEvictionRunsMillis: 60000
- minEvictableIdleTimeMillis: 300000
- maxEvictableIdleTimeMillis: 900000
- validationQuery: SELECT 1
- testWhileIdle: true
- testOnBorrow: false
- testOnReturn: false
- webStatFilter:
- enabled: true
- statViewServlet:
- enabled: true
- allow:
- url-pattern: /druid/*
- login-username: ruoyi
- login-password: 123456
- filter:
- stat:
- enabled: true
- log-slow-sql: true
- slow-sql-millis: 1000
- merge-sql: true
- wall:
- config:
- multi-statement-allow: true
- redis:
- # 主机地址(本地填 localhost 或 127.0.0.1,远程填服务器IP)
- host: 127.0.0.1
- # 端口(默认6379)
- port: 6379
- # 密码
- password: Redis密码
- # 数据库索引(默认0)
- database: 0
- # 连接超时时间(毫秒)
- timeout: 10s
- # 连接池配置
- lettuce:
- pool:
- # 最小空闲连接
- min-idle: 0
- # 最大空闲连接
- max-idle: 8
- # 最大活跃连接
- max-active: 8
- # 最大等待时间(负数表示无限制)
- max-wait: -1ms
复制代码
- 安装JAVA17
下令: apt install -y openjdk-17-jdk
- 运行jar包与8081与8080接口(cmd的窗口不要关,关了历程也会克制)
8080端口下令: java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8080 &
8081端口下令: java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8081 &
5.检察ruoyi-admin运行端口
下令: ps aux | grep ruoyi-admin
- 完成在docker中运行jar文件,分别运行于8080和8081两个端口
在nginx中设置若依前端,负载平衡方式访问若依后端,并在本机举行访问。
- 将root/ruoyi/dist文件放入/var/www/html
下令:cp -r /root/ruoyi/dist /var/www/html
- 修改nginx设置
下令: vim /etc/nginx/sites-available/default
进入后删除全部内容,本身手动设置,简便
- 设置负载平衡(这个须要放在server外部)
负载平衡代码- # 负载均衡
- upstream OrdinaryPolling {
- # 负载均衡策略:ip_hash 保证同一个用户请求落在同一台服务器上
- # ip_hash;
- # 权重配置:8080权重1,8081权重1
- server 127.0.0.1:8080 weight=1;
- server 127.0.0.1:8081 weight=1;
- }
复制代码 前端设置代码- server {
- listen 80 default_server; # IPv4:监听80端口,设为默认服务器
- listen [::]:80 default_server; # IPv6:监听80端口,设为默认服务器
- root /var/www/html/dist; # 前端文件根目录
- index index.html index.htm; # 检索顺序
- # 前端请求
- server_name localhost;
- location / {
- # try_files 解决前端路由404问题,并返回静态页面
- try_files $uri $uri/ /index.html;
- }
- }
复制代码 proxy_pass http://OrdinaryPolling/ 反面的/肯定要带上,否则会导致404
后端设置代码- # 后端API请求
- location /prod-api/ {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header REMOTE-HOST $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # 将请求转发给上面定义的 upstream 池
- proxy_pass http://OrdinaryPolling/;
- }
复制代码
- 检测nginx设置是否正常
下令: nginx -t
- 重新加载nginx设置
下令: nginx -s reload
- 主机访问localhost:8080
- 添加日志打印
日志打印代码- # ========== 定义日志格式,显示后端端口 ==========
- log_format loadbalancing '$remote_addr -$remote_user [$time_local] "$request" '
- 'status=$status body_bytes_sent=$body_bytes_sent '
- 'upstream_addr=$upstream_addr upstream_status=$upstream_status';
- # ========== 使用自定义日志格式 ==========
- access_log /var/log/nginx/access.log loadbalancing;
复制代码
- 测试负载平衡是否实现
下令1: nginx -t
下令2: nginx -s reload
下令3: for i in {1..20}; do curl -s http://localhost/prod-api/captchaImage > /dev/null && echo "哀求 $i 完成"; done
下令4: tail -n 30 /var/log/nginx/access.log
下令5: > /var/log/nginx/access.log
设置的比例为1:1,但是现实并没有,但是负载平衡已经实现
- 在nginx中设置若依前端,负载平衡方式访问若依后端,并在本机举行访问
任务完成
- 在Desktop Docker中安装一个Ubuntu镜像的docker。
- 使用OneInStack工具安装Redis+MySql8.0+nginx。
- redis设置只能127.0.0.1本机访问。
- MySql须要设置表名巨细写忽略。MySql设置本身姓名缩写的账号,设置暗码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具举行远程毗连。
- 完成以上操纵后,请把docker提交为新的镜像Ubuntu-new,并把镜像生存为硬盘上某个tar文件。(作为日后完备的初始态的项目服务器情况镜像文件)
- 在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
- 在nginx中设置若依前端,负载平衡方式访问若依后端,并在本机举行访问。
容器重新启动后须要实行
- 启动ssh: service ssh start
- 启动redis(背景运行) : redis-server /etc/redis/redis.conf &
- 启动mysql : service mysql start
- 启动nginx : nginx
- 启动jar包(背景运行) : nohup java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8080 > /root/ruoyi/log8080.log 2>&1 &
|