GithubHelp home page GithubHelp logo

welliamcao / opsmanage Goto Github PK

View Code? Open in Web Editor NEW
3.3K 223.0 1.6K 78.35 MB

自动化运维平台: 代码及应用部署CI/CD、资产管理CMDB、计划任务管理平台、SQL审核|回滚、任务调度、站内WIKI

License: GNU General Public License v2.0

Python 99.94% Dockerfile 0.01% Shell 0.01% SCSS 0.05%
deploy cmdb webcrontab celery inception ansible wiki

opsmanage's Introduction

OpsManage是什么?

一款代码部署、应用部署、计划任务、设备资产管理平台。

开源协议GNU General Public License v2

开源声明:欢迎大家star或者fork我的开源项目,如果大家在自己的项目里面需要引用该项目代码,请在项目里面申明协议和版权信息。

开发语言与框架:

  • 编程语言:Python3.6 + HTML + JScripts
  • 前端Web框架:Bootstrap
  • 后端Web框架:Django
  • 后端Task框架:Celery + Redis

OpsManage环境要求

  • 编程语言:Python 3.6
  • 操作系统:CentOS 6+
  • Ansible版本:2.6 +
  • 部署平台及节点服务器:Rsync 3+
  • MySQL版本:5.1-5.6 #如果用5.7请查看

OpsManage功能说明

image

QQ交流群

image

安装环境配置

一、安装Python

# yum install epel-release -y
# 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
# yum localinstall http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum install mysql-community-server mysql-devel -y
# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz  #CentOS 7不用安装python2.7
# tar -xzvf Python-3.6.6.tgz
# cd Python-3.6.6
# ./configure --prefix=/usr/local/python3
# make all
# make install
# make clean
# make distclean  
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

二、安装模块

# cd /mnt/
# git clone -b v3 https://github.com/welliamcao/OpsManage.git
# cd /mnt/OpsManage/
# pip3 install -r requirements.txt  #CentOS 7使用pip3

三、安装Redis

# wget http://download.redis.io/releases/redis-3.2.8.tar.gz
# tar -xzvf redis-3.2.8.tar.gz
# cd redis-3.2.8
# make
# make install
# vim redis.conf

修改以下配置(不要配置认证)

daemonize yes
loglevel warning
logfile "/var/log/redis.log"
bind 你的服务器ip地址
例如: bind 127.0.0.1 192.168.88.201
# cd ../
# mv redis-3.2.8 /usr/local/redis
# /usr/local/redis/src/redis-server /usr/local/redis/redis.conf

四、安装MySQL

# vim /etc/my.cnf
[mysqld]
character_set_server = utf8
添加以上字段
# /etc/init.d/mysqld restart     	#centos 6
# systemctl start mysqld.service 	#centos 7
# mysql -uroot -p  				#初始密码为空,直接回车就行
mysql> create database opsmanage DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on opsmanage.* to root@'%' identified by 'password';
mysql>\q

五、配置RabbitMQ

# systemctl start rabbitmq-server.service    #启动RabbitMQ
# systemctl enable rabbitmq-server.service   #设置开机自启动RabbitMQ
# rabbitmqctl add_user admin admin           #添加RabbitMQ账户
# rabbitmqctl set_user_tags admin administrator
# rabbitmqctl set_permissions  -p  '/'  admin '.' '.' '.'
# rabbitmqctl list_users   
# rabbitmqctl delete_user guest 			 #删除guest账户(可以不删除)
# rabbitmq-plugins enable rabbitmq_management   #开启Web UI,可以通过http://server_IP:15672/访问

六、配置OpsManage

# cd /mnt/OpsManage/conf
# vim opsmanage.ini
根据自己的情况修改配置

七、生成数据表与管理员账户

# cd /mnt/OpsManage/
# /usr/local/python3/bin/python3 manage.py makemigrations account
# /usr/local/python3/bin/python3 manage.py makemigrations wiki
# /usr/local/python3/bin/python3 manage.py makemigrations orders
# /usr/local/python3/bin/python3 manage.py makemigrations navbar
# /usr/local/python3/bin/python3 manage.py makemigrations databases
# /usr/local/python3/bin/python3 manage.py makemigrations asset
# /usr/local/python3/bin/python3 manage.py makemigrations deploy
# /usr/local/python3/bin/python3 manage.py makemigrations cicd
# /usr/local/python3/bin/python3 manage.py makemigrations sched
# /usr/local/python3/bin/python3 manage.py makemigrations apply
# /usr/local/python3/bin/python3 manage.py migrate
# /usr/local/python3/bin/python3 manage.py createsuperuser  #创建管理员账户与密码
# 如果出现错误ImportError: cannot import name 'LDAPError'
pip3 uninstall python-ldap
pip3 install --upgrade python-ldap

八、启动部署平台

# echo_supervisord_conf > /etc/supervisord.conf
# export PYTHONOPTIMIZE=1
# vim /etc/supervisord.conf
最后添加,/var/log/celery-*.log这些是日志文件,如果有错误请注意查看,directory的值是代码路径
[program:celery-worker-default]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q default -n worker-default@%%h
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-default.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:celery-worker-ansible]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q ansible -n worker-ansible@%%h
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-ansible.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:celery-beat]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage  beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-beat.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:apply-task]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/python3 manage.py apply_task
directory=/mnt/OpsManage
stdout_logfile=/var/log/apply-task.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1


[program:opsmanage-web]
command=/usr/local/python3/bin/python3 manage.py runserver 0.0.0.0:8000 --http_timeout 1200
directory=/mnt/OpsManage
stdout_logfile=/var/log/opsmanage-web.log   
stderr_logfile=/var/log/opsmanage-web-error.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT



启动celery
# supervisord -c /etc/supervisord.conf
# supervisorctl status #要检查是否都是running状态,uptime是不是递增


配置nginx(请注意服务器上面是否安装了Nginx):
# vim /etc/nginx/conf.d/opsmanage.conf 
server {
    listen 80 ;
    server_name 192.168.1.233;

    access_log /var/log/nginx/opsmanage_access.log;
    error_log /var/log/nginx/opsmanage_error.log;

    location / {
        proxy_next_upstream off;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    Host                $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://192.168.1.233:8000$request_uri;
    }
    location /static/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/static/;
     }
    location /media/navbar/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/navbar/;
     }   
	location /media/avatar/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/avatar/;
     }     
    location /media/apply/icon/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/apply/icon/;
     }     
}
# nginx -t  #检查配置文件
# service start nginx			 #CentOS 6
# systemctl start nginx.service  #CentOS 7

九、使用OpsManage分布式任务调度功能,不使用的话可以不进行下面的步骤

# mkdir -p /usr/local/opsched
# cp /mnt/OpsManage/opsched/* /usr/local/opsched/
# vim /usr/local/opsched/sched.conf 
# 注意修改里面secret跟ops_address的值,修改成自己的配置
# /usr/local/opsched/opsched -f /usr/local/opsched/sched.conf -a check      #检查配置看看有没有报错
# /usr/local/opsched/opsched -f /usr/local/opsched/sched.conf -a runserver  #正式运行 

十、demo地址

URL: http://42.194.214.22:8000/
UserName:demo
Password:demo

opsmanage's People

Contributors

apeacecoder avatar atompi avatar hectorhua avatar jenly avatar jumping avatar siruoren avatar staugur avatar welliamcao avatar zaghost avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opsmanage's Issues

建议添加gateone说明,以解决:Unit gateone.service not found问题

Ubuntu 16.04系统环境下,启动gateone service会报错:Unit gateone.service not found,可用如下方式解决:

添加/lib/systemd/system/gateone.service

[Unit]
Description=Web-based terminal

[Service]
Type=simple
PIDFile=/tmp/gateone.pid
WorkingDirectory=/var/lib/gateone
ExecStart=/usr/local/bin/gateone
Restart=on-abort

[Install]
WantedBy=multi-user.target

settings.py脚本内相关问题

我想问下settings.py中的你定义的redis 的这个参数BROKER_URL = 'redis://121.199.26.4:6379/3' 端口号后面的3是什么意思?(你redis创建好后需要创建key吗?)还有我启动你下面的异步Celery ,但是追加的日志中总是报无法连接ERROR/MainProcess] consumer: Cannot connect to redis://121.199.26.4:6379/3: .
Trying again in 32.00 seconds... (尝试安装rabbitmq也无果)

部署问题

请问使用nginx+django有这样部署过吗

资产编号重复,添加资产失败

新增资产时,点击确认提交后,返回资产编号重复,添加资产失败,但实际是添加成功的,入库也是正常。

请求日志如下
[11/Sep/2017 17:14:50] "GET /assets_add HTTP/1.1" 200 35294
[11/Sep/2017 17:14:51] "GET /api/order/admin/ HTTP/1.1" 200 2
[11/Sep/2017 17:15:53] "POST /api/server/ HTTP/1.1" 500 16475

解决 migrate 时的一个 Warning 'No module named service_identity'

requirements.txt 中添加:

service_identity

以解决 migrate 生成数据表时的warning:

:0: UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'.  Please install it from <https://pypi.python.org/pypi/service_identity> and make sure all of its dependencies are satisfied.  Without the service_identity module, Twisted can perform only rudimentary TLS client hostname verification.  Many valid certificate/hostname mappings may be rejected.

AND

requirements.txt 能不能按首字母排序一下 😂

比如这样:

ansible==2.2.2
asgi-redis==1.4.3
asgiref==1.1.2
Celery==3.1.20
celery-with-redis
channels==1.1.7
DBUtils
Django==1.11.7
django-celery==3.2.2
djangorestframework==3.5.3
MySQL-python
paramiko
redis
service_identity
supervisor
xlrd

这个版本安装无法创建 opsmanage_* 表

执行 python manage.py migrate 后:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, djcelery, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying djcelery.0001_initial... OK
  Applying sessions.0001_initial... OK

opsmanage 库中没有 opsmanage_*

发布的问题

1.deploy_run.html里面关于svn库和分支版本的问题
{% if project.project_model == 'branch' and project.project_repertory == 'git' %}
{% elif project.project_model == 'tag' and project.project_repertory == 'git' %}
{% else %}
如果我用的svn,分支是tag那就是要执行else下面的,但是下面的是不POST的,我在deploy.py里面的deploy_run函数里面看到elif project.project_model == 'tag':
bName = request.POST.get('project_branch')这句,都没有POST数据这里怎么获取的,我不是太清楚。
还有if request.POST.get('project_mode',None) == "rollback":这句我在deploy_run.html里面没看到有name为project_mode的呢?
谢谢解答

celery

调用tasks中的方法 recordAssets.delay() delay方法没有执行
celery配置为
''' celery config ''' djcelery.setup_loader() BROKER_URL = 'redis://192.168.1.***:6379/3' CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend' CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'pickle' CELERY_ACCEPT_CONTENT = ['json', 'pickle'] CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 CELERYD_MAX_TASKS_PER_CHILD = 40 CELERY_TRACK_STARTED = True CELERY_TIMEZONE='Asia/Shanghai' platforms.C_FORCE_ROOT = True

权限没有做好吗

资产管理 和 发布 想让不同的人管 已经建了两个不同的组 ,对组分配了不同的 权限,但是资产管理组下的人 只有 基础配置有权限 其它的 还是没权限 ,即便对这个账户单独设置其它几个菜单权限也没用,
最终还是只有超级用户 能够访问所有的菜单

资产添加失败

添加资产显示错误,更新本地数据库依旧如此。【资产编号重复,添加资产失败~】资产编号貌似有问题

项目部署失败

项目部署失败:xxx正在部署改项目,请稍后再提交部署。
可是当前并没有部署。

启动服务报错。。

[root@www01 OpsManage]# python manage.py runserver ip:8000
Performing system checks...

System check identified no issues (0 silenced).
July 22, 2017 - 22:33:29
Django version 1.8.17, using settings 'OpsManage.settings'
Starting development server at http://ip:8000/
Quit the server with CONTROL-C.
Error: [Errno -2] Name or service not known

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN

mysql> show tables;
+--------------------------------------------+
| Tables_in_opsmanage |
+--------------------------------------------+
| OpsManage_ansible_callback_model_result |
| OpsManage_ansible_callback_playbook_result |
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| celery_taskmeta |

mysql> select id,password from auth_user;
+----+-------------------------------------------------------------------------------+
| id | password |
+----+-------------------------------------------------------------------------------+
| 1 | pbkdf2_sha256$20000$0dVCzn988kfU$vELZOB1+wHjuQNq3O2UlqvGJkqL1j1LE/BNOCQWk1vQ= |
+----+-------------------------------------------------------------------------------+
1 row in set (0.00 sec)

部署过程无误打开页面出错

你好大神,本人python初学者,在运行完python manage.py runserver 192.168.1.234:8000之后,是没有发生错误的,信息如下

Django version 1.8.17, using settings 'OpsManage.settings'
Starting development server at http://192.168.1.234:8000/
Quit the server with CONTROL-C.

但是点开http://192.168.1.234:8000/之后,django会报错,报错信息如下

Request Method: | GET

Request URL:  http://192.168.1.234:8000/
Django Version:  1.8.17
Exception Type:  ImproperlyConfigured
Exception Value:  Cannot override the namespace for a dynamic module that provides a namespace
Exception Location:  /usr/local/lib/python2.7/site-packages/django/conf/urls/__init__.py in include, line 26
Python Executable:  /usr/local/bin/python
Python Version:  2.7.12

请问这是什么原因造成的啊?

添加 部署之后执行的命令后部署就会失败

如果填入部署之后执行的命令部署的时候就会失败,为空的时候 就部署成功。打印2次的dataList如下:
[{'msg': 'Ansible synchronize with src=/data/webserver/project/huimu/ dest=/data/game/ links=yes recursive=yes compress=yes delete=yes rsync_opts="--exclude ".git" " execute success.', 'ip': u'192.168.1.151', 'status': 'succeed'}]

命令为:/etc/init.d/tomcat restart
[{'msg': u'', 'ip': u'192.168.13.151', 'status': 'failed'}]
不清楚这是什么原因。。。有遇到过吗

能增加日志吗

页面报错,但是看不出什么原因,后台能输出一些日志吗

功能需求

资产管理

  1. 批量更新主机信息
  2. 主机信息导出
  3. 批量删除主机
    发布
  4. Windows 下代码发布
    自动化
  5. Windows 管理
    主机管理
  6. Widows RDP 管理

剧本

剧本能不能 给个demo 参考下, 我每次 导入的剧本 都是 不能执行

更新apps_models.html文件

ansible 模块管理界面
模块类型选择“自定义”后,再次在模块类型选择“ping”,下面的“自定义模块“不会隐藏

apps_model.html添加
else if (value=="ping"){
document.getElementById("ansible_args").value="";
document.getElementById("custom_model").style.display = "none";
}

代码发布不成功

  1. svn 代码发布,点击发布出现503页面,svn用户名和密码都是正确的。
  2. git 代码发布取不到相应的版本。
    求解,有没有人配置成功的,求配置手册。

这次更新有一个拼写错误

单词漏写会一个报错哦,master分支有错误,beta分支没有。

已在commit : "修复修改页面模板出现None值的bug" 出错行指出。

安装GateOne错误提示汇总

查看GateOne日志出现以下错误:

SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib

可以通过pip安装以下两个模块解决:

pip install pyopenssl ordereddict

你好很高兴看到你的项目

你好,想问下我的剧本执行有问题,想请教下,你在测试的时候有没有试过当执行错误的剧本的时候什么反应的,

分支问题

当我有一个master 一个Dev2个分支的时候 。我初始化后,点击"部署"后,在分支里面只看的到master分支,看不到dev分支。就是说初始化clone的时候 本地只有master分支,但是我要发布的是dev分支的东西。怎么弄

添加资产和运行模块相关问题

我这边搭建好后,每次添加资产,都会提示我数据格式不对(使用的是账户密码模式,我密码也没特殊符号,8位数)还有个问题添加资产错误,但是点击后还是能添加上去,然后我运行应用部署里面的运行模块
使用shell uptime命令,然后执行结果就是一直在执行中,无结果,不知道什么问题,麻烦解答下?
110
114

`pip install Celery`安装错误

Downloading/unpacking Celery
Downloading celery-4.0.2-py2.py3-none-any.whl (396kB): 396kB downloaded
Downloading/unpacking billiard>=3.5.0.2,<3.6.0 (from Celery)
Downloading billiard-3.5.0.2.tar.gz (157kB): 157kB downloaded
Running setup.py (path:/tmp/pip_build_root/billiard/setup.py) egg_info for package billiard
Traceback (most recent call last):
File "", line 17, in
File "/tmp/pip_build_root/billiard/setup.py", line 90, in
raise ValueError('Versions of Python before 2.7 are not supported')
ValueError: Versions of Python before 2.7 are not supported
Complete output from command python setup.py egg_info:
Traceback (most recent call last):

File "", line 17, in

File "/tmp/pip_build_root/billiard/setup.py", line 90, in

raise ValueError('Versions of Python before 2.7 are not supported')

ValueError: Versions of Python before 2.7 are not supported


Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_root/billiard
Storing debug log for failure in /root/.pip/pip.log

是按照readme文档步骤安装的,谢谢

ansible_args

apps_models.html与ansible.py中是不是有几处ansible_args错写成ansible_agrs了?
导致ansible运行模块时获取不到args

资产管理的疑问

1资产管理部分,是否支持自定义属性(或叫字段)?
2不提供批量导入或者接口操作吗?

是否有在线演示环境?

是否有在线演示环境?感觉部署起来有点麻烦,所以想在看看部署后的效果是什么样子的

SVN发布问题

1.如果我用的是svn来控制版本,那svn是不是要安装标准的模式下面分trunk,branch,tag来做,前面我只用一个目录来做,部署的时候一直不成功,还没找到原因。

2.还有个问题是,我觉得是不是在添加服务器的时候就确定这台服务器属于某个项目,这样在发布的时候就不用选择了,这样是不是更好。如果是在部署的时候还能修改,会不会发生漏更的问题?
谢谢回答

svn部署报错

初始化后,点击部署到部署服务器-版本选择,没有可以选择版本。点击确认部署报错:(错误,请注意必填项不能为空)

关于部署

您好,对您这个项目很感兴趣,README里面部署过程中安装了easy_install,但是我看后面部署过程都没用过这个命令,这是为什么?有些软件的版本有要求么?比如pip。谢谢!

Django1.11.2

+----------------------------+

Tables_in_opsmanage
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
celery_taskmeta
celery_tasksetmeta
django_admin_log
django_content_type
django_migrations
django_session
djcelery_crontabschedule
djcelery_intervalschedule
djcelery_periodictask
djcelery_periodictasks
djcelery_taskstate
djcelery_workerstate
+----------------------------+
只有这些表被创建了,是为啥

代码发布疑问

代码发布中,很多项目的发布方法可能不一样,没有找到输入关于发布的命令,或者脚本,怎么发布的?

使用nginx+uwsgi部署项目 ansible synchronize模块无法执行

之前提到过这个问题 python为2.7.13 ansible、uwsgi都装到/usr/local/lib/python2.7/site-packages下了。
[Start] Ansible 模块类型: synchronize 命令内容:src=/root/a dest=/tmp/ compress=yes 192.168.3.165 | FAILED! => { "_ansible_parsed": false, "_ansible_no_log": false, "module_stderr": "unable to load configuration from /root/.ansible/tmp/ansible-tmp-1511777799.47-133894082603415/synchronize.py\n", "module_stdout": "", "failed": true, "msg": "MODULE FAILURE" }

ImportError: cannot import name COMMAND

[root@localhost OpsManage]# python manage.py runserver 192.168.26:8000
Performing system checks...

Unhandled exception in thread started by <function wrapper at 0x7fc72425a938>
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 229, in wrapper
fn(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/channels/management/commands/runserver.py", line 55, in inner_run
self.check(display_num_errors=True)
File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 482, in check
include_deployment_checks=include_deployment_checks,
File "/usr/local/lib/python2.7/site-packages/django/core/checks/registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "/usr/local/lib/python2.7/site-packages/django/core/checks/model_checks.py", line 28, in check_all_models
errors.extend(model.check(**kwargs))
File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 1205, in check
errors.extend(cls._check_fields(**kwargs))
File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 1282, in _check_fields
errors.extend(field.check(**kwargs))
File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 934, in check
errors = super(AutoField, self).check(**kwargs)
File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 207, in check
errors.extend(self._check_backend_specific_checks(**kwargs))
File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 306, in _check_backend_specific_checks
return connection.validation.check_field(self, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/validation.py", line 18, in check_field
field_type = field.db_type(connection)
File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 614, in db_type
return connection.data_types[self.get_internal_type()] % data
File "/usr/local/lib/python2.7/site-packages/django/db/init.py", line 36, in getattr
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 59, in get
res = instance.dict[self.name] = self.func(instance)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 196, in data_types
if self.features.supports_microsecond_precision:
File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 59, in get
res = instance.dict[self.name] = self.func(instance)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
File "/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 59, in get
res = instance.dict[self.name] = self.func(instance)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
with self.temporary_connection():
File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter
return self.gen.next()
File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 462, in temporary_connection
cursor = self.cursor()
File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 162, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 135, in _cursor
self.ensure_connection()
File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection
self.connect()
File "/usr/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 119, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
conn = Database.connect(**conn_params)
File "/usr/local/lib/python2.7/site-packages/MySQLdb/init.py", line 80, in Connect
from MySQLdb.connections import Connection
File "/usr/local/lib/python2.7/site-packages/pymysql/connections.py", line 20, in
from .constants import CLIENT, COMMAND, CR, FIELD_TYPE, SERVER_STATUS
ImportError: cannot import name COMMAND
这是什么错误

项目配置里面排除文件非空会部署失败

由于exclude是从上面获取 格式如下:exclude = --exclude "{file}" 因此当赋值到synchronize模块参数的时候 不符合该模块语法 rsync_opts="{exclude}"
因此会提示 rsync语法错误

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.