themsaid / forge-sdk
Requires
- php: ^7.2|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.3.1|^7.0
Requires (Dev)
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
- mockery/mockery: ^1.3.1
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^8.4|^9.0|^10.4
- dev-master / 4.x-dev
- 3.x-dev
- v3.17.0
- v3.16.0
- v3.15.0
- v3.14.3
- v3.14.2
- v3.14.1
- v3.14.0
- v3.13.6
- v3.13.5
- v3.13.4
- v3.13.3
- v3.13.2
- v3.13.1
- v3.13.0
- v3.12.0
- v3.11.0
- v3.10.0
- v3.9.0
- v3.8.0
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.2
- v2.1
- 2.0.x-dev
- v2.0
- v1.2.1
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.1.0
- dev-fix/missing-site-property
This package is auto-updated.
Last update: 2024-09-03 14:52:37 UTC
README
简介
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();
站点Webhook
$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 许可协议。