1. 环境准备与前提检查
- 确认VPS系统(建议Ubuntu 22.04/20.04或Debian 11),已分配原生公网IP并能SSH登录。
- 登录后先更新系统:sudo apt update && sudo apt upgrade -y。安装常用工具:sudo apt install curl wget git -y。检查端口连通:curl -I http://你的IP。
2. 用户与安全基础设置
- 建立非root用户并授权:adduser deployer && usermod -aG sudo deployer。
- 关闭密码登录,仅使用SSH密钥:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no,重启 sshd。
- 启用UFW并只允许必要端口:sudo ufw allow OpenSSH; sudo ufw allow 80; sudo ufw allow 443; sudo ufw enable。
3. 域名与DNS 指向原生IP
- 在域名管理面板添加 A 记录,主机名填写 @ 或 www,值为VPS原生IP。
- 设置TTL为最低以便调试,保存后用 dig +short yourdomain.com 验证是否解析到了VPS IP。
4. Nginx 安装与站点基本配置
- 安装 Nginx:sudo apt install nginx -y。启动并设置开机自启:sudo systemctl enable --now nginx。
- 建立站点目录:sudo mkdir -p /var/www/yourdomain.com/html && sudo chown -R $USER:$USER /var/www/yourdomain.com/html;创建测试 index.html。
- 新建站点配置 /etc/nginx/sites-available/yourdomain.com,示例 listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com/html; location / {try_files $uri $uri/ =404;}。启用并测试 nginx -t && systemctl reload nginx。
5. PHP 与动态站点(若使用PHP)
- 安装 PHP-FPM 与常用扩展:sudo apt install php-fpm php-mysql php-xml php-mbstring -y。
- 在 Nginx 配置中加入 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; }(根据php版本调整sock路径),重载 Nginx。
6. MySQL/MariaDB 安装与基础安全
- 安装 MariaDB(轻量且兼容):sudo apt install mariadb-server -y。运行 sudo mysql_secure_installation 完成 root 密码、移除匿名用户、禁止远程 root 登录等。
- 创建数据库与专用账号:sudo mysql -e "CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'webuser'@'%' IDENTIFIED BY '强口令'; GRANT ALL PRIVILEGES ON yourdb.* TO 'webuser'@'%'; FLUSH PRIVILEGES;"。
- 如需远程访问,编辑 /etc/mysql/mariadb.conf.d/50-server.cnf,将 bind-address 改为 0.0.0.0(或指定允许的IP),并通过 UFW 只放行可信IP访问3306端口。
7. 使用台湾云空间存放静态资源(对象存储 / 网盘挂载)
- 若使用第三方对象存储(如S3兼容或台湾本地云),可用 rclone 或 s3fs 挂载:sudo apt install rclone,配置 rclone config 并用 rclone mount remote:bucket /var/www/yourdomain.com/static --daemon。
- 确保 web 用户有读写权限,且 Nginx 配置对静态目录开启缓存头(expires max)以提高性能。
8. TLS/HTTPS 设置与自动续期
- 安装 Certbot 并获取证书:sudo apt install certbot python3-certbot-nginx -y;运行 sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com,按提示自动修改 Nginx 配置。
- 验证续期:sudo certbot renew --dry-run,并在 cron 或 systemd-timer 自动化(通常已由包安装配置)。
9. 备份策略与灾备
- 数据库定期备份:写脚本 /usr/local/bin/backup_db.sh,示例:mysqldump -u root -p'密码' yourdb | gzip > /backup/yourdb_$(date +%F).sql.gz。用 cron 每天凌晨执行并保留7-30天。
- 文件备份:rsync 或 rclone 同步站点静态与上传目录到云空间,示例:rsync -a --delete /var/www/yourdomain.com/ remote_backup:/site_backup/。检查备份恢复流程定期演练。
10. 日志、监控与性能优化
- 配置 logrotate,避免日志占满磁盘。安装监控工具如 Netdata、Prometheus+Grafana 或简单的 top/htop + dfwatch。
- 优化 Nginx(worker_processes auto, worker_connections 1024),开启 gzip,配置 fastcgi_cache 缓存动态页面(注意缓存键与缓存失效策略)。
11. 安全加固与常见运维注意点
- 安装 fail2ban 防暴力破解并为 SSH/HTTP 自定义 jail。定期更新系统与组件。
- 限制数据库远程访问,仅允许管理IP,使用强口令与密钥登录;对重要管理接口加WAF或使用 Cloudflare/反向代理做额外保护。
12. 测试与上线检查清单
- 检查项:域名解析、HTTPS 是否有效(https://yourdomain.com)、页面加载、数据库连接日志(/var/log/mysql/error.log)、备份脚本是否成功、磁盘与内存监控正常。
- 用 curl -I -L 验证重定向,使用 ab 或 wrk 做压力测试(先在非生产低并发测试)。
13. 常见问题与排错步骤(问答1)
Q: 部署后网站无法访问,如何排查?
A: 先检查域名解析(dig +short),确认解析到VPS原生IP;检查防火墙(sudo ufw status)、Nginx 状态(sudo systemctl status nginx)、端口监听(ss -tuln | grep :80);查看 /var/log/nginx/error.log 获取错误细节。
14. 备份与恢复疑问(问答2)
Q: 数据库备份怎么保证一致性?
A: 对于InnoDB库使用 mysqldump --single-transaction;大数据量建议使用物理备份工具如 mariabackup 或 Percona XtraBackup,并在恢复前测试恢复流程,保证备份可用。
15. 性能与安全提升建议(问答3)
Q: 如何在台湾VPS上获得更好访问速度和安全?
A: 使用台湾本地VPS能降低延迟;开启 gzip、静态资源走对象存储并启用CDN;数据库靠近应用并使用连接池;开启 HTTPS 且用强加密套件;用防火墙及 fail2ban 限制异常流量。
来源:台湾vps原生ip 云空间 部署网站与数据库的最佳实践