在 Ubuntu 上部署 PHP 项目,常见方式有 LNMP(Linux + Nginx + MySQL + PHP) 或 LAMP(Linux + Apache + MySQL + PHP)。下面我给你一个最常用、最实用的 Nginx + PHP 部署流程(适合 Laravel / ThinkPHP / 原生 PHP)。
sudo apt update
sudo apt upgrade -y
sudo apt install nginx -y
测试:
sudo systemctl status nginx
浏览器访问服务器 IP,看到 Nginx 欢迎页说明成功。
以 PHP 8.1 为例(可按需改版本):
sudo apt install php8.1-fpm php8.1-cli php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl -y
查看 PHP 版本:
php -v
编辑站点配置:
sudo nano /etc/nginx/sites-available/your_project
示例配置(重点看 PHP 部分):
server {
listen 80;
server_name yourdomain.com; # 或服务器IP
root /var/www/your_project/public; # Laravel用public,原生PHP用根目录
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/your_project /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo mkdir -p /var/www/your_project
可用方式:
scpgit clone示例:
cd /var/www/your_project
git clone 你的项目地址 .
设置权限:
sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo apt install mysql-server -y
sudo mysql_secure_installation
创建数据库:
CREATE DATABASE db_name;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
cp .env.example .env
nano .env
修改数据库信息。
composer install
php artisan key:generate
php artisan migrate
sudo ufw allow 80
sudo ufw allow 443
浏览器访问:
http://服务器IP
✅ 502 错误
→ 检查 php-fpm 是否在运行
systemctl status php8.1-fpm
✅ 权限问题
sudo chown -R www-data:www-data 项目目录
✅ 想用 Apache
→ 可装 apache2 + libapache2-mod-php
如果你告诉我:
我可以给你更精确的部署方案。