如何将Laravel 5.6应用部署到虚拟主机的cPanel面板?
如何将Laravel 5.6应用部署到cPanel虚拟主机?
刚帮朋友部署过Laravel 5.6到cPanel共享主机,踩了几个小坑,分享下完整的部署思路和实操步骤,应该能帮你顺利搞定:
一、本地预准备(重要!减少线上麻烦)
在把代码传到cPanel之前,先在本地做好优化和配置:
- 安装生产依赖:运行
composer install --optimize-autoloader --no-dev,只安装生产环境需要的包,剔除开发依赖(比如PHPUnit),节省空间还更安全。 - 预编译配置和路由:执行
php artisan config:cache和php artisan route:cache,把配置和路由缓存起来,提升线上访问速度。 - 准备生产环境的
.env文件:复制本地的.env,修改成线上配置——比如APP_ENV=production、APP_DEBUG=false、APP_URL改成你的域名,还有数据库连接信息(后面在cPanel创建完数据库再填准确值)。
二、上传文件到cPanel
cPanel的文件管理器是核心工具,这里要注意Laravel的目录结构适配:
- 创建主应用目录:在cPanel文件管理器的根目录(
/home/你的用户名/)下新建一个目录,比如laravel_app,用来存放Laravel除了public之外的所有文件(app、bootstrap、config、vendor等,还有刚准备好的.env)。 - 处理public目录:把Laravel本地
public文件夹里的所有内容(包括index.php、css、js这些)上传到cPanel的public_html目录——这是cPanel默认的域名根目录,必须让用户访问域名时直接进入Laravel的public入口。
三、修改入口文件路径(关键步骤)
因为我们把核心代码移到了public_html外面,所以要修改public_html/index.php里的路径指向:
原来的index.php加载代码是:
require __DIR__.'/../vendor/autoload.php'; /* |-------------------------------------------------------------------------- | 开启框架初始化 |-------------------------------------------------------------------------- | | 我们需要为PHP开发提供支持,因此开启框架初始化流程。 | 这一步会引导框架启动并做好使用准备,随后将加载应用程序以便我们可以运... */你需要把路径改成指向外面的
laravel_app目录:require __DIR__.'/../laravel_app/vendor/autoload.php'; /* |-------------------------------------------------------------------------- | 开启框架初始化 |-------------------------------------------------------------------------- | | 我们需要为PHP开发提供支持,因此开启框架初始化流程。 | 这一步会引导框架启动并做好使用准备,随后将加载应用程序以便我们可以运... */同时还要修改下面的应用实例加载路径:
$app = require_once __DIR__.'/../laravel_app/bootstrap/app.php';
四、配置线上环境和数据库
- 创建数据库:在cPanel里找到
MySQL数据库向导,创建一个新的数据库、数据库用户,给用户分配全权限,记下数据库名、用户名、密码,填到.env的DB_DATABASE、DB_USERNAME、DB_PASSWORD里(DB_HOST一般是localhost,如果主机有特殊要求再改)。 - 设置.env权限:在文件管理器里找到
laravel_app/.env,把权限设为644——既保证PHP能读取,又防止其他用户查看敏感信息。 - 导入数据库(如果有):如果本地有测试数据,用cPanel的
phpMyAdmin导入SQL文件到刚创建的线上数据库。
五、设置目录权限
Laravel需要storage和bootstrap/cache目录有写入权限,不然会报错:
- 在文件管理器里找到
laravel_app/storage和laravel_app/bootstrap/cache,把它们的权限设为755(如果还是有写入问题,改成775,绝对不要用777,太不安全)。 - 有些共享主机可能限制了目录权限,如果改完还是不行,联系主机商帮忙调整。
六、域名指向和测试
- 确认域名解析:确保你的域名已经解析到cPanel主机的IP地址(一般在cPanel的
账户信息里能看到主机IP)。 - 测试访问:打开浏览器输入你的域名,如果能正常加载Laravel应用就成功了!如果出现错误:
- 临时把
.env里的APP_DEBUG=true打开,查看具体错误信息; - 查看
laravel_app/storage/logs里的日志文件,排查问题; - 测试完记得把
APP_DEBUG改回false,避免泄露敏感信息。
- 临时把
额外注意事项
- 不要上传
node_modules、.git这些目录,占用空间还没用; - 如果你的应用用到了定时任务,在cPanel的
Cron Jobs里添加任务:* * * * * php /home/你的用户名/laravel_app/artisan schedule:run >> /dev/null 2>&1,每分钟运行一次; - 如果用到队列,同样可以用Cron Jobs或者主机提供的队列服务来处理。
内容的提问来源于stack exchange,提问作者Tita Donalbin
相关产品推荐
相关产品推荐

