下面给你一套在 Ubuntu 上用 PHP‑FPM 部署 PHP 项目的常见做法(以 Nginx + PHP‑FPM 为例,最常用)。
sudo apt update
sudo apt upgrade -y
sudo apt install nginx php-fpm -y
查看 PHP 版本(示例为 8.1):
php -v
对应 fpm 服务名一般是:
php8.1-fpm
启动并设置开机自启:
sudo systemctl enable php8.1-fpm
sudo systemctl start php8.1-fpm
sudo mkdir -p /var/www/myproject
sudo chown -R www-data:www-data /var/www/myproject
可以用:
scpgit clonersync示例(Git):
cd /var/www/myproject
sudo git clone https://github.com/your/repo.git .
sudo nano /etc/nginx/sites-available/myproject
示例配置(Laravel / 普通 PHP 都适用):
server {
listen 80;
server_name example.com;
root /var/www/myproject/public; # 如果是普通项目改成 /var/www/myproject
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
PHP‑FPM 默认用户是 www-data:
ps aux | grep php-fpm
确保项目可写目录权限正确(如 storage / cache):
sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 755 /var/www/myproject
sudo ufw allow 80
sudo ufw allow 443
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
sudo systemctl restart php8.1-fpm
502 Bad Gateway
php-fpm.sock 路径不对File not found
root 路径写错白屏
tail -f /var/log/nginx/error.log
tail -f /var/log/php8.1-fpm.log
如果你用的是 Apache + PHP‑FPM 或 Docker / Laravel / ThinkPHP,可以告诉我,我可以给你对应方案。