rehmatworks/serverpilot

ServerPilot:运行PHP网站的最佳方式。

v1.0.4 2017-06-01 07:20 UTC

This package is auto-updated.

Last update: 2024-09-15 01:27:24 UTC


README

Latest Stable Version Total Downloads License

这个简单的PHP API客户端绑定到ServerPilot的RESTful API,允许您管理ServerPilot资源。所有响应都返回JSON对象,包括错误。

安装

您可以通过Composer安装绑定。将其添加到您的composer.json

{
	"require": {
		"daverogers/serverpilot-php": "1.*"
	}
}

...然后安装

composer.phar install

或者您可以手动包含

include_once('/path/to/this/lib/ServerPilot.php');

用法

通用

服务器

系统用户

应用

数据库

SSL

连接

使用您的ServerPilot API keyid,设置配置值并将它们传递给ServerPilot类。您还可以包含一个'decode' => false配置值,如果您只想返回原始JSON编码值。

	$config = array(
		'id' => 'YOURID',
		'key' => 'YOURKEY'
	);
	$sp = new ServerPilot($config);

从那里,您可以调用任意数量的函数来管理您的ServerPilot服务器、应用、系统用户、数据库等。

捕获错误

如果有任何请求有问题,将抛出ServerPilotException

您可以使用getMessage()检索错误消息,并使用getCode()检索实际的HTTP状态码。

try {
    $servers    = $sp->server_list();
} catch(ServerPilotException $e) {
    echo $e->getCode() . ': ' .$e->getMessage();
}

操作

操作是ServerPilot资源上所做工作的记录。这些可能包括创建应用、部署SSL、删除旧数据库等。

所有修改资源的函数都将返回一个actionid,可以用来跟踪该操作的状态。

动作状态的可能值

$sp->action_info('ACTIONID');
{
    "data":
    {
        "id": "g3kiiYzxPgAjbwcY",
        "serverid": "4zGDDO2xg30yEeum",
        "status": "success",
        "datecreated": 1403138066
    }
}

服务器

列出所有服务器

$servers    = $sp->server_list();
{
    "data": 
    [
        {
           "id": "FqHWrrcUfRI18F0l",
            "name": "www1",
            "autoupdates": true,
            "firewall": true,
            "lastaddress": "1.2.3.4",
            "lastconn": 1403130552,
            "datecreated": 1403130551
        }, 
        {
            "id": "4zGDDO2xg30yEeum",
            "name": "vagrant",
            "autoupdates": true,
            "firewall": true,
            "lastaddress": "1.2.3.4",
            "lastconn": 1403130554,     
            "datecreated": 1403130553
        }
    ]
}

检索现有服务器

$server    = $sp->server_info('SERVERID');
{
    "data": 
    {
        "id": "UXOSIYrdtL4cSGp3",
        "name": "www2",
        "autoupdates": true,
        "firewall": true,
        "lastaddress": "1.2.3.4",
        "lastconn": 1403130554,
        "datecreated": 1403130553
    }
}

连接新服务器

使用此方法告诉ServerPilot您计划连接新服务器。

$server    = $sp->server_create('SERVERNAME');

当请求成功通过时,您应该得到以下返回值

{
    "actionid": "tW2fu4hjHnsix6Rn",
    "data":
    {
        "id": "`UXOSIYrdtL4cSGp3`",
        "name": "www2",
        "autoupdates": true,  "firewall": true,
        "lastaddress": null,
        "lastconn": null,
        "datecreated": 1403130553,
        "apikey": "nqXUevYSkpW09YKy7CY7PdnL14Q1HIlAfniJZwzjqNQ"
    }
}

使用data.iddata.apikey,您可以在已注册的服务器上运行serverpilot安装程序。

$ export SERVERID=UXOSIYrdtL4cSGp3
$ export SERVERAPIKEY=nqXUevYSkpW09YKy7CY7PdnL14Q1HIlAfniJZwzjqNQ
$ sudo apt-get update && sudo apt-get -y install wget ca-certificates && \
  sudo wget -nv -O serverpilot-installer https://download.serverpilot.io/serverpilot-installer && \
  sudo sh serverpilot-installer \
    --server-id=$SERVERID \
    --server-apikey=$SERVERAPIKEY

更新现有服务器

每个服务器上有两个选项可以更改;防火墙和自动更新。

这两个选项都是booleans(如果您不想更改选项,可以将其定义为null)。

$response    = $sp->server_update('SERVERID', 'FIREWALL':bool, 'AUTOUPDATES':bool);
{
    "data": 
    {
        "id": "UXOSIYrdtL4cSGp3",
        "name": "www2",
        "autoupdates": true,
        "firewall": true,
        "lastaddress": "1.2.3.4",
        "lastconn": 1403130554,
        "datecreated": 1403130553
    }
}

删除现有服务器

$response    = $sp->server_delete('SERVERID');
{
  "data": {}
}

系统用户

列出所有系统用户

$systemUsers    = $sp->sysuser_list();
{
"data": 
    [
          {
              "id": "PdmHhsb3fnaZ2r5f",
              "name": "serverpilot",
              "serverid": "FqHWrrcUfRI18F0l"
          },
          {
              "id": "RvnwAIfuENyjUVnl",
              "name": "serverpilot",
              "serverid": "4zGDDO2xg30yEeum"
          }
    ]
}

检索现有系统用户

$systemUser    = $sp->sysuser_info('SERVERID');
{
    "data":
    {
        "id": "PPkfc1NECzvwiEBI",
        "name": "derek",
        "serverid": "FqHWrrcUfRI18F0l"
    }
}

创建新系统用户

参数

$systemUser    = $sp->sysuser_create('SERVERID', 'NAME', 'PASSWORD');

当请求成功通过时,您应该得到以下返回值

{
    "actionid": "nnpgQoNzSK11fuTe",
    "data":
    {
        "id": "PPkfc1NECzvwiEBI",
        "name": "derek",
        "serverid": "FqHWrrcUfRI18F0l"
    }
}

更新现有系统用户

参数

除了应用ID之外的所有参数都是可选的(这意味着通过提供null不会更改任何内容)。

$response    = $sp->sysuser_update('SERVERID', 'PASSWORD');
{
    "actionid": "OF42xCWkKcaX3qG2",
    "data":
    {
        "id": "RvnwAIfuENyjUVnl",
        "name": "serverpilot",
        "serverid": "4zGDDO2xg30yEeum"
    }
}

删除现有系统用户

$response    = $sp->sysuser_delete('SYSUSERID');
{
    "actionid": "9tvygrrXZulYuizz",
    "data": {}
}

应用

列出所有应用

$apps    = $sp->app_list();
{
    "data": 
    [
        {
            "id": "c77JD4gZooGjrF8K",
            "datecreated": 1403139066,
            "name": "blog",
            "sysuserid": "RvnwAIfuENyjUVnl",
            "domains": ["www.myblog.com", "blog.com"],
            "ssl": null,
            "serverid": "4zGDDO2xg30yEeum",
            "runtime": "php7.0"
        },
        {
            "id": "B1w7yc1tfUPQLIKS",
            "datecreated": 1403143012,
            "name": "store",
            "sysuserid": "RvnwAIfuENyjUVnl",
            "domains": ["www.mystore.com", "mystore.com"],
            "ssl": {                "key": "-----BEGIN PRIVATE KEY----- ...",
                "cert": "-----BEGIN CERTIFICATE----- ...",
                "cacerts": "-----BEGIN CERTIFICATE----- ...",
                "auto": false,
                "force": false
            },
            "serverid": "4zGDDO2xg30yEeum",
            "runtime": "php7.0"
        }
    ]
}

检索现有应用

$app    = $sp->app_info('APPID');
{
    "data":
    {
        "id": "UXOSIYrdtL4cSGp3",
        "name": "www2",
        "autoupdates": true,
        "firewall": true,
        "lastaddress": "1.2.3.4",
        "lastconn": 1403130554,
        "datecreated": 1403130553
    }
}

创建新应用

参数

$app    = $sp->app_create('APPNAME', 'SYSUSERID', 'RUNTIME', 'DOMAINS', 'WORDPRESS');

当请求成功通过时,您应该得到以下返回值

{
    "actionid": "dIrCNoWunW92lPjw",
        "data":
        {
            "id": "nlcN0TwdZAyNEgdp",
            "datecreated": 1403143012,
            "name": "gallery",
            "sysuserid": "RvnwAIfuENyjUVnl",
            "domains": ["www.example.com", "example.com"],
            "ssl": null,
            "serverid": "4zGDDO2xg30yEeum",
            "runtime": "php7.0"
        }
}

更新现有应用

参数

除了应用ID之外的所有参数都是可选的(这意味着通过提供null不会更改任何内容)。

$response    = $sp->app_update('APPID', 'RUNTIME', 'DOMAINS');
{
    "actionid": "KlsNzLikw3BRvShc",
    "data":
    {
        "id": "nlcN0TwdZAyNEgdp",
        "datecreated": 1403143012,
        "name": "gallery",
        "sysuserid": "RvnwAIfuENyjUVnl",
        "domains": ["www.example.com", "example.com"],
        "ssl": null,
        "serverid": "4zGDDO2xg30yEeum",
        "runtime": "php5.6"
    }
}

删除现有应用

$response    = $sp->app_delete('APPID');
{
    "actionid": "88Ypexhx28Y63eyA",
    "data": {}
}

数据库

列出所有数据库

$databases    = $sp->database_list();
{
    "data":
    [
        {
            "id": "hdXkAZchuj27Hm1L",
            "name": "wordpress",
            "appid": "c77JD4gZooGjrF8K",
            "serverid": "4zGDDO2xg30yEeum",
            "user": {
                "id": "vt08Qz9kjOC3RVLr",
                "name": "robert"
            }
        }
    ]
}

检索现有数据库

$app    = $sp->database_info('DBID');
{
    "data":
    {
        "id": "8PV1OIAlAW3jbGmM",
        "name": "gallerydb",
        "appid": "nlcN0TwdZAyNEgdp",
        "serverid": "4zGDDO2xg30yEeum",
        "user": {
            "id": "k2HWtU33mpUsfOdA",
            "name": "arturo"
        }
    }
}

创建新数据库

参数

$app    = $sp->database_create('APPID', 'NAME', 'USERNAME', 'PASSWORD');

当请求成功通过时,您应该得到以下返回值

{
    "actionid": "gPFiWP9hFNUxvT70",
    "data":
    {
        "id": "8PV1OIAlAW3jbGmM",
        "name": "gallerydb",
        "appid": "nlcN0TwdZAyNEgdp",
        "serverid": "4zGDDO2xg30yEeum",
        "user": {
            "id": "k2HWtU33mpUsfOdA",
            "name": "arturo"
        }
    }
}

更新现有数据库

参数

除了应用ID之外的所有参数都是可选的(这意味着通过提供null不会更改任何内容)。

$response    = $sp->database_update('DBID', 'USERID', 'PASSWORD');
{
    "actionid": "VfH12ukDJFv0RZAO",
    "data":
    {
        "id": "8PV1OIAlAW3jbGmM",
        "name": "gallerydb",
        "appid": "nlcN0TwdZAyNEgdp",
        "serverid": "4zGDDO2xg30yEeum",
        "user": {
            "id": "k2HWtU33mpUsfOdA",
            "name": "arturo"
        }
    }
}

删除现有数据库

$response    = $sp->database_delete('APPID');
{
    "actionid": "88Ypexhx28Y63eyA",
    "data": {}
}

SSL

向应用添加自定义SSL

参数

$ssl    = $sp->ssl_add('APPID', 'KEY', 'CERT', 'CACERTS);
{
    "actionid": "BzcMNZ9sdBY62vTd",
    "data":
    {
        "key": "-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----",
        "cert": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----",
        "cacerts": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----"
    }
}

从应用中删除自定义SSL

$ssl    = $sp->ssl_delete('APPID');

为应用启用AutoSSL

只有当应用可用AutoSSL证书时,才能启用AutoSSL。

此外,如果应用当前已使用自定义SSL证书,则不能启用AutoSSL。要在已使用自定义SSL的应用上启用AutoSSL,请首先删除应用的自定义SSL证书。

注意,禁用AutoSSL不是通过此API调用完成的,而是通过从应用中删除SSL来完成。

$ssl    = $sp->ssl_auto('APPID');

为应用程序强制启用SSL重定向

orceSSL只能在应用程序已启用SSL的情况下启用。

您不能在与添加自定义SSL证书或启用AutoSSL的同时启用ForceSSL。

$ssl    = $sp->ssl_force('APPID', 'FORCE':bool);

##注意事项

ServerPilot网站:https://serverpilot.io/

ServerPilot的API文档:https://github.com/ServerPilot/API

本项目的Packagist链接:https://packagist.org.cn/packages/daverogers/serverpilot-php

开始使用Composer:https://composer.php.ac.cn/doc/00-intro.md

如果这不是您的风格,请在此处查看James West的PHP库:https://github.com/jameswestnz/ServerPilot-API-PHP-Wrapper