OMS开发(三):部署指南

一、架构环境

1、系统架构

下图摘自《Python自动化运维 技术与最佳实践 刘天斯》

本项目OMS前台使用django+bootstrap+jquery搭建WEB服务,后台使用saltstack实现业务服务器集群的控制管理,两者间通过rpyc进行通讯。(正在计划参照saltstack官方WEBUI项目halite,在django中实现相同功能,调用saltapi,取消rpyc)

2、开发环境

(1)前台:笔记本,win7x64

Python、Pycharm、Django、MySQL、MySQLdb、rpyc、bootstrap、jquery

Xshell 5(SSH远程工具)、Xftp 5(文件传输工具)

(2)后台:虚拟机,centos 6.5,10.188.1.40,saltmaster-40

Python、SaltStack(master+minion+api+ssh)、rpyc

(3)业务主机:虚拟机,centos 6.5,10.188.1.42,saltminion01-41.ewp.com、Salt-Minion

虚拟机,windows server 2008 r2 x64,saltminion02-42、Salt-Minion

3、生产环境

前台:centos 6.5,10.188.1.39,omswebserver-39

Python、Django、MySQL、MySQLdb、rpyc、Nginx、uwsgi

后台和业务主机同上。

二、部署开发环境

参考上一编:OMS开发(二):技术选型

1、前台

Python:http://www.jetbrains.com/pycharm/

PyCharm:https://www.python.org/downloads/    (开发集成环境,可自选其他的)

Django:(CMD)pip install Django==1.8.7       (自带开发WEB服务器runserver)

MySQL:http://www.mysql.com/why-mysql/windows/

MySQLdb:https://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/

rpyc:(CMD)pip install rpyc

bootstrap:http://v3.bootcss.com/getting-started/#download  (项目源码中已有)

jquery:http://code.jquery.com/jquery-2.2.0.min.js (项目源码中已有)

2、后台

(1)    Python

Centos 6.5 默认安装2.6.6版本,升级为2.7.11:

[[email protected] ~]# python -V
  Python 2.6.6 
[[email protected] ~]# cd /usr/local/src
[[email protected] src]# wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
[[email protected] src]# tar -zxvf Python-2.7.11.tgz
[[email protected] src]# cd Python-2.7.11
[[email protected] Python-2.7.11]# ./configure --prefix=/usr/local/python27
[[email protected] Python-2.7.11]# make
[[email protected] Python-2.7.11]# make install
[[email protected] Python-2.7.11]# mv /usr/bin/python /usr/bin/python_old
[[email protected] Python-2.7.11]# ln -s /usr/local/python27/bin/python /usr/bin/

处理yum兼容问题,使用老版本bin文件

[[email protected] ~]# vi /usr/bin/yum
#!/usr/bin/python2.6

PIP包管理工具:

https://pip.pypa.io/en/latest/installing/#installing-with-get-pip-py

Python 2 >=2.7.9 or Python 3 >=3.4 已经默认安装PIP

(2)    SaltStack

添加YUM源

[[email protected] ~]# rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
[[email protected] ~]# vi /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/$releaseverSALTSTACK-GPG-KEY.pub

安装

[[email protected] ~]# yum install salt-master salt-minion salt-api salt-ssh

配置主控服务

[[email protected] ~]# vi /etc/salt/master
interface: 10.188.1.40
auto_accept: True
file_roots:
   base:
     - /srv/salt/
[[email protected] ~]# mkdir /srv/salt

配置被控服务

[[email protected] ~]# vi /etc/salt/minion
master: 10.188.1.40
nameid: saltmaster-40

启动服务

[[email protected] ~]# chkconfig salt-master on
[[email protected] ~]# service salt-master start
[[email protected] ~]# chkconfig salt-minion on
[[email protected] ~]# service salt-minion start

默认监听4505和4506两个端口

[[email protected] ~]# netstat -tnlp|grep 45
[[email protected] ~]# iptables -I INPUT -m multiport -p tcp --dports 4505,4506 -j ACCEPT
[[email protected] ~]# service iptables save

4505(publish_port)为saltstack的消息发布系统

4506(ret_port)为saltstack客户端与服务端通信的端口

(3)    rpyc

[[email protected] ~]# yum install -y rpycserver

3、业务主机

(1)    Windows系统

下载安装包:

Microsoft Visual C++ 2008 x64 SP1      (先安装上)

Salt-Minion-2015.8.3-AMD64-Setup.exe   (CMD命令安装)

CMD静默安装:

cd /d D:\download
Salt-Minion-2015.8.3-AMD64-Setup.exe /S /master=10.188.1.40 /minion-name=saltminion-42 /start-service=0

修改配置文件:

C:\salt\conf\minion
    master: 10.188.1.40
    id: saltminion02-42

CMD启动服务:

net start salt-minion

(2)    Linux系统

[[email protected] ~]# rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
[[email protected] ~]# vi /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/$releaseverSALTSTACK-GPG-KEY.pub
[[email protected] ~]# yum install salt-minion
[[email protected] ~]# vi /etc/salt/minion
master: 10.188.1.40 
nameid: saltminion01-41
[[email protected] ~]# chkconfig salt-minion on
[[email protected] ~]# service salt-minion start

三、部署生产环境

说明:生产环境还没有部署,这里是网上摘来的,有问题请反馈。

1、基础依赖包

[[email protected] ~]# yum install -y wget gcc zlib zlib-devel openssl openssl-devel

2、Python

参照上文

3、Django

[[email protected] ~]# pip install Django==1.8.7

4、MySQL

[[email protected] ~]# yum install -y mysql mysql-devel
[[email protected] ~]# service mysqld start
[[email protected] ~]# chkconfig mysqld on
[[email protected] ~]# mysql -u root
>set password for [email protected]=password(‘[email protected]‘);
>drop database test;

5、MySQLdb

[[email protected] ~]# yum install -y MySQL-python

6、rpyc

[[email protected] ~]# pip install rpyc

7、Nginx+uwsgi

安装pcre:

轻量级的正则表达式函数库,给nginx的rewrite模块使用

[[email protected] ~]# cd /usr/local/src
[[email protected] src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz
[[email protected] src]# tar -zxvf pcre-8.34.tar.gz
[[email protected] src]# cd pcre-8.34
[[email protected] pcre-8.34]# ./configure
[[email protected] pcre-8.34]# make && make install && cd ..

安装nginx:

[[email protected] src]# wget http://nginx.org/download/nginx-1.5.9.tar.gz
[[email protected] src]# tar -zxvf nginx-1.5.9.tar.gz
[[email protected] src]# cd nginx-1.5.9
[[email protected] nginx-1.5.9]# ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_sutb_status_module --with-cc-opt=‘-O3‘ --with-cpu-opt=opteron
[[email protected] nginx-1.5.9]# make && make install && cd ..

安装uwsgi:

快速的、纯C语言开发的、自维护、对开发者友好的WSGI服务器,提供专业的PythonWeb应用发布和开发功能

[[email protected] src]# wget http://projects.unbit.it/downloads/uwsgi-2.0.4.tar.gz
[[email protected] src]# tar -zxvf uwsgi-2.0.4.tar.gz
[[email protected] src]# cd uwsgi-2.0.4
[[email protected] uwsgi-2.0.4]# make && cp uwsgi /usr/bin && cd ..

配置Nginx:

[[email protected] src]# vi /usr/local/nginx/conf/nginx.conf
server {
    listen 80;
    server_name oms.ewp.com;
    location / {
        uwsgi_pass 127.0.0.1:9000;
        include uwsgi_params;
        uwsgi_param UWSGI_CHDIR /data/www/OMS;
        uwsgi_param UWSGI_SCRIPT django_wsi;
        access_log off;
    }
    location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|xe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {
        root /data/www/OMS/app/static;
        access_log off;
    }
}

配置uwsgi:

[[email protected] src]# vi /usr/local/nginx/conf/uwsgi.ini
[uwsgi]
socket = 0.0.0.0:9000
master = true
pidfile = /usr/local/nginx/uwsgi.pid
processes = 8
chdir = /data/www/OMS
pythonpath = /data/www
profiler = true
memory-report = true
enable-threads = true
logdate = true
limit-as = 6048
daemonize = /data/logs/django.log

启动:

[[email protected] src]# /usr/bin/uwsgi --ini /usr/local/nginx/conf/uwsgi.ini
[[email protected] src]# /usr/local/nginx/sbin/nginx

访问:

http://oms.ewp.com

四、部署OMS项目

1、下载源码

https://github.com/ywzhou123/OMS

解压后将OMS目录放到你的项目目录,如F:\pycode\OMS

2、添加项目

3、导入数据库

将OMS\SQL\oms.sql导入MySQL数据库,打开mysql命令行界面

mysql> create database oms character set utf8;
mysql> grant all on oms.* to ‘admin‘@‘localhost‘ identified by "[email protected]";
mysql> flush privileges;
mysql> use oms;
mysql> source f:\pycode\OMS\SQL\oms.sql;
mysql> quit

上面设置的数据库账号密码在PyCharm中连接数据源时填写:

修改项目配置文件OMS\OMS\config.ini中的数据库连接参数(其他参数暂时无用):

[db]name = omshost = localhostport = 3306user = adminpass = [email protected]

注意:登陆http://127.0.0.1:8000/admin时默认账号为admin,密码为[email protected],这个不是数据库连接密码,只是设成了一样而已,存于OMS数据库的auth_user表中。 

4、启动RPYC

    前后台通过rpyc服务进行通讯,后台需要安装rpycserver服务进程。

使用Xftp 5工具将OMS\SaltstackServer\rpycserver.py上传到后台(saltmaster-40.ewp.com)的/home,如果放在其他目录,需要修改rpycserver.sh的第13行(cd /home)。

将rpycserver.sh上传到后台的/etc/init.d/rpycserver,注意这里最好将.sh后缀去掉。

[[email protected] ~]# chmod +x /home/rpycserver.py  /etc/init.d/rpycserver
[[email protected] ~]# chkconfig add rpycserver
[[email protected] ~]# chkconfig on rpycserver
[[email protected] ~]# service rpycserver start
[[email protected] ~]# iptables -I INPUT -p tcp --dports 11511 -j ACCEPT
[[email protected] ~]# service iptables save

测试RPYC,创建一个rpycclient.py脚本,用来测试rpyc传输命令及得到返回结果:

#!/usr/bin/python
#coding:utf-8
import rpyc
import json
def cmd_run(idc,hosts,cmd,args):
    try:
        conn=rpyc.connect(‘10.188.1.40‘,11511) #连接服务端
        conn.root.login(‘OMuser‘,‘KJS23o4ij09gHF734iuhsdfhkGYSihoiwhj38u4h‘) #登陆账号密码
    except Exception,e:
        return (‘connect rpyc server error:‘+str(e)) #返回错误
    d = {‘hosts‘:hosts,‘cmd‘:cmd,‘args‘:args}
    j = json.dumps(d)
    r=conn.root.cmd(j)
    if r == "{}":
        result = {‘ERROR‘:‘No minions matched the target. No command was sent, no jid was assigned.‘}
    else:
        result = json.loads(r,"gbk")
    return result
c=cmd_run(3,"saltminion01-41.ewp.com","test.ping","")
# c=cmd_run(3,u"saltminion01-41.ewp.com",u"service.get_all",u"")
# c=cmd_run(3,u"saltminion02-42",u"cmd.run",u"dir c:\\")
print type(c)
print c

说明:rpyc只能传输数字和字符串,不能传字典,因此这里做了JSON处理,这里要确保login()中的账号密码一致,项目中的rpyc会根据机房ID来连接同机房下的rpycserver,连接参数存于oms.app_salt_server表中。

时间: 2024-08-12 01:17:58

OMS开发(三):部署指南的相关文章

cobbler自动化部署指南

文章结构 1. 前言 2. cobbler安装 3. 系统定制 4. 参考链接 前言: 给电脑装过系统的同学都知道,不论是从U盘.光驱或者其他设备装系统,都需要先在BIOS里设置开机启动项(或用开机快捷键设置).从上大学到现在,我帮同学装系统少说也有上百次,但是还从来没有使用从网卡启动安装过,虽然以前也注意到,但一直不知道那是个什么玩意,见图(1).前段时间在实习公司做Openstack的自动化安装与部署工作,才有幸接触到,原来这是一种从网卡远程启动的技术! 图1 BIOS启动项界面 要从网卡启

企业移动信息化应用开发模式选型指南

随着移动互联网的逐步深入,移动应用已经从新闻.搜索.电商.游戏.视频等热门应用逐步向企业移动应用领域转移.而且市场规模逐年增长,据IDC发布的报告显示,2013年中国企业级移动应用市场规模为9.3亿美元,预计2017年将达到41.5亿美元,2013-2017年的复合增长率为45.3%. ▲企业移动信息化应用开发模式选型指南 企业移动信息化经历了从观望到摸索,再到落地实施的几个重要阶段.IT168调研中心针对企业/单位是否已经开始尝试部署移动信息化产品或者方案的调查显示:有63.17%的企业已经在

学习Salesforce | Platform Developer Ⅰ 平台初级开发认证考试指南及备考资源

一.平台开发人员考试计划 Salesforce平台开发人员初级认证面向具有在Lightning平台上构建自定义应用程序的知识.技能和经验的个人. 该认证考核Lightning平台的基本编程能力,并会使用Apex和Visualforce在Salesforce中开发自定义业务逻辑和自定义界面.要获得此认证,备考人必须成功通过Salesforce平台开发人员初级考试.该考试也是Salesforce 平台开发人员高级考试(多项选择部分)的前提条件. 二.适合人群 本考试适用于具有使用Lightning平

Openstack Mitaka for Centos7.2 部署指南(一)

本文主要参考 https://www.zybuluo.com/ncepuwanghui/note/389373 OpenStack Mitaka for Ubuntu 16.04 LTS 部署指南 http://docs.openstack.org/mitaka/install-guide-rdo/ 官方文档 把上面的Ubuntu 换成Centos,其他详情请看上面的部署指南 本文主要参考 https://www.zybuluo.com/ncepuwanghui/note/389373 Open

微软ASPNET站点部署指南(10):迁移至SQLServer(转载)

微软ASPNET站点部署指南(10):迁移至SQLServer 1.  综述 第2章的部署SQL Server Compact和第9章的部署数据库更新里解释了为什么最终要升级到完整版SQL Server .本章节将告诉你如何来做. SQL Server Express和完整版SQL Server 一旦你决定使用完整版SQL Server,你需要在开发和测试环境使用SQL Server Express 或者完整版SQL Server.在工具支持和数据库引擎功能上,SQL Server Compac

Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】

转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-deployment 英文原文:Docker: Lightweight Linux Containers for Consistent Development and Deployment 使用Docker容器——轻量灵活的VM同类,来接管“依赖地狱”.学习Docker是如何基于LXC技术,通过把应用

qt-qml移动开发之在ios上开发和部署app流程简介

qt5.3已经全面支持移动开发,除了mac,windows,linux,还支持ios,android,wp,meego等移动平台,本教程是作者根据自己的经验,从头讲怎么样在ios上发布自己的app,由于目前国内相关文章还比较少,可能文章里有所疏漏,或者并非最优方法. 软件准备:qt5.3 , xcode 5.1.1 编译环境: Mac os Qt5.3下载地址http://qt-project.org选择对应的Mac ox版本,支持iOS和android的版本,安装过程省略 Xcode在app

nmon性能监控工具介绍与部署指南

1.nmon简要介绍 nmon是IBM开发,对操作系统层的性能监控工具,有aix和linux两种版本 2.nmon下载地址 2.1.nmon for aix下载地址 https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon 2.2 .nmonfor linux下载地址 http://nmon.sourceforge.net/pmwiki.php?n=Site.D

微服务业务开发三个难题-拆分、事务、查询(下)

上集我们阐述了使用微服务体系架构的关键障碍是领域模型,事务和查询,这三个障碍似乎和功能拆分具有天然的对抗.只要功能拆分了,就涉及这三个难题. 然后我们向你展示了一种解决方案就是将每个服务的业务逻辑实现为一组DDD聚合.然后每个事务只能更新或创建一个单独的聚合.然后通过事件来维护聚合(和服务)之间的数据一致性. 在本集中,我们将会向你介绍使用事件的时候遇到了一个新的问题,就是怎么样通过原子方式更新聚合和发布事件.然后会展示如何使用事件源来解决这个问题,事件源是一种以事件为中心的业务逻辑设计和持久化