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://getcomposer.org.cn/doc/00-intro.md
如果您不喜欢这种风格,可以查看 James West 的 PHP 库: https://github.com/jameswestnz/ServerPilot-API-PHP-Wrapper