Files
dromara--domain-admin/doc/source/manual/install.md
T
2026-07-13 12:31:34 +08:00

475 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安装方式
管理员默认的账号和密码
- 账号:admin
- 密码:123456
> `强烈建议`:登录系统后修改默认密码
Domain Admin是一个Flask应用,启动部署方式和Flask应用是一样的
> `特别注意`
> - 【测试环境】可以使用默认的sqlite数据库;
> - 【生产环境】推荐使用MySQL数据库,避免锁表,配置方式:[可选配置](#id5)
## 方式一:宝塔面板安装
[![宝塔服务器面板,一键全能部署及管理](https://img.shields.io/badge/BT_Deploy-Install-20a53a)](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)
<a title="宝塔服务器面板,一键全能部署及管理" href="https://www.bt.cn/u/MaBJJC"><img src="https://mouday.github.io/img/2024/10/24/fxkd3qe.jpg" width="200"></a>
![](https://mouday.github.io/img/2024/10/31/63ke2ij.png)
## 方式二: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
```
- databasesqlite数据库和重要数据的目录
- 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 <<EOF
{
"registry-mirrors": [
"https://dockerpull.com",
"https://dockerproxy.cn",
"https://docker.loli.voto",
"https://docker.chenby.cn",
"https://docker-cf.registry.cyou",
"https://docker.m.daocloud.io",
"https://docker.ketches.cn",
"https://docker.1panel.dev",
"https://docker.1panel.live",
"https://docker.rainbond.cc",
"https://hub.rat.dev",
"https://docker.aityp.com/",
"https://docker.catiz.eu.org/"
]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
```
## 方式三:下载源码安装
下载地址:[https://github.com/mouday/domain-admin/releases](https://github.com/mouday/domain-admin/releases)
本方式仅适用于二次开发,推荐采用 pip安装 或者 docker启动 的方式体验
例如:以`v1.5.8`为例
每次发布都会包含以下代码包
```
domain-admin-1.5.8.tar.gz # 完整源码包,包含打包后的H5端、web端代码
domain_admin-1.5.8-py2.py3-none-any.whl # pip包,可直接安装
domain-admin-mini-v1.5.8.tar.gz # H5端源码
domain-admin-web-v1.5.8.tar.gz # web端源码
Source code(zip) # Python源码 windows适用
Source code(tar.gz) # Python源码 linux/mac适用
```
此处以linux/macos为例,windows用户可直接点击下载,自行使用加压软件解压
1、下载发布包
```bash
# 下载 domain-admin-1.5.8.tar.gz
wget https://github.com/mouday/domain-admin/releases/download/v1.5.8/domain-admin-1.5.8.tar.gz
# 如果下载速度过慢,可以使用加速方案
wget https://ghproxy.com/https://github.com/mouday/domain-admin/releases/download/v1.5.8/domain-admin-1.5.8.tar.gz
```
2、解压进入
```bash
tar -zxvf domain-admin-1.5.8.tar.gz
cd domain-admin-1.5.8
```
3、创建虚拟环境
```bash
# 创建名为 venv 的虚拟环境,windows用户参考方式一
$ python3 -m venv venv && source venv/bin/activate
# 安装依赖
pip3 install .
```
4、新建启动文件 `app.py`
```python
from domain_admin.main import app
if __name__ == '__main__':
app.run(port=8000)
```
此时的目录结构如下
```bash
$ tree -L 1
.
├── LICENSE
├── MANIFEST.in
├── PKG-INFO
├── README.md
├── app.py # 新建的启动文件
├── build
├── database
├── domain_admin
├── domain_admin.egg-info
├── logs
├── requirements
├── setup.cfg
├── setup.py
├── temp
└── venv
```
5、启动运行
```bash
# 启动运行
$ python app.py
* Serving Flask app 'domain_admin.main'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:8000
Press CTRL+C to quit
```
- warning提示可以忽略,推荐参考方式一,使用`gunicorn` 或者 `waitress-serve` 启动
访问地址:[http://127.0.0.1:8000](http://127.0.0.1:8000)
## 方式四:1Panel面板安装
1Panel是一个Linux 服务器运维管理面板,Domain-Admin已发布到它的应用商店,可以直接安装
安装地址:
[https://apps.fit2cloud.com/1panel/domain-admin](https://apps.fit2cloud.com/1panel/domain-admin)
## 方式五:k8s部署
配置文件示例
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: domain-admin-latest
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: domain-admin
app.kubernetes.io/version: 1.16.0
argocd.argoproj.io/instance: domain-admin-latest
helm.sh/chart: domain-admin-0.1.0
name: domain-admin-latest
namespace: domain-admin-production
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/instance: domain-admin-latest
app.kubernetes.io/name: domain-admin
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: domain-admin-latest
app.kubernetes.io/name: domain-admin
spec:
containers:
- name: domain-admin
image: mouday/domain-admin:latest
imagePullPolicy: Always
env:
- name: DB_CONNECT_URL
value: "sqlite:///database/database.db"
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8000
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
```
## 方式六:pip安装
运行环境:
- Python >= 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 '部署成功'
```