温馨提示×

ubuntu php-fpm怎样部署项目

小樊
43
2026-09-13 10:11:27
栏目: 编程语言

下面给你一个在 Ubuntu 上用 PHP-FPM 部署 PHP 项目的完整常见流程(以 Nginx + PHP-FPM 为例,这也是最主流的组合)。


一、安装基础环境

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Nginx 和 PHP-FPM

sudo apt install nginx php-fpm -y

Ubuntu 20.04+ 默认安装 PHP 7.4+
可指定版本,例如:

sudo apt install php8.1-fpm

查看 PHP 版本:

php -v

二、确认 PHP-FPM 运行状态

systemctl status php8.1-fpm

(根据你的版本调整)

如果没启动:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

三、部署项目代码

1. 创建项目目录

sudo mkdir -p /var/www/myproject
sudo chown -R $USER:www-data /var/www/myproject

2. 上传代码

可以用:

  • git clone
  • scp
  • rsync

示例:

cd /var/www/myproject
git clone https://github.com/your/project.git .

3. 设置权限

sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 755 /var/www/myproject

四、配置 Nginx + PHP-FPM

1. 创建 Nginx 站点配置

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

示例配置(PHP-FPM socket 方式):

server {
    listen 80;
    server_name example.com;

    root /var/www/myproject/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:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

注意:php8.1-fpm.sock 与你安装的 PHP 版本一致


2. 启用站点

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

五、配置 PHP(常见调整)

编辑:

sudo nano /etc/php/8.1/fpm/php.ini

常用修改:

upload_max_filesize = 20M
post_max_size = 20M
cgi.fix_pathinfo=0

重启:

sudo systemctl restart php8.1-fpm

六、测试 PHP 是否正常工作

echo "<?php phpinfo(); ?>" | sudo tee /var/www/myproject/public/info.php

浏览器访问:

http://服务器IP/info.php

看到 PHP 信息页即成功。


七、常见框架部署示例

Laravel

composer install
cp .env.example .env
php artisan key:generate

Nginx root 指向:

/var/www/myproject/public

ThinkPHP

composer install

Nginx root 指向:

/var/www/myproject/public

八、常见问题

1. 502 Bad Gateway

  • PHP-FPM 没启动
  • socket 路径错误
  • 权限问题

2. File not found

  • root 路径错误
  • SCRIPT_FILENAME 未配置

3. 静态资源 404

  • try_files 配置不正确

如果你愿意,可以告诉我:

  • ✅ Ubuntu 版本
  • ✅ PHP 版本
  • ✅ 用的框架(Laravel / ThinkPHP / 原生)
  • ✅ 是否用 Docker

我可以直接给你一份可复制的配置文件。

0 踩