unicloud-private-env.md 18.9 KB
Newer Older
crlfe's avatar
crlfe 已提交
1
# uni云开发软件版
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

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

crlfe's avatar
crlfe 已提交
11
### uni云开发软件版有哪些特点?
12

13
从开发工具、API、生态各维度,软件版和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

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

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

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

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

crlfe's avatar
crlfe 已提交
32
存储方面,uni云开发软件版目前支持如下3种存储方案:
crlfe's avatar
crlfe 已提交
33

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

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

40
## 安装指南
crlfe's avatar
crlfe 已提交
41

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

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

crlfe's avatar
crlfe 已提交
48 49 50 51
### 系统要求

**系统最低配置**

crlfe's avatar
crlfe 已提交
52
CPU >= 1核
crlfe's avatar
crlfe 已提交
53

crlfe's avatar
crlfe 已提交
54
内存 >= 2G
crlfe's avatar
crlfe 已提交
55

crlfe's avatar
crlfe 已提交
56
硬盘 >= 20G
crlfe's avatar
crlfe 已提交
57 58 59 60 61 62 63 64 65 66 67

**操作系统要求**

> 要求内核版本 >= 4.18, glibc >= 2.28

RHEL >= 8.1 或更高版本

Ubuntu >= 20.04 或更高版本

CentOS >= 8.5 或更高版本 (官方已停止维护,不推荐作为生成环境使用)

crlfe's avatar
crlfe 已提交
68
银河麒麟高级服务器操作系统V10
crlfe's avatar
crlfe 已提交
69

crlfe's avatar
crlfe 已提交
70 71 72 73 74 75 76 77 78
**Linux 安装先决条件**

- gcc >= 8.5 或更高版本

可以通过 Linux 包管理工具安装:

- CentOS、RHEL: `sudo yum install gcc`
- Ubuntu: `sudo apt-get install gcc`

crlfe's avatar
crlfe 已提交
79 80 81 82 83 84 85 86 87 88 89 90 91 92
**环境检测**

可以逐步运行一下命令来确认服务器配置

```
uname -r            // 查看内核发行版本号
cat /etc/os-release | grep -E "^NAME=|^VERSION="  // 查看系统版本号
ldd --version           // 查看 glibc 版本号
gcc --version           // 查看 GCC 版本号
cat /proc/cpuinfo| grep "processor"     // 查看CPU信息
free -h            // 查看内存信息
df -h             // 查看磁盘信息
```

93
### 获取安装软件
crlfe's avatar
crlfe 已提交
94

crlfe's avatar
crlfe 已提交
95
uni云开发软件版是付费软件,根据服务器数量及应用数量进行收费。
crlfe's avatar
crlfe 已提交
96

crlfe's avatar
crlfe 已提交
97
登录uniCloud控制台,按图所示进入uni云开发软件版页面
crlfe's avatar
crlfe 已提交
98 99 100 101

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

初次使用需在uniCloud控制台进行申请开通,开通后可以创建集群后获取uniCloud安装包。
crlfe's avatar
crlfe 已提交
102

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

crlfe's avatar
crlfe 已提交
105
同意开通后进入uni云开发软件版集群列表
crlfe's avatar
crlfe 已提交
106 107 108 109 110 111 112 113 114

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

目前创建集群数量暂无限制,您可以根据部署的业务来创建不同的集群。

> 什么是集群?
>
> 集群的作用是基于不同的业务划分一组服务器来进行部署,并且同一集群下的应用是共享的。
>
hbcui1984's avatar
hbcui1984 已提交
115
> 如果业务需要分布式运行,可以在同一集群下添加多台服务器实现,而不需要创建新的集群。
crlfe's avatar
crlfe 已提交
116

crlfe's avatar
crlfe 已提交
117
集群创建后,需要稍等片刻,后台会在10分钟内构建最新版本的uni云开发软件版安装包。
crlfe's avatar
crlfe 已提交
118 119 120 121 122 123 124 125

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

安装软件构建成功后,你需要将安装包上传到自己的服务器,可以通过网页下载后手动上传,也可以复制`wget`命令在服务器执行并下载安装包

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

将安装包下载到服务后运行以下命令进行解压操作,并移动到合适的文件夹内 (推荐文件夹`/uniCloud`)
crlfe's avatar
crlfe 已提交
126

127 128 129 130 131 132
```
# 创建uniCloud目录,需要root用户权限
mkdir /uniCloud
# 解压安装包
tar -zxvf [version].tar.gz -C /uniCloud
```
crlfe's avatar
crlfe 已提交
133

crlfe's avatar
crlfe 已提交
134 135 136 137
**离线集群版本**

如果您有内网部署需求(服务器不允许连接外网),可以发邮件到`bd@dcloud.io`,通过商务采购方式申请开通离线集群进行部署安装使用。

crlfe's avatar
crlfe 已提交
138
### 注册 uni云开发软件版
crlfe's avatar
crlfe 已提交
139

crlfe's avatar
crlfe 已提交
140
uni云开发软件版运行之前,需要向DCloud注册您的uni云开发软件版,注册成功后才可以正常运行。
141

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

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

crlfe's avatar
crlfe 已提交
147
如需生产环境部署,请购买uni云开发软件版服务器授权。
crlfe's avatar
crlfe 已提交
148

crlfe's avatar
crlfe 已提交
149
在uni云开发软件版安装目录下运行以下命令进行激活
crlfe's avatar
crlfe 已提交
150

crlfe's avatar
crlfe 已提交
151 152
- `./unicloud register` 注册uni云开发软件版
- `./unicloud regsiter --trial` 注册试用uni云开发软件版
crlfe's avatar
crlfe 已提交
153

crlfe's avatar
crlfe 已提交
154
**离线集群uni云开发软件版注册方式**
crlfe's avatar
crlfe 已提交
155

crlfe's avatar
crlfe 已提交
156
由于离线uni云开发软件版没有网络连接,需要在uni云开发软件版安装目录下运行 `./uniCloud scan` 命令,会检测服务器环境信息及注册状态,如未注册状态,会在最后生成一个硬件ID
crlfe's avatar
crlfe 已提交
157 158 159 160 161 162 163

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

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

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

crlfe's avatar
crlfe 已提交
164
将下载的授权文件上传uni云开发软件版安装根目录下,并重命名为`LICENSE`,即可完成注册。
crlfe's avatar
crlfe 已提交
165 166 167

### 添加应用授权

crlfe's avatar
crlfe 已提交
168 169
应用授权即授权哪些uni-app客户端可以访问uni云开发软件版,应用授权需要单独购买,
未授权的应用访问uni云开发软件版将会返回`403`错误码。
crlfe's avatar
crlfe 已提交
170 171 172

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

crlfe's avatar
crlfe 已提交
173
添加完应用之后需要重新启动uni云开发软件版服务后生效。
crlfe's avatar
crlfe 已提交
174

crlfe's avatar
crlfe 已提交
175
**离线集群uni云开发软件版更新应用授权**
crlfe's avatar
crlfe 已提交
176 177 178 179 180

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

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

crlfe's avatar
crlfe 已提交
181
如果是首次添加应用,请检查uni云开发软件版安装根目录下是否存在`app-license`文件夹,如不存在,请先创建。
crlfe's avatar
crlfe 已提交
182

crlfe's avatar
crlfe 已提交
183
将下载的授权文件上传uni云开发软件版安装根目录`app-license`文件夹内即可。
crlfe's avatar
crlfe 已提交
184

crlfe's avatar
crlfe 已提交
185
添加完应用之后需要重新启动uni云开发软件版服务后生效。
crlfe's avatar
crlfe 已提交
186

crlfe's avatar
crlfe 已提交
187
### uni云开发软件版操作命令
crlfe's avatar
crlfe 已提交
188

189
> 所有命令请在软件版环境根目录运行
190

crlfe's avatar
crlfe 已提交
191
注册uni云开发软件版
crlfe's avatar
crlfe 已提交
192

crlfe's avatar
crlfe 已提交
193
```javascript
crlfe's avatar
crlfe 已提交
194 195 196 197
./unicloud register // 注册
./unicloud register --trial // 注册试用
```

crlfe's avatar
crlfe 已提交
198
启动
199

crlfe's avatar
crlfe 已提交
200 201 202
`./unicloud start -s [服务空间ID]`

停止
203

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

crlfe's avatar
crlfe 已提交
206 207 208 209
安装云函数第三方依赖

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

crlfe's avatar
crlfe 已提交
210 211 212 213 214 215 216
初始化数据库

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

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

`./unicloud scan`
217

218
## 开发指南
219

220
### 创建服务空间
221

222
为了和serverless版保持一致的开发体验,你需要创建服务空间:
crlfe's avatar
crlfe 已提交
223

crlfe's avatar
crlfe 已提交
224
登录[uniCloud控制台](https://unicloud.dcloud.net.cn/) 新建服务空间,版本选择 uni云开发软件版,绑定集群后即可开通。
crlfe's avatar
crlfe 已提交
225 226 227

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

crlfe's avatar
crlfe 已提交
228
服务空间创建成功后,复制服务空间ID,在uni云开发软件版根目录按照以下命令创建服务空间目录
crlfe's avatar
crlfe 已提交
229

230
```
crlfe's avatar
crlfe 已提交
231 232
mkdir spaces // 如果spaces目录不存在先创建
cd spaces
233 234
mkdir [SpaceId]
```
235

236
### 配置服务空间
237

238
在你的服务空间目录下创建`config.json`配置文件,文件内容如下:
239

240
```json
241
{
crlfe's avatar
crlfe 已提交
242 243 244 245 246 247 248 249 250 251
  "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
252
  },
crlfe's avatar
crlfe 已提交
253 254 255 256 257 258 259 260
  "storage": {
    "provider": "local",
    "dir": "file/upload",
    "bucket": "",
    "cdnProtocol": "http://",
    "cdnDomain": "127.0.0.1:7001",
    "cdnRootPath": "/storage/file/",
    "storageSecret": "xxxxxxxxxx",
261
  },
crlfe's avatar
crlfe 已提交
262 263
  "logger": {
    "customLogDir": "~/logs"
264
  },
crlfe's avatar
crlfe 已提交
265 266 267 268
  "redis": {
    "host": "127.0.0.1",
    "port": 6379,
    "password": ""
269
  },
crlfe's avatar
crlfe 已提交
270 271 272
  "spaceSecret": {
    "secretKeyId": "xxxx",
    "secretKey": "xxx"
273 274 275 276
  }
}
```

crlfe's avatar
crlfe 已提交
277 278 279 280 281 282 283 284 285 286
|参数|类型|默认值|说明|
|---|---|---|---|
|default|Boolean|-|是否为默认服务空间,一套uni云开发软件版环境下,只能有一个默认服务空间|
|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 已提交
287 288
|mongodb.maxPoolSize|Number|100|最大连接数|
|mongodb.minPoolSize|Number|0|最小连接数|
crlfe's avatar
crlfe 已提交
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
|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|-|日志服务配置|
|logger.customLogDir|String|/private-cloud-env/logs|uni云开发软件版环境日志存储路径|
|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控制台查看|

307 308 309 310 311
如项目中使用了存储服务,则还需额外增加存储服务的配置项。既在服务空间目录下创建`file`目录,并在`file`目录下增加`permission.json`配置文件。配置文件内容如下:

```json
{
  "*": {
crlfe's avatar
crlfe 已提交
312 313 314 315
    "read": true,
    "update": false,
    "create": true,
    "delete": "auth.uid == resource.uid"
316 317 318 319
  }
}
```

crlfe's avatar
crlfe 已提交
320 321 322 323 324 325 326
|参数|类型|默认值|说明|
|---|---|---|---|
|read|Boolean|-|读权限|
|update|Boolean|-|修改权限|
|create|Boolean|-|创建权限|
|delete|String|-|删除权限|

327
### 使用HBuilerX开发调试
328

crlfe's avatar
crlfe 已提交
329
#### 安装uni云开发软件版插件
JiaRongPing's avatar
JiaRongPing 已提交
330

crlfe's avatar
crlfe 已提交
331
在插件市场中下载[uni云开发软件版插件](https://ext.dcloud.net.cn/plugin?id=18520),并在HBuilderX中安装。
332

crlfe's avatar
crlfe 已提交
333
uni云开发软件版插件支持以下功能:
334

crlfe's avatar
crlfe 已提交
335 336 337
- 创建本地调试配置文件
- 创建本地存储调试配置文件
- 打包uniCloud资源
338

crlfe's avatar
crlfe 已提交
339
#### 关联服务空间
340

crlfe's avatar
crlfe 已提交
341
> HBuilderX > 4.19 (暂定)
342

crlfe's avatar
crlfe 已提交
343
uni云开发软件版服务空间使用 `dcloud` 标识
344

crlfe's avatar
crlfe 已提交
345
如果项目内不存在`dcloud`服务空间,请在项目根目录右键-创建uniCloud环境,选择 `DCloud`创建即可。
346

crlfe's avatar
crlfe 已提交
347
#### 本地调试配置
348

crlfe's avatar
crlfe 已提交
349
在项目中的`uniCloud`目录右键-uni云开发软件版-创建本地调试配置文件,即可生成`config.json`配置文件。
350

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

crlfe's avatar
crlfe 已提交
353
配置内容如下所示
354 355 356

```json
{
crlfe's avatar
crlfe 已提交
357 358 359 360 361 362 363 364
 "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"//密码
crlfe's avatar
crlfe 已提交
365
 },
crlfe's avatar
crlfe 已提交
366 367 368
 "storage": {//存储服务配置,如项目未使用存储服务可不配置此项
    "provider": "local",//服务商 支持local:本地存储 aliyun: 阿里云存储服务 tencent:腾讯云存储服务 qiniu:七牛云
    "dir": "file/upload", //文件上传目录
crlfe's avatar
crlfe 已提交
369
    "bucket": "",//存储桶名称,本地存储无需配置此项
crlfe's avatar
crlfe 已提交
370 371 372 373
    "cdnProtocol": "http://",//cdn协议 支持 http https
    "cdnDomain": "127.0.0.1:7001",//cdn域名
    "cdnRootPath": "/storage/file/",//cdn根目录
    "storageSecret": "xxxxxxxxxx",//本地存储服务访问密钥
crlfe's avatar
crlfe 已提交
374
  }
375 376 377
}
```

crlfe's avatar
crlfe 已提交
378 379 380 381 382 383 384 385 386 387
#### 运行项目

以上步骤完成后,运行项目即可。

切换云端云函数时,需部署到服务器后才可调用云端云函数。

### 部署

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

crlfe's avatar
crlfe 已提交
388
`uniCloud-dcloud`目录右键“uni云开发软件版”-“打包uniCloud资源”,将会在`uniCloud-dcloud`服务空间目录下生成`dist`目录。
crlfe's avatar
crlfe 已提交
389

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

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

crlfe's avatar
crlfe 已提交
394
上传代码之后需要重新启动服务空间,在uni云开发软件版根目录执行以下命令进行重启操作
crlfe's avatar
crlfe 已提交
395 396 397 398 399 400 401

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

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

403
## 运维指南
404

405
### 域名解析及代理配置
406

407
项目测试期或上线后,通常需要以域名代替ip来访问服务空间中的云函数/云对象。下面我们提供了一个简单的域名解析和代理配置示例。配置生效后,可用`test.pvtcloud.com`代替原本的`127.0.0.1:7001`来访问服务空间中的云函数/云对象。
408

409
`nginx`为例,配置如下:
410

411 412
```conf
server {
crlfe's avatar
crlfe 已提交
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432
 listen        80;
 server_name  test.pvtcloud.com;
 root   D:/www/test.pvtcloud.com;
 location / {
  try_files $uri $uri/ /index.html;
 }
 location ~ (/client|/http/) {
  proxy_http_version 1.1;
  proxy_set_header Connection "keep-alive";
  proxy_set_header X-Real-IP $clientRealIp;
  proxy_set_header X-Real-PORT $remote_port;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header Scheme $scheme;
  proxy_set_header Server-Protocol $server_protocol;
  proxy_set_header Server-Name $server_name;
  proxy_set_header Server-Addr $server_addr;
  proxy_set_header Server-Port $server_port;
  proxy_pass http://127.0.0.1:7001;
 }
433
}
434

435 436
//注意,上述配置中用到的$clientRealIp变量并非是内置变量,需在nginx.conf文件的http模块定义后才可使用,以下为配置示例:
http {
crlfe's avatar
crlfe 已提交
437 438 439 440 441
 ## Get Client Real IP
 map $http_x_forwarded_for  $clientRealIp {
  ""   $remote_addr;
  ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
 }
442
}
443 444

```
445 446 447

### 防火墙白名单配置

crlfe's avatar
crlfe 已提交
448
若你的服务器开启了防火墙功能,且需要访问如:`uni云开发软件版(联网版)``短信``一键登录``uni-ai``实人认证``uni-push`等在线业务,则需要将这些业务的API域名,添加到防火墙白名单中。
449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465

`CentOS系统`为例,配置方式如下

```conf

# 添加域名白名单,实际配置时,请将 “DCloud API域名1/2” 替换为具体域名
sudo firewall-cmd --permanent --zone=public --add-rich-rules='rule family="ipv4" source address="DCloud API域名1" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rules='rule family="ipv4" source address="DCloud API域名2" accept'
# 添加更多域名...

# 重新加载firewalld配置:
sudo firewall-cmd --reload

```

#### 各业务API域名

crlfe's avatar
crlfe 已提交
466
- uni云开发软件版(联网版)及付费业务API域名
467 468 469 470 471 472 473
- - pucoa1.dcloud.net.cn
- - pucoa2.dcloud.net.cn
- - pucoabk.dcloud.net.cn

- uni-push业务API域名
- - restapi.getui.com

crlfe's avatar
crlfe 已提交
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517
### 日志

uniCloud 私有云内置了完善的日志服务支持,日志分为启动日志与运行日志。

启动日志是记录 uniCloud 启动期间的所有输出日志,包括启动失败的错误日志。

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

#### 日志路径

启动日志放在`${HOMEDIR}/logs/${spaceId}/master`路径下,每次启动的日志独立保存。

运行时日志默认放在`${HOMEDIR}/logs/${spaceId}`路径下,可以修改服务空间配置文件中的`logger.customLogDir`字段来自定义日志目录。

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

```json
 {
 "logger": {
  "customLogDir": "/your/custom/dir/path"
 }
 }
```

#### 日志分类

启动日志

- `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`文件名进行切割。