denislam/laravel-forge-api-sdk-php

用于访问官方 Laravel Forge API 的 PHP SDK

dev-master 2017-09-28 02:50 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:54:29 UTC


README

在 Laravel Forge 上自动化任务从未如此简单

PHP Laravel Forge API SDK 让开发者可以通过 Forge 的 官方 REST API 在 PHP 代码中轻松访问 Laravel Forge,构建强大的应用程序和软件,以自动在 AWS、DigitalOcean、Linode 等平台上提供、管理和部署无限数量的 PHP 应用程序。您可以通过 使用 Composer 安装 SDK 或从我们的 最新版本 下载单个 zip 或 phar 文件来在几分钟内开始。

安装

您可以通过 Composer 安装 PHP Laravel Forge API SDK,通过要求 guzzlehttp/guzzle 包(见:GuzzleHTTP)并在项目的 composer.json 中注册 Laravel_Forge_API_PHP_SDK 命名空间的 PSR-4 自动加载器来安装。

{
    "require": {
		"guzzlehttp/guzzle": "~6.0"
    },
	"autoload": {
		"psr-4": {
			"Laravel_Forge_API_PHP_SDK\\": "src/laravel-forge-api-php-sdk/"
	}
}

然后运行 composer update

composer update

需要 Composer 自动加载器

在您的代码中,需要 Composer 自动加载器 vendor/autoload.php

require __DIR__ . '/vendor/autoload.php';

如有必要,更改目录路径以匹配您的代码架构。

设置您的 Forge API 令牌

从您的 Forge 帐户设置 中创建一个新的 API 令牌。

然后复制并粘贴您的 API 令牌到 Forge::setToken() 函数中,并将此代码放在您的代码中。

Forge::setToken('COPY AND PASTE YOUR FORGE API TOKEN HERE');

用法

以下是一些您可以做的示例。服务器响应以 JSON 字符串格式显示。

列出所有服务器

echo Servers::list();

获取特定服务器的信息

echo Servers::get($server_id);

列出特定服务器上的所有站点

echo Sites::list($server_id);

创建新的服务器

Servers::create($payload);

$payload = array(
  "provider"            => $provider,           // string
  "credential_id"       => $credential_id,      // boolean
  "region"              => $region,             // string
  "ip_address"          => $ip_address,         // string
  "private_ip_address"  => $private_ip_address, // string
  "php_version"         => $php_version,        // string
  "database"            => $database,           // string
  "maria"               => $maria,              // boolean
  "load_balancer"       => $load_balancer,      // boolean
  "network"             => $network             // array
);

函数快速参考

请访问我们的 SDK API 文档 以获取有关可用类和函数的完整参考。

  • 服务器
    • Servers::create($payload = [])
    • Servers::list()
    • Servers::get($server_id)
    • Servers::update($server_id)
    • Servers::update_database_password($payload = [])
    • Servers::delete($server_id)
    • Servers::reboot($server_id)
    • Servers::revoke($server_id)
    • Servers::reconnect($server_id)
    • Servers::reactivate($server_id)
  • 服务
    • Services::reboot_mysql($server_id)
      • Services::stop_mysql($server_id)
      • Services::reboot_nginx($server_id)
      • Services::stop_nginx($server_id)
      • Services::reboot_postgres($server_id)
      • Services::stop_postgres($server_id)
      • Services::install_blackfire($payload = [])
      • Services::install_papertrail($payload = [])
      • Services::remove_papertrail($payload = [])
  • 守护进程
    • Daemons::create($server_id, $payload = [])
    • Daemons::list($server_id)
    • Daemons::get($server_id, $daemon_id)
    • Daemons::delete($server_id, $daemon_id)
    • Daemons::restart($server_id, $daemon_id)
  • 防火墙规则
    • FirewallRules::create($server_id, $payload = [])
    • FirewallRules::list($server_id)
    • FirewallRules::get($server_id, $rule_id)
    • FirewallRules::delete($server_id, $rule_id)
  • 计划任务
    • ScheduledJobs::create($server_id, $payload = [])
    • ScheduledJobs::list($server_id)
    • ScheduledJobs::get($server_id, $job_id)
    • ScheduledJobs::delete($server_id, $job_id)
  • MySQL 数据库
    • MySQLDatabases::create($server_id, $payload = [])
    • MySQLDatabases::list($server_id)
    • MySQL数据库::get($server_id, $database_id)
    • MySQL数据库::delete($server_id, $database_id)
  • MySQL数据库用户
    • MySQL数据库用户::create($server_id, $payload = [])
    • MySQL数据库用户::list($server_id)
    • MySQL数据库用户::get($server_id, $user_id)
    • MySQL数据库用户::update($server_id, $user_id, $payload = [])
    • MySQL数据库用户::delete($server_id, $user_id)
  • 网站
    • 网站::create($server_id, $payload = [])
    • 网站::list($server_id)
    • 网站::get($server_id, $site_id)
    • 网站::update($server_id, $site_id, $payload = [])
    • 网站::delete($server_id, $site_id)
    • 网站::balancing($server_id, $site_id, $payload = [])
  • SSL证书
    • SSL证书::create($server_id, $site_id, $payload = [])
    • SSL证书::install_existing($server_id, $site_id, $payload = [])
    • SSL证书::clone($server_id, $site_id, $payload = [])
    • SSL证书::letsencrypt($server_id, $site_id, $payload = [])
    • SSL证书::list($server_id, $site_id)
    • SSL证书::get($server_id, $site_id, $ssl_id)
    • SSL证书::install($server_id, $site_id, $ssl_id, $payload = [])
    • SSL证书::activate($server_id, $site_id, $ssl_id)
    • SSL证书::delete($server_id, $site_id, $ssl_id)
  • SSH密钥
    • SSH密钥::create($server_id, $payload = [])
    • SSH密钥::list($server_id)
    • SSH密钥::get($server_id, $key_id)
    • SSH密钥::delete($server_id, $key_id)
  • 工作进程
    • 工作进程::create($server_id, $site_id, $payload = [])
    • 工作进程::list($server_id, $site_id)
    • 工作进程::get($server_id, $site_id, $worker_id)
    • 工作进程::delete($server_id, $site_id, $worker_id)
    • 工作进程::restart($server_id, $site_id, $worker_id)
  • 部署
    • 部署::enable($server_id, $site_id)
    • 部署::disable($server_id, $site_id)
    • 部署::get_script($server_id, $site_id)
    • 部署::update($server_id, $site_id, $payload = [])
    • 部署::deploy($server_id, $site_id)
    • 部署::reset($server_id, $site_id)
    • 部署::get_log($server_id, $site_id)
  • 配置文件
    • 配置文件::get_nginx($server_id, $site_id)
    • 配置文件::update_nginx($server_id, $site_id, $payload = [])
    • 配置文件::get_env($server_id, $site_id)
    • 配置文件::update_env($server_id, $site_id, $payload = [])
  • git项目
    • Git项目::install($server_id, $site_id, $payload = [])
    • Git项目::remove($server_id, $site_id)
  • WordPress
    • WordPress::install($server_id, $site_id, $payload = [])
    • WordPress::uninstall($server_id, $site_id)
  • 食谱
    • 食谱::create($payload = [])
    • 食谱::list()
    • 食谱::get($recipe_id)
    • 食谱::get($recipe_id, $payload = [])
    • 食谱::delete($recipe_id)
    • 食谱::run($recipe_id, $payload = [])
  • 凭证
    • 凭证::list()

完整文档

查看../public/docs/index.php以获取SDK可用的API函数的完整参考。

实时演示

查看../public/docs/demo.php以获取更多使用示例的实时演示。

代码沙盒

使用在../public/index.php中设置的框架来测试您的代码。

额外功能

支持多个 HTTP 客户端

SDK包括对PHP中最强大的两个HTTP客户端的处理程序

默认情况下,Guzzle客户端用于处理所有Forge API请求。

即时动态 HTTP 客户端切换

如果您想添加其他客户端或更改客户端,您可以在几秒钟内完成

  1. 打开Forge.php
  2. 将第35行的const PHP_HTTP_CLIENT更改为您想要的客户端。
  3. 保存文件,您就完成了!SDK将自动使用位于../HttpHandlers/中的HTTP客户端类来发起API请求。

自定义异常处理

SDK使您能够轻松地在代码中创建和触发自定义异常。以下是您需要做的

  1. 打开../Exceptions/Errors.php
  2. 将您的自定义错误引用ID和消息输入到errors($id)函数数组中。消息ID可以包含空格和数字。
$data = [
  //..
  'Custom Error ID 1' => ['context'  => 'Your custom error message.' ],
  'custom_error_id_2' => ['context'  => 'Another custom error message.' ],
  //..
];
  1. 要在代码中返回自定义错误消息,只需像这样使用Errors基类的get()函数
return Errors::get('Custom Error ID 1');
  1. 就是这样!

我是否遗漏了一个基本功能?

  • 没有什么是不可能的!
  • 提交一个问题,让我们一起使SDK变得更好!
  • 欢迎提交错误报告、功能请求、修复和建议。
  • 想要表示感谢或买我一杯啤酒吗?捐赠总是受欢迎。☺

贡献

  1. 创建一个问题并描述您的想法。
  2. 分支它
  3. 创建您的功能分支(git checkout -b my-new-feature
  4. 提交您的更改(git commit -am '添加一些功能'
  5. 发布分支(git push origin my-new-feature
  6. 创建一个新的拉取请求

为了测试您的流程,您可以使用我的测试仓库

许可证

PHP的Laravel Forge API SDK是在MIT许可证下发布的。

捐赠

如果您觉得这个SDK为您节省了汗水或者给您带来了笑容,请买我几杯啤酒。干杯!☺

比特币

您可以将比特币捐赠发送到1BM3kt5UKe4v6Rb8sQBXA9pnFgJdMGCwWq,或者通过点击下面的按钮通过Coinbase进行。

coinbase

PayPal

这里也接受信用卡支付

PayPal

Flattr

flattr