1.
规划与准备
- 明确用途:网站/API/代理/应用容器;估算流量、带宽与地区合规性。
- 选择系统:建议 Debian/Ubuntu LTS 或 CentOS Stream,根据熟悉度选定。
- 列清单:域名、付款方式(信用卡/PayPal)、备用SSH密钥、本地IP白名单。
2.
购买海外VPS与规格选择
- 选择供应商:比较 Vultr、DigitalOcean、Linode、Hetzner、AWS Lightsail;看网络吞吐与延迟。
- 机房位置:选近目标用户的机房以降低RTT(如欧洲、北美、新加坡)。
- 规格与带宽:至少2核、2GB内存起步,带宽需看峰值并选带宽包或按需计费。
3.
购买后第一步:控制台初始化
- 使用控制台设置登录凭证(强烈建议上传SSH公钥)。
- 设置主机名、时区(UTC或目标地区)、开启自动备份(如有)。
- 配置私有网络或防火墙组,先只开放22/80/443,其他端口暂时关掉。
4.
本地生成SSH密钥并登录
- 本地生成:ssh-keygen -t ed25519 -C "you@example.com"(或rsa 4096)。
- 将公钥上传到VPS控制台或放入~/.ssh/authorized_keys;chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys。
- 通过 ssh -i /path/to/key user@ip 登录,若默认root改为新建用户并加入sudo组。
5.
基础安全加固
- 创建非root用户并禁用root远程登录:Edit /etc/ssh/sshd_config(PermitRootLogin no)并重启sshd。
- 配置防火墙:使用ufw或iptables,ufw default deny incoming; allow ssh/http/https; enable。
- 安装fail2ban,基本规则防暴力破解;设定ssh保护与邮件告警。
6.
环境与服务部署(Nginx + Docker 两种方案)
- 方案A(原生): apt update && apt install nginx mysql-server php-fpm(按需),配置server块,指向/var/www/yourapp。
- 方案B(Docker): apt install docker docker-compose;在项目目录写docker-compose.yml(web/nginx, app, db);docker-compose up -d。
- 文件权限、日志路径、配置分离(将conf放到/etc/nginx/sites-available并用sites-enabled链接)。
7.
域名解析与SSL证书
- 在域名DNS处添加A记录指向VPS公网IP;若使用CDN(Cloudflare)注意代理模式对证书影响。
- 使用Let's Encrypt certbot:apt install certbot python3-certbot-nginx;certbot --nginx -d yourdomain.com -d www.yourdomain.com。
- 配置证书自动续期:系统cron或systemd timer(certbot renew --dry-run 测试)。
8.
测试、性能与监控
- 本地与远端测试:curl -I https://yourdomain.com,检查301/200/SSL链;使用curl --resolve临时指定DNS测试。
- 压力测试:ab 或 wrk 做小流量压力测试,观察CPU、内存、网络。
- 部署监控:安装Prometheus Node Exporter或简单的监控脚本,设置报警邮件/Telegram。
9.
备份与灾备策略
- 数据库:mysqldump 或定期docker exec mysqldb mysqldump,上传到对象存储(S3兼容)。
- 文件:rsync 到本地或另一区域服务器;保留多周期快照(7/30/90天)。
- 恢复演练:定期在隔离环境验证备份可恢复性,并记录恢复步骤。
10.
问题复盘:网络连接不稳定
- 现象与排查:丢包/高延迟,使用mtr/traceroute定位到哪一跳开始异常。
- 解决方法:与供应商工单沟通换机房或更换骨干线路,调整TCP参数(net.ipv4.tcp_tw_reuse等谨慎修改)。
- 预防:选择多可用区备份,开启监控并设置丢包阈值告警。
11.
问题复盘:证书与HTTPS问题
- 现象:浏览器显示不安全或链不完整,certbot 获取失败。
- 排查:检查DNS解析是否正确、生效时间、80端口是否被占用(certbot需要HTTP挑战)。
- 处理:临时关闭反代或Cloudflare代理、释放80端口,certbot 成功后恢复;检查fullchain.pem与privkey权限。
12.
问题复盘:部署后高CPU或内存占用
- 现象:服务不稳定,OOM或频繁重启。
- 排查:查看top/htop、docker stats、nginx access log,大流量或攻击导致资源耗尽。
- 处理:调优Nginx worker_connections、启用缓存、使用CDN限流、增加swap或扩容方案。
13.
问:如何选择合适的海外机房与带宽?
- 回答要点:根据目标用户地理位置选机房,优先考虑延迟与网络质量;初期选中等规格并监测流量峰值,再决定是否升级带宽或纵向扩容。
14.
问:部署过程中常见的SSH登录失败如何排查?
- 回答要点:检查SSH公钥是否正确上传、authorized_keys权限是否为600、sshd_config是否误修改(端口、PermitRootLogin)、云端防火墙是否阻断22端口;必要时使用VPS提供的控制台恢复。
15.
问:遇到DNS解析缓慢或证书申请失败有什么快速解决思路?
- 回答要点:先确认DNS解析到正确IP并已生效(dig +short yourdomain);若使用CDN/代理,临时关闭代理以允许证书HTTP挑战;检查80端口和nginx配置,最后重试certbot并查看日志获取具体错误。
来源:案例分享一次成功的自驾海外服务器部署过程与问题复盘