在 LNMP(Linux + Nginx + MySQL + PHP) 环境下部署 PHP 项目,一般流程如下。下面以 CentOS / Rocky / Alma / Ubuntu 通用思路为主,并给出常见示例。
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-xml php-mbstring php-zip -y
yum install epel-release -y
yum install nginx mariadb mariadb-server php php-fpm php-mysql php-json php-gd php-mbstring php-xml php-curl -y
启动服务:
systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx mariadb php-fpm
mysql -uroot -p
创建数据库和用户:
CREATE DATABASE demo_db DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'demo_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON demo_db.* TO 'demo_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
/var/www/demo
cd /var/www
git clone https://github.com/your/project.git demo
或上传压缩包:
unzip project.zip -d /var/www/demo
chown -R nginx:nginx /var/www/demo
chmod -R 755 /var/www/demo
Ubuntu 用户组可能是
www-data
server {
listen 80;
server_name demo.com www.demo.com;
root /var/www/demo/public; # Laravel/ThinkPHP 指向 public
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock; # Ubuntu
# fastcgi_pass 127.0.0.1:9000; # CentOS
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
保存后:
nginx -t
systemctl reload nginx
vim /etc/php-fpm.d/www.conf
确认:
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
重启:
systemctl restart php-fpm
如 .env:
DB_HOST=127.0.0.1
DB_DATABASE=demo_db
DB_USERNAME=demo_user
DB_PASSWORD=password
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /var/www/demo
composer install
php artisan key:generate
php artisan migrate
chmod -R 777 storage bootstrap/cache
public 为入口目录config/database.phpsystemctl status php-fpm
检查 sock 路径是否一致
chown -R nginx:nginx /var/www/demo
如果你愿意,可以告诉我:
我可以给你 完全定制化的部署方案。