下面给你一个在 Ubuntu 上用 PHP-FPM 部署 PHP 项目的完整常见流程(以 Nginx + PHP-FPM 为例,这也是最主流的组合)。
sudo apt update
sudo apt upgrade -y
sudo apt install nginx php-fpm -y
Ubuntu 20.04+ 默认安装 PHP 7.4+
可指定版本,例如:
sudo apt install php8.1-fpm
查看 PHP 版本:
php -v
systemctl status php8.1-fpm
(根据你的版本调整)
如果没启动:
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
sudo mkdir -p /var/www/myproject
sudo chown -R $USER:www-data /var/www/myproject
可以用:
git clonescprsync示例:
cd /var/www/myproject
git clone https://github.com/your/project.git .
sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 755 /var/www/myproject
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 版本一致
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
编辑:
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
echo "<?php phpinfo(); ?>" | sudo tee /var/www/myproject/public/info.php
浏览器访问:
http://服务器IP/info.php
看到 PHP 信息页即成功。
composer install
cp .env.example .env
php artisan key:generate
Nginx root 指向:
/var/www/myproject/public
composer install
Nginx root 指向:
/var/www/myproject/public
SCRIPT_FILENAME 未配置try_files 配置不正确如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置文件。