如何将Laravel项目部署到VPS服务器?_从环境配置到自动化部署的完整指南

如何将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 your
repositoryurl 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 laravel
app; 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
  • name: Deploy to server
uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER
HOST }} 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目录可访问

发表评论

评论列表