如何将Laravel项目成功部署到VPS服务器上?
| 部署方法 |
适用场景 |
主要工具 |
部署复杂度 |
| 手动部署 |
小型项目、学习用途 |
SSH、FTP、Composer |
中等 |
| Laravel Forge |
生产环境、团队协作 |
Forge平台、Git |
简单 |
| GitHub Actions |
持续集成、自动化部署 |
GitHub、SSH |
中等 |
| Deployer工具 |
零停机部署、大型项目 |
Deployer、Git |
中等 |
| Docker容器 |
环境隔离、微服务架构 |
Docker、Docker Compose |
较高 |
如何将Laravel项目部署到VPS服务器?从环境配置到自动化部署的完整指南
主要部署步骤概览
| 步骤 |
操作内容 |
预计时间 |
关键工具 |
| 1 |
服务器环境准备 |
15-30分钟 |
SSH、包管理器 |
| 2 |
项目文件上传 |
5-15分钟 |
Git、FTP、SCP |
| 3 |
依赖安装与配置 |
5-10分钟 |
Composer、NPM |
| 4 |
数据库配置 |
5-10分钟 |
MySQL、迁移命令 |
| 5 |
权限与存储设置 |
3-5分钟 |
chmod、chown |
| 6 |
Web服务器配置 |
10-20分钟 |
Nginx、Apache |
| 7 |
域名绑定与SSL |
5-15分钟 |
Certbot |
| 8 |
测试与优化 |
5-10分钟 |
浏览器、日志 |
详细操作流程
步骤一:服务器环境准备
操作说明:在VPS上安装LNMP(Linux+Nginx+MySQL+PHP)环境,这是运行Laravel应用的基础。
使用工具提示:使用SSH连接到服务器,通过包管理器安装所需软件。
# 连接到VPS服务器
ssh root@yourserverip
更新系统包管理器
apt update && apt upgrade -y
安装PHP及相关扩展
apt install -y php7.4 php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-xml php7.4-curl
安装Nginx
apt install -y nginx
安装MySQL
apt install -y mysql-server
步骤二:项目文件上传
操作说明:将本地Laravel项目文件传输到VPS服务器上。
使用工具提示:可以使用Git、SCP或FTP等方式上传文件。
# 使用SCP上传项目文件(从本地执行)
scp -r /path/to/your/laravel/project root@yourserverip:/var/www/
或者使用Git方式(服务器端)
cd /var/www
git clone yourrepositoryurl projectname
步骤三:依赖安装与配置
操作说明:在服务器上安装Composer并配置项目依赖。
使用工具提示:确保服务器已安装Git和必要的PHP扩展。
# 安装Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
进入项目目录安装依赖
cd /var/www/projectname
composer install --no-dev
生成应用密钥
php artisan key:generate
步骤四:数据库配置
操作说明:创建数据库并导入数据,配置.env文件中的数据库连接信息。
使用工具提示:确保MySQL服务已启动并配置了安全设置。
# 登录MySQL
mysql -u root -p
创建数据库和用户
CREATE DATABASE laravelapp;
CREATE USER 'laraveluser'@'localhost' IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON laravelapp.* TO 'laraveluser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
运行数据库迁移
php artisan migrate
步骤五:权限与存储设置
操作说明:设置正确的文件权限,确保Web服务器能够读写存储和缓存目录。
使用工具提示:使用chmod和chown命令调整权限。
# 设置存储目录权限
chown -R www-data:www-data /var/www/projectname
chmod -R 755 /var/www/projectname/storage
chmod -R 755 /var/www/projectname/bootstrap/cache
步骤六:Web服务器配置
操作说明:配置Nginx虚拟主机,指向Laravel项目的public目录。
使用工具提示:编辑Nginx配置文件,设置正确的根目录和PHP处理。
server {
listen 80;
servername yourdomain.com;
root /var/www/projectname/public;
index index.php;
location / {
tryfiles $uri $uri/ /index.php?$querystring;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgipass unix:/var/run/php/php7.4-fpm.sock;
fastcgiparam SCRIPTFILENAME $realpathroot$fastcgiscriptname;
include fastcgiparams;
}
}
步骤七:自动化部署配置(可选)
操作说明:使用GitHub Actions实现自动化部署。
使用工具提示:在项目根目录创建.github/workflows/deploy.yml文件。
name: Deploy Laravel to VPS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVERHOST }}
username: ${{ secrets.SERVERUSERNAME }}
key: ${{ secrets.SERVERSSHKEY }}
script: |
cd /var/www/projectname
git pull origin main
composer install --no-dev
php artisan migrate --force
php artisan config:cache
php artisan route:cache
常见问题及解决方案
| 问题 |
原因 |
解决方案 |
| 502 Bad Gateway错误 |
PHP-FPM服务未启动或配置错误 |
检查PHP-FPM状态:systemctl status php7.4-fpm,确保Nginx配置中的fastcgipass指向正确的PHP-FPM socket文件 |
| 存储目录权限错误 |
Web服务器用户没有写入权限 |
运行:chmod -R 775 storage bootstrap/cache,并设置正确的所有者 |
| 页面显示空白或错误 |
.env文件配置错误或应用密钥未生成 |
检查.env文件配置,运行:php artisan key:generate |
| 数据库连接失败 |
数据库配置信息错误或MySQL服务未运行 |
验证数据库连接信息,重启MySQL服务:systemctl restart mysql |
| 时区设置问题 |
服务器时区与应用程序时区不一致 |
在config/app.php中设置正确时区,或在.env文件中配置APPTIMEZONE |
| 静态资源加载失败 |
Nginx配置未正确处理静态文件 |
在Nginx配置中添加静态文件处理规则,确保public目录可访问 |
发表评论