- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
13.4 系统环境部署
13.4.1 系统环境说明
OMServer采用Django-1.4.9、nginx-1.5.9、uwsgi-2.0.4、rpyc-3.2.3等开源组件来构建。为了便于读者理解,下面对平台的运行环境、安装部署、开发环境优化等进行详细说明。环境设备角色表如表13-1所示。
表13-1 系统环境说明表
13.4.2 系统平台搭建
OMServer平台涉及两个角色,其中一个为Web服务端,运行Django及rpyc环境,另一角色为主控端,需要部署Saltstack、Ansible或Func主控端环境,可参与本书第9~11章内容,本节不予详细介绍。另外同样需要部署rpyc环境。
(1)Django环境部署
本示例部署主机为192.168.1.10(SN2012-07-010)。
# cd /home # mkdir -p /home/install/Django && cd /home/install/Django #创建安装包目录 # mkdir –p /data/logs/ #创建uwsgi日志目录
1)安装pcre。pcre是一个轻量级的正则表达式函数库,Nginx的HTTP Rewrite模块会用到,最新版本为8.34(对于OMServer平台环境来说非必选项)。
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz # tar -zxvf pcre-8.34.tar.gz # cd pcre-8.34 #./configure # make && make install # cd ..
2)安装Nginx。Nginx是最流行的高性能HTTP服务器,最新版本为1.5.9。
# wget http://nginx.org/download/nginx-1.5.9.tar.gz # tar -zxvf nginx-1.5.9.tar.gz # cd nginx-1.5.9 #./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-cc-opt='-O3' --with-cpu-opt=opteron # make && make install # cd ..
3)安装MySQL-python。MySQL-python是Python访问MySQL数据库的第三方模块库,最新版本为1.2.3c1。
# yum install -y MySQL-python #yum安装方式 # wget http://nchc.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.2/ # tar -zxvf MySQL-python-1.2.2.tar.gz #源码安装方式 # cd MySQL-python-1.2.2 # python setup.py install # cd ..
4)安装uwsgi。uwsgi是一个快速的、纯C语言开发的、自维护、对开发者友好的WSGI服务器,旨在提供专业的Python Web应用发布和开发功能,最新版本为2.0.4。
# wget http://projects.unbit.it/downloads/uwsgi-2.0.4.tar.gz # tar -zxvf uwsgi-2.0.4.tar.gz # cd uwsgi-2.0.4 # make # cp uwsgi /usr/bin # cd ..
5)安装Django。Django是一个Python最流行的开源Web开发框架,最新版本为1.6.5。考虑到兼容与稳定性,本示例使用1.4.9版本进行开发。
# wget https://www.djangoproject.com/m/releases/1.4/Django-1.4.9.tar.gz # tar -zxvf Django-1.4.9.tar.gz # cd Django-1.4.9 # python setup.py install
6)配置Nginx。修改/usr/local/nginx/conf/nginx.conf,添加以下server域配置:
server { listen 80; server_name omserver.domain.com; location / { uwsgi_pass 192.168.1.10:9000; include uwsgi_params; uwsgi_param UWSGI_CHDIR /data/www/OMserverweb; uwsgi_param UWSGI_SCRIPT django_wsgi; access_log off; } location ^~ /static { root /data/www/OMserverweb; } location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt |tar|mid|midi|wav|rtf|mpeg)$ { root /data/www/OMserverweb/static; access_log off; } }
其中“omserver.domain.com”为平台访问域名,“/data/www/OMserverweb”为项目根目录,可以根据具体环境进行修改。
7)配置uwsgi。创建uwsgi配置文件/usr/local/nginx/conf/uwsgi.ini,详细内容如下:
[uwsgi] socket = 0.0.0.0:9000 #监听的地址及端口 master = true #启动主进程 pidfile = /usr/local/nginx/uwsgi.pid processes = 8 #uwsgi开启的进程数 chdir = /data/www/OMserverweb #项目主目录 pythonpath = /data/www profiler=true memory-report=true enable-threads = true logdate=true limit-as=6048 daemonize=/data/logs/django.log
启动uwsgi与nginx服务,建议配置成服务自启动脚本,便于后续的日常维护。详细启动脚本这里不展开说明,有兴趣的读者可参阅互联网上已经存在的相关资源。
# /usr/bin/uwsgi --ini /usr/local/nginx/conf/uwsgi.ini # /usr/local/nginx/sbin/nginx
访问http://omserver.domain.com,出现如图4-4所示的页面说明Django+uwsgi环境部署成功!
图13-4 Django默认首页
(2)rpyc模块安装。
rpyc(Remote Python Call)是Python提供分布式计算的基础服务平台,可以理解成封装程度更高的Socket编程,最新版本为3.3。本示例需要部署rpyc模块的主机为192.168.1.20(SN2013-08-020)、192.168.1.10(SN2012-07-010)。
# wget https://pypi.python.org/packages/source/r/rpyc/rpyc-3.2.3.tar.gz --no-check-certificate # tar -zxvf rpyc-3.2.3.tar.gz # cd rpyc-3.2.3 # python setup.py install
13.4.3 开发环境优化
开发环境相对于生产环境更注重调试便捷性,好的调试工具对软件开发将起到事半功倍的作用,方便高效地定位问题。本节介绍Django必备调试工具django-debug-toolbar的安装与配置,同时介绍如何实现一种Django代码自动刷新生效的方法。
(1)django-debug-toolbar的安装
# wget https://github.com/robhudson/django-debug-toolbar/archive/master.zip # unzip master # cd django-debug-toolbar-master/ # python setup.py install
修改Django的setting.py配置,关键参数如下:
INTERNAL_IPS = ('127.0.0.1','192.168.1.101',) #添加启动调试器的来源IP MIDDLEWARE_CLASSES = ( # MIDDLEWARE_CLASSES添加以下行 … … 'debug_toolbar.middleware.DebugToolbarMiddleware', ) INSTALLED_APPS = ( # INSTALLED_APPS添加以下行 … … 'debug_toolbar', } TEMPLATE_DIRS = ( #TEMPLATE_DIRS添加以下行,注意与python的安装路径保持一致 … … '/usr/lib/python2.6/site-packages/django_debug_toolbar-0.8.5-py2.6.egg/debug_toolbar/templates/', )
务必要渲染一个模板,这样debug_toolbar才会自动附加调试信息到当前的页面,否则看不到debug_tool的界面。debug_toolbar在业务前端页面设计成可伸缩展示,展开后的调试界面如图13-5所示。
图13-5 debug_toolbar界面
(2)Django源码自动重载(reload)方案
本方案结合uwsgi的“--touch-reload”参数来实现,参数格式:--touch-reload"文件",即当该参数值指定的文件发生变化(修改或touch操作)时,uwsgi进程将自动重载(reload),从而使我们的项目代码刷新生效。另外,如何保证一旦更新项目源码立即触发变更--touch-reload指定的文件?Linux系统下的inotify可以做到这点,具体操作如下。
1)在项目目录中创建一个监视文件:
# mkdir /data/www/OMserverweb/shell #在项目目录中创建一个存放监视文件的目录shell # touch reload.set #创建一个监视文件reload.set # yum -y install inotify-tools #安装inotify程序包 # uwsgi启动脚本添加“--touch-reload”项 # /usr/bin/uwsgi --ini "/usr/local/nginx/conf/*.ini" --touch-reload "/data/www/OMserverweb/shell/reload.set"
2)编写监视脚本:
# vi /data/www/OMserverweb/shell/autoreload.sh #!/bin/sh objectdir="/data/www/OMserverweb" # 启动inotify监视项目目录,参数“--exclude”为忽略的文件或目录正则 /usr/bin/inotifywait -mrq --exclude "(static|logs|shell|\.swp|\.swx|\.pyc|\.py\~)" --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' --event modify,delete,move,create,attrib ${objectdir} | while read files do #项目源码发生变化后,触发touch reload.net的操作,最终使uwsgi进程重载,达到刷新项目源码的目的 /bin/touch /data/www/OMserverweb/shell/reload.set continue done &
3)启动脚本开启项目目录监视:
# /data/www/OMserverweb/shell/autoreload.sh
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论