rehmatworks / serverpilot
ServerPilot:运行PHP网站的最佳方式。
Requires
- php: >=5.2
- ext-curl: *
- ext-json: *
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类。您还可以包含一个'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.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
更新现有服务器
每个服务器上有两个选项可以更改;防火墙和自动更新。
这两个选项都是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