轻松部署 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 协议》,转载必须注明作者和本文链接
文章写的非常精彩,对我帮助很大,顶 :+1: :+1: :+1: 但是好像没有讲到
NPM
和yarn
的安装,希望可以补充到文档中去.Laravel-China 的 Composer 镜像已经停止运营了,国内推荐用阿里的镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/