使用 Laravel 快速构建网站系列 —— 应用部署工具:Deployer

deployer

1、简介

Deployer是一个基于Laravel 5.1的、免费的、开源的PHP应用部署工具。由Stephen Ball编写和维护。

2、GitHub

https://github.com/REBELinBLUE/deployer

3、功能特性

  • 通过SSH部署应用方到多台服务器
  • 克隆项目git仓库
  • 安装composer依赖
  • 运行任意bash命令
  • 优雅地处理上述步骤出现的错误
  • 保持之前的部署
  • 监控cronjob的运行
  • 允许通过webhook触发部署

4、生产环境中使用

本项目GitHub仓库代码的master分支是开发分支,不能用于实际生产环境,当稳定后代码修改会合并到release分支并被打上发布标签。推荐在生产环境中使用最新的release分支。

5、系统要求

安装运行Deployer需要系统具备以下条件:

  • PHP 5.5.9+
  • 数据库,推荐MySQL或PostgreSQL
  • Composer
  • Redis
  • Node.js
  • 适用于Laravel的队列系统,推荐Beanstalkd,不过Redis也可以

可选项

  • Supervisor用于监听队列和Node.js套接字服务器的运行
  • 如果有大量的并发需要一台缓存服务器,否则默认的文件缓存就足够了

6、安装

克隆仓库

$ git clone https://github.com/REBELinBLUE/deployer.git

拉出最新版本

$ git checkout 0.0.21

安装依赖

$ composer install -o --no-dev
$ npm install --production

运行安装器

$ php artisan app:install

编辑额外配置(可选)

$ editor .env

7、更新

获取最新代码

$ git fetch --all
$ git checkout 0.0.21

更新依赖

$ composer install -o --no-dev
$ npm install --production

运行更新

$ php artisan app:update

学院君 has written 855 articles

Laravel学院院长,终身学习者

积分:94542 等级:P12 职业:码农 城市:杭州

10 条回复

  1. 回眸 回眸 says:
    >php artisan app:install Commands not found: bash, git, gzip, php, rsync, scp, ssh, ssh-keygen, tar node.js was not found Beanstalkd is not running Deployer cannot be installed. Please review the errors above before continuing.
  2. harvey.lan harvey.lan says:
    > Illuminate\Foundation\ComposerScripts::postInstall > ([ -f .env ] && [ -z "$TRAVIS" ] && sed -i 's/DB_TYPE=/DB_CONNECTION=/g' .env) || exit 0 sed: 1: ".env": invalid command code . > ([ -f .env ] && [ -z "$TRAVIS" ] && php artisan optimize) || exit 0 Generating optimized class loader The compiled services file has been removed. 这个什么情况
  3. 守朢身影 守朢身影 says:
    运行composer install -o --no-dev 出现Loading composer repositories with package information Installing dependencies from lock file Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for intervention/image 2.3.2 -> satisfiable by intervention/image[2.3.2]. - intervention/image 2.3.2 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system. To enable extensions, verify that they are enabled in those .ini files: - D:Bitnamiphpphp.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
  4. jian jian says:
    @ Hi_Your_Soy_Sauce 谢谢,的确是redis问题
  5. jian jian says:
    @ 用户4080806886 我 没有用Homestead ,我是自己搭配的本机环境 apache mysql php的,没有用虚拟机 ,就到最后一步了,redis没有安装,我用window系统比较麻烦,是一定要安装redis吗?
  6. jian jian says:
    php artisan app:update 包错,说找不到 database.sqlite,换成 mysql php artisan migrate后 [PredisConnectionConnectionException] 由于目标计算机积极拒绝,无法连接。 [tcp://127.0.0.1:6379] 这是怎么回事

登录后才能进行评论,立即登录?