在VPS上部署PHP应用:从A到Z的逐步指南

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

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

开始课程

引言:为什么VPS是PHP项目的理想解决方案

\n

开发PHP应用只是工作的一半。另一半同样重要的部分是将其正确部署到服务器。虚拟专用服务器(VPS)提供了共享主机无法比拟的灵活性、控制力和性能。您将获得root访问权限、精细调整环境的能力以及完全的资源隔离。

\n

在本指南中,我们将以PHP 8.x、Nginx、MySQL和Git为例,走完从购买服务器到应用上线的全过程。所有步骤均针对最流行的Web服务器操作系统Ubuntu 22.04 LTS进行说明。

\n\n

1. VPS初始设置与连接

\n\n

1.1. 选择与购买VPS

\n

对于PHP应用,最低要求为:1 vCPU、1 GB RAM、20 GB SSD。推荐信誉良好的提供商:DigitalOcean、Linode、Vultr或国内的Timeweb、Beget。

\n

购买后,您将获得IP地址、root密码(或SSH密钥)。

\n\n

1.2. 通过SSH连接并创建用户

\n

连接到服务器(将192.168.1.1替换为您的IP):

\n
ssh root@192.168.1.1
\n

创建一个非特权用户用于日常工作:

\n
adduser deployer\nusermod -aG sudo deployer
\n

配置SSH密钥以实现安全登录:

\n
mkdir -p /home/deployer/.ssh\ncp ~/.ssh/authorized_keys /home/deployer/.ssh/\nchown -R deployer:deployer /home/deployer/.ssh\nchmod 700 /home/deployer/.ssh\nchmod 600 /home/deployer/.ssh/authorized_keys
\n

禁用root密码登录,编辑/etc/ssh/sshd_config:

\n
PermitRootLogin prohibit-password\nPasswordAuthentication no
\n

重启SSH:systemctl restart sshd

\n\n

1.3. 服务器基本安全

\n
    \n
  • 更新软件包:apt update && apt upgrade -y
  • \n
  • 安装fail2ban:apt install fail2ban -y
  • \n
  • 配置UFW(防火墙):
  • \n
\n
ufw allow OpenSSH\nufw allow 'Nginx Full'\nufw enable
\n\n

2. 安装与配置LEMP环境(Linux, Nginx, MySQL, PHP)

\n\n

2.1. 安装Nginx

\n
apt install nginx -y\nsystemctl enable nginx\nsystemctl start nginx
\n

在浏览器中打开服务器IP地址,检查是否正常工作。您应该看到Nginx的欢迎页面。

\n\n

2.2. 安装PHP 8.x和PHP-FPM

\n

添加最新PHP版本的仓库:

\n
apt install software-properties-common -y\nadd-apt-repository ppa:ondrej/php -y\napt update\napt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd -y
\n

检查PHP-FPM状态:

\n
systemctl status php8.2-fpm
\n\n

2.3. 安装MySQL (MariaDB)

\n
apt install mariadb-server -y\nsystemctl enable mariadb\nsystemctl start mariadb
\n

运行安全脚本:

\n
mysql_secure_installation
\n

为应用创建数据库和用户:

\n
mysql -u root -p\nCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';\nGRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;
\n\n

2.4. 配置Nginx虚拟主机

\n

为我们的域名(例如myapp.com)创建配置文件:

\n
nano /etc/nginx/sites-available/myapp
\n

文件内容:

\n
server {\n    listen 80;\n    server_name myapp.com www.myapp.com;\n    root /var/www/myapp/public;\n    index index.php index.html;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:                

博客

书籍推荐