daverogers / serverpilot-php
ServerPilot:运行PHP网站的最佳方式。
Requires
- php: >=5.2
- ext-curl: *
- ext-json: *
This package is not auto-updated.
Last update: 2020-08-31 21:49:19 UTC
README
此简单的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 key 和 id,设置配置值并将它们传递给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.id和data.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.4、php5.5、php5.6、php7.0或php7.1中选择。 |
domains |
数组 |
将要用于Web服务器配置的域名数组。如果您将应用程序的域名设置为example.com,Nginx和Apache将配置为监听example.com和www.example.com。 注意:必须将完整域名列表包含在每个更新此字段的操作中。 |
wordpress |
数组 |
包含以下键的数组:site_title、admin_user、admin_password和admin_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.4、php5.5、php5.6、php7.0或php7.1。 |
domains |
数组 |
将要用于Web服务器配置的域名数组。如果您将应用程序的域名设置为example.com,Nginx和Apache将配置为监听example.com和www.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://composer.php.ac.cn/doc/00-intro.md
如果您不喜欢这种风格,可以查看 James West 的 PHP 库: https://github.com/jameswestnz/ServerPilot-API-PHP-Wrapper