文件备份到 OSS

  • 配置环境变量
vim ~/.bash_profile

export OSS_ACCESS_KEY_ID=
export OSS_ACCESS_KEY_SECRET=

source ~/.bash_profile
  • 程序
    upload.py
# -*- coding: utf-8 -*-
import glob
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

directory = '/usr/local/projects/sharp-admin/mysqldump/'

files = glob.glob(os.path.join(directory, 'backup-*.sql'))

if not files:
    print("没有找到备份文件")
else:
    latest_file = max(files, key=os.path.getmtime)
    print("最新的备份文件是:", latest_file)

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-beijing.aliyuncs.com"

# 填写Endpoint对应的Region信息,例如cn-hangzhou。注意,v4签名下,必须填写该参数
region = "cn-beijing"
# 填写Bucket名称,例如examplebucket。
bucketName = "sqldump-all"
# 创建Bucket实例,指定存储空间的名称和Region信息。
bucket = oss2.Bucket(auth, endpoint, bucketName, region=region)

# 使用put_object_from_file方法将本地文件上传至OSS
bucket.put_object_from_file("py/" + os.path.basename(latest_file), latest_file)
  • 安装依赖
python3 -m pip install oss2
  • 运行
python3 upload.py
  • 如果定时运行的话,需要带上环境变量,cron 默认使用的是「精简的 shell 环境」,不会加载你的用户登录配置文件(如 .bash_profile, .bashrc)
40 23 * * * bash -c 'source ~/.bash_profile && /usr/bin/python3 /usr/local/projects/sharp-admin/upload.py'

Docker 部署 sharp-admin 应用

mkdir -p /usr/local/projects/sharp-admin

目录结构

├── data
├── deploy
│   └── sharp-admin-2.0-SNAPSHOT.jar
├── docker-compose.yaml
├── Dockerfile
└── init
    └── sharp-admin.sql
└── mysqldump
    └── mysqldump.sh
  • 安装 docker & docker-compose
  • 运行
docker-compose up -d
  • 域名解析 & 配置方向代理
vim /etc/nginx/conf.d/sharp-admin.conf

sharp-admin.conf

server {
    listen 80;
    server_name sharp-admin.xhope.top;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

访问 sharp-admin.xhope.top
– 数据库备份

crontab -e
00 23 * * * docker exec db /bin/bash /var/backups/mysqldump.sh
  • 开机启动 docker
sudo systemctl enable docker
crontab -e
40 23 * * * bash -c 'source ~/.bash_profile && /usr/bin/python3 /usr/local/projects/sharp-admin/upload.py'

其他参考:
Linux自动打包上传并运行SpringBoot程序

docker 部署 sharp-admin + 1Panel 管理面板

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

参考:

https://www.cnblogs.com/michaelshen/p/18538178
https://letsencrypt.org/getting-started/
https://certbot.eff.org/

certbot 选择平台

My HTTP website is running Nginx ON Linux(snap)

按照提示操作如下:

sudo yum install snapd

sudo systemctl enable --now snapd.socket

sudo ln -s /var/lib/snapd/snap /snap

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

sudo certbot --nginx

sudo certbot renew --dry-run

手动部署 sharp-admin 应用

vim /etc/nginx/conf.d/sharp-admin.conf

sharp-admin.conf

server {
    listen 80;
    server_name sharp-admin.xhope.top;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

mkdir -p /usr/local/projects/sharp-admin

目录结构

├── deploy
│   └── sharp-admin-2.0-SNAPSHOT.jar
├── application-prod.yml(可选)
├── sharp-admin.sql
├── config.sh
└── deploy.sh
└── mysqldump.sh
└── mysqldump
  • 数据库初始化
 mysql -uroot -p123456 sharp-admin < /usr/local/projects/sharp-admin/sharp-admin.sql

– 启动 sharp-admin 应用

sh deploy.sh

访问 sharp-admin.xhope.top
– 数据库备份

chmod +x /usr/local/projects/sharp-admin/mysqldump.sh
crontab -e
0 23 * * * /usr/local/projects/sharp-admin/mysqldump.sh
crontab -e
40 23 * * * bash -c 'source ~/.bash_profile && /usr/bin/python3 /usr/local/projects/sharp-admin/upload.py'

其他参考:
Linux自动打包上传并运行SpringBoot程序

docker 部署 sharp-admin + 1Panel 管理面板