1.
准备工作与前提
在
日本VPS上操作前,先确认:VPS系统(Ubuntu 22.04 为例)、root或具有sudo权限的用户、SSH密钥登录已配置、基本网络连通(ping 8.8.8.8)。推荐先执行:
ssh-keygen -t ed25519(本地)然后将公钥拷贝到VPS:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip。关闭密码登录:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no,Restart SSH:sudo systemctl restart sshd。
2.
系统初始化与基础加固
更新系统并安装常用工具:sudo apt update && sudo apt -y upgrade;安装工具:sudo apt -y install vim git curl ufw fail2ban unattended-upgrades。开启防火墙并允许SSH:sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw enable。配置自动安全更新:sudo dpkg-reconfigure --priority=low unattended-upgrades。
3.
用户与权限策略
创建非root运维用户并配置sudo:sudo adduser ops && sudo usermod -aG sudo ops。复制SSH公钥到新用户:sudo mkdir -p /home/ops/.ssh && sudo cp /root/.ssh/authorized_keys /home/ops/.ssh/ && sudo chown -R ops:ops /home/ops/.ssh && chmod 700 /home/ops/.ssh && chmod 600 /home/ops/.ssh/authorized_keys。禁止root远程登录:在 /etc/ssh/sshd_config 设置 PermitRootLogin no。
4.
软件堆栈部署(Nginx+PHP-FPM+MySQL)
以网页服务为例:安装 Nginx、PHP、MySQL:sudo apt -y install nginx php-fpm php-mysql mysql-server。MySQL 初始安全配置:sudo mysql_secure_installation,按提示设置root密码、移除匿名用户、禁用远程root、删除测试库。配置 Nginx 站点:/etc/nginx/sites-available/example,示例server块写明 root、index、php-fpm socket,测试并重载:sudo nginx -t && sudo systemctl reload nginx。
5.
SSL 自动化(Let’s Encrypt)
安装 Certbot:sudo apt -y install certbot python3-certbot-nginx,然后执行:sudo certbot --nginx -d example.com -d www.example.com 按提示自动申请并配置。设置证书自动续期(系统自带 cron),可手动测试续期:sudo certbot renew --dry-run。
6.
日志管理与轮替
使用 logrotate 管理日志。通常 Nginx 已有 /etc/logrotate.d/nginx。若部署自定义应用,创建 /etc/logrotate.d/myapp,内容示例:/var/log/myapp/*.log { daily rotate 14 compress missingok notifempty copytruncate }。确认 logrotate 测试:sudo logrotate -d /etc/logrotate.conf。
7.
监控与告警(轻量级)
推荐部署 node_exporter + Prometheus(或使用第三方监控)。快速安装 node_exporter:下载最新版二进制,创建 systemd 服务:/etc/systemd/system/node_exporter.service,启动并开启开机自启:sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter。将 VPS 节点加入 Prometheus 配置并重载 Prometheus。
8.
备份策略与实战脚本
备份数据库与重要文件:示例 MySQL 备份脚本 /usr/local/bin/mysql_backup.sh:
#!/bin/bash
DATE=$(date +%F_%H%M)
mysqldump -u root -p'你的密码' --all-databases | gzip > /var/backups/mysql_$DATE.sql.gz
find /var/backups -type f -mtime +7 -delete
设置 cron:sudo crontab -e,添加每天凌晨 2 点:0 2 * * * /usr/local/bin/mysql_backup.sh。建议把备份 rsync 到别的节点或对象存储(如 S3/兼容服务)。
9.
自动化运维脚本示例(一键部署脚本)
编写一键部署脚本 deploy.sh,包含系统更新、用户创建、常用软件安装、nginx+php+certbot 部署的顺序命令。示例结构:先检测系统(lsb_release -a)、然后执行 apt 更新、创建用户、配置防火墙、拉取代码到 /var/www、设置权限、systemctl 重载。务必在脚本中加入错误处理(set -euo pipefail)和日志输出。
10.
使用 Ansible 做批量与可重复化运维
如果管理多台日本 VPS,建议用 Ansible。建立 inventory(例如 ip_list),创建 playbook:users.yml(创建用户)、nginx.yml(安装与配置)、certbot.yml。执行示例:ansible-playbook -i hosts site.yml -u ops --private-key=~/.ssh/id_ed25519。模块化 playbook 可复用、便于回滚。
11.
安全高级配置(Fail2ban、AppArmor、端口管理)
配置 Fail2ban:sudo systemctl enable --now fail2ban,编辑 /etc/fail2ban/jail.local 添加 sshd 规则。启用 AppArmor 配置(Ubuntu 默认),检查 /etc/apparmor.d 并为自定义服务写策略。尽量只开放必要端口,使用内网管理通道(VPN 或 Jumpbox)。
12.
运维自动化常见任务与脚本片段
常用任务:自动重启服务脚本(systemctl restart nginx || systemctl status nginx)、日志压缩上传脚本(tar gz 然后 rclone/rsync 上传到对象存储)、健康检查脚本(curl -fsS http://localhost/ || systemctl restart myapp)。将脚本放 /usr/local/bin 并设置可执行权限:sudo chmod +x /usr/local/bin/*.sh。
13.
运维流程与变更管理
每次改动走变更流程:在 Git 管理配置(nginx conf、Ansible playbook)、通过 CI(如 GitHub Actions)在测试环境验证后发到生产;上线前通知团队、记录变更单与回滚步骤。遇到故障先回滚再修复,避免在高峰期做破坏性操作。
14.
问:日本VPS在网络延迟或丢包时有哪些调优方法?
答:首先定位问题:使用 mtr ip 或 traceroute 判断丢包发生在哪一跳;在 VPS 上检查接口统计:ip -s link;调整 TCP 参数(/etc/sysctl.conf)示例:net.ipv4.tcp_congestion_control = cubic、net.ipv4.tcp_window_scaling = 1、net.core.rmem_max/somaxconn 调大,应用后 sudo sysctl -p。若是线路问题与机房相关,联系机房或更换线路/节点。
15.
问:如何在日本VPS上实现0停机的应用发布?
答:采用蓝绿或滚动发布策略。准备两个相同的后端组(蓝/绿),通过负载均衡器或 Nginx upstream 切流。使用健康检查脚本确保新版本运行良好再切流。若无LB,可用 Nginx 的 upstream + backup 与 proxy_pass 实现简单切换,或使用 Docker+Compose/Swarm 做容器级别滚动更新。
16.
问:运维新手如何快速上手日本VPS并避免常见问题?
答:建议步骤:1) 先在本地或测试VPS按上述脚本练习一次完整部署;2) 强制使用 SSH 密钥并禁用密码登录;3) 启用防火墙和 Fail2ban;4) 把所有配置纳入版本控制并写好回滚步骤;5) 每周检查磁盘、内存与备份是否正常;6) 学会阅读系统日志(journalctl、/var/log),遇到问题先查看日志再执行操作。
来源:日本vps论坛运维经验分享实战脚本与自动化运维指南