1.
在876pp.com购买并准备VPS
- 登陆876pp.com控制面板,选择适合配置(建议2CPU/4GB内存以上,SSD)。
- 选择操作系统:推荐Ubuntu 22.04 LTS或Debian 11。
- 在购买页设置SSH公钥(推荐)或记下默认root密码;记录IP与面板提供的控制信息。
2.
本地生成SSH密钥并连接测试
- 如果未生成:本地运行 ssh-keygen -t rsa -b 4096,然后将公钥内容复制到面板。
- 使用SSH连接:ssh root@VPS_IP(或ssh -i /path/to/key root@VPS_IP)。
- 首次连接后更新系统:apt update && apt upgrade -y(Ubuntu/Debian)。
3.
创建非root管理员用户并配置SSH
- 新建用户并设置sudo:adduser deployer && usermod -aG sudo deployer。
- 将~/.ssh/authorized_keys从root复制到新用户并设置权限:mkdir -p /home/deployer/.ssh; cp /root/.ssh/authorized_keys /home/deployer/.ssh/; chown -R deployer:deployer /home/deployer/.ssh; chmod 700 /home/deployer/.ssh; chmod 600 /home/deployer/.ssh/authorized_keys。
- 在/etc/ssh/sshd_config中禁用root登录和密码认证(PermitRootLogin no,PasswordAuthentication no),然后 systemctl restart sshd。
4.
配置基本防火墙与时间同步
- 安装UFW并允许SSH、HTTP、HTTPS:apt install ufw -y; ufw allow OpenSSH; ufw allow http; ufw allow https; ufw enable。
- 安装并启用NTP或timesyncd保证时间同步:timedatectl set-ntp true。
5.
安装Web服务(以Nginx为例)
- 安装Nginx:apt install nginx -y,并启动:systemctl enable --now nginx。
- 检查端口监听:ss -tlnp | grep nginx。
- 在/var/www/下创建站点目录:mkdir -p /var/www/example.com/html; chown -R deployer:www-data /var/www/example.com; chmod -R 755 /var/www/example.com。
6.
配置Nginx虚拟主机
- 在/etc/nginx/sites-available/创建配置文件/etc/nginx/sites-available/example.com,示例server段指定server_name example.com www.example.com,root指向/var/www/example.com/html。
- 启用站点并测试语法:ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/; nginx -t; systemctl reload nginx。
7.
部署网站文件(SCP/ SFTP / Git)
- 使用scp上传:scp -i key ./dist/* deployer@VPS_IP:/var/www/example.com/html/。
- 或在服务器上用git拉取:git clone
/var/www/example.com/html并设置合适权限。
- 测试访问http://VPS_IP或绑定域名后访问域名。
8.
安装PHP与配置(如果是PHP网站)
- 安装PHP-FPM及常用扩展:apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring -y(根据系统版本调整)。
- 在Nginx站点配置中添加fastcgi_pass unix:/run/php/php8.1-fpm.sock,nginx -t并重载。
9.
安装数据库(MySQL/MariaDB)并安全加固
- 安装MariaDB:apt install mariadb-server -y。
- 运行安全脚本:mysql_secure_installation,按提示设置root密码、删除匿名用户、禁用远程root登录、移除测试数据库。
- 创建数据库和用户:mysql -u root -p -e "CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON mydb.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES;"。
10.
将数据库导入到VPS
- 本地有dump.sql时使用scp上传或直接导入:mysql -u webuser -p mydb < /path/to/dump.sql。
- 如果是大文件,建议先上传并在服务器上用mysql命令导入或使用pv查看进度:pv dump.sql | mysql -u webuser -p mydb。
11.
域名DNS与SSL证书(Let’s Encrypt)
- 在域名提供商面板中添加A记录指向VPS_IP,等待解析生效(可用dig或nslookup检查)。
- 使用Certbot申请证书:apt install certbot python3-certbot-nginx -y; certbot --nginx -d example.com -d www.example.com。
- 配置自动续期:systemctl status certbot.timer(Certbot会自动续期,也可加入cron)。
12.
备份与监控建议
- 建立数据库备份脚本:mysqldump -u webuser -p'pwd' mydb > /root/backup/mydb_$(date +%F).sql,并用cron每日备份并保留7份。
- 建议安装监控(如Netdata或Prometheus+Grafana)并配置日志轮转(logrotate)与磁盘空间告警。
13.
常见故障排查小结
- 无法访问:检查UFW/防火墙、Nginx是否启动、域名A记录是否生效(ping)。
- PHP错误:查看/var/log/nginx/error.log与PHP-FPM日志;数据库连接错误检查用户权限与主机绑定(通常用localhost)。
14.
性能与安全优化建议
- 启用Nginx缓存、gzip压缩与静态文件过期头;考虑使用CDN。
- 强化MySQL参数(如innodb_buffer_pool_size),使用swap谨慎,定期更新系统与应用。
15.
问:如何在876pp.com面板绑定域名并生效最稳妥?
- 回答:在域名解析处添加A记录指向VPS公网IP(必要时添加www的CNAME或A),TTL可设置为600以便快速生效;确认解析通过dig example.com A +short返回正确IP,然后在服务器配置Nginx的server_name并申请SSL。
16.
问:若MySQL远程连接失败怎么办?
- 回答:默认仅允许localhost。若需远程连接,先在/etc/mysql/mariadb.conf.d/50-server.cnf中将bind-address改为0.0.0.0并重启数据库,但同时应使用防火墙限制特定IP访问3306并为远程用户授予'用户名'@'远程IP'权限;优先考虑使用SSH隧道或VPN以提高安全性。
17.
问:如何定期自动备份并防止磁盘满?
- 回答:使用脚本结合mysqldump和tar将备份压缩后上传到远程存储(如S3或另一个VPS),在脚本中保留N天备份并删除旧文件;配置磁盘告警脚本或监控,避免日志过大并启用logrotate,确保备份不会占满磁盘。
来源:实例部署教学 美国vps 876pp.com上部署网站与数据库步骤