插件窝 干货文章 Vue打包后与Laravel API如何高效部署?

Vue打包后与Laravel API如何高效部署?

Laravel 部署 应用 server 529    来源:    2025-03-13

在Vue和Laravel的组合中,Vue通常作为前端框架,Laravel作为后端API服务。为了高效部署Vue打包后的应用和Laravel API,可以采取以下步骤:

1. 分离前端和后端

将Vue前端和Laravel后端分离部署,这样可以独立管理和扩展。

2. 打包Vue应用

在Vue项目中,使用以下命令打包应用:

npm run build

这将生成一个dist目录,包含所有静态文件(HTML、CSS、JS等)。

3. 部署Vue应用

dist目录中的文件部署到Web服务器(如Nginx或Apache)的静态文件目录中。例如,使用Nginx:

server {
    listen 80;
    server_name yourdomain.com;

    root /path/to/your/vue/dist;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

这样,Vue应用就可以通过yourdomain.com访问。

4. 部署Laravel API

将Laravel项目部署到服务器上,确保配置好.env文件中的数据库连接和其他环境变量。

使用Composer安装依赖:

composer install --optimize-autoloader --no-dev

生成应用密钥:

php artisan key:generate

优化配置缓存:

php artisan config:cache
php artisan route:cache

配置Nginx或Apache来服务Laravel应用。例如,使用Nginx:

server {
    listen 80;
    server_name api.yourdomain.com;

    root /path/to/your/laravel/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

这样,Laravel API就可以通过api.yourdomain.com访问。

5. 配置跨域资源共享(CORS)

如果Vue应用和Laravel API部署在不同的域名下,需要在Laravel中配置CORS。可以使用fruitcake/laravel-cors包:

composer require fruitcake/laravel-cors

然后在app/Http/Kernel.php中注册中间件:

protected $middleware = [
    \Fruitcake\Cors\HandleCors::class,
    // 其他中间件
];

config/cors.php中配置允许的域名:

return [
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['https://yourdomain.com'],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => false,
];

6. 自动化部署

使用CI/CD工具(如GitLab CI、Jenkins、GitHub Actions等)自动化部署流程。例如,使用GitHub Actions:

name: Deploy Vue and Laravel

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Install Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install npm dependencies
      run: npm install

    - name: Build Vue app
      run: npm run build

    - name: Deploy Vue app
      uses: appleboy/scp-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SERVER_SSH_KEY }}
        source: "dist/*"
        target: "/path/to/your/vue/dist"

    - name: Install Composer dependencies
      run: composer install --optimize-autoloader --no-dev

    - name: Deploy Laravel API
      uses: appleboy/scp-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SERVER_SSH_KEY }}
        source: "laravel/*"
        target: "/path/to/your/laravel"

7. 监控和维护

部署完成后,使用监控工具(如Prometheus、Grafana、New Relic等)监控应用性能和服务器状态,确保应用稳定运行。

总结

通过以上步骤,你可以高效地部署Vue打包后的应用和Laravel API。分离前后端、自动化部署和配置CORS是确保应用高效运行的关键。