kunstmaan/skylab

Skylab 是 Kunstmaan 使用基于 Python 的托管脚本的 100% 兼容 PHP 版本。通过使用 Cilex、Symfony 组件以及来自 Composer 项目的众多优秀代码示例,我们希望创建一个我们的组织内每个人都可以使用的应用程序,如果出现问题或需要新功能,也能进行工作。


README

Skylab 是 Kunstmaan 使用基于 Python 的托管脚本的 100% 兼容 PHP 版本。通过使用 Cilex、Symfony 组件以及来自 Composer 项目的众多优秀代码示例,我们希望创建一个我们的组织内每个人都可以使用的应用程序,如果出现问题或需要新功能,也能进行工作。

如果我们不开源,Kunstmaan 就不是 Kunstmaan。所以,这里就是。 MIT 许可

安装

要安装 Skylab,请运行此命令

$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php

这将仅检查一些 PHP 设置,然后下载 skylab.phar 到您的当前工作目录。此文件是 Skylab 二进制文件。它是一个 PHAR(PHP 存档),可以以命令行方式运行,等等。

您可以通过使用 --install-dir 选项并提供目标目录(可以是绝对路径或相对路径)将 Skylab 安装到特定目录

$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php -- --install-dir=/bin

您也可以通过运行以下命令全局安装 Skylab

$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php
$ mv skylab.phar /usr/local/bin/skylab

配置

您可以通过创建文件 /etc/skylab.yml 并给它一个安全的 chmod 来覆盖默认配置

sudo chmod 700 /etc/skylab.yml

例如,如果您在开发者的 OSX 机器上安装了 skylab

users:
    wwwuser:        apache

webserver:
    engine: apache
    hostmachine: XXXXX.kunstmaan.be

mysql:
    user:     root
    password: XXXXXXXXX

postgresql:
    user:     postgres
    password: XXXXXXXXX

debug: true
develmode: true

或者在 ubuntu 系统上

users:
    wwwuser: www-data

webserver:
    engine: apache
    hostmachine: XXXXX.kunstmaan.be

mysql:
    user:     root
    password: XXXXXXXXX

postgresql:
    user:     postgres
    password: XXXXXXXXX

debug: true
develmode: true

特殊骨架

SSL 骨架

使用 ssl 骨架可以通过 config.xml 配置 Apache 中的 SSL 设置。

您首先需要将 <item value="ssl"/> 添加到 config.xml 中的骨架。然后您需要将 <var name="project.sslConfig"> 添加到 config.xml 以配置 SSL 设置。

您可以为每个环境指定不同的 SSL 配置。每个环境的语法相同

<var name="{environment}">
  <dir value="{the location of the ssl files (cert, key, ca)}"/>
  <certFile value="{the name of the cert file}"/>
  <certKeyFile value="{the name of the key file}"/>
  <caCertFile value="{the name of the ca cert file}"/>
</var>

示例(我们假设有三个环境(dev、staging、prod))。

<var name="project.sslConfig">
    <var name="dev">
      <dir value="/home/myproject/ssl/dev/"/>
      <certFile value="myproject_dev_ssl.crt"/>
      <certKeyFile value="myproject_dev_ssl.key"/>
      <caCertFile value="myproject_dev_ssl.ca-bundle"/>
    </var>
    <var name="staging">
      <dir value="/home/myproject/ssl/staging/"/>
      <certFile value="myproject_staging_ssl.crt"/>
      <certKeyFile value="myproject_staging_ssl.key"/>
      <caCertFile value="myproject_staging_ssl.ca-bundle"/>
    </var>
    <var name="prod">
      <dir value="/home/myproject/ssl/prod/"/>
      <certFile value="myproject_prod_ssl.crt"/>
      <certKeyFile value="myproject_prod_ssl.key"/>
      <caCertFile value="myproject_prod_ssl.ca-bundle"/>
    </var>
  </var>

使用的 SSL 配置取决于您 skylab.yml 文件中的 env 值。在本地,您应该在您的 skylab.yml 配置文件中具有 env: dev。如果您这样做,则在运行维护时,它将在 Apache 中添加 dev SSL 配置。

### Let's Encrypt 骨架 letsencrypt 骨架可以用于使用 Let's Encrypt 服务为您的网站生成 SSL 证书。

要启用 letsenecrypt 的使用,您必须将 <item value="letsenecrypt"/> 添加到 config.xml。

该骨架将为 project.urlproject.aliases 中的所有别名生成 SSL 证书。

重要说明

  1. letsenecrypt 骨架仅在生产服务器上运行命令。
  2. 请确保 URL 解析到命令运行的 IP,否则将失败。
  3. 您可以使用 sslletsencrypt 骨架一起使用,但是当启用这两个骨架时,您必须删除 prod ssl 配置。如果 prod ssl 配置可用,它将使用该配置而不是运行 letsencrypt。
  4. letsenecrypt 骨架还创建了一个 cronjob 以更新证书(例如,0 0 * * 0 letsencrypt --apache -n certonly -d myproject.com)

命令

NewProjectCommand

用法: php skylab.phar new [--hideLogo] [--no-interactive] [--] [<name>]

使用 new 命令创建新项目。它将设置目录结构并应用 "base" 框架,负责设置用户、权限和所有权。

php skylab.phar new php skylab.phar new testproject

完整详情请见 doc/NewProjectCommand.md

FetchCommand

用法:php skylab.phar fetch [--hideLogo] [--no-interactive] [-l|--location [LOCATION]] [--no-database] [--] [<project>] [<host>]

fetch 命令从服务器获取 Skylab 项目并将其放置在您的计算机的正确位置。它还会删除数据库,所以如果您想在生产服务器上使用此命令进行迁移,请务必小心。

php skylab.phar fetch # 将提示您输入要获取的项目和服务器 php skylab.phar fetch testproject server1 # 将从 server1 获取 testproject

完整详情请见 doc/FetchCommand.md

ShareCommand

用法:php skylab.phar share [--hideLogo] [--no-interactive]

share 命令将显示您所有本地安装的项目列表,以及 xip.io URL。

php skylab.phar share # 将显示 xip.io 表

完整详情请见 doc/ShareCommand.md

SetPermissionsCommand

用法:php skylab.phar permissions [--hideLogo] [--no-interactive] [--] <name>

permissions 命令将修复项目的权限。

php skylab.phar permissions testproject

完整详情请见 doc/SetPermissionsCommand.md

MaintenanceCommand

用法:php skylab.phar maintenance [--hideLogo] [--no-interactive] [--quick]

maintenance 命令将运行项目上所有框架的维护命令。最值得注意的是,它将创建 Apache 配置文件并确保数据库可用。

php skylab.phar maintenance

完整详情请见 doc/MaintenanceCommand.md

BackupCommand

用法:php skylab.phar backup [--hideLogo] [--no-interactive] [--quick] [--] [<project>]

backup 命令将转储所有数据库并为一个或多个项目创建一个 tarball。

php skylab.phar backup  # Will backup all projects
php skylab.phar backup myproject  # Will backup the myproject project
php skylab.phar backup myproject --quick # Will backup the myproject project, but not create the tar file.
php skylab.phar backup myproject --quick --anonymize # Will backup the myproject project, but not create the tar file, and anonymize the database with the edyan/neuralizer package.

完整详情请见 doc/BackupCommand.md

RemoveProjectCommand

用法:php skylab.phar remove [--hideLogo] [--no-interactive] [--force] [--no-backup] [--] [<name>]

remove 命令将在创建备份后删除项目。

php skylab.phar remove testproject # 将删除 testproject 项目 php skylab.phar remove testproject --force # 将执行相同的操作,但不会询问您是否确定。

完整详情请见 doc/RemoveProjectCommand.md

ApplySkeletonCommand

用法:php skylab.phar apply [--hideLogo] [--no-interactive] [-l|--list] [--] [<project>] [<skeleton>]

apply 命令将应用框架及其所有依赖项到项目上。它将运行框架中的 "create" 方法来设置该框架的所有要求。

php skylab.phar apply -l # 列出所有可用的框架 php skylab.phar apply # 将提示您输入要应用的项目和框架 php skylab.phar apply testproject anacron # 将将 anacron 框架应用到 testproject

完整详情请见 doc/ApplySkeletonCommand.md

SelfUpdateCommand

用法:php skylab.phar self-update [--hideLogo] [--no-interactive] [-d|--dev] [-N|--non-dev] [-p|--pre] [-s|--stable] [-r|--rollback] [-c|--check]

self-update 命令将检查是否发布了更新的 skylab.phar,并在必要时进行更新。

php skylab.phar self-update

完整详情请见 doc/SelfUpdateCommand.md

编译新版本

  1. 首先,确保一切正常工作,Travis测试为绿色 构建状态
  2. 使用来自 git-extrasgit changelog 生成更新后的变更日志
  3. 提交这个新的变更日志
  4. 从Github界面创建一个新版本,在描述中添加新的变更日志部分,并以 列表中的下一颗亮星 命名版本
  5. 下载 box.par 以创建新版本
  6. 使用 box.phar 执行 box.phar build -v 构建新版本。注意:确保你已经拉取了最新的标签!!
  7. 将新的phar文件添加到GitHub上的版本中
  8. 更新 packagist

修改文档

  1. 大多数文本位于 gen-doc 中,请在那里编辑你想要的内容。
  2. doc/ 中的所有内容都是生成的,同样,在 Commands 下的 README.md 中的所有内容也是生成的
  3. 运行 ./gen-doc > README.md 以更新文档
  4. 提交一个Pull Request

贡献

  1. Fork Skylab
  2. 做一些事情,然后发送一个Pull Request。但请确保Travis是绿色的,并且你的代码已经通过php-cs-fixer运行过!

Scrutinizer Quality Score

文档生成于 2017-12-19 12:42:37