Path: 宝塔面板 API 参考 › 项目部署

`POST /deployment`

这个请求地址通过 action 区分具体功能。下方列出每个 action 的参数、约束和调用示例。

## Request body

_Required._

One of:

- `AddPackage`
- `DelPackage`
- `GetInLog`
- `GetList`
- `GetPackageOther`
- `GetSiteList`
- `GetSpeed`
- `SetupPackage`
- `check_project_env`

## Example request

```text
{
  "request_time": "string",
  "request_token": "string",
  "action": "AddPackage",
  "name": "string",
  "title": "string",
  "version": "string",
  "project_type": "string"
}
```

## Code samples

### cURL（填写面板地址与签名）

```curl
curl --request POST \
  --url "https://your-panel.example.com:8888/deployment" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "request_time=<Unix时间戳>" \
  --data-urlencode "request_token=<按 API 概览生成的签名>" \
  --data-urlencode "action=AddPackage" \
  --data-urlencode "name=<name>" \
  --data-urlencode "title=<title>" \
  --data-urlencode "version=<version>"
```

## Responses

### default

响应因 action 而异，见下方各 action 的详细说明。


## AddPackage

添加自定义的一键部署软件包，支持 PHP 和 Java 两种项目类型。

- **路由**：`POST /deployment`
- **action**：`AddPackage`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `AddPackage` |
| name | 是 | String | 软件包英文名称（唯一） |
| title | 是 | String | 软件包显示标题 |
| version | 是 | String | 版本号 |
| project_type | 否 | String | 项目类型：`php`(默认) / `java` |

### PHP 项目额外参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| php | 是 | String | PHP 版本，如 `74` |
| enable_functions | 是 | String | 需要解禁的 PHP 函数 |

### Java 项目额外参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| java_version | 是 | String | JDK 版本 |
| mysql_version | 是 | String | MySQL 版本 |

> 注意：此接口在部分版本有 HTTP 500 服务端错误。

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` 添加成功 |

## 示例

```json
{"status": true, "msg": "添加成功"}
```


## DelPackage

删除通过一键部署安装的项目。

- **路由**：`POST /deployment`
- **action**：`DelPackage`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `DelPackage` |
| dname | 是 | String | 部署名称 |
| site_name | 是 | String | 网站名称 |

## 示例

```json
{"status": true, "msg": "删除成功!"}
```


## GetInLog

获取一键部署任务的最新执行日志。

- **路由**：`POST /deployment`
- **action**：`GetInLog`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` |
| msg | String | 日志内容（可能为空） |

## 示例

```json
{"status": true, "msg": ""}
```


## GetList

获取面板"一键部署"中所有可用的软件包列表（WordPress、ThinkPHP、可道云等）。

- **路由**：`POST /deployment`
- **action**：`GetList`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| list | Array&lt;Object&gt; | 软件包列表，每项含 `id`、`name`、`title`、`version`、`author`、`price` 等 |

## 示例

```json
{"list": [{"id": 11, "name": "kodbox", "title": "可道云KODBOX", "version": "v1.62", "author": "kodcloud", "price": 0}]}
```


## GetPackageOther

获取通过 [AddPackage](/api/deployment/addpackage) 自定义添加的软件包详细信息。

- **路由**：`POST /deployment`
- **action**：`GetPackageOther`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `GetPackageOther` |
| p_name | 是 | String | 软件包英文名称 |

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| - | Object | 软件包详情（`name`、`title`、`version`、`php` 等），未找到时返回错误 |

## 示例

```json
{"name": "api_test_pkg", "title": "API测试包", "version": "1.0.0", "php": "74"}
```


## GetSiteList

获取面板中可用于一键部署的网站和框架列表。

- **路由**：`POST /deployment`
- **action**：`GetSiteList`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| list | Array&lt;Object&gt; | 框架/网站列表，每项含 `id`、`name`、`title`、`version` 等 |

## 示例

```json
{"list": [{"id": 11, "name": "ThinkPHP-5.0", "title": "ThinkPHP-5.0", "version": "5.0.24"}]}
```


## GetSpeed

获取当前正在执行的一键部署任务的进度信息。

- **路由**：`POST /deployment`
- **action**：`GetSpeed`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| - | Object | 部署进度信息，无任务时 `null` |

## 示例

```
null
```


## SetupPackage

将选中的一键部署软件包（内置或自定义）安装到指定网站。

- **路由**：`POST /deployment`
- **action**：`SetupPackage`

## 输入参数

| 参数名称 | 必选 | 类型 | 描述 |
|----------|------|------|------|
| action | 是 | String | 固定值 `SetupPackage` |
| dname | 是 | String | 软件包名称（通过 `GetList` 获取，如 `ThinkPHP-5.0`、`discuz-X3.4`） |
| site_name | 是 | String | 目标网站域名 |
| project_type | 否 | String | 项目类型，默认 `php`；Java 项目需传 `java` |

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| status | Boolean | `true` 部署成功 |
| msg.admin_username | String | 管理员用户名（如有） |
| msg.admin_password | String | 管理员密码（如有） |
| msg.success_url | String | 部署完成后的访问路径 |

## 示例

### 部署 PHP 框架（ThinkPHP）

```
POST /deployment HTTP/1.1
Host: 192.168.168.213:8888
Content-Type: application/x-www-form-urlencoded

action=SetupPackage&dname=ThinkPHP-5.0&site_name=testapi.bt.local
```

```json
{"status": true, "msg": {"admin_username": "", "admin_password": "", "success_url": "/index.php"}}
```

> 框架类包部署后直接可访问，`success_url` 指向入口文件。

### 部署 CMS（Discuz）

```
action=SetupPackage&dname=discuz-X3.4&site_name=testapi.bt.local
```

```json
{"status": true, "msg": {"admin_username": "", "admin_password": "", "success_url": ""}}
```

> CMS 类包 `success_url` 为空，需访问网站域名进入 Web 安装向导完成数据库配置。


## check_project_env

检查当前服务器环境是否满足项目部署的基本要求（MySQL、Nginx、Redis 等）。

- **路由**：`POST /deployment`
- **action**：`check_project_env`

## 输出参数

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| mysql_version | String | MySQL 版本 |
| mysql | Boolean | MySQL 是否可用 |
| nginx | Boolean | Nginx 是否可用 |
| redis | Boolean | Redis 是否可用 |
| ftp | Boolean | FTP 是否可用 |

## 示例

```json
{"mysql_version": "5.7.44", "mysql": true, "nginx": true, "redis": false, "ftp": false}
```

