Laravel 8部署至生产系统所需迁移的文件与目录范围咨询
Laravel 8生产部署的文件上传规则
结论很明确:根本不需要上传项目的全部文件与目录,全量上传反而会带来兼容问题、安全风险,只要按要求同步核心必需内容即可。
为什么不建议全量上传
很多新手图省事把本地项目文件夹整个打包传到生产,实际会踩一堆坑:
- 很容易把本地开发用的
.env配置(比如本地数据库账号、开启debug调试的配置)直接同步到生产,轻则出现本地/生产配置混乱,重则把敏感配置通过调试页面泄露给外部访客 - 本地的
vendor/、node_modules/目录是对应本地操作系统(Windows/macOS)编译的依赖文件,直接传到Linux生产环境会出现扩展不兼容、命令无法执行的问题 - 本地开发产生的日志、临时缓存、IDE配置文件夹、版本控制目录全量上传,既占服务器存储空间,又会给攻击者留下可利用的信息线索
必须同步上传的核心文件与目录
按照最小化同步的原则,以下内容是生产环境必须保留的:
- 根目录下的项目入口与依赖配置:
artisan命令入口、composer.json、composer.lock、Web服务需要的重写规则文件(比如Apache环境的.htaccess)、前端构建配置文件(webpack.mix.js或对应版本的Vite配置) - 应用核心代码目录:
app/(业务逻辑代码)、config/(所有配置项文件)、routes/(路由定义)、database/(数据库迁移文件、模型工厂定义,本地测试用的sqlite文件可以跳过) - 对外访问的静态资源目录:
public/(网站入口index.php、编译好的前端静态资源、上传的公开文件目录都在这里,部署时要把Web服务的根目录直接指向这个文件夹) - 视图与资源目录:
resources/views/下的Blade模板文件(如果生产不需要二次编译前端,未编译的前端源文件可以按需选择不上传) - 存储目录结构:
storage/目录下的子目录骨架(就是带默认.gitignore的空目录结构,用来存上传文件、生成缓存、写日志,不要把本地存的日志、缓存文件一起传上去)
注意:
vendor目录不要直接从本地上传,所有基础文件同步完成后,在生产服务器执行composer install --optimize-autoloader --no-dev命令,重新安装适配生产系统的生产依赖,避免跨系统兼容问题。
绝对不要上传到生产的内容
- 本地环境专属配置:
.env文件(需要在生产服务器手动新建,单独填写生产环境的数据库、缓存、应用密钥等配置) - 本地依赖目录:
vendor/、node_modules/(由生产环境独立安装,无需从本地上传) - 开发调试相关内容:
storage/logs/下的本地调试日志、storage/framework/下的本地缓存与编译视图、tests/测试用例目录、IDE配置目录(.idea/、.vscode/) - 版本控制目录:
.git/(传上去不仅占空间,还可能泄露完整的代码提交记录)
内容的提问来源于stack exchange,提问作者user14335805
相关产品推荐
相关产品推荐

