1.
前提与准备
确认你对目标部署的合法性负责;准备一台马来西亚地区或靠近马来西亚的云服务器(例如 AWS ap-southeast-1、DigitalOcean 新加坡/马来西亚节点或本地马来西亚云提供商),获取 root 或 sudo 权限;准备域名并可修改 DNS,准备 SSH 密钥对,本地安装好 ssh 客户端与 Docker Compose(用于本地测试)。
2.
购买与选择服务器
选择实例规格:最低 2vCPU、4GB 内存推荐;选择 Ubuntu 20.04/22.04 LTS;在控制面板设置防火墙规则(仅开放 22、80、443 及应用需要的端口),记录公网 IP 与控制台登录信息;启用自动快照与监控以便出现问题回滚。
3.
初始化与安全加固
连接服务器:ssh -i /path/to/key ubuntu@your.ip;更新系统:sudo apt update && sudo apt upgrade -y;创建非 root 用户并授予 sudo:adduser deploy && usermod -aG sudo deploy;禁用 root SSH 登录,配置 /etc/ssh/sshd_config,重启 ssh:sudo systemctl restart sshd。
4.
安装 Docker 与 Docker Compose
安装 Docker:sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg;设置源并安装 docker-ce;添加用户到 docker 组:sudo usermod -aG docker deploy。安装 Docker Compose(v2 二进制或 apt 包),验证:docker --version 与 docker compose version。
5.
准备应用与环境变量
在 /home/deploy 创建项目目录:mkdir -p /home/deploy/valorant_app && cd /home/deploy/valorant_app;将应用代码放入或拉取私有仓库:git clone <仓库地址> .;创建 .env 文件,包含 DB_HOST、DB_PORT、DB_USER、DB_PASS、APP_PORT、SECRET_KEY 等敏感配置,权限设置为 600:chmod 600 .env。
6.
编写 Docker Compose 文件
创建 docker-compose.yml,示例包含应用、nginx、db 三个服务;db 使用 mysql:8 或 postgres:13,挂载卷到 /var/lib/mysql 并设置 MYSQL_ROOT_PASSWORD 与 MYSQL_DATABASE;nginx 用做反向代理并挂载 /etc/nginx/conf.d;应用镜像可直接使用构建指令或从镜像仓库拉取。确保在 compose 中设置 restart: always 与合适的 healthcheck。
7.
数据库初始化与迁移
启动容器:docker compose up -d;进入 db 容器检查:docker exec -it db_container bash,然后使用 mysql -u root -p 或 psql 进行初始化;从项目运行迁移命令(示例 Django:docker compose exec web python manage.py migrate,示例 Node.js:运行 sequelize/knex migrate);seed 数据请在测试环境先运行。
8.
配置 Nginx 与 HTTPS
在 /etc/nginx/conf.d/ 下写入站点配置,反向代理到应用容器端口(例如 upstream app:8000);安装 certbot 并使用 DNS 或 HTTP 验证申请证书:sudo snap install core; sudo snap refresh; sudo snap install --classic certbot;certbot --nginx -d example.com,设置自动续期 cronjob(certbot 自带续期)。
9.
编写一键部署脚本 deploy.sh
脚本功能:更新系统、安装 Docker/Docker Compose(检查是否已安装)、拉取最新代码、复制 .env、构建或拉取镜像、docker compose pull/build、docker compose up -d、运行数据库迁移与种子、检查服务健康并输出日志。示例执行权限:chmod +x deploy.sh。把脚本上传到服务器并测试执行。
10.
自动化与 CI/CD(可选)
可以将一键脚本与 CI/CD(GitHub Actions、GitLab CI)结合:在 pipeline 中使用 SSH 部署或 Docker Registry;CI 流程通常包括:代码 lint/test -> build 镜像 -> push registry -> 远端脚本拉取并重启;设置环境变量与私钥的安全存储,避免在日志中泄露密钥。
11.
备份与恢复策略
数据库备份:定时使用 mysqldump 或 pg_dump 存入远程对象存储(例如 S3/MinIO),设置保留策略并加密备份;文件卷备份:打 tar 并上传;恢复流程要在文档中写明命令与步骤,定期做恢复演练以确保备份可用。
12.
监控、日志与性能优化
建议安装 Prometheus + Grafana 或使用云监控查看 CPU/内存/磁盘网络;配置日志集中(ELK/EFK 或云日志服务),设置告警(磁盘接近满、容器健康失败);性能方面:为 DB 调整 max_connections、innodb_buffer_pool_size(MySQL),为应用开启连接池与缓存(Redis),并在马来西亚节点测试延迟。
13.
故障排查常用命令
列出容器:docker ps;查看日志:docker compose logs -f web;进入容器:docker exec -it web bash;查看端口占用:ss -tulnp;数据库连接测试:mysql -h DB_HOST -uUSER -p 或 psql -h DB_HOST -U USER;根据日志定位错误并回滚到上一个稳定快照。
14.
安全加固与合规建议
关闭不必要端口,使用防火墙(ufw/iptables)仅允许必须 IP/端口;定期更新系统与镜像,使用非 root 运行容器,限制容器权限(capabilities、read-only root 等);敏感信息使用 secrets 管理(Docker secrets 或 Vault),并遵循当地数据隐私法规。
15.
常见问题快速回答:Q1
问题:如何在
马来西亚服务器上实现一键部署并保证零停机?答:通过蓝绿部署或滚动更新实现零停机;在 docker compose 可用场景下采用两套服务组切换负载;更专业可用 Kubernetes + Helm 实现滚动升级,并在一键脚本中触发健康检查与流量切换。
16.
常见问题快速回答:Q2
问题:数据库如何保证数据一致性与备份频率?答:采用主从或主主复制(MySQL Replication 或 PostgreSQL streaming replication)保证高可用;设置定期增量备份(每小时 binlog 或 WAL)与每日全量备份,备份异地存储并验证恢复可用性。
17.
常见问题快速回答:Q3
问题:一键部署脚本失败如何回滚?答:脚本内应包含失败检测与回滚策略:在部署前自动创建快照或导出数据库备份,若健康检查失败则自动执行 docker compose down && 恢复到上一个镜像或快照;建议在生产脚本中加入事务化步骤与明确日志,便于人工干预。
来源:一键部署教程瓦伦兰特马来西亚服务器环境搭建与数据库配置