unicloud-private-env.md 19.4 KB
Newer Older
hbcui1984's avatar
update  
hbcui1984 已提交
1
# uniCloud软件版
JiaRongPing's avatar
JiaRongPing 已提交
2 3 4

## 产品介绍

5
[uniCloud官网](https://doc.dcloud.net.cn/uniCloud/)介绍的uniCloud,默认都是`uniCloud serverless版`
JiaRongPing's avatar
JiaRongPing 已提交
6

hbcui1984's avatar
hbcui1984 已提交
7
`uniCloud serverless版`基于云计算的`serverless`技术实现,后端逻辑代码运行在云厂商的服务器(容器)中,服务器(容器)不跟具体开发者关联绑定,会随着终端用户量的变化自动弹性扩缩容,开发者对服务器的具体型号、配置等无感。
8

hbcui1984's avatar
update  
hbcui1984 已提交
9
现实中,部分开发者因合规要求(如数据必须在公司内网),或需要对后端服务器有更强的可控性,希望uniCloud能部署在自己机房内或自己的云厂商账号下,因此,`uniCloud软件版`应运而生。
10

hbcui1984's avatar
update  
hbcui1984 已提交
11
### 产品特征
12

hbcui1984's avatar
update  
hbcui1984 已提交
13
从开发工具、API、生态各维度,uniCloud软件版和serverless版没有差别。开发者基于serverless版编写的uniCloud项目源码,可以平滑部署到软件版,前端uni-app代码、后端云函数、云对象等代码,均无需修改。
crlfe's avatar
crlfe 已提交
14

15
相比serverless版,`软件版`最主要的差别如下:
crlfe's avatar
crlfe 已提交
16

17 18 19 20
- 开发者需要单独购买服务器,自己安装操作系统(目前仅支持`linux`操作系统);
- 开发者自己购买云存储、开通CDN加速产品;
- 开发者自己安装数据库,或者购买mongodb实例;
- 开发者自己处理负载均衡,自己负责日常运维。
crlfe's avatar
crlfe 已提交
21

22
而如上工作,`serverless版`均无需进行,serverless版通过`服务空间`的概念,将云函数、云存储、云数据库统一封装,开发者可一键开通所有业务,不需要额外去开通云存储及CDN,也无需去安装或购买云数据库实例。
crlfe's avatar
crlfe 已提交
23

hbcui1984's avatar
update  
hbcui1984 已提交
24
进一步解释,uniCloud软件版实际上是一个`支持uniCloud语法的Node开发框架`
crlfe's avatar
crlfe 已提交
25

hbcui1984's avatar
update  
hbcui1984 已提交
26
你可以更具象化理解:uniCloud软件版就是`支持uniCloud语法的类Egg.js框架`
crlfe's avatar
crlfe 已提交
27

hbcui1984's avatar
update  
hbcui1984 已提交
28
> 和Egg.js框架差异:uniCloud软件版内置有定制版本的Node.js运行时,并且仅可在内置的定制Node.js上运行,不支持使用开发者安装的Node.js环境。
crlfe's avatar
crlfe 已提交
29

hbcui1984's avatar
update  
hbcui1984 已提交
30 31
uniCloud软件版,作为一个开发框架,仅负责云函数、云对象的执行,支持在云函数中连接开发者自己的对象存储和数据库。
而这些对象存储和数据库,需要开发者自己去购买开通,uniCloud软件版本身没有内置。
hbcui1984's avatar
update  
hbcui1984 已提交
32

hbcui1984's avatar
update  
hbcui1984 已提交
33
存储方面,uniCloud软件版目前支持如下3种存储方案:
crlfe's avatar
crlfe 已提交
34

hbcui1984's avatar
update  
hbcui1984 已提交
35
- 本地存储:文件存储和uniCloud软件版在同一台服务器上;
36 37
- 阿里云OSS
- 腾讯云COS
hbcui1984's avatar
update  
hbcui1984 已提交
38

hbcui1984's avatar
update  
hbcui1984 已提交
39
数据库方面,uniCloud软件版仅支持`mongodb`,支持本地服务器上安装的mongodb,也支持在云厂商购买单独的mongodb实例。
crlfe's avatar
crlfe 已提交
40

41
::: warning 注意
crlfe's avatar
crlfe 已提交
42

hbcui1984's avatar
update  
hbcui1984 已提交
43 44
1. 为了与serverless版保持一致,uniCloud软件版目前仅支持`mongo 4.0` 版本
2. uniCloud软件版内置的定制`node.js`版本为`16.20.2`
45
:::
crlfe's avatar
crlfe 已提交
46

hbcui1984's avatar
update  
hbcui1984 已提交
47
### 名词解释
crlfe's avatar
crlfe 已提交
48

hbcui1984's avatar
update  
hbcui1984 已提交
49
**集群**
crlfe's avatar
crlfe 已提交
50

hbcui1984's avatar
update  
hbcui1984 已提交
51
集群是从业务范畴进行的划分单元,比如:OA系统集群、ERP系统集群、论坛系统集群等,是一个虚拟的业务组织概念。
crlfe's avatar
crlfe 已提交
52

hbcui1984's avatar
update  
hbcui1984 已提交
53
同一个集群下可以有1台或多台服务器,多个服务器可做负载均衡,共同处理该集群下的同类业务系统。
crlfe's avatar
crlfe 已提交
54

hbcui1984's avatar
update  
hbcui1984 已提交
55
**服务器**
crlfe's avatar
crlfe 已提交
56

hbcui1984's avatar
update  
hbcui1984 已提交
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
服务器即指实体服务器或虚拟机,uni云开发软件安装在每台具体的服务器上。
每台服务器均需购买商业授权。

**应用**

应用即DCloud产品体系下App概念,每个应用都有AppID,格式如:`__UNI__XXX`
比如论坛App,面向用户端的是一个应用,有自己的AppID;
面向管理者/运营人员的是另一个应用,有自己另外的AppID。
这两个应用会绑定同一服务空间,访问相同的数据库。

**商业授权**

一套uni云开发软件,对标的是一个集群。每个集群都需要购买一套uniCloud软件版授权。

每套uniCloud软件版授权默认含有一个服务器授权、2个应用授权。
crlfe's avatar
crlfe 已提交
72

hbcui1984's avatar
update  
hbcui1984 已提交
73
如果你的用户量很大,单台服务器无法承载(或者为了做双机热备),那你可以增加额外的服务器,此时需要针对增加的服务器,单独购买服务器授权。
crlfe's avatar
crlfe 已提交
74

hbcui1984's avatar
update  
hbcui1984 已提交
75
如果你的业务用户量不大(比如内部系统),你希望将多个业务系统放置在同一台服务器上运行,此时你需要额外购买应用授权。
crlfe's avatar
crlfe 已提交
76

hbcui1984's avatar
update  
hbcui1984 已提交
77
### 产品版本及价格
crlfe's avatar
crlfe 已提交
78

hbcui1984's avatar
update  
hbcui1984 已提交
79
uniCloud软件版分为标准版、企业版两个规格,具体如下:
crlfe's avatar
crlfe 已提交
80

hbcui1984's avatar
update  
hbcui1984 已提交
81 82 83 84 85 86 87 88 89
|				|标准版											|企业版												|
|--				|--												|--													|
|**联网激活**		|需要											|不需要<br/>可实现完全内网托管							|
|**源码报备??**	|不支持											|支持												|
|**技术支持**		|1. 官方社区/社群问答 <br/> 2. uniCloud控制台报障	|1. 专有uni-im技术支持群 <br/> 2. 工作时间30分钟内必响应	|
|**软件授权**		|2万/套											|9.8万/套											|
|**服务器授权**	|1万/台											|4.9万/台											|
|**应用授权**		|1000元/个										|1000元/个	|
|**购买方式**		|[uniCloud控制台](https://unicloud.dcloud.net.cn)在线付款,自助下单|联系bd@dcloud.io沟通合同	|
crlfe's avatar
crlfe 已提交
90

hbcui1984's avatar
update  
hbcui1984 已提交
91 92 93 94 95 96 97 98 99 100 101 102 103
说明:每套软件授权,默认含有一个服务器授权、2个应用授权。

## 服务器安装部署

### 系统要求

**系统最低配置**

- CPU >= 1核
- 内存 >= 2G
- 硬盘 >= 40G

**操作系统要求**
crlfe's avatar
crlfe 已提交
104

hbcui1984's avatar
update  
hbcui1984 已提交
105 106 107 108
关键要求:
- 内核版本 >= 4.18
- glibc >= 2.28
- gcc >= 8.5
crlfe's avatar
crlfe 已提交
109

hbcui1984's avatar
update  
hbcui1984 已提交
110
具体操作系统版本要求:
crlfe's avatar
crlfe 已提交
111

hbcui1984's avatar
update  
hbcui1984 已提交
112 113 114 115
- RHEL >= 8.1
- Ubuntu >= 20.04
- CentOS >= 8.5 (官方已停止维护,不推荐作为生成环境使用)
- 银河麒麟高级服务器操作系统V10
crlfe's avatar
crlfe 已提交
116

crlfe's avatar
crlfe 已提交
117 118
**环境检测**

hbcui1984's avatar
update  
hbcui1984 已提交
119
可以使用如下命令来检查服务器环境是否满足要求。
crlfe's avatar
crlfe 已提交
120 121

```
hbcui1984's avatar
update  
hbcui1984 已提交
122 123 124 125 126 127 128 129 130 131 132 133 134 135
// 查看内核发行版本号
uname -r     
// 查看系统版本号   
cat /etc/os-release | grep -E "^NAME=|^VERSION="  
// 查看 glibc 版本号
ldd --version           
// 查看 GCC 版本号
gcc --version           
// 查看CPU信息
cat /proc/cpuinfo| grep "processor"     
// 查看内存信息
free -h
// 查看磁盘信息   
df -h             
crlfe's avatar
crlfe 已提交
136 137
```

hbcui1984's avatar
update  
hbcui1984 已提交
138
### 获取并安装uniCloud软件版
crlfe's avatar
crlfe 已提交
139

hbcui1984's avatar
update  
hbcui1984 已提交
140 141 142 143 144
::: warning 注意

1. uniCloud软件版仅面向企业认证用户开放下载,个人认证用户若想升级为企业类型,可参考[实名认证信息变更](https://ask.dcloud.net.cn/article/39729)
2. 每次下载的安装包都是为当前账号单独生成的,内含账号的指纹信息,请勿进行破解、扩散等侵犯DCloud知识产权的行为,否则DCloud将会通过适当途径维护自己的合法权益。
:::
crlfe's avatar
crlfe 已提交
145

hbcui1984's avatar
update  
hbcui1984 已提交
146
登录uniCloud控制台,按图所示进入uniCloud软件版页面
crlfe's avatar
crlfe 已提交
147 148 149

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031627806.png)

hbcui1984's avatar
update  
hbcui1984 已提交
150
初次使用,需先确认uniCloud软件版的服务协议。
crlfe's avatar
crlfe 已提交
151

crlfe's avatar
crlfe 已提交
152 153
![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031634663.png)

hbcui1984's avatar
update  
hbcui1984 已提交
154
同意并开通后,进入uniCloud软件版集群列表
crlfe's avatar
crlfe 已提交
155 156 157

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031639818.png)

hbcui1984's avatar
update  
hbcui1984 已提交
158
创建一个[集群](),创建成功后,稍等片刻,云端会在10分钟内为你构建专属uniCloud软件版安装包。
crlfe's avatar
crlfe 已提交
159 160 161

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031626507.png)

hbcui1984's avatar
update  
hbcui1984 已提交
162
安装包构建成功后,你可以通过浏览器手动下载安装包,也可以直接在你的服务器上,使用`wget`命令在下载安装包。
crlfe's avatar
crlfe 已提交
163 164 165

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031644365.png)

hbcui1984's avatar
update  
hbcui1984 已提交
166
将安装包上传到服务器并进行解压 (推荐文件夹`~/uniCloud`)
crlfe's avatar
crlfe 已提交
167

168
```
hbcui1984's avatar
update  
hbcui1984 已提交
169 170
# 创建uniCloud目录
mkdir ~/uniCloud
171
# 解压安装包
hbcui1984's avatar
update  
hbcui1984 已提交
172
tar -zxvf [version].tar.gz -C ~/uniCloud
173
```
crlfe's avatar
crlfe 已提交
174

hbcui1984's avatar
update  
hbcui1984 已提交
175
### 创建并配置服务空间
crlfe's avatar
crlfe 已提交
176

hbcui1984's avatar
update  
hbcui1984 已提交
177
登录[uniCloud控制台](https://unicloud.dcloud.net.cn/) ,新建服务空间,版本选择`uniCloud软件版`,绑定已创建的集群,完成服务空间的创建。
crlfe's avatar
crlfe 已提交
178

hbcui1984's avatar
update  
hbcui1984 已提交
179
![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031939942.png)
crlfe's avatar
crlfe 已提交
180

hbcui1984's avatar
update  
hbcui1984 已提交
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
复制服务空间ID,回到你的服务器上,在uniCloud软件版根目录下创建对应的服务空间目录:

```
cd ~/uniCloud/
// 如果spaces目录不存在先创建
mkdir spaces
cd spaces
mkdir [SpaceId]
```

// TODO 此处补充初始化命令

你需要根据自己的具体情况,配置mongodb数据库、文件存储、redis等,config.json的完整配置及解释,详见[]()


### 启动服务

```
cd ~/uniCloud
./uniloud start
```

然后使用 `curl localhost:7001`命令,若成功返回`hello uniCloud`,则表示安装成功。

接下来,就是开发自己的代码,上传到当前服务器即可。

### 部署程序包
### 获取并激活授权

#### 软件授权

uniCloud软件版运行之前,需要向DCloud注册您的uniCloud软件版,注册成功后才可以正常运行。
213

crlfe's avatar
crlfe 已提交
214
每个账号每年(自然年)可以有5次注册试用版机会,单次试用时长为14天。
215

hbcui1984's avatar
update  
hbcui1984 已提交
216 217
在试用版中可以体验完整的uniCloud软件版服务,并且不限制应用数量。
试用到期后如uniCloud软件版还在运行,接收到请求后将统一返回试用过期信息,请勿将试用版用于生产环境。
crlfe's avatar
crlfe 已提交
218

hbcui1984's avatar
update  
hbcui1984 已提交
219
如需生产环境部署,请购买uniCloud软件版服务器授权。
crlfe's avatar
crlfe 已提交
220

hbcui1984's avatar
update  
hbcui1984 已提交
221
在uniCloud软件版安装目录下运行以下命令进行激活
crlfe's avatar
crlfe 已提交
222

hbcui1984's avatar
update  
hbcui1984 已提交
223 224
- `./unicloud register` 注册uniCloud软件版
- `./unicloud regsiter --trial` 注册试用uniCloud软件版
crlfe's avatar
crlfe 已提交
225

hbcui1984's avatar
update  
hbcui1984 已提交
226
**离线集群uniCloud软件版注册方式**
crlfe's avatar
crlfe 已提交
227

hbcui1984's avatar
update  
hbcui1984 已提交
228
由于离线uniCloud软件版没有网络连接,需要在uniCloud软件版安装目录下运行 `./uniCloud scan` 命令,会检测服务器环境信息及注册状态,如未注册状态,会在最后生成一个硬件ID
crlfe's avatar
crlfe 已提交
229 230 231 232 233 234 235

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031715273.png)

你需要登录uniCloud控制台-集群详情页面,在服务器授权处点击添加授权,输入服务器名称(用于备注服务器)和硬件ID保存,添加完成后点击"下载授权",将会生成`[servername].LICENSE`文件并下载。

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031924263.png)

hbcui1984's avatar
update  
hbcui1984 已提交
236 237
将下载的授权文件上传uniCloud软件版安装根目录下,并重命名为`LICENSE`,即可完成注册。

crlfe's avatar
crlfe 已提交
238

hbcui1984's avatar
update  
hbcui1984 已提交
239 240
#### 服务器授权
#### 应用授权
crlfe's avatar
crlfe 已提交
241

hbcui1984's avatar
update  
hbcui1984 已提交
242 243
应用授权即授权哪些uni-app客户端可以访问uniCloud软件版,应用授权需要单独购买,
未授权的应用访问uniCloud软件版将会返回`403`错误码。
crlfe's avatar
crlfe 已提交
244 245 246

添加应用授权有两种方式,一种是在购买授权时,同时绑定应用,另外一种是只购买授权次数,在之后再绑定应用,根据实际情况选择。

hbcui1984's avatar
update  
hbcui1984 已提交
247
添加完应用之后需要重新启动uniCloud软件版服务后生效。
crlfe's avatar
crlfe 已提交
248

hbcui1984's avatar
update  
hbcui1984 已提交
249
**离线集群uniCloud软件版更新应用授权**
crlfe's avatar
crlfe 已提交
250 251 252 253 254

在添加应用之后,点击对应的AppId的下载授权按钮,将会生成`[AppId].LICENSE`文件并下载。

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406031923255.png)

hbcui1984's avatar
update  
hbcui1984 已提交
255
如果是首次添加应用,请检查uniCloud软件版安装根目录下是否存在`app-license`文件夹,如不存在,请先创建。
crlfe's avatar
crlfe 已提交
256

hbcui1984's avatar
update  
hbcui1984 已提交
257
将下载的授权文件上传uniCloud软件版安装根目录`app-license`文件夹内即可。
crlfe's avatar
crlfe 已提交
258

hbcui1984's avatar
update  
hbcui1984 已提交
259
添加完应用之后需要重新启动uniCloud软件版服务后生效。
crlfe's avatar
crlfe 已提交
260

hbcui1984's avatar
update  
hbcui1984 已提交
261
### 运维管理
crlfe's avatar
crlfe 已提交
262

hbcui1984's avatar
update  
hbcui1984 已提交
263
#### uniCloud软件版操作命令
264

hbcui1984's avatar
update  
hbcui1984 已提交
265 266 267
> 所有命令,需在uniCloud软件安装根目录下执行

注册uniCloud软件版
crlfe's avatar
crlfe 已提交
268

crlfe's avatar
crlfe 已提交
269
```javascript
crlfe's avatar
crlfe 已提交
270 271 272 273
./unicloud register // 注册
./unicloud register --trial // 注册试用
```

crlfe's avatar
crlfe 已提交
274
启动
275

crlfe's avatar
crlfe 已提交
276 277 278
`./unicloud start -s [服务空间ID]`

停止
279

crlfe's avatar
crlfe 已提交
280 281
`./unicloud stop -s [服务空间ID]`

crlfe's avatar
crlfe 已提交
282 283 284 285
安装云函数第三方依赖

`./unicloud install -s [服务空间ID]`

crlfe's avatar
crlfe 已提交
286 287 288 289 290 291 292
初始化数据库

`./unicloud init-database -s [服务空间ID]`

扫描服务器、服务空间、注册状态等信息

`./unicloud scan`
293 294


hbcui1984's avatar
update  
hbcui1984 已提交
295
#### 出网域名白名单
296

hbcui1984's avatar
update  
hbcui1984 已提交
297
uniCloud软件版的部分业务需要从你的服务器向外网发送请求,需联网的业务包括:
crlfe's avatar
crlfe 已提交
298 299


hbcui1984's avatar
update  
hbcui1984 已提交
300 301 302 303
|功能	|联网域名	|
|--	|--	|
|1. uniCloud软件版联网激活<br/>2. 短信 <br/> 3. 一键登录 <br/> 4. uni-ai <br/> 5. 实人认证 <br/> 	|1. pucoa1.dcloud.net.cn <br/> 2. pucoa2.dcloud.net.cn <br/> 3. pucoabk.dcloud.net.cn	|
|6. uni-push	|restapi.getui.com	|
crlfe's avatar
crlfe 已提交
304

hbcui1984's avatar
update  
hbcui1984 已提交
305 306 307 308 309 310 311 312 313 314 315 316 317
若你的服务器开启了防火墙,或限制公网访问,同时又使用了如上业务,则你需要将如上对应域名加入防火墙白名单。

#### 日志

uniCloud软件版内置简单的日志服务,日志分为启动日志与运行日志。

启动日志是记录 uniCloud 启动期间的所有输出日志。

运行日志是在 uniCloud 运行期间记录框架的输出日志和云函数输出日志。

**日志路径**

启动日志放在`${HOMEDIR}/logs/${spaceId}/master`路径下,每次启动的日志独立保存。
crlfe's avatar
crlfe 已提交
318

hbcui1984's avatar
update  
hbcui1984 已提交
319 320 321 322 323 324 325 326 327 328
运行时日志默认放在`${HOMEDIR}/logs/${spaceId}`路径下,可以修改服务空间配置文件中的`logger.customLogDir`字段来自定义日志目录。

如果想自定义日志路径,可参考如下配置:

```json
 {
 "logger": {
  "customLogDir": "/your/custom/dir/path"
 }
 }
329
```
hbcui1984's avatar
update  
hbcui1984 已提交
330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423

**日志分类**

启动日志

- `master-stdout.log` 标准输出日志,包含启动时所有日志。
- `master-stderr.log` 标准错误日志,启动时如遇到启动失败/异常,错误日志将写入此文件中,方便根据此日志排查问题。

运行日志

- `logs/client/cloudfunctions.log` 云函数运行日志。
- `${spaceId}-web.log` uniCloud 框架运行相关日志。
- `egg-web.log` uniCloud 基于 Eggjs 框架开发,Eggjs 框架内核、插件日志。
- `egg-agent.log` Eggjs 多进程模型 agent 进程日志。
- `common-error.log` uniCloud 中任何错误信息都会写入此文件内。

**日志切割**

启动日志按照每次启动进行自动切割。

运行日志是按天切割,在每日`00:00`按照`.log.YYYY-MM-DD`文件名进行切割。

## HBuilderX开发调试

### 安装软件版开发插件

前往插件市场,下载并安装[uniCloud软件版插件](https://ext.dcloud.net.cn/plugin?id=18520)

uniCloud软件版插件支持以下功能:

- 创建本地调试配置文件
- 创建本地存储调试配置文件
- 打包uniCloud资源

### 关联并配置服务空间

> HBuilderX > 4.19

uniCloud软件版服务空间使用 `dcloud` 标识

// TODO 存疑
如果项目内不存在`dcloud`服务空间,请在项目根目录右键-创建uniCloud环境,选择 `DCloud`创建即可。

### 本地调试配置

在项目中的`uniCloud`目录右键-uniCloud软件版-创建本地调试配置文件,即可生成`config.json`配置文件。

![](https://web-ext-storage.dcloud.net.cn/unicloud/docs202406261208673.png)

默认配置内容如下所示

```json
{
 "mongodb": { //mongo库连接配置
   "url": "mongodb://username:password@127.0.0.1:7001",//mongo库连接地址
   "database": "unicloud" //数据库名称
 },
 "redis": {//redis库连接配置,项目中不使用redis服务可不配置此项
   "host": "127.0.0.1",//host
   "port": 6379, //端口号
   "password": "password"//密码
 },
 "storage": {//存储服务配置,如项目未使用存储服务可不配置此项
    "provider": "local",//服务商 支持local:本地存储 aliyun: 阿里云存储服务 tencent:腾讯云存储服务 qiniu:七牛云
    "dir": "file/upload", //文件上传目录
    "bucket": "",//存储桶名称,本地存储无需配置此项
    "cdnProtocol": "http://",//cdn协议 支持 http https
    "cdnDomain": "127.0.0.1:7001",//cdn域名
    "cdnRootPath": "/storage/file/",//cdn根目录
    "storageSecret": "xxxxxxxxxx",//本地存储服务访问密钥
  }
}
```

你需要根据自己的具体情况,配置mongodb数据库、文件存储、redis等,config.json的完整配置及解释,详见[]()

// TODO 补充如上链接。

### 远程调试

HX中点击远程云函数即可,但远程地址如何配置?

### 构建服务端发行包

由于有uni_modules插件内包含uniCloud云函数等,需要进行uniCloud打包操作,将uni_modules插件内的云函数及数据库schema抽离出来。

`uniCloud-dcloud`目录右键“uniCloud软件版”-“打包uniCloud资源”,将会在`uniCloud-dcloud`服务空间目录下生成`dist`目录。

可以使用git/svn等版本管理工具进行管理,将代码上传至git/svn,在服务器拉取代码后将`uniCloud-dcloud/dist`目录同步到对应服务空间下即可。

也可以单独对`dist`目录打包zip并上传到服务器对应的服务空间目录下解压即可。

上传代码之后需要重新启动服务空间,在uniCloud软件版根目录执行以下命令进行重启操作

424
```
hbcui1984's avatar
update  
hbcui1984 已提交
425 426 427 428 429 430 431
./unicloud stop -s [服务空间ID]
./unicloud start -s [服务空间ID]
```

建议部署时采用分布式部署方案,即使用2台以上服务器部署可以保证服务的稳定性,在服务重启时也不会中断服务。

## 配置文件
432

hbcui1984's avatar
update  
hbcui1984 已提交
433
uniCloud软件版需要单独配置mongodb数据库、文件存储、redis等,所有配置全部在`config.json`中完成。
434

hbcui1984's avatar
update  
hbcui1984 已提交
435 436 437
HBuilderX端开发配置、服务器端线上配置,都通过 config.json实现,且规则保持一致。

`config.json`完整模版内容如下:
438

439
```json
440
{
crlfe's avatar
crlfe 已提交
441 442 443 444 445 446 447 448 449 450
  "default": true,
  "spaceId": "pvt-xxx",
  "startAsDaemon": true,
  "port": 7001,
  "clientSecret": "xxx",
  "mongodb": {
    "url": "mongodb://username:password@127.0.0.1:7001",
    "database": "test",
    "maxPoolSize": 30,
    "minPoolSize": 10
451
  },
crlfe's avatar
crlfe 已提交
452 453 454 455 456 457 458 459
  "storage": {
    "provider": "local",
    "dir": "file/upload",
    "bucket": "",
    "cdnProtocol": "http://",
    "cdnDomain": "127.0.0.1:7001",
    "cdnRootPath": "/storage/file/",
    "storageSecret": "xxxxxxxxxx",
460
  },
crlfe's avatar
crlfe 已提交
461 462
  "logger": {
    "customLogDir": "~/logs"
463
  },
crlfe's avatar
crlfe 已提交
464 465 466 467
  "redis": {
    "host": "127.0.0.1",
    "port": 6379,
    "password": ""
468
  },
crlfe's avatar
crlfe 已提交
469 470 471
  "spaceSecret": {
    "secretKeyId": "xxxx",
    "secretKey": "xxx"
472 473 474 475
  }
}
```

hbcui1984's avatar
update  
hbcui1984 已提交
476

crlfe's avatar
crlfe 已提交
477 478
|参数|类型|默认值|说明|
|---|---|---|---|
hbcui1984's avatar
update  
hbcui1984 已提交
479
|default|Boolean|-|是否为默认服务空间,一套uniCloud软件版环境下,只能有一个默认服务空间|
crlfe's avatar
crlfe 已提交
480 481 482 483 484 485 486
|spaceId|String|-|服务空间ID,可在uniCloud控制台查看|
|startAsDaemon|Boolean|true|是否在后台运行|
|port|Number|7001|端口号,同一台服务器下,各服务空间的端口号不可重复|
|clientSecret|String|-|客户端通讯密钥|
|mongodb|Object|-|mongo数据库连接配置|
|mongodb.url|String|-|mongo数据库连接|
|mongodb.database|String|-|数据库名称|
crlfe's avatar
crlfe 已提交
487 488
|mongodb.maxPoolSize|Number|100|最大连接数|
|mongodb.minPoolSize|Number|0|最小连接数|
crlfe's avatar
crlfe 已提交
489 490 491 492 493 494 495 496 497
|storage|Object|-|存储服务配置|
|storage.provider|String|local|服务商 支持local:本地存储 aliyun: 阿里云存储服务 tencent:腾讯云存储服务 qiniu:七牛云|
|storage.dir|String|file/upload|文件上传目录|
|storage.bucket|String|-|存储桶名称,本地存储无需配置此项|
|storage.cdnProtocol|String|http|cdn协议 支持 http https|
|storage.cdnDomain|String|
|storage.cdnRootPath|String|/storage/file/|cdn根目录|
|storage.storageSecret|String|-|本地存储服务访问密钥|
|logger|Object|-|日志服务配置|
hbcui1984's avatar
update  
hbcui1984 已提交
498
|logger.customLogDir|String|/private-cloud-env/logs|uniCloud软件版环境日志存储路径|
crlfe's avatar
crlfe 已提交
499 500 501 502 503 504 505 506
|redis|Object|-|redis配置; 如不需要可不配置此字段|
|redis.host|String|-|redis连接host|
|redis.port|Number|6379|端口号|
|redis.password|String|-|密码|
|spaceSecret|Object|-|服务空间通讯配置|
|spaceSecret.secretKeyId|String|-|SpaceKeyID,可在uniCloud控制台查看|
|spaceSecret.secretKey|String|-|SpaceSecret ,可在uniCloud控制台查看|

hbcui1984's avatar
update  
hbcui1984 已提交
507
如项目中使用了存储服务,则还需额外增加存储服务的配置项。即在服务空间目录下创建`file`目录,并在`file`目录下增加`permission.json`配置文件。配置文件内容如下:
508 509 510 511

```json
{
  "*": {
crlfe's avatar
crlfe 已提交
512 513 514 515
    "read": true,
    "update": false,
    "create": true,
    "delete": "auth.uid == resource.uid"
516 517 518 519
  }
}
```

crlfe's avatar
crlfe 已提交
520 521 522 523 524 525
|参数|类型|默认值|说明|
|---|---|---|---|
|read|Boolean|-|读权限|
|update|Boolean|-|修改权限|
|create|Boolean|-|创建权限|
|delete|String|-|删除权限|