daverogers/serverpilot-php

此包已废弃,不再维护。没有建议的替代包。

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

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

This package is not auto-updated.

Last update: 2020-08-31 21:49:19 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类。如果您只想获取原始的JSON编码值,可以包含一个'decode' => false配置值。

	$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,可用于跟踪该操作的状态。

操作状态的可能的值

状态 描述
open 操作尚未完成。
success 操作已成功完成。
error 操作已完成但有错误。
$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

更新现有服务器

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

这两个选项都是布尔值(如果您不想更改选项,可以将其定义为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"
    }
}

创建新系统用户

参数

名称 类型 描述
serverid 字符串 必需。服务器的ID。
name 字符串 必需。系统用户的名称。长度必须在3到32个字符之间。字符可以是小写ASCII字母、数字或破折号('abcdefghijklmnopqrstuvwxyz0123456789-'),但必须以小写ASCII字母开头。user-32是有效的名称,而3po则不是。
password 字符串 系统用户的密码。如果用户没有密码,则无法使用密码登录。不允许有前导或尾随空格,密码长度至少为8个字符,最多为200个字符。
$systemUser    = $sp->sysuser_create('SERVERID', 'NAME', 'PASSWORD');

请求成功通过后,您应该得到以下返回结果

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

更新现有系统用户

参数

名称 类型 描述
sysuserid 字符串 必需。系统用户的ID。
password 字符串 系统用户的密码。如果用户没有密码,则无法使用密码登录。不允许有前导或尾随空格,密码长度至少为8个字符,最多为200个字符。

除应用程序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
    }
}

创建新应用程序

参数

名称 类型 描述
name 字符串 必需。应用程序的昵称。长度必须在3到30个字符之间。字符可以是小写ASCII字母和数字。
sysuserid 字符串 必需。将“拥有”此应用程序的系统用户。由于每个系统用户都是针对特定服务器而特定,这隐含地确定了应用程序将在哪个服务器上创建。
runtime 字符串 必需。应用程序的PHP运行时。从php5.4php5.5php5.6php7.0php7.1中选择。
domains 数组 将要用于Web服务器配置的域名数组。如果您将应用程序的域名设置为example.com,Nginx和Apache将配置为监听example.comwww.example.com注意:必须将完整域名列表包含在每个更新此字段的操作中。
wordpress 数组 包含以下键的数组:site_titleadmin_useradmin_passwordadmin_email
$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"
        }
}

更新现有应用程序

参数

名称 类型 描述
runtime 字符串 应用程序的PHP运行时。可选择php5.4php5.5php5.6php7.0php7.1
domains 数组 将要用于Web服务器配置的域名数组。如果您将应用程序的域名设置为example.com,Nginx和Apache将配置为监听example.comwww.example.com注意:必须将完整域名列表包含在每个更新此字段的操作中。

除应用程序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"
        }
    }
}

创建新数据库

参数

名称 类型 描述
appid 字符串 必需。应用程序的ID。
name 字符串 必需。数据库名称。长度必须在3到64个字符之间。字符可以是小写ASCII字母、数字或短横线('abcdefghijklmnopqrstuvwxyz0123456789-')。
username 字符串 必需。数据库用户的名称。长度不得超过16个字符。
password 字符串 必需。数据库用户的密码。不允许有前导或尾随空格,且密码长度至少为8个字符,最多为200个字符。
$app    = $sp->database_create('APPID', 'NAME', 'USERNAME', 'PASSWORD');

请求成功通过后,您应该得到以下返回结果

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

更新现有数据库

参数

名称 类型 描述
appid 字符串 必需。应用程序的ID。
userid 字符串 必需。数据库用户的ID。
password 字符串 必需。数据库用户的新密码。不允许有前导或尾随空格,且密码长度至少为8个字符,最多为200个字符。

除应用程序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

参数

名称 类型 描述
appid 字符串 必需。应用程序的ID。
key 字符串 必需。私钥内容。
cert 字符串 必需。证书内容。
cacerts 字符串 CA证书内容。如果没有,则null是可接受的。
$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重定向

只有在应用程序已启用SSL时,才能启用ForceSSL。

不能同时添加自定义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://getcomposer.org.cn/doc/00-intro.md

如果您不喜欢这种风格,可以查看 James West 的 PHP 库: https://github.com/jameswestnz/ServerPilot-API-PHP-Wrapper