《python自动化运维:技术与最佳实践》之OMServer平台环境部署详解【Web服务端】 不指定

刘天斯 , 2014/12/07 13:11 , Python , 评论(33) , 阅读(65400) , Via 本站原创 | |

       《python自动化运维:技术与最佳实践》书籍发布已经1个月有余,根据读者反馈,在部署OMServer平台时遇到很多困难及问题,尤其是第一次部署Django环境的读者。因此,作者对书籍中OMServer环境部署章节的内容进行扩充,以便让每位读者都可以轻易完成平台搭建。OMServer平台涉及两个角色,其中一个为Web服务端,运行在Django及rpyc环境,另一角色为主控端,需要部署saltstack、ansible或func主控端环境,本文介绍Web服务端的部署详细步骤。

---环境版本说明---
* Python  版本  2.6.6
* Django  版本   1.4.9
* nginx  版本  1.5.9
* pcre  版本  8.34
* rpyc  版本  3.2.3
* uwsgi  版本  2.0.4
* django-debug-toolbar  版本  0.8.5

一、Django环境部署

1、安装pcre,pcre是一个轻量级的正则表达式函数库,Nginx的HTTP Rewrite模块会用到,最新版本为8.34(对于OMServer平台环境来说是非必选项)。

2、安装Nginx,Nginx是最流行的高性能HTTP服务器,最新版本为1.5.9。

3、安装 MySQL-python,MySQL-python是Python访问MySQL数据库的第三方模块库,最新版本为1.2.3c1。

4、rpyc模块安装,用于平台与主控端做数据通讯交互。

5、安装uwsgi。uwsgi是一个快速的、纯C语言开发的、自维护、对开发者友好的WSGI服务器,旨在提供专业的Python web应用发布和开发,最新版本为2.0.4。

出现如下代码成功安装:
################# uWSGI configuration #################
pcre = True
kernel = Linux
malloc = libc
execinfo = False
ifaddrs = True
ssl = True
zlib = True
locking = pthread_mutex
plugin_dir = .
timer = timerfd
yaml = embedded
json = False
filemonitor = inotify
routing = True
debug = False
capabilities = False
xml = False
event = epoll
############## end of uWSGI configuration #############
total build time: 17 seconds
*** uWSGI is ready, launch it with ./uwsgi ***

6、安装Django,Django是一个Python最流行的开源Web开发框架,最新版本为1.6.5。考虑到兼容与稳定性,本案例使用1.4.9版本进行开发。

创建一个demo项目,以便验证环境是否正确安装部署。

7、django-debug-toolbar的安装(Django调试利器)

8、配置Nginx,修改/usr/local/nginx/conf/nginx.conf,最终完整配置如下:

* uwsgi_param UWSGI_SCRIPT wsgi;参数值wsgi对应项目目录中的wsgi.py,此处文件前缀与参数值要保持一致。

9、配置uwsgi,创建uwsgi配置文件/usr/local/nginx/conf/uwsgi.ini,详细内容如下:

---关键参数及说明---
1)chdir 指定项目目录;
2)pythonpath 指定项目目录上一级
3)processes 指定进程数
4)workers 分配CPU的核数
5)limit-as 子进程分配的内存大小
6)max-requests 分配最大的请求数

    启动uwsgi与nginx服务,建议配置成服务自启动脚本,便于后续的日常维护。详细启动脚本这里不展开说明,有兴趣的读者可参阅互联网上已经存在的相关资源。
    最后启动uwsgi与nginx服务

        访问http://demo.domain.com,出现如图所示的页面说明Django+uwsgi环境部署成功!
点击在新窗口中浏览此图片

二、OMServer项目部署
1、修改Nginx配置
添加OMServer项目站点配置,[server]域具体内容如下:


  1)切记修改UWSGI_SCRIPT为django_wsgi;
  2)监听uwsgi端口修改成127.0.0.1:9001;    #多个站点使用不同端口区分


2、添加omserver项目uwsgi配置

3、项目源码配置
  1)项目源码:
    # cd /data/www
    下载地址:https://github.com/yorkoliu/pyauto/tree/master/第十三章/OMserverweb
  2)导入数据库结构(Mysql)
    下载地址:https://github.com/yorkoliu/pyauto/blob/master/第十三章/SQL/OMServer.sql
  3)修改setting.py(数据库信息)

   4)修改主控端rpyc主机IP
    OMserverweb/autoadmin/views.py
    
启动项目uwsgi及Nginx服务

4、访问http://omserver.domain.com,出现以下系统界面说明部署成功!
点击在新窗口中浏览此图片

下一步配置《python自动化运维:技术与最佳实践》之OMServer平台环境部署详解【主控制端】

补:平台涉及开源组件包下载:
Django-1.4.9.tar.gz 下载
uwsgi-2.0.4.tar.gz 下载
rpyc-3.2.3.tar.gz 下载
pcre-8.34.tar.gz 下载
nginx-1.5.9.tar.gz 下载
MySQL-python-1.2.5.zip 下载
django-debug-toolbar-master.tar.gz 下载
zdcscgj
2018/11/13 11:58
ERROR : connect rpyc server error:[Errno 111] Connection refused数据库调用正常,但是rpyc无法调用
Sankey
2017/03/09 16:57
--- no python application found, check your startup logs for errors ---  碰到这个错误,刘大知道如何解决么
ogress Email
2016/12/12 17:37
File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 187, in __call__    if not hasattr(self, '_cookies'):  File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 45, in load_middleware    raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))  File "/usr/lib/python2.6/site-packages/django/utils/module_loading.py", line 26, in import_by_path    finder = sys.path_importer_cache[entry]  File "/usr/lib/python2.6/site-packages/django/utils/module_loading.py", line 21, in import_by_path    if finder.find_module(name, package_path):  File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module      File "/usr/lib/python2.6/site-packages/debug_toolbar/middleware.py", line 14, in <module>
2016/10/24 18:11
连不上数据库。。。
xiaobing Email
2016/09/27 11:36
新版本用不了了!,环境如下:python 2.7.11django 1.8mysql 5.6能否更新新版本的安装?
kanshaoru Email
2016/07/21 23:34
Thu Jul 21 16:31:17 2016 - WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x209c450 pid: 16785 (default app)Traceback (most recent call last):  File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 219, in __call__    self.load_middleware()  File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 47, in load_middleware    raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))django+uwsgi 一直报這个错,刘老师,这是什么原因。
int
2016/05/09 17:56
OMserver页面中的“查看系统版本”,“请选择功能类别”都显示“正在加载”,请问是什么原因?谢谢!我也想知道
lytsing Email Homepage
2015/10/23 01:10
django-debug-toolbar-master.tar.gz 这个信息是过时的,下载的是最新的版本,最新版本无法使用,只有使用指定 0.8.5版本才行,不然安装失败。
test Email
2015/10/12 17:46
刘老师,现在报No module named django.core.wsgi,请帮看一下,多谢
tester Email
2015/10/12 15:07
刘老师,按照上述说明配置后,demo页面无法正常显示(An error occured)。日志里面报错是:upstream prematurely closed connection while reading response header from upstream...。请问该如何排查,盼复。
xiaoming Email
2015/09/06 16:53
[root@macs etc]# source profile-bash: HISTTIMEFORMAT: readonly variable-bash: PROMPT_COMMAND: readonly variable-bash: export: `/data/www/OMAudit/OMAudit_agent.py $(history 1)': not a valid identifier天师你好,not a valid identifier 这个怎么破
whyseu
2015/08/06 10:55
OMserver页面中的“查看系统版本”,“请选择功能类别”都显示“正在加载”,请问是什么原因?谢谢!
logon
2015/03/17 18:00
我在部署完 访问的时候 一直是这个错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: bad local file header in /usr/lib64/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg但是这个模块是有的一直是500错误
奢侈
2015/03/03 14:49
求帮助为啥安装完后,点击添加模块后,点击提交没有反应?
奢侈
2015/03/02 16:08
访问包205错误。#cat django_omserver.log  raceback (most recent call last):  File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 219, in __call__    self.load_middleware()  File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 39, in load_middleware    for middleware_path in settings.MIDDLEWARE_CLASSES:  File "/usr/lib/python2.6/site-packages/django/utils/functional.py", line 184, in inner    self._setup()  File "/usr/lib/python2.6/site-packages/django/conf/__init__.py", line 42, in _setup    self._wrapped = Settings(settings_module)  File "/usr/lib/python2.6/site-packages/django/conf/__init__.py", line 95, in __init__    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))ImportError: Could not import settings 'OMserverweb.settings' (Is it on sys.path?): No module named OMserverweb.settings
刘天斯 回复于 2015/03/02 18:10
注意相关配置中的路径。
hihi
2015/03/02 16:07
书上是不是 没有下 创建APP的步骤? 怎么直接就 写视图方法了? 前端 渲染 书上没写到吗?
刘天斯 回复于 2015/03/02 18:09
这个略基础,Django部分不是本书的重点内容。
hihi
2015/02/28 15:15
Django+uwsgi环境 出现502 网关错误  为什么呢
刘天斯 回复于 2015/02/28 17:22
检查uwsgi的错误信息,比较详细。
景天 Email
2014/12/29 23:48
看到了 数据库连接重新配置了一下,,OMSERVER 审计进去后,就是那个界面了,,有应用类别,,不过服务器IP没有。。我看SQL导入的里面有IP的。
景天 Email
2014/12/29 23:20
安装好了,,omserverweb 的OMSERVER WEB界面出来了,但是没有模块,应用类别是空白。。。。
刘天斯 回复于 2014/12/29 23:45
数据库连接异常?
景天 Homepage
2014/12/29 19:11
python是不是2.7的最好,多些模块。。。tonado是不是做运维最好
刘天斯 回复于 2014/12/29 22:32
作者测试平台为 python 2.6.6
分页: 1/2 第一页 1 2 下页 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]