部署 docker-compose1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 services: web: container_name: ys image: ubuntu:20.04 network_mode: "bridge" ports: - "81:81/tcp" - "3306:3306/tcp" - "8000:8000/tcp" - "8888:8888/tcp" - "20071:20071/tcp" - "20081:20081/tcp" - "20011:20011/tcp" - "4433:4433/tcp" - "1001-1005:1001-1005/udp" - "20041:20041/udp" restart: unless-stopped stdin_open: true tty : true
准备工作 进入容器
1 2 3 docker exec -it ys bash apt update apt install wget curl libasan5 python2.7-dev redis-server
安装宝塔
1 2 3 4 5 6 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh 6dca892c Nginx 1.18 mysql 8.0 php 7.4
复制服务端到容器内
1 2 3 4 5 6 7 docker cp ys3.4.tar.gz ys:/ cd /tar -xvf ys3.4.tar.gz chmod -R 777 /homechmod -R 777 /www/wwwroot/gm
如果想跳过上面的步骤,可以使用镜像krmeng/ys:1.0
端口8888,面板安全入口/bao_ta,账号bao_ta,密码123456
修改ip 1 2 3 4 5 find /home -type f -name '*.yaml' | xargs sed -i 's/150.138.81.173/your-ip/g' find /home -type f -name '*.json' | xargs sed -i 's/150.138.81.173/your-ip/g' find /home -type f -name '*.html' | xargs sed -i 's/150.138.81.173/your-ip/g' find /www/backup -type f -name '*.*' | xargs sed -i 's/150.138.81.173/your-ip/g' find /www/wwwroot -type f -name '*.*' | xargs sed -i 's/150.138.81.173/your-ip/g'
数据库 修改root密码为:12345678 导入数据库
添加站点 通过bt开启宝塔面板
http://your-ip:8888进入面板,192.168.1.90为你的ip
启动脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/bash find /home -name "*.0000" -exec rm -rf {} \; find /home -name "*.log" -exec rm -rf {} \; sleep 5service nginx start service mysqld start service php-fpm-74 start service redis-server start sleep 5cd /home && ./cli stop_allsleep 2cd /home && ./cli startsleep 5cd /home/via && ./startsleep 5cd /home/sdk && nohup ./main &tail -f /dev/null
防火墙配置 放行端口:
1 2 3 4 5 6 7 8 9 10 sudo ufw allow 81/tcpsudo ufw allow 3306/tcpsudo ufw allow 8000/tcpsudo ufw allow 8888/tcpsudo ufw allow 20071/tcpsudo ufw allow 20081/tcpsudo ufw allow 20011/tcpsudo ufw allow 4433/tcpsudo ufw allow 20041/udpsudo ufw allow 1001:1005/udp
查看防火墙日志发现:
1 ubuntu-2204 kernel: [72227.397950] [UFW BLOCK] IN=docker0 OUT= MAC=xx:yy:37:9c:b1:dd:02:42:ac:11:00:02:08:00 SRC=172.17.0.2 DST=192.168.1.90 LEN=48 TOS=0x00 PREC=0x00 TTL=64 ID=15690 DF PROTO=UDP SPT=34692 DPT=20041 LEN=28
这条日志的含义是,来自 Docker 容器(IP 地址为 172.17.0.2)的 UDP 数据包试图发送到本地网络(IP 地址为 192.168.1.90)的 20041 端口,但由于 UFW 的防火墙规则,这个连接被阻止了。
放行:
1 sudo ufw allow in on docker0 from 172.17.0.0/24
查看服务端启动情况 查看20071端口监听:
1 netstat -ap | grep 20071
若20071端口已监听,则说明服务端启动成功
数据库备份恢复 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 # !/bin/bash # 数据库连接配置 HOSTNAME="localhost" PORT="3306" USERNAME="root" PASSWORD="12345678" # 需要备份的数据库列表 DB1="db_hk4e_config_gio" DB2="db_hk4e_deploy_config_gio" DB3="db_hk4e_order_gio" DB4="db_hk4e_user_gio" DB5="db_hk4e_gm" DB6="hk4e_test" # 备份文件存储路径(按需修改) BACKUP_DIR="/www/backup/database" # 备份文件名时间戳(格式示例:20231015_1530) TIMESTAMP=$(date +%Y%m%d_%H%M%S) # 创建备份目录(如果不存在) mkdir -p ${BACKUP_DIR} # 备份函数 backup_database() { local db_name=$1 local backup_file="${BACKUP_DIR}/${db_name}_${TIMESTAMP}.sql" echo "正在备份数据库: ${db_name}..." mysqldump -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} \ --single-transaction --routines --triggers --hex-blob ${db_name} > ${backup_file} # 检查备份是否成功 if [ $? -eq 0 ]; then echo "数据库 ${db_name} 备份成功 → ${backup_file}" else echo "错误:数据库 ${db_name} 备份失败!" exit 1 fi } # 逐个备份数据库 backup_database ${DB1} backup_database ${DB2} backup_database ${DB3} backup_database ${DB4} backup_database ${DB5} backup_database ${DB6} # 打包所有备份文件为一个压缩包 echo "正在打包备份文件..." tar -czvf "${BACKUP_DIR}/all_databases_${TIMESTAMP}.tar.gz" -C "${BACKUP_DIR}" $(ls ${BACKUP_DIR}/*_${TIMESTAMP}.sql) # 检查打包是否成功 if [ $? -eq 0 ]; then echo "备份文件打包完成 → ${BACKUP_DIR}/all_databases_${TIMESTAMP}.tar.gz" else echo "错误:打包失败!" exit 1 fi echo "所有数据库备份及打包完成!"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 # !/bin/bash # 数据库连接配置 HOSTNAME="localhost" PORT="3306" USERNAME="root" PASSWORD="12345678" # 需要恢复的数据库列表(与备份顺序一致) DB_NAMES=( "db_hk4e_config_gio" "db_hk4e_deploy_config_gio" "db_hk4e_order_gio" "db_hk4e_user_gio" "db_hk4e_gm" "hk4e_test" ) # 备份文件存储路径 BACKUP_DIR="/www/backup/database" # 自动获取最新备份时间戳(根据文件修改时间) LATEST_SQL=$(ls -t ${BACKUP_DIR}/*.sql | head -1) TIMESTAMP=$(basename "$LATEST_SQL" | awk -F_ '{print $(NF-1)"_"$NF}' | sed 's/\.sql//') echo "检测到最新备份时间戳:$TIMESTAMP" read -p "是否恢复该备份?[y/N] " CONFIRM if [[ ! $CONFIRM =~ ^[Yy]$ ]]; then echo "已取消恢复操作。" exit 0 fi # 恢复函数 restore_database() { local db_name=$1 local backup_file="${BACKUP_DIR}/${db_name}_${TIMESTAMP}.sql" if [ ! -f "$backup_file" ]; then echo "错误:备份文件 $backup_file 不存在!" exit 1 fi echo "正在恢复数据库: $db_name..." mysql -h$HOSTNAME -P$PORT -u$USERNAME -p$PASSWORD $db_name < $backup_file if [ $? -eq 0 ]; then echo "数据库 $db_name 恢复成功 ✔️" else echo "错误:数据库 $db_name 恢复失败 ❌" exit 1 fi } # 逐个恢复数据库 for db in "${DB_NAMES[@]}"; do restore_database "$db" done echo "所有数据库恢复完成!🎉"
安卓ios客户端 服务器ip需要和127.0.0.11111位数一致(13位,.也计数)
比如192.168.1.101符合,192.168.1.2不符合
因为需要通过十六进制编辑器修改客户端
gm工具 错误:响应:{"data":null,"msg":"region not match","retcode":1010,"ticket":"juliy@1747116358"}
Region留空
mysql 设置允许外部访问:
1 2 3 4 5 6 7 mysql -u root -p SELECT host, user FROM mysql.user; CREATE USER 'root'@'192.168.1.%' IDENTIFIED BY '12345678'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' WITH GRANT OPTION; #授予权限