{"id":15033563,"url":"https://github.com/welliamcao/opsmanage","last_synced_at":"2025-05-14T14:07:22.168Z","repository":{"id":20406537,"uuid":"89847724","full_name":"welliamcao/OpsManage","owner":"welliamcao","description":"自动化运维平台: 代码及应用部署CI/CD、资产管理CMDB、计划任务管理平台、SQL审核|回滚、任务调度、站内WIKI","archived":false,"fork":false,"pushed_at":"2024-06-15T03:27:17.000Z","size":80356,"stargazers_count":3509,"open_issues_count":89,"forks_count":1626,"subscribers_count":220,"default_branch":"v3","last_synced_at":"2025-04-10T03:48:03.892Z","etag":null,"topics":["ansible","celery","cmdb","deploy","inception","webcrontab","wiki"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/welliamcao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-30T11:51:03.000Z","updated_at":"2025-04-08T11:49:38.000Z","dependencies_parsed_at":"2023-02-14T02:30:33.749Z","dependency_job_id":"cb9765ae-b63f-471e-a42a-fe0236ab9145","html_url":"https://github.com/welliamcao/OpsManage","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/welliamcao%2FOpsManage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/welliamcao%2FOpsManage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/welliamcao%2FOpsManage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/welliamcao%2FOpsManage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/welliamcao","download_url":"https://codeload.github.com/welliamcao/OpsManage/tar.gz/refs/heads/v3","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254159871,"owners_count":22024565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","celery","cmdb","deploy","inception","webcrontab","wiki"],"created_at":"2024-09-24T20:21:45.139Z","updated_at":"2025-05-14T14:07:17.158Z","avatar_url":"https://github.com/welliamcao.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## OpsManage是什么？\n一款代码部署、应用部署、计划任务、设备资产管理平台。\n\n**开源协议**：[GNU General Public License v2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)\n\n**开源声明**：欢迎大家star或者fork我的开源项目，如果大家在自己的项目里面需要引用该项目代码，请在项目里面申明协议和版权信息。\n## 开发语言与框架：\n * 编程语言：Python3.6 + HTML + JScripts\n * 前端Web框架：Bootstrap\n * 后端Web框架：Django\n * 后端Task框架：Celery + Redis\n\n## OpsManage环境要求\n * 编程语言：Python 3.6\n * 操作系统：CentOS 6+\n * Ansible版本：2.6 + \n * 部署平台及节点服务器：Rsync 3+\n * MySQL版本：5.1-5.6  #如果用5.7[请查看](https://github.com/welliamcao/OpsManage/issues/18#issuecomment-360701544)\n\n## OpsManage功能说明\n![image](https://github.com/welliamcao/OpsManage/blob/master/demo_imgs/opsmanage.png)\n\n## QQ交流群\n![image](https://github.com/welliamcao/OpsManage/blob/master/demo_imgs/qq_group.png)\n\n\u003c!--## Docker构建OpsManage\n[传送门](https://github.com/welliamcao/OpsManage/wiki/Docker%E6%9E%84%E5%BB%BAOpsManage)--\u003e\n\n## 安装环境配置\n\n注: [使用docker-compose安装](https://github.com/welliamcao/OpsManage/blob/v3/docker/README.md)推荐！！！\n\n一、安装Python\n```\n# yum install epel-release -y\n# yum install zlib zlib-devel readline-devel sqlite-devel bzip2-devel openssl-devel gdbm-devel libdbi-devel ncurses-libs kernel-devel libxslt-devel libffi-devel python-devel zlib-devel openldap-devel sshpass gcc git rabbitmq-server supervisor -y\n# yum localinstall http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm\n# yum install mysql-community-server mysql-devel -y\n# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz  #CentOS 7不用安装python2.7\n# tar -xzvf Python-3.6.6.tgz\n# cd Python-3.6.6\n# ./configure --prefix=/usr/local/python3\n# make all\n# make install\n# make clean\n# make distclean  \n# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3\n```\n\n\n二、安装模块\n```\n# cd /mnt/\n# git clone -b v3 https://github.com/welliamcao/OpsManage.git\n# cd /mnt/OpsManage/\n# pip3 install -r requirements.txt  #CentOS 7使用pip3\n```\n\n三、安装Redis\n```\n# wget http://download.redis.io/releases/redis-3.2.8.tar.gz\n# tar -xzvf redis-3.2.8.tar.gz\n# cd redis-3.2.8\n# make\n# make install\n# vim redis.conf\n```\n修改以下配置（不要配置认证）\n```\ndaemonize yes\nloglevel warning\nlogfile \"/var/log/redis.log\"\nbind 你的服务器ip地址\n例如： bind 127.0.0.1 192.168.88.201\n```\n```\n# cd ../\n# mv redis-3.2.8 /usr/local/redis\n# /usr/local/redis/src/redis-server /usr/local/redis/redis.conf\n```\n四、安装MySQL\n```\n# vim /etc/my.cnf\n[mysqld]\ncharacter_set_server = utf8\n添加以上字段\n# /etc/init.d/mysqld restart     \t#centos 6\n# systemctl start mysqld.service \t#centos 7\n# mysql -uroot -p  \t\t\t\t#初始密码为空，直接回车就行\nmysql\u003e create database opsmanage DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;\nmysql\u003e grant all privileges on opsmanage.* to root@'%' identified by 'password';\nmysql\u003e\\q\n```\n五、配置RabbitMQ\n\n```\n# systemctl start rabbitmq-server.service    #启动RabbitMQ\n# systemctl enable rabbitmq-server.service   #设置开机自启动RabbitMQ\n# rabbitmqctl add_user admin admin           #添加RabbitMQ账户\n# rabbitmqctl set_user_tags admin administrator\n# rabbitmqctl set_permissions  -p  '/'  admin '.' '.' '.'\n# rabbitmqctl list_users   \n# rabbitmqctl delete_user guest \t\t\t #删除guest账户（可以不删除）\n# rabbitmq-plugins enable rabbitmq_management   #开启Web UI，可以通过http://server_IP:15672/访问\n```\n\n六、配置OpsManage\n\n```\n# cd /mnt/OpsManage/conf\n# vim opsmanage.ini\n根据自己的情况修改配置\n\n```\n七、生成数据表与管理员账户\n```\n# cd /mnt/OpsManage/\n# /usr/local/python3/bin/python3 manage.py makemigrations account\n# /usr/local/python3/bin/python3 manage.py makemigrations wiki\n# /usr/local/python3/bin/python3 manage.py makemigrations orders\n# /usr/local/python3/bin/python3 manage.py makemigrations navbar\n# /usr/local/python3/bin/python3 manage.py makemigrations databases\n# /usr/local/python3/bin/python3 manage.py makemigrations asset\n# /usr/local/python3/bin/python3 manage.py makemigrations deploy\n# /usr/local/python3/bin/python3 manage.py makemigrations cicd\n# /usr/local/python3/bin/python3 manage.py makemigrations sched\n# /usr/local/python3/bin/python3 manage.py makemigrations apply\n# /usr/local/python3/bin/python3 manage.py migrate\n# /usr/local/python3/bin/python3 manage.py createsuperuser  #创建管理员账户与密码\n```\n```\n# 如果出现错误ImportError: cannot import name 'LDAPError'\npip3 uninstall python-ldap\npip3 install --upgrade python-ldap\n```\n八、启动部署平台\n```\n# echo_supervisord_conf \u003e /etc/supervisord.conf\n# export PYTHONOPTIMIZE=1\n# vim /etc/supervisord.conf\n最后添加，/var/log/celery-*.log这些是日志文件，如果有错误请注意查看，directory的值是代码路径\n[program:celery-worker-default]\nenvironment=C_FORCE_ROOT=\"true\",PYTHONOPTIMIZE=1\ncommand=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q default -n worker-default@%%h\ndirectory=/mnt/OpsManage\nstdout_logfile=/var/log/celery-worker-default.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstopsignal=QUIT\nnumprocs=1\n\n[program:celery-worker-ansible]\nenvironment=C_FORCE_ROOT=\"true\",PYTHONOPTIMIZE=1\ncommand=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q ansible -n worker-ansible@%%h\ndirectory=/mnt/OpsManage\nstdout_logfile=/var/log/celery-worker-ansible.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstopsignal=QUIT\nnumprocs=1\n\n[program:celery-beat]\nenvironment=C_FORCE_ROOT=\"true\",PYTHONOPTIMIZE=1\ncommand=/usr/local/python3/bin/celery -A OpsManage  beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler\ndirectory=/mnt/OpsManage\nstdout_logfile=/var/log/celery-beat.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstopsignal=QUIT\nnumprocs=1\n\n[program:apply-task]\nenvironment=C_FORCE_ROOT=\"true\",PYTHONOPTIMIZE=1\ncommand=/usr/local/python3/bin/python3 manage.py apply_task\ndirectory=/mnt/OpsManage\nstdout_logfile=/var/log/apply-task.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstopsignal=QUIT\nnumprocs=1\n\n\n[program:opsmanage-web]\ncommand=/usr/local/python3/bin/python3 manage.py runserver 0.0.0.0:8000 --http_timeout 1200\ndirectory=/mnt/OpsManage\nstdout_logfile=/var/log/opsmanage-web.log   \nstderr_logfile=/var/log/opsmanage-web-error.log\nautostart=true\nautorestart=true\nredirect_stderr=true\nstopsignal=QUIT\n\n\n\n启动celery\n# supervisord -c /etc/supervisord.conf\n# supervisorctl status #要检查是否都是running状态，uptime是不是递增\n\n\n配置nginx（请注意服务器上面是否安装了Nginx）：\n# vim /etc/nginx/conf.d/opsmanage.conf \nserver {\n    listen 80 ;\n    server_name 192.168.1.233;  #192.168.1.233替换成自己服务器的IP地址\n\n    access_log /var/log/nginx/opsmanage_access.log;\n    error_log /var/log/nginx/opsmanage_error.log;\n\n    location / {\n        proxy_next_upstream off;\n        proxy_set_header    X-Real-IP           $remote_addr;\n        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;\n        proxy_set_header    Host                $host;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_pass http://192.168.1.233:8000$request_uri;  #192.168.1.233替换成自己服务器的IP地址\n    }\n    location /static/ {\n        expires 30d;\n        autoindex on;\n        add_header Cache-Control private;\n        alias /mnt/OpsManage/static/;\n     }\n    location /media/navbar/ {\n        expires 30d;\n        autoindex on;\n        add_header Cache-Control private;\n        alias /mnt/OpsManage/upload/navbar/;\n     }   \n\tlocation /media/avatar/ {\n        expires 30d;\n        autoindex on;\n        add_header Cache-Control private;\n        alias /mnt/OpsManage/upload/avatar/;\n     }     \n    location /media/apply/icon/ {\n        expires 30d;\n        autoindex on;\n        add_header Cache-Control private;\n        alias /mnt/OpsManage/upload/apply/icon/;\n     }     \n}\n# nginx -t  #检查配置文件\n# service start nginx\t\t\t #CentOS 6\n# systemctl start nginx.service  #CentOS 7\n```\n\n\n九、使用OpsManage分布式任务调度功能，不使用的话可以不进行下面的步骤\n```\n# mkdir -p /usr/local/opsched\n# cp /mnt/OpsManage/opsched/* /usr/local/opsched/\n# vim /usr/local/opsched/sched.conf \n# 注意修改里面secret跟ops_address的值，修改成自己的配置\n# /usr/local/opsched/opsched -f /usr/local/opsched/sched.conf -a check      #检查配置看看有没有报错\n# /usr/local/opsched/opsched -f /usr/local/opsched/sched.conf -a runserver  #正式运行 \n```\n\n十、demo地址\n\n```\nURL: http://42.194.214.22:8000/\nUserName：demo\nPassword：demo\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwelliamcao%2Fopsmanage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwelliamcao%2Fopsmanage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwelliamcao%2Fopsmanage/lists"}