Laravel作为当前最流行的PHP框架之一,以优雅的语法和强大的功能深受开发者青睐。但许多新手在本地开发完成后,常因服务器环境配置复杂、文件权限混乱、依赖安装失败等问题,卡在“上线”这一最后环节。本文基于CentOS/Ubuntu系统,以Nginx+PHP+MySQL环境为例,提供一套标准化部署,帮助快速完成Laravel项目从本地到线上的迁移。

一、部署前准备:工具与环境清单📋
部署前需准备以下资源:
-
服务器:云服务器(推荐2核4G及以上配置),系统选择CentOS 7+/Ubuntu 20.04+;
-
远程工具:Xshell(SSH连接)、FileZilla(文件传输);
-
本地项目:已开发完成的Laravel项目(确保本地可正常运行,
composer install无报错); -
域名(可选):已备案域名,解析至服务器公网IP。
二、服务器环境配置:LNMP/LEMP栈搭建🔧
Laravel对服务器环境有明确要求,需确保PHP版本≥8.0、Composer、Nginx/Apache、MySQL/MariaDB已安装。以Ubuntu 22.04+Nginx+PHP8.1+MySQL8.0为例:
1. 系统更新与基础依赖安装
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget unzip
2. PHP及扩展安装(Laravel核心依赖)
Laravel需PHP开启fileinfo、mbstring、openssl、pdo_mysql等扩展,执行以下命令:
sudo apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl php8.1-zip php8.1-gd
# 验证PHP版本
php -v # 输出PHP 8.1.x即成功
3. Nginx安装与配置
sudo apt install -y nginx
# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
配置Nginx站点(以域名laravel-demo.com为例):
sudo nano /etc/nginx/sites-available/laravel-demo
粘贴以下配置(注意修改root路径和server_name):
server {
listen 80;
server_name laravel-demo.com; # 替换为实际域名或服务器IP
root /var/www/laravel-demo/public; # Laravel项目public目录
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
启用站点配置:
sudo ln -s /etc/nginx/sites-available/laravel-demo /etc/nginx/sites-enabled/
sudo nginx -t # 验证配置是否有误
sudo systemctl reload nginx
4. MySQL安装与数据库创建
sudo apt install -y mysql-server
sudo mysql_secure_installation # 按提示设置root密码、移除匿名用户等
# 登录MySQL创建数据库
sudo mysql -u root -p
CREATE DATABASE laravel_demo_db; # 数据库名自定义
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; # 用户名密码自定义
GRANT ALL PRIVILEGES ON laravel_demo_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
exit;
三、项目上传与依赖安装📤
1. 项目上传至服务器
通过FileZilla将本地Laravel项目文件上传至服务器/var/www/目录,建议压缩后上传(减少传输时间),再解压:
sudo mkdir -p /var/www/laravel-demo
# 假设上传的压缩包为laravel-demo.zip,解压至目标目录
sudo unzip laravel-demo.zip -d /var/www/laravel-demo
# 设置目录所有者为www-data(Nginx运行用户)
sudo chown -R www-data:www-data /var/www/laravel-demo
2. 安装Composer依赖
Laravel项目依赖通过Composer管理,服务器需先安装Composer:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -v # 验证安装成功
进入项目目录安装依赖(务必使用--no-dev排除开发依赖,减小体积):
cd /var/www/laravel-demo
sudo -u www-data composer install --no-dev --optimize-autoloader
四、核心配置:环境变量与权限设置⚙️
1. 配置.env文件
复制环境模板文件并修改:
cp .env.example .env
nano .env
重点修改以下配置:
APP_NAME=LaravelDemo
APP_ENV=production # 生产环境必须设为production
APP_KEY= # 留空,后续生成
APP_DEBUG=false # 生产环境关闭调试模式
APP_URL=http://laravel-demo.com # 替换为实际域名
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_demo_db # 与之前创建的数据库名一致
DB_USERNAME=laravel_user # 与之前创建的用户名一致
DB_PASSWORD=StrongPassword123! # 与之前设置的密码一致
生成APP_KEY:
sudo -u www-data php artisan key:generate
2. 目录权限设置(新手最易踩坑!⚠️)
Laravel需storage和bootstrap/cache目录可写,执行:
sudo chmod -R 755 /var/www/laravel-demo/storage
sudo chmod -R 755 /var/www/laravel-demo/bootstrap/cache
sudo chown -R www-data:www-data /var/www/laravel-demo/storage
sudo chown -R www-data:www-data /var/www/laravel-demo/bootstrap/cache
3. 数据库迁移与种子(可选)
若项目有数据库迁移文件,执行:
sudo -u www-data php artisan migrate --force # --force避免生产环境确认提示
# 若有种子数据,执行:php artisan db:seed --force
五、部署验证与常见报错解决✅
1. 访问验证
浏览器访问服务器IP或域名,若看到Laravel欢迎页,说明部署成功🎉;若报错,按以下步骤排查:
-
500错误:检查
.env配置是否正确、APP_DEBUG=true临时开启调试模式查看具体错误; -
权限错误:确认
storage和bootstrap/cache目录权限是否为755,所有者是否为www-data; -
Composer依赖缺失:重新执行
composer install --no-dev; -
Nginx 404:检查Nginx配置中
root路径是否指向public目录,try_files规则是否正确。
2. 优化建议(提升性能)
# 配置缓存(生产环境必做)
sudo -u www-data php artisan config:cache
sudo -u www-data php artisan route:cache
sudo -u www-data php artisan view:cache
# 优化Composer自动加载
composer dump-autoload -o
结尾
Laravel部署虽涉及多环节,但按标准化流程操作即可高效完成。核心注意点:环境版本匹配、文件权限正确、生产环境关闭调试模式。部署完成后,建议定期备份数据库与项目文件,并通过php artisan optimize持续优化性能。掌握本文流程后,可进一步学习Laravel队列、缓存、HTTPS配置等进阶部署技巧。

