事件出發點:html
前端的開發每次更新了JS或者CSS 都會要清理nginx的緩存,對於這操做站在咱們運維的角度就是執行腳本的問題。可是如何讓開發本身清理緩存,但又不涉及到線上服務器的操做呢?前端
那確定就是寫個WEB接口,讓他們本身去操做,對應的相似查看日誌之類的。python
那咱們就拿清理nginx緩存這個問題來講吧。nginx
首先咱們得有一個WEB,無論是django仍是flask 都是很好的框架,並且python對運維的契合度也比較高,我選擇的是djangoshell
步驟django
首先,咱們在nginx的服務器上有個清理緩存的腳本。flask
django 的一個WEB框架緩存
ansible (不用也行)可是仍是用的好,方便。服務器
預留框架
首先貼一下django的配置,他和ansible在一臺機器上,能夠經過SSH訪問nginx服務器
views.py
from django.shortcuts import render from django.contrib import auth # Create your views here. from django.shortcuts import render_to_response from django.contrib.auth import authenticate, login from django.template.loader import get_template from django.template import Context,RequestContext #from django.template import loader, RequestContext from django.http import HttpResponse,HttpResponseRedirect from django.contrib.auth.decorators import login_required from django.core.urlresolvers import reverse from ops.models import server,passets #def login(request): # t = get_template('login.html') # loginhtml = t.render(Context({'username': username,'password':password})) # return HttpResponse(loginhtml) import commands def nginx(request,string): #這裏的string 就是URL那邊傳過來的參數 if string == 't_nginx': try: m=commands.getoutput(''' ansible %s -m shell -a "sh /opt/script/clean_cache.sh" ''' %string) return render_to_response('interface/nginx_interface.html',{'result':m}) except Exception as e: return render_to_response('interface/nginx_interface.html',{'result':e})
url.py
from ops import views url(r'^interface/(?P<string>\S+)/$',views.nginx,name='nginx'),
html 模板
cat /var/www/jastme/interface/nginx_interface.html {{ result }}
對django不是很熟悉的能夠去看看我之前寫的django的文章
ansible的配置
apt-get install ansible cat /etc/ansible/hosts [t_nginx] 172.31.9.125 ansible_ssh_user=nginx ansible_ssh_pass=123456 固然你也能夠用密鑰
效果圖
這個接口已經正常工做,是否是很簡單啊