Laravel项目部署后操作指引及共享主机配置调整咨询
Laravel项目部署后必做操作 & 共享主机配置指南
作为常年折腾Laravel部署的开发者,我来给你梳理清楚这两个问题的关键步骤,都是实战中踩坑总结出来的干货:
一、Laravel项目部署完成后的核心操作
不管是云服务器还是共享主机,这些步骤都是确保项目正常运行的基础:
- 设置正确的文件权限:Laravel的
storage和bootstrap/cache目录需要写入权限才能处理日志、缓存等内容。如果有SSH权限,执行以下命令:
要是没有SSH,就用主机的文件管理器右键修改这两个目录的权限为755(部分主机可能需要设为777,具体看主机要求)。chmod -R 755 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache - 配置环境变量:把根目录的
.env.example复制一份重命名为.env,重点修改这些配置:APP_URL:填你的项目正式域名DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD:对应你的数据库信息,别填错了!APP_KEY:如果这个值是空的,必须生成一个——有SSH就执行php artisan key:generate,没SSH的话后面讲共享主机的处理方法。这个密钥是加密会话和敏感数据的核心,不能少。
- 优化应用性能:
- 缓存配置:
php artisan config:cache - 缓存路由:
php artisan route:cache - 缓存视图:
php artisan view:cache - 优化自动加载:
composer dump-autoload --optimize
这些命令能大幅提升生产环境的响应速度,一定要跑一遍。
- 缓存配置:
- 数据库迁移(如果需要):如果项目有未执行的数据库表结构变更,执行
php artisan migrate——注意!先备份数据库再操作,避免数据丢失。 - 队列和计划任务配置(如果用到):
- 队列:要是项目用了队列处理异步任务,先在
.env里配置好队列驱动(比如数据库),然后启动队列监听php artisan queue:work。生产环境建议用Supervisor管理,防止进程意外停止。 - 计划任务:在Crontab里加一行
* * * * * cd /你的项目路径 && php artisan schedule:run >> /dev/null 2>&1,确保定时任务能自动执行。
- 队列:要是项目用了队列处理异步任务,先在
二、共享主机上的额外配置与操作
共享主机因为权限限制,很多操作不能像云服务器那样自由,得做些特殊调整:
- 调整网站根目录:大部分共享主机默认把
public_html作为网站根目录,但Laravel的入口文件是public目录下的index.php。你可以这么做:- 把Laravel项目的
public文件夹里的所有文件,全部移到主机的public_html目录下。 - 修改
public_html/index.php里的路径,让它能找到项目的核心文件:
找到这两行:
假设你的Laravel项目放在require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php';public_html的上一级,文件夹名叫laravel-project,就改成:require __DIR__.'/../laravel-project/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel-project/bootstrap/app.php';
- 把Laravel项目的
- 处理
.env文件:有些共享主机不允许直接上传.env文件,你可以先上传成env.txt,然后通过主机的文件管理器重命名为.env;或者直接在文件管理器里新建.env文件,把.env.example的内容粘贴进去再修改配置。 - 解决Artisan命令无法执行的问题:如果共享主机没有提供SSH权限,你可以创建一个临时PHP脚本执行Artisan命令。比如新建
run-artisan.php:
访问这个脚本执行完命令后,一定要删掉它,避免安全风险。<?php // 替换成你需要执行的命令,比如key:generate、migrate等 $command = 'key:generate'; // 这里填你的Laravel项目根目录的绝对路径 $projectPath = '/home/你的主机用户名/laravel-project'; $output = shell_exec("php $projectPath/artisan $command"); echo "<pre>$output</pre>"; ?> - 权限问题排查:如果遇到“权限被拒绝”的错误,先试试把
storage和bootstrap/cache的权限设为777(仅限测试,生产环境尽量用755+正确的用户组),要是还不行就联系主机商帮忙调整用户组权限——毕竟共享主机的权限管控比较严。 - 禁用调试模式:最后一定要把
.env里的APP_DEBUG改成false,不然报错时会把敏感的服务器信息暴露出来,非常危险。
内容的提问来源于stack exchange,提问作者the inquisitor
相关产品推荐
相关产品推荐

