You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Laravel远程部署最佳实践:本地项目部署至Siteground方案咨询

Laravel项目部署到Siteground的最佳实践:Git+SSH vs FTP

针对你把本地开发的Laravel项目部署到Siteground的需求,Git+SSH绝对是远优于FTP的选择,也是现代Web项目部署的行业最佳实践。下面我会详细拆解原因、具体操作步骤,以及额外的优化建议:

为什么不推荐FTP?

FTP(包括SFTP)虽然上手简单,但存在诸多痛点:

  • 版本混乱风险:手动上传文件容易遗漏、覆盖,无法追溯代码变更历史,出问题后很难回滚。
  • 效率低下:大项目需要上传所有文件,哪怕只是修改了一行代码,耗时远高于Git的增量拉取。
  • 权限与安全隐患:手动设置文件权限容易出错,FTP默认明文传输(SFTP虽加密,但流程缺乏规范)。
  • 无自动化可能:无法实现一键部署或CI/CD,每次部署都要重复手动操作。

Git+SSH的核心优势

选择Git+SSH部署,能完美解决FTP的所有问题:

  • 版本控制联动:本地开发的代码推送到Git仓库后,服务器直接拉取最新版本,确保代码与本地完全一致,还能随时回滚到历史稳定版本。
  • 高效增量更新:只拉取变更的文件,大项目部署速度提升明显。
  • 安全可靠:SSH加密传输数据,Siteground完全支持SSH访问,配合密钥免密登录,比FTP更安全。
  • 可自动化扩展:后续可以通过脚本或CI/CD工具实现一键部署,甚至代码推送后自动部署到服务器。

Siteground上Git+SSH部署的具体步骤

1. 准备远程Git仓库

确保你的本地Laravel项目已经初始化Git,并推送到远程仓库(推荐用私有仓库,避免代码泄露)。

2. 开启Siteground的SSH访问

登录Siteground后台,找到「SSH Access」或「SSH Keys」选项:

  • 生成服务器端的SSH密钥,或者上传你本地的SSH公钥(~/.ssh/id_rsa.pub内容),这样服务器可以免密拉取Git仓库。

3. 连接到Siteground服务器

你可以用本地终端通过SSH连接:

ssh your_siteground_username@your_server_ip

也可以直接使用Siteground后台提供的Web SSH工具,无需本地终端。

4. 配置服务器目录结构

Siteground的Web根目录默认是public_html,而Laravel的入口文件在public目录下,推荐两种配置方式:

  • 方式一:将Laravel项目放在public_html的上层目录(比如~/laravel-project),然后将public_html软链到项目的public目录:
    rm -rf public_html
    ln -s ~/laravel-project/public public_html
    
  • 方式二:直接在public_html目录下拉取代码,然后修改Siteground站点的文档根目录为public_html/public(需要在后台站点设置中调整)。

5. 拉取Git代码

在服务器的目标目录下执行拉取命令:

# 首次部署
git clone git@your-repo-url.git

# 后续更新
git checkout main  # 切换到生产分支
git pull origin main

6. 安装生产环境依赖

执行Composer安装命令,跳过开发依赖并优化自动加载:

composer install --no-dev --optimize-autoloader

7. 配置环境变量

复制示例环境文件,修改生产环境配置(数据库、APP_URL、缓存驱动等):

cp .env.example .env
# 编辑.env文件,填写正确的配置
nano .env

然后生成应用密钥:

php artisan key:generate

8. 设置正确的文件权限

确保Laravel的存储和缓存目录有合适的权限:

chmod -R 775 storage bootstrap/cache
chown -R your_username:www-data storage bootstrap/cache

(Siteground的Web用户组一般是www-data,如果不对可以咨询客服确认)

9. 优化生产环境性能

缓存配置和路由,提升应用运行速度:

php artisan config:cache
php artisan route:cache
php artisan view:cache

额外的最佳实践建议

  • 分支规范:本地用dev分支开发,测试通过后合并到main分支再部署,避免直接部署未验证的代码。
  • 备份机制:部署前务必备份服务器上的代码和数据库,Siteground自带自动备份功能,也可以手动执行mysqldump备份数据库。
  • 自动化部署脚本:可以写一个简单的bash脚本,把拉取代码、安装依赖、缓存配置等步骤整合,实现一键部署:
    # deploy.sh
    #!/bin/bash
    echo "Pulling latest code..."
    git pull origin main
    echo "Installing dependencies..."
    composer install --no-dev --optimize-autoloader
    echo "Caching config and routes..."
    php artisan config:cache
    php artisan route:cache
    echo "Deployment completed!"
    
    给脚本添加执行权限:chmod +x deploy.sh,之后部署只需运行./deploy.sh
  • 避免服务器端改代码:所有代码变更都在本地完成,推送到Git后再拉取到服务器,确保代码版本统一。

关于FTP的最后说明

如果你实在对Git不熟悉,或者项目极小,FTP也能临时用,但一定要注意:

  • 上传所有文件(包括隐藏文件如.env
  • 严格设置文件权限
  • 每次部署前手动备份代码
    但长期来看,Git+SSH的流程更规范、更高效,值得花一点时间学习。

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

火山引擎 最新活动