虚拟主机已无法满足现代PHP应用需求,应选用1核2GB内存+20GB SSD的VPS(如Vultr $6/月),安装Ubuntu 22.04或Debian 12,手动部署LNMP(Nginx+PHP8.2-FPM+MariaDB),配置站点与安全加固。

虚拟主机确实已经跟不上现代PHP应用的需求了。资源受限、权限封闭、环境固化、升级困难,连 Laravel、ThinkPHP 8 或 WordPress 插件生态的最新特性都跑不稳。真正可控、可调、可扩展的 PHP 运行环境,得从一台干净的 VPS 开始自己搭。
选对VPS和系统:轻量够用,省心省力
不必追求高配,起步推荐 1 核 2GB 内存 + 20GB SSD 的入门级 VPS(如 Vultr $6/月、腾讯云轻量应用服务器 24元/月档)。系统直接选 Ubuntu 22.04 LTS 或 Debian 12 —— 长期支持、软件源稳定、社区教程多,比 CentOS Stream 或老旧 Ubuntu 版本更适合新手。
- 注册后拿到 IP、root 密码(或 SSH 密钥),用终端(Mac/Linux)或 PuTTY(Windows)连接
- 首次登录后立即执行 apt update && apt upgrade -y,更新系统基础组件
- 运行 locale-gen zh_CN.UTF-8 && export LANG=zh_CN.UTF-8(可选),避免中文路径或日志乱码
安装LNMP核心:Nginx + PHP-FPM + MySQL(或 MariaDB)
不推荐一键脚本(如 LNMP.org),容易埋下配置隐患。建议分步手动装,全程可控,出问题也清楚哪一步卡住了。
- 先装 Nginx:apt install nginx -y,装完运行 systemctl start nginx && systemctl enable nginx
- 再装 PHP 8.2(主流框架兼容性好):apt install php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip -y
- MySQL 推荐换为更轻量的 MariaDB:apt install mariadb-server mariadb-client -y,然后运行 mysql_secure_installation 设定 root 密码并清理默认风险项
配置网站与PHP:让域名或IP真正跑起你的PHP项目
Nginx 不是装上就完事,关键在 /etc/nginx/sites-available/ 下写对 server 块,再软链到 sites-enabled;PHP-FPM 则要确认监听方式和用户权限匹配。
立即学习“PHP免费学习笔记(深入)”;
- 新建站点配置文件,例如 /etc/nginx/sites-available/myapp,填入标准 PHP 支持结构(含 root、index、location ~ \.php$ 块,fastcgi_pass 指向 unix:/run/php/php8.2-fpm.sock)
- 启用站点:ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/,再运行 nginx -t && systemctl reload nginx
- 确保 PHP-FPM 正在运行:systemctl start php8.2-fpm && systemctl enable php8.2-fpm;检查 ps aux | grep fpm 是否有 www-data 用户进程
- 把你的 PHP 项目(如 WordPress 或 Laravel 的 public 目录)放到配置里指定的 root 路径下,设好权限:chown -R www-data:www-data /var/www/myapp
安全加固与日常维护:不是一次搞定,而是持续习惯
VPS 没人替你守门,但几条基础操作就能挡住 90% 扫描攻击和误操作风险。
- 禁用 root 密码登录:生成密钥对,用 ssh-copy-id 推送公钥,再编辑 /etc/ssh/sshd_config 设置 PermitRootLogin no 和 PasswordAuthentication no,最后 systemctl restart ssh
- 开防火墙只放必要端口:ufw allow OpenSSH && ufw allow 'Nginx Full' && ufw enable
- 定期更新:apt list --upgradable 查看可更包,apt upgrade -y 保持系统与 PHP 扩展安全
- 备份不能只靠快照:用 mysqldump 导出数据库,配合 tar 打包网站目录,定时推送到另一台机器或对象存储(如腾讯云 COS)
从虚拟主机切换到自管 VPS,门槛不在命令多难,而在理清“Web 请求怎么被 Nginx 接收 → 交给哪个 PHP 进程 → 怎么读数据库 → 返回 HTML”的整条链路。动手配一遍,比看十篇教程都扎实。



















