# huiyue **Repository Path**: dbmp/huiyue ## Basic Information - **Project Name**: huiyue - **Description**: 平安壹钱包数据库运维平台---辉月平台,欢迎大家试用👏🏻 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2025-02-25 - **Last Updated**: 2025-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据平台 #### 介绍 辉月平台基于django和vue搭建的一个数据库运维平台,主要是管理MYSQL数据库,从数据库上线阶段的标准化安装、压测、高可用部署,到数据库运行阶段的备份管理、标准化检查、高可用切换、巡检日报,大盘展示,到数据库下线阶段的数据归档、数据库下线,辉月平台将MYSQL数据库常用的运维操作都集成到平台操作,平台通过自身的agent去管理数据库,无需免密,只需通过平台部署辉月的agent后,便可通过agent去下发文件和执行命令。致力于解放DBA的双手,提高数据库运维的效率,让DBA为业务系统保驾护航,做更多有意义的工作。 #### 软件架构 平台架构说明 ![平台架构](img/平台架构.png) 软件架构说明 ##### 整体目录结构 ![整体目录](img/整体目录.png) ##### 前端目录结构 ![前端目录](img/前端目录.png) ##### 后端目录结构 ![后端目录](img/后端目录.png) ##### 配置文件结构 ![配置目录](img/配置文件.png) #### 安装教程 linuxos: CentOS7 python: 3.6.5 用于启动django项目 nginx: 1.16.1 用于前后端跨域对接 mq: 3.3.5 用于celery异步任务队列 http-server: 14.1.0 用于平台下发文件 ##### 第一步:安装python3.6 1、首先安装python3.6可能使用的依赖 yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel zlib-devel gcc 2、上传python源码包 tar -zxvf Python-3.6.5.tgz cd Python-3.6.5/ 3、把python3.6安装到/usr/local目录下 ./configure --prefix=/usr/local/ make make altinstall 4、更改/usr/bin/python链接 cd /usr/bin ln -s /usr/local/bin/python3.6 /usr/bin/python3 ln -s /usr/local/bin/pip3.6 /usr/bin/pip 配置python的源 如果可以访问外网 编辑pip配置: cat ~/.pip/pip.conf [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host = pypi.tuna.tsinghua.edu.cn 如果不能访问外网,参考项目的requirement.txt文件,在自己电脑下载好对应的安装包再上传 下载方法:pip download -d 文件目录 -r requirements.txt 注意,一个是平台的python包,一个是项目的python包,有两个requirement文件 下载好包之后 mkdir -p /opt/websites/dbtool/ cd /opt/websites/dbtool/ 平台环境python包文件上传 mkdir yqb-packages 平台项目包上传 mkdir yqb-env-packages 安装virtualenvwrapper pip install pbr --no-index --find-links=/opt/websites/dbtool/yqb-packages pip install stevedore --no-index --find-links=/opt/websites/dbtool/yqb-packages pip install virtualenvwrapper --no-index --find-links=/opt/websites/dbtool/yqb-packages 创建虚拟环境dbtool-env cd /opt/websites/dbtool vi .bashrc ``` export WORKON_HOME=/opt export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.6 source /usr/local/bin/virtualenvwrapper.sh export WORKON_HOME=~/.environments source /usr/local/bin/virtualenvwrapper.sh ``` source ~/.bashrc 退出下再登录 mkvirtualenv -p python3 yqbdbtool-env mkvirtualenv yqbdbtool-env ##### 第二步:安装nginx yum install nginx 如果没有nginx的源,上传nginx的rpm包 rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm 启动: systemctl start nginx 停止: nginx -s stop 配置 nginx vi /etc/nginx/nginx.conf 运行用户改成root user root; 先把原来的server部分注释了。修改为下面的配置内容: ``` server { charset utf-8; listen 80; server_name 平台服务器IP; location /static { alias /opt/websites/dbtool/yqbdbtool/frontend; } location /frontend/static { alias /opt/websites/dbtool/yqbdbtool/collected_static; } location / { proxy_set_header Host $host; proxy_pass http://平台服务器IP:8000; } } ``` ##### 第三步:虚拟环境安装相关包 workon yqbdbtool cd /opt/websites/dbtool/yqbdbtool yum install mysql-devel 在虚拟环境下使用pip install -r requirements.txt命令安装依赖包。 源可用: pip install -r requirements.txt 源不可用: pip install --no-index --find-links=/opt/websites/dbtool/yqb-env-packages -r requirements.txt 使用pip list可以看到安装了哪些包 (yqbdbtool-env) [root@db020 ~]# pip list Package Version --------------------- --------- amqp 5.0.5 asgiref 3.3.1 billiard 3.6.3.0 celery 5.0.5 certifi 2021.5.30 cffi 1.14.5 charset-normalizer 2.0.4 click 7.1.2 click-didyoumean 0.0.3 click-plugins 1.1.1 click-repl 0.1.6 cryptography 3.4.6 cx-Oracle 8.1.0 Django 3.1.5 django-celery-beat 2.2.0 django-celery-results 2.0.1 django-commands 0.7 django-timezone-field 4.1.1 djangorestframework 3.12.4 func-timeout 4.3.5 gunicorn 20.0.4 idna 3.2 importlib-metadata 3.4.0 kombu 5.0.2 mysqlclient 2.0.3 pip 21.0.1 prompt-toolkit 3.0.14 pycparser 2.20 PyMySQL 1.0.2 python-crontab 2.5.1 python-dateutil 2.8.1 pytz 2020.5 requests 2.26.0 retrying 1.3.3 setuptools 52.0.0 six 1.15.0 sql-metadata 2.3.0 sqlparse 0.4.1 supervisor 4.2.1 typing-extensions 3.7.4.3 urllib3 1.26.6 vine 5.0.0 wcwidth 0.2.5 wheel 0.36.2 xlrd 2.0.1 zipp 3.4.0 ##### 第四步:安装rabbitmq rabbitmq安装: yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel yum install rabbitmq-server 完成后启动服务: service rabbitmq-server start 可以查看服务状态: service rabbitmq-server status 如启动失败可尝试如下命令 /usr/lib/rabbitmq/bin nohup ./rabbitmq-server & 安装rabbitmq插件 /sbin/rabbitmq-plugins enable rabbitmq_management 重启rabbitmq服务 service rabbitmq-server restart 到此,就可以通过http://IP:15672 使用guest,guest 进行登陆web页面了 如果没有yum源安装mq 上传erlang的包和mq的包 安装erl 解压 tar -zxvf otp_src_22.0.tar.gz 移走 mv otp_src_22.0 /usr/local/ 切换目录 cd /usr/local/otp_src_22.0/ 创建即将安装的目录 mkdir ../erlang 配置安装路径 ./configure --prefix=/usr/local/erlang 安装 make install 查看一下是否安装成功 ll /usr/local/erlang/bin 添加环境变量 ``` echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile ``` 刷新环境变量 source /etc/profile 甩一条命令 erl 在里面输入halt().命令退出来(那个点号别忘记) 安装mq yum install -y xz 第一次解压 /bin/xz -d rabbitmq-server-generic-unix-3.7.5.tar.xz 第二次解压 tar -xvf rabbitmq-server-generic-unix-3.7.5.tar 移走 mv rabbitmq_server-3.7.5/ /usr/local/ 改名 mv /usr/local/rabbitmq_server-3.7.5 /usr/local/rabbitmq 配置环境变量 ``` echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile ``` 刷新环境变量 source /etc/profile 启动命令 启动: rabbitmq-server -detached 停止: rabbitmqctl stop 状态: rabbitmqctl status 防火墙之类的请自行处理(5672和15672端口) ##### 第五步:修改项目配置,安装gunicorn和supervisor 修改Django配置文件settings.py 项目在:/opt/websites/dbtool目录。 settings.py 文件修改数据库配置 尝试启动项目能否正常启动 cd /opt/websites/dbtool/yqbdbtool python manage.py runserver 服务器:8000 安装:pip install gunicorn --上面已安装 gunicorn 是一个WSGI HTTP Server,是针对Python的、在Unix系统上运行的、用来解析HTTP请求的网关服务。 优点:能和大多数的Python web框架兼容;使用简单;轻量级的资源消耗;高性能。 pip install gunicorn 启动Gunicorn进程: gunicorn -b 服务器IP:8000 -D yqbdbtool.wsgi:application 使用supervisor后台运行celery Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能 一、先安装supervisor 1、安装命令: pip3 install supervisor 二、安装celery pip3 install celery 三、对supervisor进行配置 1、生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 2、修改配置文件 vim /etc/supervisord.conf 在最后一行添加 [include] files = /etc/supervisor/supervisord.conf.d/*.conf 然后进入supervisord.conf.d文件夹,创建celeryd_worker.conf文件并进行如下配置: cd /etc/supervisor/supervisord.conf.d/ cat celery_worker.conf ``` [program:celeryworker] # 这个是进程的名字,随意起 command=celery --app=yqbdbtool worker -l info # 要运行的命令 directory=/opt/websites/dbtool/yqbdbtool # 运行命令的目录 numprocs=1 设置log的路径 stdout_logfile=/var/log/supervisor/celeryworker.log stderr_logfile=/var/log/supervisor/celeryworkererr.log autostart=true autorestart=true startsecs=10 stopwaitsecs = 600 priority=15 ``` 3、使用我们修改的配置文件启动supervisor supervisord -c /etc/supervisord.conf 4、supervisorctl status 命令来看我们supervisor的运行状态 你将可以看到如下的显示就表示你的后台celery已经启动成功了 celeryworker RUNNING pid 27803, uptime 0:05:33 supervisorctl的使用简单的命令: status # 查看状态 reread # 读取配置信息 update # 加载最新的进程 stop # 停止进程 start # 启动进程 reload # 重新加载配置 平台日志路径 执行日志:/opt/yqbdbtool/logs/django.log 异步celery日志:/var/log/supervisor/celeryworkererr.log ##### 第六步:项目部署 部署 1.替换代码 路径: /opt/websites/dbtool/ 2.替换setting文件 3.执行部署脚本: cd /opt/websites/dbtool/ sh deploy.sh (yqbdbtool-env) [root@db020 dbtool]# cat deploy.sh ``` cd /opt/websites/dbtool/yqbdbtool echo "开始停止服务" supervisorctl stop all systemctl stop nginx ps -ef|grep gunicorn|grep -v grep|awk '{print$2}'|xargs kill -9 ps -ef|grep django_celery_beat|grep -v grep|awk '{print$2}'|xargs kill -9 echo "开始启动服务" systemctl start nginx supervisorctl start all sh /opt/websites/dbtool/celerybeat.sh gunicorn -b 21.68.155.46:8000 -D yqbdbtool.wsgi:application echo "启动完成" ``` 注意: 如果遇到celery无法正常关闭,可以kill掉celery的进程 ``` ps -ef|grep celery|awk '{print $2}'|xargs kill -9 ``` ##### 第七步:admin管理后台 DIANGO ADMIN后台超级账号 (yqbdbtool-env) [root@db020 yqbdbtool]# python3 manage.py createsuperuser 用户名 (leave blank to use 'root'): guomingyue 电子邮件地址: Password: ******** 后台页面登陆地址:http://ip/admin ##### 第八步:http-server部署 安装npm tar -xf node-v14.1.0-linux-x64.tar.xz mv node-v14.15.4-linux-x64 /usr/local/node cd /usr/bin ln -s /usr/local/node/bin/node node ln -s /usr/local/node/bin/npm npm 安装http-server 如果npm源可用 npm install -g http-server 如果npm源不可用 本地下载好http-server包上传解压 ln -s 上传后解压目录/http-server /usr/local/bin/http-server http-server 放在要下发文件的根目录下 启动服务 http-server -a -p 8001 & ##### 第九步:初始化后端数据库 执行init.sql文件初始化 dbtool.dbtool_platformaccount这个账号表和dbtool.dbtool_settings这个配置表 ##### 第十步:平台其他说明 如果需要接入oracle,需要在平台安装oracle客户端 安装oracle客户端 mkdir -p /opt/oracle cd /opt/oracle unzip instantclient-basic-linux.x64-12.2.0.1.0.zip yum install libaio sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" ldconfig 添加到bash_profile ``` export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH mkdir -p /opt/oracle/instantclient_12_2/network/admin ``` rabbitmq如何清空queue队列数据 (推荐)清空指定queue队列的数据 rabbitmqctl purge_queue queue_name (不推荐)使用reset方式重置rabbitmq即清空掉rabbitmq所有的队列数据和配置(划重点) rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app #### 使用说明 见使用手册 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request