购买服务器
- 阿里云2核2G 99元/年 2026年3月1日截止
- 内核版本 Alibaba Cloud Linux 3.2104 LTS 64位
服务器配置
- 禁用密码登陆,并设置SSH密钥登陆
- Docker容器数据卷的挂载根目录:/data/
docker
安装
配置镜像加速器
docker-compose
安装
权限设置
- cd /usr/local/bin/
- ll -> 检查docker-compose的权限是否为
-rwxr-xr-x - 将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose
mysql(docker容器)
创建挂载目录
- sudo mkdir -p /data/mysql/data
- sudo mkdir -p /data/mysql/conf
创建配置文件
sudo vim /data/mysql/conf/my.cnf
[mysqld]
default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
character-set-server=utf8mb4 # 设置mysql服务端默认字符集
pid-file = /var/run/mysqld/mysqld.pid # pid文件所在目录
socket = /var/run/mysqld/mysqld.sock # 用于本地连接的socket套接字
datadir = /var/lib/mysql # 数据文件存放的目录
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # 定义mysql应该支持的sql语法,数据校验等!
# 允许最大连接数
max_connections=200
# 同一局域网内注意要唯一
server-id=3306
# 开启二进制日志功能 & 日志位置存放位置`/var/lib/mysql`
#log-bin=mysql-bin
log-bin=/var/lib/mysql/mysql-bin
# binlog格式
# 1. STATEMENT:基于SQL语句的模式,binlog 数据量小,但是某些语句和函数在复制过程可能导致数据不一致甚至出错;
# 2. MIXED:混合模式,根据语句来选用是 STATEMENT 还是 ROW 模式;
# 3. ROW:基于行的模式,记录的是行的完整变化。安全,但 binlog 会比其他两种模式大很多;
binlog_format=ROW
# FULL:binlog记录每一行的完整变更 MINIMAL:只记录影响后的行
binlog_row_image=FULL
# 日志文件大小
max_binlog_size=100M
# 定义清除过期日志的时间(这里设置为7天)
expire_logs_days=7
# ================= ↑↑↑ mysql主从同步配置end ↑↑↑ =================
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4 # 设置mysql客户端默认字符集
创建docker-compose.yml
sudo vim /data/mysql/docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7 #mysql版本
container_name: mysql
volumes:
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456 #root用户密码
TZ: UTC
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
执行docker-compose.yml
- cd /data/mysql
- docker-compose up -d
设置阿里云的安全组
- 打开3306端口
从docker进入mysql容器连接mysql
docker exec -it mysql mysql -uroot -p
测试连接
- mysql -h -u -p
- create database test default character set utf8mb4 collate utf8mb4_general_ci;
- use test;
- show variables like 'character_set_database'; -> utf8mb4
- show variables like 'collation_database'; -> utf8mb4_general_ci
redis(docker容器)
创建挂载目录
- sudo mkdir -p /data/redis
创建配置文件
sudo vim /data/redis/redis.conf
#不加无法连上服务器
protected-mode no
port 6379
timeout 0
#rdb配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data
appendonly yes
appendfsync everysec
#设置你的redis密码
requirepass 123456
创建docker-compose.yml
sudo vim /data/redis/docker-compose.yml
version: '3'
services:
redis:
image: redis:6.2.6
container_name: redis
restart: always
ports:
- 6379:6379
volumes:
- /data/redis/redis.conf:/etc/redis/redis.conf
- /data/redis/data:/data
- /data/redis/logs:/logs
command: ["redis-server","/etc/redis/redis.conf"]
执行docker-compose.yml
- cd /data/redis
- docker-compose up -d
设置阿里云的安全组
- 打开6379端口
测试连接
- redis-cli -h xxx.xxx.xxx.xxx -p 6379
- auth ${password}
- select 0
- set s 1
- get s
minio (docker容器)
创建挂载目录
- sudo mkdir -p /data/minio
创建docker-compose.yml
version: '3'
services:
minio:
image: "quay.io/minio/minio:RELEASE.2022-08-02T23-59-16Z"
container_name: minio
restart: always
ports:
- "9000:9000" # api 端口
- "9001:9001" # 控制台端口
environment:
TZ: Asia/Shanghai # 时区上海
MINIO_ROOT_USER: admin # 管理后台用户名
MINIO_ROOT_PASSWORD: 12345678 # 管理后台密码,最小8个字符
# MINIO_SERVER_URL: "" # 指定分享的域名,如果连不上就去掉这行重新执行
MINIO_COMPRESS: "off" # 开启压缩 on 开启 off 关闭
MINIO_COMPRESS_EXTENSIONS: "" # 扩展名 .pdf,.doc 为空 所有类型均压缩
MINIO_COMPRESS_MIME_TYPES: "" # mime 类型 application/pdf 为空 所有类型均压缩
volumes:
- /data/minio/data:/data/ # 映射当前目录下的data目录至容器内/data目录
- /data/minio/config:/root/.minio/ # 映射配置目录
command: server --address ':9000' --console-address ':9001' /data # 指定容器中的目录 /data
privileged: true
执行docker-compose.yml
- cd /data/minio
- docker-compose up -d
设置阿里云的安全组
- 打开9000、9001端口
测试连接
- xxx.xxx.xxx.xxxx:9001
- create bucket
- upload file
- setting -> bucket访问权限改为public
- share -> 改为自己的IP,去掉问号及其之后的内容
插件 & 命令
lsof&dnf -y install lsof
笔记
- DNF包管理器、YUM包管理器
- PNPM、NPM
- Docker挂载目录的作用
- Docker-compose.yml的语法
- IPV4 IPV6 简单说明
jasypt
配置文件中给明文密码加密用
springboot+maven整合
- 启动类上加
@EnableEncryptableProperties - maven仓库中加
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
- application.yml中加
jasypt:
encryptor:
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
# 加密密钥最好是放到服务器的启动文件中
# password: JASYPT_ENCRYPT_PASSWORD
password: 96e060fa-d3a0-b694-e0de-d44dbbc689fd
4.创建test类,使用生成的encrypt值
import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.Test;
public class Jasypt {
@Test
public void generate() {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword("96e060fa-d3a0-b694-e0de-d44dbbc689fd");
String encrypt = encryptor.encrypt("需要加密的密码");
System.err.println(encrypt);
String decrypt = encryptor.decrypt(encrypt);
System.err.println(decrypt);
}
}
- 在对应的环境配置文件中,比如给mysql加密,
mysql.password=ENC(第四步获取的encrypt值)