ansible-playbook 手工编译安装nginx

虽然nginx也可以通过yum安装,但是如何使用源码包安装并自定义开启一些nginx功能模块,并且通过ansible下发到被管理集群呢?下面给给位看官提供一个具体实例以供参考。
首先我们需要手工编译好一台nginx服务器作为模板,再采用roles角色管理的方式将其解耦,并下发到被管理集群,具体步骤如下:
实验环境:
ansibleserver,nginx模板:(IP:192.168.252.130 centos7)
Mysqlserver: (IP:192.168.252.173 centos7)
Webserver: (IP:192.168.252.174 centos7)
1.手工编译安装一台nginx服务器,开启功能模块,配置好conf文件作为模板
--------安装依赖包-------------------
yum -y install pcre-devel zlib-devel gcc gcc-c++ //安装编译环境

useradd -M -s /sbin/nologin nginx //创建nginx管理用户

tar zxvf nginx-1.12.0.tar.gz -C /opt/ //解压nginx源码包(所用版本为1.12.0)

-----------编译----------------------
cd nginx-1.12.0/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //创建软连接让系统识别nginx命令
脚本注释:--with-http_stub_status_module //支持状态统计

2.制作nginx开机自启动脚本
vi /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig --level 35 nginx on
systemctl start nginx
systemctl status nginx

至此nginx模板制作完成,下面开始编辑playbook(想了解更多nginx模块功能及常用优化请看这里




cd /etc/ansible
cd roles/
mkdir -p {common,install}/{handlers,files,meta,tasks,templates,vars}
roles目录下有两个角色,common存放安装编译环境操作的文件,install存放安装nginx操作的文件。

common和install内各目录含义解释
files:用来存放由copy模块或script模块调用的文件。
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。




把先前手工编译安装好的nginx目录打包,并放到install角色下的files下面,以及把启动脚本、配置文件放到templates下面
tar -czvf nginx.tar.gz --exclude "nginx.conf" --exclude "vhost" nginx/ //把除了nginx.conf 以外的文件打包命名为nginx
mv nginx.tar.gz /etc/ansible/roles/install/files/
cd /usr/local/nginx/
cp conf/nginx.conf /etc/ansible/roles/install/templates/
cp /etc/init.d/nginx /etc/ansible/roles/install/templates/




cd /etc/ansible/roles/common/tasks/
vim main.yml

  • name: Install initializtion require software
    yum: name="zlib-devel,pcre-devel,gcc,gcc-c++" state=latest
    //定义common下的tasks为nginx下载依赖包



vim /etc/ansible/roles/install/vars/main.yml
nginx_user: nginx
nginx_port: 80
nginx_basedir: /usr/local/nginx
//定义intall下的vars,将nginx管理用户,端口,所在路径定义为变量方便以后调用




vim /etc/ansible/roles/install/tasks/copy.yml
name: Copy Nginx Software
copy: src=nginx.tar.gz dest=/opt/nginx.tar.gz owner=root group=root //将file文件夹下的nginx.tar.gz拷贝到/opt下,属主为root,所属组为root

  • name: Uncompression Nginx Software
    shell: tar zxf /opt/nginx.tar.gz -C /usr/local //解压文件包释放到/usr/local下
  • name: Copy Nginx Start Script
    template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755 //将启动脚本从install下的templates里复制到/etc/init.d下,属主为root,所属组为root组,并定义执行权限
  • name: Copy Nginx Config
    template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644//将配置文件nginx.conf复制到nginx所在目录下的/conf/文件夹



vim /etc/ansible/roles/install/tasks/copy.yml

  • name: Create Nginx User
    user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin //给nginx创建管理用户
  • name: Start Nginx Service
    shell: /etc/init.d/nginx start //使用启动脚本启动nginx
  • name: Add Boot Start Nginx Service
    shell: chkconfig --level 35 nginx on //设置3,5级别开机自启动
  • name: Delete Nginx compression files
    shell: rm -rf /opt/nginx.tar.gz //删除之前的压缩包



vim /etc/ansible/roles/install/tasks/main.yml

  • include: copy.yml
  • include: install.yml
    //在install角色下创建一个总的main.yml文件,调用copy.yml和install.yml



vim /etc/ansible/install.yml

  • hosts: all
    remote_user: root
    gather_facts: True
    roles:

    • common
    • install
      //在/etc/ansible/目录下创建nginx安装剧本nginx_install.yml调用roles下的common和install两个角色



至此我们手工编译安装nginx的playbook已经编写完成。
ansible-playbook nginx_install.yml --syntax -check//检查一下脚本中的语法

没有问题,ansible-playbook nginx_install.yml 执行剧本
然后去两台被管理端服务器查看nginx是否成功开启
systemctl status nginx.service

至此通过剧本实现手工编译安装nginx完成

原文地址:http://blog.51cto.com/13842738/2311978

时间: 2024-11-29 12:28:32

ansible-playbook 手工编译安装nginx的相关文章

Nginx的网站服务(手工编译安装过程细解)

Nginx网站服务 Nginx的概念 ? Nginx (engine x)是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Ramblerru站点(俄文: Pamonep) 开发的,第-一个公开版本0. 1.0发布于2004年10月4日.? 其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布.? Nginx

ansible playbook实战——下发部署nginx以及更新、回滚

之前介绍了 ansible 的安装配置及实例:http://msiyuetian.blog.51cto.com/8637744/1748143 以及 ansible 的 playbook 详解:http://msiyuetian.blog.51cto.com/8637744/1752326 下面这篇文章主要是通过 ansible 下发部署安装 nginx 以及后期发布更新配置,还有回滚机制来认识 ansible 的 playbook. 思路:先在一台机器上编译安装好 nginx.打包,然后再用

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版本非常多,相关的编译器,解释器也有很多,很多还有最小系统,嵌入式系统等等.同一功能的软件如果只有编译好的软件包,在其它linux的平台上,可能并不能正常安装运行,在此情况下,源码包编译安装出现了.所以本文的重点是以nginx为例,给出源码包编译安装的详细过程,同时带你手工编写自动化运行脚本. 准备工

手工编译安装Apache

实验要求:手工编译安装Apache 实验步骤: 服务器(Redhat6)地址:192.168.4.2 客户机(Win7)地址:192.168.4.5 客户机设置LAMP文件夹共享,安装文件在LAMP文件夹中 mount.cifs //192.168.4.5/LAMP /opt/lamp //将LAMP文件夹挂载到服务器中的lamp目录中 smbclient -L 192.168.4.5 查看已经共享到的LAMP文件夹 tar xzvf httpd-2.4.2.tar.gz -C /opt/htt

RedHat7编译安装Nginx

下载Nginx源码包# wget http://nginx.org/download/nginx-1.8.0.tar.gz 解压Nginx源码包# tar -zxvf nginx-1.8.0.tar.gz && cd nginx-1.8.0 安装依赖软件# yum -y install gcc pcre-devel openssl-devel zlib-devel 编译安装Nginx# ./configure \  --sbin-path=/usr/local/nginx/nginx \ 

编译安装nginx并修改版本头信息—参考实例

今天做实验的时候,想起我那台yum安装的nginx+php-fpm+mysql服务器上的nginx版本有点低了,并且还要加两个第3方模块,就去nginx官网下载了最新稳定版nginx-1.0.6,好了,废话不多说看教程吧.  系统版本: centos 5.6  ip: 192.168.1.200  需要的软件包:nginx-1.0.6.tar.gz Nginx-accesskey-2.0.3.tar.gz ngx_cache_purge-1.3.tar.gz(这3个包可以自己去下载,我就不提供了

centos 7编译安装nginx

禁用防火墙 systemctl disable firewalld systemctl stop firewalld setenforce 0 安装pcre库 yum install pcre* 安装zlib库 yum install zlib* 增加nginx用户:useradd nginx -G nginx 编译安装nginx: ./configure --prefix=/usr/local/nginx --error-log-path=/var/log/nginx/error.log --

Apache服务【手工编译安装】

简介: Apache HTTP Server 是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在web服务器领域中长期保持着超过半数的份额.Apache服务器可以运行在Linux .Unix.Windows等多种平台. Apache的主要特点: 1.开放源代码 2.跨平台服务 3.支持各种网页编程语言 4.模块化设计 5.运行非常稳定 6.良好的安全性 环境:RHEL6.2. 一.Apache服务总览: 1.端口:80(http) https(443) 2.主配置文件(/e

<深入剖析Nginx> 编译安装nginx 以及使用eclipse编译开发nginx

明年就要找工作了,看看经典的开源项目-nginx,图书馆借了本<深入剖析Nginx>,开始研读,边读边做笔记. 第一篇是nginx的环境配置相关 参考帖子:Nginx模块开发---Linux使用eclipse编译,调试Nginx 文章5:Linux下使用Eclipse进行Nginx 模块开发 具体是参考上面的帖子和书,下面大概讲下步骤: 1. 经典的三个步骤,来编译安装nginx: 先下载源码: 官网下载链接 ./configure --with-debug --prefix=/home/zy