laravel/forge-sdk

Laravel Forge 官方 PHP SDK。

v3.17.0 2024-09-03 10:10 UTC

README

Build Status Total Downloads Latest Stable Version License

简介

Laravel Forge SDK 为与 Forge API 交互和管理 Laravel Forge 服务器提供了一个直观的接口。

官方文档

安装

要将 SDK 安装到您的项目中,您需要通过 composer 需求包

composer require laravel/forge-sdk

升级

当升级到 Forge SDK 的新主要版本时,仔细阅读升级指南非常重要。

基本用法

您可以创建 SDK 实例,如下所示

$forge = new Laravel\Forge\Forge(TOKEN_HERE);

使用 Forge 实例,您可以执行多个操作,以及检索 Forge API 提供的不同资源

$servers = $forge->servers();

这将返回您可访问的服务器数组,其中每个服务器都由一个 Laravel\Forge\Resources\Server 实例表示,该实例具有多个公共属性,如 $name$id$size$region 等。

您还可以使用以下方法检索单个服务器

$server = $forge->server(SERVER_ID_HERE);

在 SDK 支持的多个操作中,您可能需要传递一些参数,例如在创建新服务器时

$server = $forge->createServer([
    "provider"=> ServerProviders::DIGITAL_OCEAN,
    "credential_id"=> 1,
    "name"=> "test-via-api",
    "type"=> ServerTypes::APP,
    "size"=> "01",
    "database"=> "test123",
    "database_type" => InstallableServices::POSTGRES,
    "php_version"=> InstallableServices::PHP_71,
    "region"=> "ams2"
]);

这些参数将用于发送到 Forge 服务器的 POST 请求中,您可以在Forge 的官方 API 文档中找到有关每个操作所需参数的更多信息。

请注意,例如,此请求将仅启动服务器创建过程,您的服务器可能需要几分钟才能完成配置,您需要检查服务器的 $isReady 属性以确定其是否已准备好。

然而,某些 SDK 方法会在 Forge 端等待操作完成,我们通过定期联系 Forge 服务器并检查我们的操作是否已完成来实现这一点,例如

$forge->createSite(SERVER_ID, [SITE_PARAMETERS]);

此方法将每 5 秒 ping 一次 Forge 服务器,并检查新创建的站点的状态是否为 installed,并在如此状态返回,如果等待超过 30 秒,将抛出 Laravel\Forge\Exceptions\TimeoutException 异常。

您可以通过将 $wait 参数设置为 false 来轻松停止此行为

$forge->createSite(SERVER_ID, [SITE_PARAMETERS], false);

您还可以设置所需的超时值

$forge->setTimeout(120)->createSite(SERVER_ID, [SITE_PARAMETERS]);

认证用户

$forge->user();

管理服务器

$forge->servers();
$forge->server($serverId);
$forge->createServer(array $data);
$forge->updateServer($serverId, array $data);
$forge->deleteServer($serverId);
$forge->rebootServer($serverId);

// Server access
$forge->revokeAccessToServer($serverId);
$forge->reconnectToServer($serverId);
$forge->reactivateToServer($serverId);

Server 实例上,您还可以调用

$server->update(array $data);
$server->delete();
$server->reboot();
$server->revokeAccess();
$server->reconnect();
$server->reactivate();
$server->rebootMysql();
$server->stopMysql();
$server->rebootPostgres();
$server->stopPostgres();
$server->rebootNginx();
$server->stopNginx();
$server->installBlackfire(array $data);
$server->removeBlackfire();
$server->installPapertrail(array $data);
$server->removePapertrail();
$server->enableOPCache();
$server->disableOPCache();
$server->phpVersions();
$server->installPHP($version);
$server->updatePHP($version);

服务器 SSH 密钥

$forge->keys($serverId);
$forge->sshKey($serverId, $keyId);
$forge->createSSHKey($serverId, array $data, $wait = true);
$forge->deleteSSHKey($serverId, $keyId);

SSHKey 实例上,您还可以调用

$sshKey->delete();

服务器计划任务

$forge->jobs($serverId);
$forge->job($serverId, $jobId);
$forge->createJob($serverId, array $data, $wait = true);
$forge->deleteJob($serverId, $jobId);

Job 实例上,您还可以调用

$job->delete();

服务器事件

$forge->events();
$forge->events($serverId);

管理服务

// MySQL
$forge->rebootMysql($serverId);
$forge->stopMysql($serverId);

// Postgres
$forge->rebootPostgres($serverId);
$forge->stopPostgres($serverId);

// Nginx
$forge->rebootNginx($serverId);
$forge->stopNginx($serverId);
$forge->siteNginxFile($serverId, $siteId);
$forge->updateSiteNginxFile($serverId, $siteId, $content);

// Blackfire
$forge->installBlackfire($serverId, array $data);
$forge->removeBlackfire($serverId);

// Papertrail
$forge->installPapertrail($serverId, array $data);
$forge->removePapertrail($serverId);

// OPCache
$forge->enableOPCache($serverId);
$forge->disableOPCache($serverId);

服务器守护进程

$forge->daemons($serverId);
$forge->daemon($serverId, $daemonId);
$forge->createDaemon($serverId, array $data, $wait = true);
$forge->restartDaemon($serverId, $daemonId, $wait = true);
$forge->deleteDaemon($serverId, $daemonId);

Daemon 实例上,您还可以调用

$daemon->restart($wait = true);
$daemon->delete();

服务器防火墙规则

$forge->firewallRules($serverId);
$forge->firewallRule($serverId, $ruleId);
$forge->createFirewallRule($serverId, array $data, $wait = true);
$forge->deleteFirewallRule($serverId, $ruleId);

FirewallRule 实例上,您还可以调用

$rule->delete();

管理网站

$forge->sites($serverId);
$forge->site($serverId, $siteId);
$forge->createSite($serverId, array $data, $wait = true);
$forge->updateSite($serverId, $siteId, array $data);
$forge->refreshSiteToken($serverId, $siteId);
$forge->deleteSite($serverId, $siteId);

// Add Site Aliases
$forge->addSiteAliases($serverId, $siteId, array $aliases);

// Environment File
$forge->siteEnvironmentFile($serverId, $siteId);
$forge->updateSiteEnvironmentFile($serverId, $siteId, $content);

// Site Repositories and Deployments
$forge->installGitRepositoryOnSite($serverId, $siteId, array $data, $wait = false);
$forge->updateSiteGitRepository($serverId, $siteId, array $data);
$forge->destroySiteGitRepository($serverId, $siteId, $wait = false);
$forge->createSiteDeployKey($serverId, $siteId);
$forge->destroySiteDeployKey($serverId, $siteId);
$forge->siteDeploymentScript($serverId, $siteId);
$forge->updateSiteDeploymentScript($serverId, $siteId, $content);
$forge->enableQuickDeploy($serverId, $siteId);
$forge->disableQuickDeploy($serverId, $siteId);
$forge->deploySite($serverId, $siteId, $wait = false);
$forge->resetDeploymentState($serverId, $siteId);
$forge->siteDeploymentLog($serverId, $siteId);
$forge->deploymentHistory($serverId, $siteId);
$forge->deploymentHistoryDeployment($serverId, $siteId, $deploymentId);
$forge->deploymentHistoryOutput($serverId, $siteId, $deploymentId);

// PHP Version
$forge->changeSitePHPVersion($serverId, $siteId, $version);

// Installing Wordpress
$forge->installWordPress($serverId, $siteId, array $data);
$forge->removeWordPress($serverId, $siteId);

// Installing phpMyAdmin
$forge->installPhpMyAdmin($serverId, $siteId, array $data);
$forge->removePhpMyAdmin($serverId, $siteId);

// Updating Node balancing Configuration
$forge->updateNodeBalancingConfiguration($serverId, $siteId, array $data);

Site 实例上,您还可以调用

$site->refreshToken();
$site->delete();
$site->installGitRepository(array $data, $wait = false);
$site->updateGitRepository(array $data);
$site->destroyGitRepository($wait = false);
$site->createDeployKey();
$site->destroyDeployKey();
$site->getDeploymentScript();
$site->updateDeploymentScript($content);
$site->enableQuickDeploy();
$site->disableQuickDeploy();
$site->deploySite($wait = false);
$site->resetDeploymentState();
$site->siteDeploymentLog();
$site->getDeploymentHistory();
$site->getDeploymentHistoryDeployment($deploymentId);
$site->getDeploymentHistoryOutput($deploymentId);
$site->installWordPress($data);
$site->removeWordPress();
$site->installPhpMyAdmin($data);
$site->removePhpMyAdmin();
$site->changePHPVersion($version);
$site->siteLog();

网站工作进程

$forge->workers($serverId, $siteId);
$forge->worker($serverId, $siteId, $workerId);
$forge->createWorker($serverId, $siteId, array $data, $wait = true);
$forge->deleteWorker($serverId, $siteId, $workerId);
$forge->restartWorker($serverId, $siteId, $workerId, $wait = true);

Worker 实例上,您还可以调用

$worker->delete();
$worker->restart($wait = true);

安全规则

$forge->securityRules($serverId, $siteId);
$forge->securityRule($serverId, $siteId, $ruleId);
$forge->createSecurityRule($serverId, $siteId, array $data);
$forge->deleteSecurityRule($serverId, $siteId, $ruleId);

SecurityRule 实例上,您还可以调用

$securityRule->delete();

网站 Webhooks

$forge->webhooks($serverId, $siteId);
$forge->webhook($serverId, $siteId, $webhookId);
$forge->createWebhook($serverId, $siteId, array $data);
$forge->deleteWebhook($serverId, $siteId, $webhookId);

Webhook 实例上,您还可以调用

$webhook->delete();

网站命令

$forge->executeSiteCommand($serverId, $siteId, array $data);
$forge->listCommandHistory($serverId, $siteId);
$forge->getSiteCommand($serverId, $siteId, $commandId);

网站 SSL 证书

$forge->certificates($serverId, $siteId);
$forge->certificate($serverId, $siteId, $certificateId);
$forge->createCertificate($serverId, $siteId, array $data, $wait = true);
$forge->deleteCertificate($serverId, $siteId, $certificateId);
$forge->getCertificateSigningRequest($serverId, $siteId, $certificateId);
$forge->installCertificate($serverId, $siteId, $certificateId, array $data, $wait = true);
$forge->activateCertificate($serverId, $siteId, $certificateId, $wait = true);
$forge->obtainLetsEncryptCertificate($serverId, $siteId, $data, $wait = true);

Certificate 实例上,您还可以调用

$certificate->delete();
$certificate->getSigningRequest();
$certificate->install($wait = true);
$certificate->activate($wait = true);

Nginx 模板

$forge->nginxTemplates($serverId);
$forge->nginxDefaultTemplate($serverId);
$forge->nginxTemplate($serverId, $templateId);
$forge->createNginxTemplate($serverId, array $data);
$forge->updateNginxTemplate($serverId, $templateId, array $data);
$forge->deleteNginxTemplate($serverId, $templateId);

NginxTemplate 实例上,您还可以调用

$nginxTemplate->update(array $data);
$nginxTemplate->delete();

管理数据库

$forge->databases($serverId);
$forge->database($serverId, $databaseId);
$forge->createDatabase($serverId, array $data, $wait = true);
$forge->updateDatabase($serverId, $databaseId, array $data);
$forge->deleteDatabase($serverId, $databaseId);
$forge->syncDatabases($serverId);

// Users
$forge->databaseUsers($serverId);
$forge->databaseUser($serverId, $userId);
$forge->createDatabaseUser($serverId, array $data, $wait = true);
$forge->updateDatabaseUser($serverId, $userId, array $data);
$forge->deleteDatabaseUser($serverId, $userId);

Database 实例上,您还可以调用

$database->update(array $data);
$database->delete();

DatabaseUser 实例中,您还可以调用

$databaseUser->update(array $data);
$databaseUser->delete();

管理食谱

$forge->recipes();
$forge->recipe($recipeId);
$forge->createRecipe(array $data);
$forge->updateRecipe($recipeId, array $data);
$forge->deleteRecipe($recipeId);
$forge->runRecipe($recipeId, array $data);

Recipe 实例中,您还可以调用

$recipe->update(array $data);
$recipe->delete();
$recipe->run(array $data);

管理备份

$forge->backupConfigurations($serverId);
$forge->createBackupConfiguration($serverId, array $data);
$forge->updateBackupConfiguration($serverId, $backupConfigurationId, array $data);
$forge->backupConfiguration($serverId, $backupConfigurationId);
$forge->deleteBackupConfiguration($serverId, $backupConfigurationId);
$forge->restoreBackup($serverId, $backupConfigurationId, $backupId);
$forge->deleteBackup($serverId, $backupConfigurationId, $backupId);

BackupConfiguration 实例中,您还可以调用

$extendedConfig = $backupConfig->get(); // Load the databases also
$backupConfig->update(array $data);
$backupConfig->delete();
$backupConfig->restoreBackup($backupId);
$backupConfig->deleteBackup($backupId);

Backup 实例中,您还可以调用

$backupConfig->delete();
$backupConfig->restore();

管理重定向

$forge->redirectRules($serverId, $siteId);
$forge->redirectRule($serverId, $siteId, $ruleId);
$forge->createRedirectRule($serverId, $siteId, array $data, $wait = true);
$forge->deleteRedirectRule($serverId, $siteId, $ruleId);

RedirectRule 实例中,您还可以调用

$redirectRule->delete();

贡献

感谢您考虑为 Forge SDK 贡献!您可以在此处阅读贡献指南:这里

行为准则

为了确保 Laravel 社区对所有成员都友好,请查阅并遵守行为准则

安全漏洞

请查阅我们关于如何报告安全漏洞的安全策略

许可协议

Laravel Forge SDK 是开源软件,采用MIT 许可协议