2022-01-18 12:32:00 +08:00
|
|
|
|
|
|
|
|
|
# PushDeer 安装文档
|
|
|
|
|
|
|
|
|
|
- ⚠️ 当前PushDeer依然在开发中,API和安装文档均有可能调整。
|
2022-01-21 16:17:19 +08:00
|
|
|
|
- ⚠️ 当前安装文档支持 iOS、Mac和Android版
|
|
|
|
|
- ⚠️ 当前MiPush直接调用官方接口,未使用异步队列,可能存在性能瓶颈
|
2022-01-18 12:32:00 +08:00
|
|
|
|
|
|
|
|
|
## API服务器的安装
|
|
|
|
|
|
|
|
|
|
默认的 `docker-compose` 是为开发准备的,不适合放置到线上,以下做调整:
|
|
|
|
|
|
|
|
|
|
1. 将`MySQL`服务独立出来,建议直接采用云厂商的数据库服务。
|
|
|
|
|
1. 设置环境变量,关闭调试信息和接口
|
|
|
|
|
1. 配置https
|
|
|
|
|
|
|
|
|
|
### STEP0:clone 项目代码
|
|
|
|
|
|
|
|
|
|
`git clone https://github.com/easychen/pushdeer.git`
|
|
|
|
|
|
2022-01-18 13:35:32 +08:00
|
|
|
|
### STEP1 :编写线上环境的 docker-compose.yml ,替换环境变量
|
2022-01-18 12:32:00 +08:00
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
version: '2'
|
|
|
|
|
services:
|
2022-01-19 15:00:29 +08:00
|
|
|
|
redis:
|
|
|
|
|
image: 'bitnami/redis:6.0.16'
|
|
|
|
|
environment:
|
|
|
|
|
- ALLOW_EMPTY_PASSWORD=yes
|
2022-01-18 12:32:00 +08:00
|
|
|
|
app:
|
|
|
|
|
#image: 'webdevops/php-apache:8.0-alpine'
|
|
|
|
|
build: './docker/web/'
|
|
|
|
|
ports:
|
|
|
|
|
- '80:80'
|
2022-01-18 13:35:32 +08:00
|
|
|
|
- '443:443' # 开放 https 需要的接口
|
2022-01-19 15:00:29 +08:00
|
|
|
|
depends_on:
|
|
|
|
|
- redis
|
2022-01-18 12:32:00 +08:00
|
|
|
|
volumes:
|
|
|
|
|
- './:/app'
|
|
|
|
|
environment:
|
|
|
|
|
- DB_DATABASE=pushdeer
|
|
|
|
|
- DB_HOST=clouddb.com
|
|
|
|
|
- DB_PASSWORD=thep@ssw0rd
|
|
|
|
|
- DB_PORT=3306
|
|
|
|
|
- DB_TIMEZONE=+08:00
|
|
|
|
|
- DB_USERNAME=pushdeer
|
|
|
|
|
- APP_DEBUG=false
|
2022-02-02 00:08:15 +08:00
|
|
|
|
- GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
|
|
|
|
|
- GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
|
2022-01-18 12:32:00 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### STEP2:配置 SSL 证书
|
|
|
|
|
|
|
|
|
|
#### 放置证书文件
|
|
|
|
|
|
|
|
|
|
申请域名对应的 SSL 证书,获得证书文件( `example.crt` )和私钥文件( `example.key`)。
|
2022-05-21 12:24:22 +08:00
|
|
|
|
在[项目根目录](https://github.com/easychen/pushdeer)下建立 `ssl` 目录,将证书文件重命名为 `server.crt` 和 私钥文件重命名为 `server.key` 。
|
2022-01-18 12:32:00 +08:00
|
|
|
|
|
|
|
|
|
如果你下载的证书中还包含根证书(root_crt),可将根证书文本追加到 `server.crt` 之后。
|
|
|
|
|
|
2022-05-21 12:21:40 +08:00
|
|
|
|
<!-- #### 通过Dockfile将证书复制到镜像内
|
2022-05-21 00:19:21 +08:00
|
|
|
|
|
|
|
|
|
[按提示修改Dockerfile](https://github.com/easychen/pushdeer/blob/main/docker/web/Dockerfile#L27)
|
2022-05-21 12:21:40 +08:00
|
|
|
|
-->
|
2022-05-21 00:19:21 +08:00
|
|
|
|
|
2022-01-18 12:32:00 +08:00
|
|
|
|
#### 修改虚拟host配置
|
|
|
|
|
|
|
|
|
|
修改 `docker/web/vhost.conf` 中被注释掉的[这三行](https://github.com/easychen/pushdeer/blob/10e4d3bb62d8d66d4739598a8f4af32eda4cceef/docker/web/vhost.conf#L27)。
|
|
|
|
|
|
|
|
|
|
```conf
|
|
|
|
|
<VirtualHost *:443>
|
|
|
|
|
ServerName yourdomain.com
|
|
|
|
|
ServerAlias *.vm docker.vm
|
|
|
|
|
DocumentRoot "/app/api/public"
|
|
|
|
|
<Directory /app/api/public>
|
|
|
|
|
Options FollowSymLinks MultiViews
|
|
|
|
|
AllowOverride All
|
|
|
|
|
Order allow,deny
|
|
|
|
|
allow from all
|
|
|
|
|
</Directory>
|
|
|
|
|
SSLEngine on
|
|
|
|
|
SSLCertificateFile /app/ssl/server.crt
|
|
|
|
|
SSLCertificateKeyFile /app/ssl/server.key
|
|
|
|
|
</VirtualHost>
|
|
|
|
|
```
|
|
|
|
|
|
2022-01-21 16:17:19 +08:00
|
|
|
|
### STEP3:配置推送信息
|
|
|
|
|
|
|
|
|
|
#### iOS 推送
|
2022-01-18 12:32:00 +08:00
|
|
|
|
|
2022-02-02 00:08:15 +08:00
|
|
|
|
可直接使用`PushDeer·自架版`客户端。
|
|
|
|
|
|
|
|
|
|
如自行编译客户端,需生成APP和Clip的推送证书,并按以下方式配置:
|
|
|
|
|
|
2022-01-18 12:32:00 +08:00
|
|
|
|
进入 push 目录,修改 `*.yml.sample` 为 `*.yml`。其中iOS应用和Clip使用两个分开的证书进行推送,`ios.yml` 是APP的配置、`clip.yml` 是Clip的配置。注意根据开发和产品状态,修改`yml`中的值`production`。
|
|
|
|
|
|
|
|
|
|
默认配置中,`c.p12` 是APP的推送证书、`cc.p12`是Clip的推送证书。
|
|
|
|
|
|
2022-01-21 16:17:19 +08:00
|
|
|
|
#### Android 推送( 采用MiPush实现 )
|
|
|
|
|
|
|
|
|
|
1. [注册小米开发者,并创建应用](https://dev.mi.com/console/appservice/push.html)(需要企业资质),获得`包名`(形如com.pushdeer.app)和`AppSecret`(形如RWQf344dF==)
|
|
|
|
|
1. 在`docker-compose.yml`中通过环境变量添加包名和AppSecret。
|
|
|
|
|
|
|
|
|
|
```yml
|
|
|
|
|
version: '2'
|
|
|
|
|
services:
|
|
|
|
|
redis:
|
|
|
|
|
image: 'bitnami/redis:6.0.16'
|
|
|
|
|
environment:
|
|
|
|
|
- ALLOW_EMPTY_PASSWORD=yes
|
|
|
|
|
app:
|
|
|
|
|
#image: 'webdevops/php-apache:8.0-alpine'
|
|
|
|
|
build: './docker/web/'
|
|
|
|
|
ports:
|
|
|
|
|
- '80:80'
|
|
|
|
|
- '443:443' # 开放 https 需要的接口
|
|
|
|
|
depends_on:
|
|
|
|
|
- redis
|
|
|
|
|
volumes:
|
|
|
|
|
- './:/app'
|
|
|
|
|
environment:
|
|
|
|
|
- DB_DATABASE=pushdeer
|
|
|
|
|
- DB_HOST=clouddb.com
|
|
|
|
|
- DB_PASSWORD=thep@ssw0rd
|
|
|
|
|
- DB_PORT=3306
|
|
|
|
|
- DB_TIMEZONE=+08:00
|
|
|
|
|
- DB_USERNAME=pushdeer
|
|
|
|
|
- APP_DEBUG=false
|
|
|
|
|
- ANDROID_PACKAGE="这里填写包名"
|
|
|
|
|
- MIPUSH_SECRET="这里填写小米推送应用的AppSecret"
|
|
|
|
|
```
|
|
|
|
|
|
2022-01-18 12:32:00 +08:00
|
|
|
|
### STEP4:构建并运行镜像
|
|
|
|
|
|
|
|
|
|
运行 `docker-compose up -d --build`,启动API。访问 `https://yourdomain.com` 即可查看到API服务器默认网页。
|
|
|
|
|
|
|
|
|
|
## iOS客户端的编译
|
|
|
|
|
|
|
|
|
|
### 编译
|
|
|
|
|
|
|
|
|
|
参考 ios 目录下的[安装说明](https://github.com/easychen/pushdeer/tree/main/ios/PushDeer-iOS),配置项目
|
|
|
|
|
|
|
|
|
|
修改以下内容:
|
|
|
|
|
|
2022-01-21 16:17:19 +08:00
|
|
|
|
1. 更换项目中的名称和标识( 如要上架商店,请勿直接使用PushDeer的名称和标识 )
|
2022-01-18 12:32:00 +08:00
|
|
|
|
1. 将项目中的 Bundle Identifier ( xcode.proj文件、General标签 )改为和通知证书响应的
|
|
|
|
|
1. 将项目中的 签名和team更换为用于上架的开发者的(xcode.proj文件、Signing & Capabilities标签)
|
|
|
|
|
1. 修改[API接口中的域名](https://github.com/easychen/pushdeer/blob/10e4d3bb62d8d66d4739598a8f4af32eda4cceef/ios/PushDeer-iOS/PushDeer/Service/PushDeerApi.swift#L37),替换为之前安装的服务
|
|
|
|
|
|
2022-01-21 16:17:19 +08:00
|
|
|
|
## Android客户端的编译
|
|
|
|
|
|
|
|
|
|
1. 修改包名为上边小米推送应用中设置,不然推送时会返回`bad target`提示
|
|
|
|
|
|
2022-01-18 12:32:00 +08:00
|
|
|
|
|
|
|
|
|
|