部署
强烈推荐使用 Docker 无痛部署渔夫量化系统!
准备工作¶
- 一台可安装 Docker 的计算机,推荐使用云服务器。
- 一个域名(可选)。
注意
在非公网访问的环境下部署,可以不用域名。如果在可公网访问的服务器上部署,强烈建议配置域名。配置域名才可开启 HTTPS 安全访问。
云服务器推荐
阿里云香港节点轻量云服务器仅需 24元/月,足以运行渔夫量化系统。腾讯云、华为云也有类似产品,购买前可加我微信(zmrenwu)咨询,可获得进一步的折扣优惠。
安装 Docker¶
如果使用阿里云轻量应用服务器,只需依次执行以下命令即可安装 Docker。
-
更新 apt 包索引
sudo apt-get update
-
安装一些辅助工具
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
添加 Docker 官方 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
再次更新 apt 包索引
sudo apt-get update
-
安装 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
-
验证 Docker 结果
运行不报错说明安装成功。sudo docker run hello-world
-
将用户加入 docker 组,注意将
your-user
替换为当前系统用户名。这样就不用在每次执行 docker 命令前加 sudo 了。sudo usermod -aG docker your-user
其他操作系统安装 Docker 的方式都大同小异,详细步骤可参考下方列出的官方文档:
安装 Docker Compose¶
如果使用阿里云轻量应用服务器,只需依次执行以下命令即可安装 Docker Compose。
-
下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
赋予 docker-compose 可执行权限
sudo chmod +x /usr/local/bin/docker-compose
-
查看 docker-compose 版本号,验证安装结果
docker-compose -v
下载代码¶
使用 Git 拉取渔夫量化系统最新代码。
git clone https://github.com/yufuquant/yufuquant.git
配置 Nginx¶
如果不配置域名,可直接跳过此步骤。
将 yufuquant/compose/production/nginx/conf.d 目录下的 yufuquant.conf.template 文件复制一份到同级目录,新复制的文件命名为 yufuquant.conf。
yufuquant.conf 配置文件部分内容如下:
1 2 3 4 5 6 7 8 9 |
|
将第 7 行的下划线 _
改为域名,例如:
server_name demo.yufuquant.cc;
注意
请确保已将配置的域名解析到部署渔夫系统的服务器。
配置接口地址¶
配置后端 API 接口请求地址。
将 yufuquant/frontend/dist 目录下的 config.example.js 文件复制一份到同级目录,新复制的文件命名为 config.js。
config.js 配置文件初始内容如下:
window.conf = {
restApiBaseUrl: 'http://127.0.0.1:8000/api/v1',
websocketApiUri: 'ws://127.0.0.1:8000/ws/v1/streams/'
}
请根据不同的部署环境进行修改:
无需修改。
将 127.0.0.1 改为公网 ip。
- 将 http://127.0.0.1:8000 改为 https://域名。
- 将 ws://127.0.0.1:8000 改为 wss://域名。
例如修改后的配置如下:
window.conf = {
restApiBaseUrl: 'https://demo.yufuquant.cc/api/v1',
websocketApiUri: 'wss://demo.yufuquant.cc/ws/v1/streams/'
}
配置环境变量¶
在将项目根目录 yufuquant 下的 .envs 目录下创建一个 .production 文件夹,并在 .production 文件夹下创建 .django 和 .postgres 文件,分别写入如下内容:
.django
DJANGO_SETTINGS_MODULE=config.settings.production
DJANGO_SECRET_KEY=yufuquant.ccufmv!jn)82cu*pcry#3xcag**c#nn)=y0j%2k5dulf43_+omhu
DJANGO_ALLOWED_HOSTS=192.168.10.72
SENTRY_DSN=
REDIS_URL=redis://redis:6379/0
各配置项说明:
DJANGO_SECRET_KEY
系统密钥,切勿泄露。推荐使用这个工具在线生成:Django Secret Key Creator。
DJANGO_ALLOWED_HOSTS
允许访问的域名。本地环境设为 127.0.0.1;未配置域名设置为服务器公网 ip;配置了域名则设置为域名。
SENTRY_DSN
Sentry 服务的 DSN 地址,用于接收系统的错误日志,可以不配置。
完整示例:
DJANGO_SETTINGS_MODULE=config.settings.production
DJANGO_SECRET_KEY=yufuquantzb^(0kgc3xf8zd#gwy$4v1o$1-%j1qnl!%&1scb$#
DJANGO_ALLOWED_HOSTS=demo.yufuquant.cc
SENTRY_DSN=https://b72df2cec6924h7962c61c4e463he09q@o199394.ingest.sentry.io/5144483
REDIS_URL=redis://redis:6379/0
.postgres
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=yufuquant
POSTGRES_USER=dbuser
POSTGRES_PASSWORD=dbpwd
各配置项说明:
POSTGRES_DB
数据库名,可自行更改。
POSTGRES_USER
数据库用户名,可自行更改。
POSTGRES_PASSWORD
数据库密码,请自行更改为安全的密码。
构建 Docker 容器¶
一切就绪,开始构建 Docker 容器,渔夫系统将运行于构建的容器内。
运行下面的命令构建容器:
docker-compose -f production.yml build
启动系统¶
Nginx 默认 80 和 443 端口:
docker-compose -f production.yml up -d
注意
如果 80 和 443 端口已被占用,可在项目根目录创建一个 .env 文件,通过 PORT 和 SECURE_PORT 指定 HTTP 和 HTTPS 访问端口:
PORT=4080
SECURE_PORT=4443
初始化数据库¶
docker-compose -f production.yml run --rm django python manage.py runscript yufuquant.scripts.db.init_db
配置 HTTPS¶
非公网环境或者未配置域名可跳过。
配置 HTTPS 的命令模板:
docker exec -it yufuquant_nginx_1 certbot --nginx -n --agree-tos --redirect --email xxx@xxx.com -d your_domain
将 --email 后的 xxx@xxx.com 替换为你的邮箱地址。
将 -d 后的 your_domain 替换为配置的域名。
重启和停止¶
重启系统:
docker-compose -f production.yml restart
停止:
docker-compose -f production.yml stop
再次启动:
docker-compose -f production.yml up -d
更新¶
首先拉取最新版本的代码:
git pull
重新构建容器:
docker-compose -f production.yml build
启动:
docker-compose -f production.yml up -d