welliamcao / OpsManage

自动化运维平台: 代码及应用部署CI/CD、资产管理CMDB、计划任务管理平台、SQL审核|回滚、任务调度、站内WIKI
GNU General Public License v2.0
3.43k stars 1.6k forks source link

基于CentOS 6.9的OpsManage手动部署实践分享 #96

Open wsgzao opened 6 years ago

wsgzao commented 6 years ago

OpsManage

  1. 作者已经说了,我不再重复
  2. 为什么发布在Issues是因为自己在CentOS 7部署不顺利,而在CentOS 6版本中也踩了不少坑,在作者原有基础上做了一些补充说明,希望大家可以顺利搭建Demo

安装环境配置

实际环境基于CentOS 6.9操作,实测CentOS 7 以上版本部分软件包不兼容,需要自行修复

一、安装Python

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 mysql-devel zlib-devel mysql-server sshpass gcc git -y
wget http://mirrors.sohu.com/python/2.7.12/Python-2.7.12.tgz
tar -xzvf Python-2.7.12.tgz
cd Python-2.7.12
./configure
make all
make install
make clean
make distclean 
mv /usr/bin/python /usr/bin/python2.6.6  
ln -s /usr/local/bin/python2.7 /usr/bin/python 
vi /usr/bin/yum  
将文件头部的
#!/usr/bin/python

改成
#!/usr/bin/python2.6.6

二、安装easy_install

wget --no-check-certificate  https://pypi.python.org/packages/f7/94/eee867605a99ac113c4108534ad7c292ed48bf1d06dfe7b63daa51e49987/setuptools-28.0.0.tar.gz#md5=9b23df90e1510c7353a5cf07873dcd22
tar -xzvf setuptools-28.0.0.tar.gz
cd setuptools-28.0.0
python  setup.py  install

三、安装pip

wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz -O pip-1.5.5.tar.gz
tar -xzvf pip-1.5.5.tar.gz
cd pip-1.5.5/
python setup.py install
pip install -U pip 

四、安装模块

cd /mnt/
git clone https://github.com/welliamcao/OpsManage.git
cd /mnt/OpsManage/
pip install -r requirements.txt  #注意,如果出现错误不要跳过,请根据错误信息尝试解决
easy_install paramiko==2.4.1

五、安装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 127.0.0.1
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 start
mysql -uroot -p
[回车,默认无密码]

mysql> show databases;
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> create database opsmanage DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on opsmanage.* to root@'%' identified by 'password';
mysql> FLUSH PRIVILEGES;
mysql> quit

/etc/init.d/mysqld restart

七、配置OpsManage

/mnt/OpsManage/OpsManage
vim settings.py
BROKER_URL =  redis://127.0.0.1:6379/3 #修改成自己的配置,格式是redis://[:password]@host:port/db
REDSI_KWARGS_LPUSH = {"host":'127.0.0.1','port':6379,'db':3} #修改成自己的配置
DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        'NAME':'opsmanage',
        'USER':'root',      #修改成自己的配置
        'PASSWORD':'password',  #修改成自己的配置
        'HOST':'127.0.0.1', #修改成自己的配置
        'PORT': 3306
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ["/mnt/OpsManage/OpsManage/static/",'/mnt/OpsManage/OpsManage/templates/'], #修改成自己的配置
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
STATICFILES_DIRS = (
     '/mnt/OpsManage/OpsManage/static/',    #修改成自己的配置
    )
TEMPLATE_DIRS = (
#     os.path.join(BASE_DIR,'mysite\templates'),
    '/mnt/OpsManage/OpsManage/templates/',  #修改成自己的配置
)
SFTP_CONF = {
             'port':22,
             'username':'root',
             'password':'admin123',
             'timeout':30
             }  #修改成自己的配置

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

cd /mnt/OpsManage/
python manage.py makemigrations OpsManage
python manage.py makemigrations wiki
python manage.py makemigrations orders
python manage.py migrate
python manage.py createsuperuser

九、启动部署平台

cd /mnt/OpsManage/
python manage.py runserver 0.0.0.0:8000

十、配置证书认证

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ipaddress

十一、配置Celery异步任务系统

echo_supervisord_conf > /etc/supervisord.conf
export PYTHONOPTIMIZE=1
vim /etc/supervisord.conf
最后添加
[program:celery-worker-default]
command=/usr/bin/python manage.py celery worker --loglevel=info -E -Q default
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]
command=/usr/bin/python manage.py celery worker --loglevel=info -E -Q ansible
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]
command=/usr/bin/python manage.py celery beat
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-beat.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:celery-cam]
command=/usr/bin/python manage.py celerycam
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-celerycam.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

启动celery
/usr/local/bin/supervisord -c /etc/supervisord.conf
supervisorctl status #要检查是否都是running状态

十二、SQL审核

自行安装Inception与SQLadvisor,SQLadvisor可执行文件请放在OpsManage服务器/usr/bin/sqladvisor路径
eagle2016 commented 6 years ago

没有啊,我用的centos7.3,跑的好好的。

orangefei commented 6 years ago

我用的centos7.2 也挺好的

aa644728538 commented 6 years ago

九、启动部署平台,报错怎么解决啊? Exception in thread Thread-5: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 812, in __bootstrap_inner self.run() File "/usr/lib/python2.7/site-packages/channels/management/commands/runserver.py", line 176, in run worker.run() File "/usr/lib/python2.7/site-packages/channels/worker.py", line 87, in run channel, content = self.channel_layer.receive_many(channels, block=True) File "/usr/lib/python2.7/site-packages/asgiref/base_layer.py", line 43, in receive_many return self.receive(channels, block) File "/usr/lib/python2.7/site-packages/asgi_redis/core.py", line 168, in receive result = connection.blpop(list_names, timeout=self.blpop_timeout) File "/usr/lib/python2.7/site-packages/redis/client.py", line 1269, in blpop return self.execute_command('BLPOP', keys) File "/usr/lib/python2.7/site-packages/redis/client.py", line 673, in execute_command connection.send_command(args) File "/usr/lib/python2.7/site-packages/redis/connection.py", line 610, in send_command self.send_packed_command(self.pack_command(*args)) File "/usr/lib/python2.7/site-packages/redis/connection.py", line 585, in send_packed_command self.connect() File "/usr/lib/python2.7/site-packages/redis/connection.py", line 489, in connect raise ConnectionError(self._error_message(e)) ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

welliamcao commented 6 years ago

redis.conf 这个文件bind 字段你配置的是什么?

aa644728538 commented 6 years ago

redis服务没启动,启了就好了发自我的华为手机-------- 原始邮件 --------主题:Re: [welliamcao/OpsManage] 基于CentOS 6.9的OpsManage手动部署实践分享 (#96)发件人:"William.Cao" 收件人:welliamcao/OpsManage 抄送:aa644728538 ,Comment redis.conf 这个文件bind 字段你配置的是什么?

—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or mute the thread. {"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/welliamcao/OpsManage","title":"welliamcao/OpsManage","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/welliamcao/OpsManage"}},"updates":{"snippets":[{"icon":"PERSON","message":"@welliamcao in #96: redis.conf 这个文件bind 字段你配置的是什么?"}],"action":{"name":"View Issue","url":"https://github.com/welliamcao/OpsManage/issues/96#issuecomment-409105291"}}} [ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/welliamcao/OpsManage/issues/96#issuecomment-409105291", "url": "https://github.com/welliamcao/OpsManage/issues/96#issuecomment-409105291", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } }, { "@type": "MessageCard", "@context": "http://schema.org/extensions", "hideOriginalBody": "false", "originator": "AF6C5A86-E920-430C-9C59-A73278B5EFEB", "title": "Re: [welliamcao/OpsManage] 基于CentOS 6.9的OpsManage手动部署实践分享 (#96)", "sections": [ { "text": "", "activityTitle": "William.Cao", "activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png", "activitySubtitle": "@welliamcao", "facts": [

] } ], "potentialAction": [ { "name": "Add a comment", "@type": "ActionCard", "inputs": [ { "isMultiLine": true, "@type": "TextInput", "id": "IssueComment", "isRequired": false } ], "actions": [ { "name": "Comment", "@type": "HttpPOST", "target": "https://api.github.com", "body": "{\n\"commandName\": \"IssueComment\",\n\"repositoryFullName\": \"welliamcao/OpsManage\",\n\"issueId\": 96,\n\"IssueComment\": \"{{IssueComment.value}}\"\n}" } ] }, { "name": "Close issue", "@type": "HttpPOST", "target": "https://api.github.com", "body": "{\n\"commandName\": \"IssueClose\",\n\"repositoryFullName\": \"welliamcao/OpsManage\",\n\"issueId\": 96\n}" }, { "targets": [ { "os": "default", "uri": "https://github.com/welliamcao/OpsManage/issues/96#issuecomment-409105291" } ], "@type": "OpenUri", "name": "View on GitHub" }, { "name": "Unsubscribe", "@type": "HttpPOST", "target": "https://api.github.com", "body": "{\n\"commandName\": \"MuteNotification\",\n\"threadId\": 336607256\n}" } ], "themeColor": "26292E" } ]

aadaniu commented 5 years ago

还是灰常不错的,跑起来都不是问题,我使用的都是跑在centos7.5 64bit上的

wwl0913 commented 1 year ago

为啥我访问demo界面是空白的,而且没有任何的js加载感觉?求大佬解答