轻松部署 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.
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

5年前 评论

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

4年前 评论

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