VPS上PHP应用的高级部署:逐步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:从本地开发到生产服务器

在本地机器上开发PHP应用只是工作的一半。真正的技艺始于代码部署到服务器并开始服务真实用户之时。在VPS上进行PHP的高级部署不仅仅是简单地通过FTP复制文件。这是一个综合性的过程,包括环境配置、安全、自动化和监控。

在本文中,我们将详细讲解如何使用现代工具和DevOps实践来配置VPS,以实现PHP应用的专业托管。您将学习如何在Nginx + PHP-FPM技术栈上部署应用、配置CI/CD流水线、优化性能以及实施监控。

假设您已具备Linux、PHP和Web服务器的基础知识。我们将进入高级水平。



1. VPS准备与环境配置

服务器选择与初始配置

对于高级部署,请选择至少具有2 GB RAM和SSD硬盘的VPS。推荐的操作系统为Ubuntu 22.04 LTS或Debian 12。通过SSH获取访问权限后,执行基本配置:

  • 更新软件包:sudo apt update && sudo apt upgrade -y
  • 创建具有sudo权限的用户:sudo adduser deployer && sudo usermod -aG sudo deployer
  • 配置SSH密钥(禁用密码登录)
  • 安装fail2ban以防止暴力破解
  • 配置UFW(允许端口22、80、443)


安装LEMP技术栈(Nginx + PHP-FPM + MySQL)

我们使用Nginx作为前端服务器,PHP-FPM用于处理PHP。使用一条命令安装所有组件:

sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip composer git -y

检查版本:

php -vnginx -vmysql --version


配置PHP-FPM以实现高性能

对于高级部署,请修改PHP-FPM配置。编辑文件/etc/php/8.3/fpm/pool.d/www.conf(版本可能不同):

pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 500

生产环境的重要php.ini设置:

memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 64Mmax_execution_time = 300date.timezone = Europe/Moscow

重启PHP-FPM:sudo systemctl restart php8.3-fpm



2. 应用部署:从Git到生产环境

克隆与权限配置

为项目创建目录并克隆仓库:

sudo mkdir -p /var/www/yourprojectsudo chown -R deployer:deployer /var/www/yourprojectcd /var/www/yourprojectgit clone git@github.com:yourusername/yourproject.git .

配置访问权限:

sudo chown -R www-data:www-data /var/www/yourproject/storagesudo chown -R www-data:www-data /var/www/yourproject/bootstrap/cachesudo chmod -R 775 /var/www/yourproject/storagesudo chmod -R 775 /var/www/yourproject/bootstrap/cache


配置Nginx虚拟主机

为您的域名创建配置文件:

sudo nano /etc/nginx/sites-available/yourproject

包含缓存和压缩的高级配置示例:

server {    listen 80;    server_name yourdomain.com www.yourdomain.com;    root /var/www/yourproject/public;

index index.php index.html;

charset utf-8;

location / { try_files $uri $uri/ /index.php?$query_string; }

location ~ \\.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

location ~ /\

博客

书籍推荐