在开始部署之前,先确认VPS提供商与镜像(建议选择Ubuntu 22.04 LTS或Debian 12)。首先创建非root用户并启用SSH密钥认证,设置时区和基本软件包。以下为推荐的基础命令:
sudo apt update && sudo apt upgrade -y
sudo adduser deployuser
sudo usermod -aG sudo deployuser
mkdir -p ~/.ssh && chmod 700 ~/.ssh && nano ~/.ssh/authorized_keys(粘贴公钥)
启用基本防火墙并允许SSH与Web端口:
sudo apt install ufw -y
sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw enable
为保证部署实操顺利,建议设置时区与locale:
sudo timedatectl set-timezone Asia/Shanghai
选择美国VPS时注意带宽峰值、延迟和出口端口限制。若需要远程数据库访问,考虑私有网络或加密通道(如WireGuard)。
安装Nginx与PHP-FPM:
sudo apt install nginx php-fpm php-mysql -y
配置Nginx站点文件(示例):
sudo nano /etc/nginx/sites-available/example.com
在文件内写入server块并启用:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
使用Certbot自动申请并配置证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
开启Gzip、合理设置worker_processes,使用PHP-FPM池配置提升并发;限制请求大小与超时,禁用不必要的模块以减少攻击面。
安装MySQL:
sudo apt install mariadb-server -y
运行安全脚本:
sudo mysql_secure_installation
创建数据库与用户:
sudo mysql -u root -p
CREATE DATABASE appdb; CREATE USER 'appuser'@'localhost' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;
编辑配置文件(/etc/mysql/mariadb.conf.d/50-server.cnf),将bind-address改为0.0.0.0或指定IP,并在防火墙开放3306端口,但强烈建议将数据库放入私有网络或使用SSH隧道。
推荐定期使用mysqldump或物理备份工具(Percona XtraBackup),并把备份推送到远程对象存储(如S3)或异地存储。
在被监控主机安装node_exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.linux-amd64.tar.gz
tar xvf node_exporter-*.tar.gz && sudo mv node_exporter-*/node_exporter /usr/local/bin/
创建systemd服务并启动:
sudo useradd -rs /bin/false nodeusr
sudo tee /etc/systemd/system/node_exporter.service >/dev/null ...
sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter
在Prometheus服务器配置scrape_configs指向该节点(默认端口9090为Prometheus,node_exporter端口为9100)。
安装Grafana用于可视化:
sudo apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update && sudo apt install grafana -y && sudo systemctl enable --now grafana-server
一键安装Netdata并可立刻看到系统、Web、数据库指标:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
默认端口19999,适合快速排查与轻量监控,但长期历史与集中化告警需与后端存储配合。
Prometheus配合Alertmanager执行告警,Grafana可以配置报警渠道(Slack、邮件、Webhook)。长期指标可写入远程存储(Thanos、Cortex或Loki用于日志)。
禁用密码SSH登录,仅允许密钥;定期更新系统与软件;使用Fail2ban防暴力破解;限制管理接口(如Grafana、数据库)仅在内网或通过VPN访问;关闭不必要的端口。
sudo apt install fail2ban -y
数据库使用逻辑/物理备份并制定RPO/RTO;Web代码与配置使用git与自动化部署流水线;考虑使用负载均衡与多可用区节点提升可用性。
集中化日志(ELK/EFK/Loki)配合监控可以快速定位问题;设置关键指标告警(CPU、内存、磁盘、数据库慢查询、请求错误率)。同时制定演练计划,定期演练恢复流程。