# 安装方式
管理员默认的账号和密码
- 账号:admin
- 密码:123456
> `强烈建议`:登录系统后修改默认密码
Domain Admin是一个Flask应用,启动部署方式和Flask应用是一样的
> `特别注意`:
> - 【测试环境】可以使用默认的sqlite数据库;
> - 【生产环境】推荐使用MySQL数据库,避免锁表,配置方式:[可选配置](#id5)
## 方式一:宝塔面板安装
[](https://www.bt.cn/u/MaBJJC)
宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。
有30个人的专业团队研发及维护,经过200多个版本的迭代,功能全,少出错且足够安全,已获得全球百万用户认可安装。
如果还未安装宝塔,请先前往[下载](https://www.bt.cn/u/MaBJJC)注册安装
面板版本v9.2.0: 宝塔面板 --> Docker --> 应用商店 --> Domain Admin --> 安装
[【教程贴】Docker应用-Domain Admin 安装帮助](https://www.bt.cn/bbs/thread-139621-1-1.html)

## 方式二:docker启动
感谢[@miss85246](https://github.com/miss85246) 提供Docker支持
```bash
# 本地文件夹和容器文件夹映射
$ docker run \
-v $(pwd)/database:/app/database \
-v $(pwd)/logs:/app/logs \
-p 8000:8000 \
--name domain-admin \
mouday/domain-admin:latest
```
- database:sqlite数据库和重要数据的目录
- logs:日志目录,用于排查问题
启动命令增加参数:`-d`,可以后台运行
```bash
# 本地文件夹和容器文件夹映射
$ docker run \
-d \
-v $(pwd)/database:/app/database \
-v $(pwd)/logs:/app/logs \
-p 8000:8000 \
--name domain-admin \
mouday/domain-admin:latest
```
也可以用dokcer-compose来一键启动
可以使用`docker-compose up -d`来启动
当版本更新时,可以用`docker-compose pull`来拉取镜像,然后用`docker-compose up -d`来重启新镜像
```yaml
version: '3.3'
services:
domain-admin:
volumes:
- './database:/app/database'
- './logs:/app/logs'
ports:
- '8000:8000'
container_name: domain-admin
image: mouday/domain-admin:latest
```
可用的docker镜像站
```bash
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <= 2.7 或者 Python >= 3.4
- sqlite、openssl
python的安装,可以参考文章:[Linux环境下安装Python3](https://pengshiyu.blog.csdn.net/article/details/85304557)
可以使用 `pyenv` + `venv` 管理多个Python版本和隔离虚拟环境
确保已经安装Python解释器
```bash
$ python3 --version
Python 3.7.0
```
linux / macos 安装
```bash
# 创建名为 venv 的虚拟环境并激活
$ python3 -m venv venv && source venv/bin/activate
# 安装 domain-admin
$ pip install gunicorn domain-admin
# 启动运行
$ gunicorn --bind '127.0.0.1:8000' 'domain_admin.main:app'
```
windows 安装
```bash
# 创建名为 venv 的虚拟环境
> py -3 -m venv venv
# 激活虚拟环境
> venv\Scripts\activate
# 安装 domain-admin
> pip install waitress domain-admin
# 启动运行
> waitress-serve --listen=127.0.0.1:8000 domain_admin.main:app
```
访问地址:http://127.0.0.1:8000
升级到最新版本
```bash
$ pip3 install -U domain-admin -i https://pypi.org/simple
```
Python2.7如果安装依赖报错,可以使用依赖文件 [production-2.7.txt](https://github.com/mouday/domain-admin/tree/master/requirements/production-2.7.txt)
先安装好依赖文件的依赖,再安装domain-admin即可
## 其他部署方式
可以参考[https://flask.palletsprojects.com/en/2.3.x/deploying/](https://flask.palletsprojects.com/en/2.3.x/deploying/)
## 平滑升级
Domain Admin所有版本都支持平滑升级
安装最新版,重启即可
> 注意:如果是docker安装的,注意`database` 目录是不是手动挂载的,不要删除
## 可选配置
通过配置`.env` 文件或者直接设置系统环境变量
1、修改数据库存储方式
```bash
# sqlite 默认 (少量用户推荐)
DB_CONNECT_URL=sqlite:///database/database.db
# mysql (团队使用推荐)
DB_CONNECT_URL=mysql://root:123456@127.0.0.1:3306/data_domain
# postgresql,需自己安装psycopg2依赖:pip install psycopg2
DB_CONNECT_URL=postgresql://root:123456@localhost:5432/data_domain
```
说明:以上配置仅为示例,根据自己实际情况修改
如果使用mysql数据库,建议指定默认字符编码为`utf8mb4`
```sql
create database data_domain default character set=utf8mb4;
```
## 配置参数
可以通过运行目录下添加 `.env` 文件配置项目的可选参数
```bash
# 数据库链接参数
# 支持数据库:sqlite(默认)、mysql、postgresql
DB_CONNECT_URL=mysql://root:123456@127.0.0.1:3306/data
# 运行模式
# 可选:production(默认) / development(可以打印更多的调试日志)
APP_MODE=production
# 允许远程执行的命令白名单,多个英文分号(;)分隔
ALLOW_COMMANDS=/opt/nginx/sbin/nginx -s reload;nginx -s reload
# 允许用户注册,目前仅支持邮箱验证码登录
ENABLED_REGISTER=true
```
还可以通过环境变量来暴露
```bash
export APP_MODE=production
```
在 `Dockerfile` 中使用 `ENV` 指令设置环境变量
```bash
# 设置单个环境变量
ENV APP_MODE production
# 设置多个环境变量
ENV APP_MODE=production ALLOW_COMMANDS='nginx -s reload'
```
使用 `docker run` 命令的 `-e` 或 `--env` 选项在运行容器时设置环境变量
```bash
# 设置单个环境变量
docker run -e APP_MODE=production my_image
# 设置多个环境变量
docker run -e APP_MODE=production -e ALLOW_COMMANDS='nginx -s reload' my_image
```
在`docker-compose.yml`文件中使用`environment`关键字
```yaml
version: '3.3'
services:
domain-admin:
volumes:
- './database:/app/database'
- './logs:/app/logs'
ports:
- '8000:8000'
environment:
- APP_MODE=production
container_name: domain-admin
image: mouday/domain-admin:latest
```
在`docker-compose.yml`文件从宿主机获取环境变量,可以使用`env_file`关键字指向一个文件
```yaml
version: '3.3'
services:
domain-admin:
volumes:
- './database:/app/database'
- './logs:/app/logs'
ports:
- '8000:8000'
env_file:
- .env
container_name: domain-admin
image: mouday/domain-admin:latest
```
可以通过 `printenv` 命令查看设置的环境变量
## 更新脚本
可以使用类似的shell脚本,快速更新到新的版本
```shell
# update.sh
git pull && \
supervisorctl restart domain-admin && \
echo '部署成功'
```