Scripts voor server management

Om het werken - bouwen, testen, gebruiken - met webapplicaties makkelijker te maken heb ik ingericht wat in Apache termen ooit "virtual servers" genoemd werd. De configuratiebestanden hiervoor met de hand bijhouden werd na verloop van tijd wat bewerkelijk of saai of zo en scripten met fabric bracht uitkomst. Ik bedacht dat ik het ook kon doen met andere settings bestanden.

Daarnaast waren er server programma's die voor het testen gestopt en herstart moesten worden. Hier iets voor bouwen dat je met parameters (bijvoorbeeld een server naam en een functie om uit te voeren) aan kunt sturen was ook een leuke exercitie.

Het onderstaande smeekt erom om opgesplitst en verder toegelicht te worden maar daar heb ik nu geen zin in

Beschikbare taken:

Nginx

De configuraties staan in een directory genaamd "available". Door een symlink erheen te maken in een directory "enabled" kan Nginx deze ook gebruiken. deze directories zijn niet direct benaderen; aanpassen kan door een lokale versie daarheen te kopiëren, daarvoor zitten deze in een directory onder die waar de scripts staan.

nginx.editconf <name>

pas een server configuratie bestand (lokaal) aan

nginx.modconf <name(s)>

kopieer een configuratiebestand naar de Nginx settings; replace versie

nginx.modconfa <name(s)>

modconf: backup & append versie

nginx.modconfb <name(s)>

modconf: backup & replace versie

nginx.addconf <name(s)>

maak één of meer server configuraties bruikbaar

nginx.newconf <name(s)>

definieer en enable een nieuwe Nginx configuratie in één keer

nginx.rmconf <name(s)>

maak één of meer server configuraties onbruikbaar zonder ze te verwijderen

nginx.diffconf [<name(s)>]

vergelijk de genoemde (of alle) configuratie files

nginx.diffconfg [<name(s)>]

vergelijk de genoemde (of alle) configuratie files en toon de resultaten in een GUI

nginx.list

maak een lijst met beschikbare configuraties

nginx.list-domains

maak een lijst met virtual domains per Nginx configuratie

nginx.restart

restart nginx

nginx.start

start nginx

nginx.stop

stop nginx

Apache

Een soortgelijke situatie als voor Nginx beschreven is ook hier van toepassing (en dus ook overeenkomstige scripts). Omdat ik geen Apache gebruik zijn deze scripts al in geen jaren onderhouden

apache.editconf <name>

pas een server configuratie bestand (lokaal) aan

apache.modconf <name(s)>

kopieer een configuratiebestand naar de Apache settings; replace versie

apache.modconfa <name(s)>

modconf met append (en backup)

apache.modconfb <name(s)>

modconf met backup

apache.addconf <name(s)>

maak één of meer server configuraties bruikbaar

apache.rmconf <name(s)>

disable Apache configuration for one or more file names

apache.diffconf [<name(s)>]

vergelijk de genoemde (of alle) configuratie files

apache.diffconfg [<name(s)>]

vergelijk de genoemde (of alle) configuratie files en toon de resultaten in een GUI

apache.restart

restart apache

apache.start

start apache

apache.stop

stop apache

PHP

php.restart

restart php

php.start

start php

php.stop

stop php

FTP

ftp.restart

restart vsftpd

ftp.start

start vsftpd

ftp.stop

stop vsftpd

Generieke commando's

bruikbaar voor elk server type. De hierna volgende scripts zijn niet voor de webserver zelf, maar voor programma's die de communicatie m.b.t. webapplicaties regelen. Deze zitten als het ware achter de webserver, die daarvoor als een soort doorgeefluik dient en worden ook "server programma's" genoemd.

server.check-all [<name(s)>]

controleer of de server "up" is gebaseerd op de aanname dat een server gestart is als er een pid (program id) file aanwezig is. Geen naam opgeven betekent alle locale servers langsgaan

server.restart

restart local server

server.start

start local server

server.stop

stop local server

Specifieke (per servertype) commando's

worden door de voorgaande gebruikt maar los aanroepen is ook mogelijk

Cherrypy

cherrypy.list-servers

maak een lijst met Cherrypy server namen

cherrypy.restart [<name(s)>]

restart een Cherrypy site (argument is niet de servernaam maar de projectnaam)

cherrypy.start [<name(s)>]

start de aangegeven Cherrypy server(s) (via cherryd)

cherrypy.stop [<name(s)>]

stop de aangegeven Cherrypy server(s)

Django

django.list-servers

maak een lijst met Django server names

django.restart [<name(s)>]

restart de aangegeven Django server(s)

django.start [<name(s)>]

start de aangegeven Django server(s) (met gunicorn)

django.stop [<name(s)>]

stop de aangegeven Django server(s)

django.link-admin-css [<name(s)>] [--force]:

maak een symlink naar de admin CSS in een Django project

django.check-admin-links

Controleer na een Python of Django upgrade of de symlinks naar de admin css ook moeten worden aangepast

Hgweb

hgweb.restart

restart lokale Mercurial web server

hgweb.start

start lokale Mercurial web server (met gunicorn over nginx nog niet aan de praat gekregen)

hgweb.stop

stop lokale Mercurial web server

Plone

plone.buildout

configureer Plone instance met buildout (vervallen?)

plone.restart

restart Plone default instance

plone.start

start Plone default instance

plone.stop

stop Plone default instance

Trac

trac.editconf

alias voor (fabsrv) editconf trac

trac.modconf

alias voor (fabsrv) modconf trac

trac.restart

restart local trac server

trac.start

start local trac server

trac.stop

stop local trac server

Overig

sites.check-all

controleer of geselecteerde pagina's op alle locale sites het doen

sites.check-all-pages

volledige controle of alle locale sites het doen

sites.check-pages <servername(s)>

volledige controle of the genoemde locale sites het doen

sites.check-project <projectname(s)>

controle of pages for specifieke projecten het doen

sites.check-project-up <projectname(s)>

controle of (frontpages voor) specifieke projecten het doen

sites.check-up <servername(s)>

snelle (frontpage only) controle of alle locale sites het doen

sites.list-domains

maak een lijst met alle domeinen die met deze routines kunnen worden gecontroleerd

Andere commando's

bedoeld voor het managen van andere configuraties (bv. trac, php). Vooral die waar je niet zomaar bij kunt.

addstartup

Voeg een init file toe aan de system startup sequence. Dit is nog geschreven op Ubuntu/Mint (update-rc.d)

editconf <name(s)>

pas een bestand voor een gespecificeerde configuratie aan

listconf

maak een lijst van de configuratiebestanden die met deze routines kunnen worden onderhouden

modconf <name(s)>

zet aanpassingen voor configuratie bestanden over; vervang versie

modconfa <name(s)>

modconf: backup & append versie

modconfb <name(s)>

modconf: backup & replace versie

diffconf

vergelijk alle of benoemde configuration bestanden die met deze routines kunnen worden onderhouden

diffconfg

diffconf, grafische versie