使用Ansible自动配置Nginx服务
1、首先安装好Ansible环境,具体步骤请见Ansible安装
2、先创建hosts文件(为后面编写脚本安装JDK做铺垫)
[root@localhost /]# vi hosts
[jdktest]
192.168.186.133 ansible_ssh_user=guxiong ansible_ssh_pass=private
192.168.186.134 ansible_ssh_user=guxiong ansible_ssh_pass=private
注:记得/etc/ansible/hosts也要加入
3、创建文件夹
[root@localhost /]#
makedir roles
nginx-install
default
files
ngnix-install
nginx-install.tar.gz
handler
meta
tasks main.yml
templates install-nginx.sh nginx.conf
vars main.yml
4、编辑tasks下面的main.yml
- name: create direc
shell: mkdir -p {{ nginx_path }}
- name: copy nginx file to remote client
copy: src=nginx-install.tar.gz dest=/home/{{ user }}
- name: untar nginx
shell: tar -zxf nginx-install.tar.gz
- name: configure install-nginx.sh user template
template: src=install-nginx.sh dest=/home/{{ user }}/nginx-install/install-nginx.sh
- name: cd install direc and excu install
shell: cd /home/{{ user }}/nginx-install && sh install-nginx.sh
- name: configure nginx.conf use template
template: src=nginx.conf dest={{ nginx_path }}/conf/nginx.conf
- name: rm nginxfiles
shell: rm -rf /home/{{ user }}/nginx-install*
5、编辑templates下的 install-nginx.sh
#!/bin/bash mkdir -p {{ nginx_path }}
cd nginx-1.9.3-hide-version
./configure --prefix={{ nginx_path }} --with-http_ssl_module --with-http_gunzip_module --with-http_stub_status_module --with-http_gzip_static_module --with-zlib=../zlib-1.2.8 --with-pcre=../pcre-8.38 --add-module=../nginx_upstream_check_module-master --add-module=../ngx_cache_purge-2.3 && make && make install
sleep 6
exit 0
nginx.conf
#user nobody;
worker_processes 4; error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_cache_status"';
access_log logs/access.log main; sendfile on;
#tcp_nopush on;
server_tokens off;
#keepalive_timeout 0;
keepalive_timeout 65; gzip on; proxy_connect_timeout 60;
proxy_read_timeout 30;
proxy_send_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 8k;
proxy_temp_file_write_size 512k;
proxy_next_upstream http_500 http_502 http_503 error invalid_header; proxy_temp_path {{ nginx_path }}/proxy_temp;
proxy_cache_path {{ nginx_path }}/proxy_cache
levels=1:2 keys_zone=cache_one:100m inactive=2d max_size=2g; upstream test {
server 192.168.186.133:8080;
server 192.168.186.134:8080;
check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;
ip_hash;
}
server {
listen {{ nginx_port }};
server_name {{ nginx_host }};
check_status;
#charset koi8-r; #access_log logs/host.access.log main; location / {
# root html;
# index index.html index.htm;
proxy_pass http://test/baidu/;
}
location / {
proxy_pass http://test;
} location ~ /purge(/.*) { # allow 192.168.100.112;
# allow 192.168.100.64;
allow all;
# deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
error_page 405 =200 /purge$1;
} location ^~ /jenkins { proxy_pass http://test/jenkins/; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log logs/jenkins_access.log main; } location /status {
check_status;
access_log off;
# allow 192.168.100.64;
allow all;
deny all;
}
#error_page 404 /404.html;
location ~ .*\.(gif|jpg|png|html|css|ico|pdf) {
proxy_pass http://test;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache cache_one;
add_header Nginx-Cache $upstream_cache_status;
proxy_cache_valid 200 304 301 302 8h;
proxy_cache_valid 404 1m;
proxy_cache_valid any 2d;
proxy_cache_key $host$uri$is_args$args;
expires 30d; access_log logs/host.access.log main;
# access_log logs/access.log main;
} # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
} # another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias; # location / {
# root html;
# index index.html index.htm;
# }
#} # HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost; # ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / {
# root html;
# index index.html index.htm;
# }
#} }
6、将使用到的变量编辑vars下的main.yml
user: guxiong
nginx_host: 192.168.186.134
nginx_port: 3080
nginx_path: /home/guxiong/nginx1.9.0
7、ansible-playbook安装
[root@localhost /]# ansible-playbook nginx-install.yml --extra-var "host_cluster=jdktest user=guxiong nginx_host=192.168.186.134 nginx_port=3080 nginx_path=/home/guxiong/nginx1.9.0"
PLAY [jdktest] **************************************************************** TASK: [nginx-install | create direc] ******************************************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | copy nginx file to remote client] **********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | untar nginx] *******************************************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | configure install-nginx.sh user template] **************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | cd install direc and excu install] *********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | configure nginx.conf use template] *********************
changed: [192.168.186.134]
changed: [192.168.186.133] TASK: [nginx-install | rm nginxfiles] *****************************************
changed: [192.168.186.134]
changed: [192.168.186.133] PLAY RECAP ********************************************************************
192.168.186.133 : ok=7 changed=7 unreachable=0 failed=0
192.168.186.134 : ok=7 changed=7 unreachable=0 failed=0
使用Ansible自动配置Nginx服务的更多相关文章
- Ansible安装配置Nginx
一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...
- 自动分割nginx服务的日志文件
nginx服务每天都会产生大量的日志信息,时间一长导致日志文件容量很大,会影响系统性能.通过以下shell代码,配合crontab定时执行可实现nginx日志定时分割的功能. #!/bin/bash ...
- 【Nginx】Windows平台下配置Nginx服务实现负载均衡
前言:废话不多说了,直接上步骤. 系统环境:win10 测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi 1.本地先创建一个webapi项目,用于测试使用. 2.新建一 ...
- 配置Nginx服务
一,安装之前准备1.nginx依赖: gcc openssl-devel pcre-devel zlib-devel 安装依赖:yum install gcc openssl-devel pcr ...
- Centos 6.5 配置nginx服务
官方网站:http://nginx.org最新版本:1.7.11官方文档:http://nginx.org/en/docs/ 一.安装NGINX查看当前centos版本: #cat /etc/redh ...
- 使用Ansible自动配置JDK环境
1.首先安装好Ansible环境,具体步骤请见Ansible安装 2.先创建hosts文件(为后面编写脚本安装JDK做铺垫) [root@localhost /]# vi hosts [jdktest ...
- 【CNMP系列】CentOS7.0下安装Nginx服务
话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...
- nodejs配置nginx 以后链接mongodb数据库
服务器 :windows server2008 R2 反向代理 :nginx 1.15.1 for window 64位 数据库:mongodb 4 64位 使用框架express 首先下载nodej ...
- Nginx优化之基本安全优化 (隐藏Nginx软件版本号信息,更改源码隐藏Nginx软件名及版本号,更改Nginx服务的默认用户)
一,隐藏Nginx软件版本号信息 查看版本号 curl -I 192.168.0.220 HTTP/1.1 200 OK Server: nginx/1.6.2 #这里清晰的暴露了Web版本号(1.6 ...
随机推荐
- UIImageView的一些用法
转自:http://blog.sina.com.cn/s/blog_60e2dbcf01014bfm.html //初始化 UIImageView *imageView=[[UIImageView ...
- 【转】用python实现简单的文本情感分析
import jieba import numpy as np # 打开词典文件,返回列表 def open_dict(Dict='hahah',path = r'/Users/zhangzhengh ...
- Bootstrap学习笔记(8)--响应式导航栏
说明: 1. 响应式导航栏,就是右上角的三道杠,点一下下方出现隐藏的导航栏.如果屏幕够大就显示所有的导航选项,如果屏幕小比如手机,就显示部分,剩下的放到三道杠里隐藏. 2. 外面套一个大的div,其实 ...
- xcode6 dyld_sim is not owned by root
如果运行复制过来的xcode可能会这个提示,xcode6 dyld_sim is not owned by root解决方法打开终端 输入sudo xcode-select -switch /Appl ...
- Codeforces 482C Game with Strings(dp+概率)
题目链接:Codeforces 482C Game with Strings 题目大意:给定N个字符串,如今从中选定一个字符串为答案串,你不知道答案串是哪个.可是能够通过询问来确定, 每次询问一个位置 ...
- Qt 中彩色图像转换为灰度图
近期在做几个图像处理相关的项目.里面有一个操作就是须要先将彩色图像转换为灰度图像. QImage 有一个convertToFormat方法.最開始一直用这个函数来实现. 可是今天细致看了看,发现这个函 ...
- PHP——0126最初
数据库mydb 表格info,nation 实现效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
- Hbase分布式安装部署过程
系统 Red hat linux 6.4 Hadoop版本 1.2.1 Hbase版本 0.94.16 Hbase的完全分布式安装概述: 1. 配置hosts,确保涉及的主机名均可解析为ip 2. 编 ...
- Redis学习笔记——数据类型及操作
数据操作 redis是key-value的数据,所以每个数据都是一个键值对 键的类型是字符串 值的类型分为五种: 字符串string 哈希hash 列表list 集合set 有序集合zset 数据操作 ...
- Linux系统下如何查看物理内存占用率
Linux系统下如何查看物理内存占用率 Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如:Mem: 4086496k total, ...