引言
在虚拟专用服务器(VPS)上部署PHP应用程序是从本地开发过渡到生产环境的关键阶段。与共享主机不同,VPS提供对运行环境的完全控制,这对于现代框架(Laravel, Symfony)和高负载项目至关重要。
在本指南中,我们将详细讲解在Ubuntu 22.04 VPS上部署PHP应用程序的完整流程。您将学习如何配置服务器、安装必要组件以及自动化部署过程。所有代码示例均可直接使用。
1. VPS准备与初始配置
1.1. 连接到服务器
购买VPS后,您将获得IP地址、登录名(通常为root)和密码。通过SSH连接:
ssh root@您的IP地址如果您使用SSH密钥(推荐),请将您的公钥添加到服务器。
1.2. 系统更新与创建用户
更新软件包并创建一个非特权用户用于工作:
apt update && apt upgrade -yadduser deployerusermod -aG sudo deployer现在使用新用户连接:
ssh deployer@您的IP地址1.3. 配置防火墙
使用UFW进行基本防护:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablesudo ufw status2. 安装LEMP环境(Linux, Nginx, MySQL, PHP)
2.1. 安装Nginx
sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginx在浏览器中打开 http://您的IP地址 检查运行情况。您应该看到Nginx欢迎页面。
2.2. 安装PHP和PHP-FPM
对于现代框架,请使用PHP 8.x:
sudo apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd -y检查版本并启动PHP-FPM:
php -vsudo systemctl start php8.1-fpmsudo systemctl enable php8.1-fpm2.3. 安装MySQL
sudo apt install mysql-server -ysudo mysql_secure_installation为您的应用程序创建数据库:
sudo mysql -u root -pCREATE DATABASE your_database_name;CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost';FLUSH PRIVILEGES;EXIT;3. 配置虚拟主机与部署应用程序
3.1. 创建Nginx虚拟主机
为您的域名创建配置文件:
sudo nano /etc/nginx/sites-available/yourdomain.com插入以下配置(根据您的项目进行调整):
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com/public;
index index.php index.html;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; }
location ~ /\\.ht { deny all; }}激活网站:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx3.2. 通过Git部署代码
安装Git并克隆仓库:
sudo apt install git -ycd /var/wwwsudo git clone https://github.com/yourusername/your-repo.git yourdomain.com配置权限:
sudo chown -R www-data:www-data /var/www/yourdomain.comsudo chmod -R 755 /var/www/yourdomain.com/storagesudo chmod -R 755 /var/www/yourdomain.com/b