如何通过终端安全部署Laravel到cPanel 支持git push操作吗
Laravel项目cPanel终端安全部署操作指南
一、终端安全部署Laravel的完整步骤
- 提前在cPanel后台开启SSH访问,将本地SSH公钥上传至cPanel的「SSH密钥」管理页面,禁用SSH密码登录,避免暴力破解风险。
- 本地终端执行SSH命令连接cPanel服务器,替换对应参数即可:
ssh 你的cPanel用户名@服务器IP地址 -p SSH端口
通常cPanel默认SSH端口为22,部分服务商自定义端口可在面板说明中查询。 - 服务器端创建非Web可访问的项目目录,避免源码直接暴露:
不要将代码直接存放在public_html目录下,优先在/home/你的cPanel用户名/路径下新建专属项目目录,例如laravel_app,后续代码全部存放在该目录中。 - 将Laravel的
public目录内容软链接到域名对应的Web根目录:
以根域名为例,执行命令ln -s /home/你的cPanel用户名/laravel_app/public /home/你的cPanel用户名/public_html,如果是子域名对应修改Web根目录路径即可。 - 上传本地
.env配置文件到服务器项目根目录,执行chmod 600 .env收紧权限,避免其他同服务器用户读取敏感配置。 - 执行生产环境依赖安装命令,不安装开发依赖:
composer install --optimize-autoloader --no-dev
如果服务器默认PHP版本不符合Laravel要求,可在cPanel的MultiPHP Manager中切换版本,或使用对应PHP版本的绝对路径执行命令,例如PHP8.2的路径为/opt/cpanel/ea-php82/root/usr/bin/php。 - 执行Laravel初始化命令:
php artisan key:generate php artisan config:cache php artisan route:cache php artisan view:cache php artisan storage:link php artisan migrate --force - 收紧目录权限,执行
chmod -R 755 storage bootstrap/cache,禁止设置777权限,避免权限溢出风险。
二、终端向cPanel安全上传文件的方法
所有传输都走SSH加密通道,不会明文泄露内容,常用两种方式:
- scp传输:适合单次传输单个文件/目录
单个文件传输命令:scp -P SSH端口 本地文件路径 你的cPanel用户名@服务器IP地址:服务器目标路径
整个目录传输命令:scp -r -P SSH端口 本地目录路径 你的cPanel用户名@服务器IP地址:服务器目标路径 - rsync同步:适合增量更新代码,效率更高
可直接排除不需要同步的文件,示例命令:rsync -avz -e 'ssh -p SSH端口' --exclude={'/.git','/vendor','/node_modules','.env'} 本地项目目录/ 你的cPanel用户名@服务器IP地址:/home/你的cPanel用户名/laravel_app/
三、支持直接git push推送代码到cPanel,配置方法如下
不需要借助第三方代码托管平台,直接在cPanel服务器配置裸仓库即可实现push自动部署:
- SSH连接到cPanel服务器,在非Web可访问目录下新建git裸仓库,例如:
mkdir -p /home/你的cPanel用户名/laravel.git && cd /home/你的cPanel用户名/laravel.git && git init --bare - 进入裸仓库的hooks目录,创建自动部署钩子:
执行nano hooks/post-receive,写入以下内容:#!/bin/sh
git --work-tree=/home/你的cPanel用户名/laravel_app --git-dir=/home/你的cPanel用户名/laravel.git checkout -f - 给钩子添加执行权限:
chmod +x hooks/post-receive - 本地Laravel项目终端添加cPanel远程仓库:
git remote add cpanel ssh://你的cPanel用户名@服务器IP地址:SSH端口/home/你的cPanel用户名/laravel.git - 后续需要推送代码时,直接执行
git push cpanel main(主分支为master则替换为master),代码会自动同步到服务器的项目目录中,推送完成后在SSH端执行依赖安装、清缓存等后续部署命令即可。
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

