因为升级 PHP 版本,然后似乎 Nginx 搞炸了。。。
前言
我的后端环境 PHP (7.4) + Nginx (1.18) + MySQL (5.6) + Redis (5.0)。
数据备份
迁徙前的准备
备份 MySQL
MySQL 维护使用的是 Navicat Premium,如果数据较多,导出可能较慢。
备份 Redis
这个导出就比较简单了。
1 2 3
| redis-cli auth "如果设置了密码" save
|
备份路径可以通过 CONFIG GET dir
查看,一般在 /var/lib/redis
下。
备份 Nginx
一个自用的反代,支持白名单域名。
1 2 3 4 5 6 7 8 9 10 11 12 13
| location ~ ^/p { resolver 223.5.5.5 114.114.114.114;
if ($arg_url !~ (gitee\.com|sinaimg\.cn|game\.gtimg\.cn|pic.rmb.bdstatic.com|api\.github\.com|opengraph\.githubassets\.com)) { return 403; }
proxy_pass $arg_url; proxy_redirect off; proxy_set_header Referer ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
|
去掉 PHP 的后缀。
1 2 3 4 5 6 7
| location / { index index.html index.htm index.php;
if (!-f $request_filename) { rewrite ^(.*)$ $1.php last; } }
|
部署网站
安装面板
服务器运维
按照 appNode 教程部署。
配置 Acme
自动续签证书
按照 acme 教程部署。
续签后自动更换腾讯云 CDN 证书,这里用的是这个项目 qcloud-lets-encrypt,config.php
中配置好你的密钥,以及要更换的域名。
1 2
| timeout 600 ~/.acme.sh/acme.sh --renew -d *.91m.top -d 91m.top --dns dns_dp --renew-hook 'appnode-php74 ~/qcloud-lets-encrypt/index.php --cert $CERT_FULLCHAIN_PATH --key $CERT_KEY_PATH' # 第一次 `--issue`,注意第二次这里用的是 `--renew`
|
配置 MySQL
新装的 MySQL 可能会出现中文乱码的情况,下面以 appNode 举例。
打开 MySQL 面板 (应用列表 - MySQL 服务器) - 参数配置 - 原文模式,都加入 utf-8,重启 MySQL 即可。
1 2 3 4 5 6
| [mysqld] character-set-server = utf8 [mysql] default-character-set = utf8 [client] default-character-set = utf8
|
配置 Rclone
自动上传同步
按照 rclone 教程部署。
appNode 只支持大厂的对象储存,没办法只能自行实现。慎用 sync
,建议使用 copy
。写个 shell 丢到 package.json
里即可。
本机
本机优雅的部署到服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ssh-keygen -m PEM -t ed25519 -C "your.email@example.com" #生成私钥和公钥,如果有了可以跳过
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 123 root@192.168.123.10 #将公钥添加到服务器,如果端口是默认的 22,可以去掉 -p
rclone config #可以直接输入 sftp,服务器确保放通 ssh 端口
#key_file 这一步,填入私钥路径 ~/.ssh/id_rsa
rclone ls 91m:/www #测试列出文件,能列出就是没问题
rclone copy ./dist 91m:/www --progress #rclone copy ./本地路径 云盘:/云盘路径 显示进度
|
服务器
服务器优雅的备份到云盘
1 2 3 4 5 6 7 8 9
| export HTTP_PROXY='http://127.0.0.1:7890' export HTTPS_PROXY='http://127.0.0.1:7890' #环境变量,备份到 Google 需要
rclone config #按需求链接你的云盘
rlone copy ./backup OneDrive:/备份/Web --progress #rlone copy ./本地路径 你的云盘:/云盘路径 显示进度
|