轻松部署 Laravel 应用 | 《07. 手动部署 - 安装 Git 和 Composer》

:clap: 本系列持续更新中,欢迎关注:https://github.com/wi1dcard/laravel-deploy...

由于课程上下文关联比较紧密,在开始前请先阅读 本文

你的支持是我写作的动力;关注我的客官们,请在右上角点个赞,将会让文章在首页展示,帮助更多人。

感谢 :clap: !

Git 和 Composer 是部署 PHP 项目时必不可少的两款工具。用它们代替原有 SCP 方案有许多好处:

  • 安全
  • 快速
  • 可回滚
  • 易管理
  • ...

好处非常非常多。实际上,正如之前提到的「在生产环境中这样做很危险」,直接使用 SCP 或压缩包传输代码是万万不可取的,具体原因请见文末。

安装 Git

依然使用 APT 安装:

$ apt install -y git

安装 Composer

Composer 比较特殊,不能通过 APT 安装。虽然网络上流传着一大堆从第三方服务器直接下载 composer.phar 文件的安装方式,但根据 Composer 的官方文档,正确的安装姿势应当为:

$ wget https://raw.githubusercontent.com/composer/getcomposer.org/master/web/installer -O - -q | php -- --filename=composer --install-dir=/usr/local/bin

以上修改自 https://getcomposer.org/doc/faqs/how-to-in...,另一种比较复杂的安装方式可参考 https://getcomposer.org/download/。你可以不必关心该脚本的具体意义,通常它只需执行一次。

注意:通过第三方服务器、直接下载 composer.phar 不进行任何检查,均无法保证 Composer 正常运行,且存在安全风险!请务必遵循官方文档内的说明。

稍等片刻,将会出现以下输出:

All settings correct for using Composer
Downloading...

提示当前环境检查通过,可正常使用 Composer;随后开始下载。

鉴于众所周知的原因,大陆访问国际网络速度奇慢无比,请耐心等待。当出现以下提示时,表示已经安装成功:

Composer (version 1.8.4) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

按照提示,我们可以使用 /usr/local/bin/composer 运行 Composer,当然,还有个更简单的方法:

$ composer

你可能会收到这样一条警告:

Do not run Composer as root/super user! See https://getcomposer.org/root for details

意为请勿使用根用户运行 Composer;暂时不必关心它,我将在后续课程中详细说明。

配置 Packagist 中国镜像

这一步是可选的。如果你的服务器位于大陆,强烈建议使用可信赖的代理,或是国内 Packagist 镜像。

推荐使用 Laravel-China 提供的 Packagist 中国镜像,执行以下命令即可切换服务器内 Composer 的默认 Packagist 源:

$ composer config -g repo.packagist composer https://packagist.laravel-china.org

拓展:为什么生产环境中万万不可使用 SCP 传输代码?

更准确地说,这个问题应该是:为什么不可使用 SCP 将整个 Laravel 应用传输到服务器的 Nginx 站点目录?

SCP 传输文件 这一操作本身不存在任何问题;不过,本地开发时 APP_DEBUG(调试模式)通常为打开状态,并且 APP_KEY(应用密钥)已经生成为一个固定值,若是利用 SCP 将整个目录传输到服务器并直接公开,那么 .env 文件内的值也会照搬到服务器内。

调试模式时展示的详细错误信息虽然有利于排查问题,但在生产环境开启极易引发安全漏洞;至于应用密钥,Laravel 将使用它加密 Cookie 等信息,在本地和线上绝对不应当使用相同值,更严格地说,线上的 APP_KEY 必须完全随机并确保不被任何人获得。

虽然你可以上传后再修改它们的值,或是使用类似 Rsync 等支持忽略特定文件的方式。但其一,不方便、易受人为失误影响;其二,无法享受 Git + Composer 的大量优势。

综上所述,在实际部署过程中,绝对不推荐使用 SCP 传输代码

本作品采用《CC 协议》,转载必须注明作者和本文链接
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

文章写的非常精彩,对我帮助很大,顶 :+1: :+1: :+1: 但是好像没有讲到NPMyarn的安装,希望可以补充到文档中去.

5年前 评论

Laravel-China 的 Composer 镜像已经停止运营了,国内推荐用阿里的镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
67
粉丝
592
喜欢
1236
收藏
1136
排名:13
访问:32.4 万
私信
所有博文
社区赞助商