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

Hostinger共享主机下通过Git部署Laravel 8应用的目录结构适配问题

Hostinger共享主机Git部署Laravel 8问题解答

1. 拆分核心目录与public目录的原因

本质是安全规范和共享主机配置约束共同决定的,和Laravel版本没有直接关系:

  • 安全层面:Laravel的核心目录(含.env配置文件、app业务代码、vendor依赖等)存储大量敏感信息,若直接放置在Web可访问的public_html目录下,外部用户可直接遍历下载这些文件,导致数据库密码、应用密钥等核心信息泄露。旧版本Laravel从未允许将完整项目直接放在Web根目录,只是早年很多用户不了解安全规范,强行将完整项目部署到public_html,属于不符合官方要求的野路子操作。
  • 主机配置层面:Hostinger这类共享主机默认将站点的Web根目录绑定到public_html,普通用户无法直接修改根目录指向到项目内的public文件夹。因此只能将public目录下的入口文件、静态资源放到public_html,核心代码放到和public_html同级的非Web可访问目录,既符合Laravel的设计逻辑,又适配共享主机的默认配置。
  • 入口规范层面:Laravel的唯一外部入口是public/index.php,将public内容放到public_html后,访问域名会直接命中该入口文件,不会暴露项目的其他目录结构。

2. 仓库结构与部署结构不一致的解决方案

共有两种可落地的方案,可根据项目更新频率选择:

方案1:服务器端手动调整(适合迭代频率低的小型项目)

  • 登录Hostinger的SSH终端,进入账户根目录(和public_html同级的目录,通常为/home/你的账户名/),执行git clone 你的GitHub仓库地址 laravel_app,将完整项目拉取到外部不可访问的laravel_app目录。
  • 执行命令移动public目录内容到public_html:
    mv ~/laravel_app/public/* ~/public_html/
    mv ~/laravel_app/public/.htaccess ~/public_html/
    
  • 编辑public_html下的index.php,修改两处路径引用:
    将require __DIR__.'/../vendor/autoload.php';修改为require __DIR__.'/../laravel_app/vendor/autoload.php';
    将$app = require_once __DIR__.'/../bootstrap/app.php';修改为$app = require_once __DIR__.'/../laravel_app/bootstrap/app.php';
  • 后续更新代码时,只需进入laravel_app目录执行git pull即可,若public目录内容有变更,再重新执行一次移动命令即可。

方案2:脚本自动部署(适合迭代频率高的项目)

在laravel_app目录下新建部署脚本deploy.sh,内容如下:

#!/bin/bash
cd ~/laravel_app
# 拉取最新代码
git pull origin main
# 安装生产环境依赖
composer install --optimize-autoloader --no-dev
# 缓存配置提升性能
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 同步public目录内容到public_html
cp -rf ~/laravel_app/public/* ~/public_html/
cp -f ~/laravel_app/public/.htaccess ~/public_html/
# 给存储目录设置正确权限
chmod -R 755 ~/laravel_app/storage
chmod -R 755 ~/laravel_app/bootstrap/cache

后续需要部署时,直接执行bash ~/laravel_app/deploy.sh即可完成全流程操作,无需手动调整文件。

部署完成后需校验.env文件内的APP_URL、数据库连接、邮箱服务等生产环境配置,避免出现业务异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:03