You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Laravel 5.8+Vue应用部署到cPanel共享主机的主域及子域

嘿,很高兴能帮你搞定这个多应用部署的问题!既然两个都是Vue+Laravel的组合,部署思路其实大同小异,只是域名配置和服务器站点划分要注意区分。下面我一步步给你捋清楚:

前置准备工作
  • 先把服务器的基础环境搞定哈——Ubuntu(或者你用的其他Linux发行版)+ Nginx + PHP(建议8.1以上版本,和你开发环境尽量一致)+ MySQL/MariaDB,这些都得提前装好并正常运行。
  • 域名解析:把你的主域名(比如yourdomain.com)和子域名(比如app.yourdomain.com)都解析到你的服务器公网IP,解析类型选A记录就行。
  • 代码上传:用Git拉取或者SFTP工具,把两个项目的代码分别传到服务器的不同目录,比如主应用放/var/www/main-app,子应用放/var/www/sub-app,别混在一起哦。
主域名应用部署步骤

Laravel后端配置

  1. 进入主应用目录:cd /var/www/main-app
  2. 复制.env.example为.env,然后编辑.env文件:
    • 配置数据库信息(DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD)
    • 把APP_URL设为你的主域名:APP_URL=https://yourdomain.com(后面配SSL的话用https,先配http也可以)
  3. 安装PHP依赖:composer install --optimize-autoloader --no-dev(--no-dev会跳过开发依赖,适合生产环境)
  4. 生成应用密钥:php artisan key:generate
  5. 创建存储目录的软链接:php artisan storage:link(这样前端才能访问存储的文件)
  6. 如果需要初始化数据库,运行迁移:php artisan migrate --force(--force避免生产环境误操作提示)
  7. 设置目录权限,让Nginx能读写关键目录:
    sudo chown -R www-data:www-data /var/www/main-app/storage /var/www/main-app/bootstrap/cache
    sudo chmod -R 775 /var/www/main-app/storage /var/www/main-app/bootstrap/cache
    

Vue前端配置

如果你的Vue是和Laravel整合在一起的(比如Vue代码放在resources/js目录):

  1. 安装前端依赖:npm install
  2. 打包生产环境代码:npm run build(打包后的文件会自动放到Laravel的public目录)

如果是前后端完全分离的Vue项目:

  1. 在Vue项目的.env里把API地址改成主域名的后端接口地址(比如VUE_APP_API_BASE_URL=https://yourdomain.com/api)
  2. 打包:npm run build
  3. 把打包后的dist目录里的所有文件复制到/var/www/main-app/public目录覆盖原文件,或者单独配置Nginx指向dist目录(不过整合的方式更省心)
子域名应用部署步骤

这部分和主域名的操作几乎一样,只是要注意目录和配置文件的区别:

  1. 进入子应用目录:cd /var/www/sub-app
  2. 复制并编辑.env:把APP_URL设为你的子域名APP_URL=https://app.yourdomain.com,数据库可以选择和主应用共用一个库(用不同前缀区分表),或者单独新建一个库,看你的需求。
  3. 重复主域名的Laravel后端配置步骤:composer install、生成密钥、存储链接、迁移、权限设置。
  4. 同样打包Vue代码,放到子应用的public目录。
Nginx站点配置(核心步骤)

你需要给两个应用分别创建Nginx配置文件,让服务器知道不同域名对应哪个项目:

主域名配置

  1. 创建配置文件:sudo nano /etc/nginx/sites-available/main-app
  2. 粘贴以下配置(记得替换成你的域名和PHP版本):
    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        root /var/www/main-app/public;
        index index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string; # 处理Laravel路由和Vue单页应用路由
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 这里的PHP版本要和你服务器安装的一致,比如php8.1-fpm
        }
    
        location ~ /\.ht {
            deny all; # 禁止访问.htaccess文件
        }
    }
    
  3. 保存退出后,创建软链接到启用站点目录:sudo ln -s /etc/nginx/sites-available/main-app /etc/nginx/sites-enabled/

子域名配置

  1. 创建配置文件:sudo nano /etc/nginx/sites-available/sub-app

  2. 粘贴以下配置:

    server {
        listen 80;
        server_name app.yourdomain.com;
        root /var/www/sub-app/public;
        index index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }
    
  3. 创建软链接:sudo ln -s /etc/nginx/sites-available/sub-app /etc/nginx/sites-enabled/

  4. 测试Nginx配置是否正确:sudo nginx -t,如果提示test is successful就没问题

  5. 重启Nginx生效:sudo systemctl restart nginx

配置SSL证书(推荐)

为了让网站走HTTPS,用Let's Encrypt免费证书就行,用certbot一键配置:

  1. 安装certbot和Nginx插件:sudo apt install certbot python3-certbot-nginx
  2. 申请并配置证书:
    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com -d app.yourdomain.com
    
  3. 按照提示操作,选择是否重定向HTTP到HTTPS,推荐选2(强制HTTPS)
    这样certbot会自动修改你的Nginx配置,开启HTTPS,还会自动续签证书。
额外优化建议
  • 运行Laravel缓存命令提升性能:php artisan config:cache、php artisan route:cache、php artisan view:cache
  • 如果是高流量场景,可以配置Nginx的静态资源缓存,比如对js、css、图片设置过期时间
  • 开启PHP-FPM的优化配置,比如调整进程数,根据服务器CPU核心数来设置

内容的提问来源于stack exchange,提问作者Biruk Mamo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:52:15