1. 准备Linux服务器环境
在部署前需安装Laravel运行所需的软件栈:PHP(≥7.3,需包含pdo_mysql、mbstring、xml、curl、zip、gd、bcmath等扩展)、Composer(PHP依赖管理工具)、Nginx/Apache(Web服务器)、MySQL/PostgreSQL(数据库)。以Ubuntu为例,可通过以下命令快速安装:
sudo apt update && sudo apt upgrade -y
sudo apt install php php-cli php-fpm php-mysql php-curl php-mbstring php-xml php-zip php-gd php-bcmath -y
sudo apt install composer -y
sudo apt install nginx mysql-server -y
安装完成后,启动并设置服务开机自启:
sudo systemctl start nginx mysql
sudo systemctl enable nginx mysql
2. 上传Laravel项目到服务器
使用SCP、FTP或Git将本地Laravel项目上传至服务器指定目录(如/var/www/your-domain.com
)。例如,通过SCP命令:
scp -r /local/path/to/laravel-project username@server_ip:/var/www/your-domain.com
确保项目目录权限正确(后续步骤会调整)。
3. 安装PHP依赖
进入项目根目录,运行composer install
安装所有依赖(生产环境建议添加--no-dev
排除开发依赖,提升性能):
cd /var/www/your-domain.com
composer install --no-dev --optimize-autoloader
--optimize-autoloader
可优化自动加载性能,减少运行时开销。
4. 配置环境变量
复制.env.example
文件生成.env
(包含数据库、应用密钥等敏感配置),并编辑该文件:
cp .env.example .env
nano .env
修改以下关键配置(根据实际情况调整):
APP_ENV=production # 生产环境
APP_DEBUG=false # 关闭调试模式
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=db_user
DB_PASSWORD=strong_password
生成应用密钥(用于加密会话、CSRF令牌等):
php artisan key:generate
确保.env
中的APP_KEY
已正确生成(若未生成,可手动复制APP_KEY
值)。
5. 运行数据库迁移与数据填充
执行迁移命令创建数据库表结构:
php artisan migrate --force # --force强制在生产环境运行
若有初始数据需要填充(如测试用户、默认配置),可运行:
php artisan db:seed --class=YourSeederClass # 可选
注意:迁移前需确保数据库已创建(可通过MySQL命令行或phpMyAdmin操作)。
6. 配置Web服务器(以Nginx为例)
创建Nginx服务器块配置文件(替代默认配置):
sudo nano /etc/nginx/sites-available/your-domain.com
粘贴以下配置(根据实际路径、域名调整):
server {
listen 80;
server_name your-domain.com www.your-domain.com;
root /var/www/your-domain.com/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:/var/run/php/php8.2-fpm.sock; # 根据PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all; # 禁止访问隐藏文件(如.git)
}
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
}
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
若使用Apache,需启用mod_rewrite
模块并配置.htaccess
文件。
7. 设置文件权限
Laravel的storage
(日志、缓存、上传文件)和bootstrap/cache
(路由/配置缓存)目录需可写,运行以下命令:
sudo chown -R www-data:www-data /var/www/your-domain.com # www-data为Nginx默认用户
sudo chmod -R 755 /var/www/your-domain.com
sudo chmod -R 775 /var/www/your-domain.com/storage /var/www/your-domain.com/bootstrap/cache
注意:避免使用777
权限(存在安全风险),优先使用775
。
8. 优化应用性能
通过缓存配置、路由、视图提升响应速度:
php artisan config:cache # 缓存配置文件
php artisan route:cache # 缓存路由
php artisan view:cache # 缓存视图(生产环境推荐)
注意:开发环境无需缓存(频繁修改文件时需清除缓存:php artisan config:clear
)。
9. 配置SSL证书(可选但推荐)
使用Let’s Encrypt免费获取SSL证书,启用HTTPS:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
按照提示完成配置,Certbot会自动修改Nginx配置以支持HTTPS,并设置自动续期。
10. 启动队列(若使用队列功能)
若项目使用Laravel队列(如发送邮件、处理异步任务),需启动队列监听器:
php artisan queue:work --daemon # 持续运行(生产环境推荐)
或使用supervisor
管理队列进程(确保进程崩溃后自动重启)。
11. 测试访问
在浏览器输入http://your-domain.com
或https://your-domain.com
,检查Laravel应用是否正常加载。若遇到502错误,需检查Nginx配置、PHP-FPM服务状态及文件权限;若遇到404错误,需确认public
目录是否为Web根目录。