Railo & Amazon EC2 Instanzen

Vor einiger Zeit habe ich mich mit der „on the Fly installation“ von Railo auf einer Amazon EC2 instanze beschäftigt. Dabei habe ich viele Ansätze für ein einfaches Setup gefunden, leider entsprach nichts davon meinen Vorstellungen.

Bei meinen Recherchen bemerkte ich, dass man einfach ein shell Script als UserData übergeben kann… endlose Möglichkeiten tun sich da auf.

Dabei bin ich auch über das railo_ec2 shell Script von @Amaroom gestolpert. Da die Version ein etwas altes Railo Paket installiert habe ich das Script kurzerhand geforkt und aktualisiert. Zu finden ist das ganze auf Github.com

Auch wenn sich das Script von selbst erklärt vielleicht ein paar Kommentare:

Der erste Befehl führt ein upgrade aus, so das die aws Linux Version auf dem neusten Stand gebracht wird.

Anschließend wird tomcat7 und git installiert und tomcat in den „autostart“ gepackt.

Nun wird das aktuelle Railo mit Curl gezogen und in den vorbereiteten Ordner verschoben und mit den Tomcat user und der Tomcat Gruppe versehen.

ab Zeile 43 wird ein wenig die Tomcat catalina config geändert. Hier werden der Pfad zu Railo gesetzt sowie mapping und welcome file definiert.

Zum Abschluss wird noch, zu demozwecken, eine index.cfm angelegt und tomcat gestartet.

Ab hier hat man nun frei Hand. Anstelle der index.cfm kann nun mit git clone ein Repositorie gezogen werden und in den webapps/ROOT ordner gelegt werden.
Ein Beispiel wäre:

git clone https://github.com/TiagoReis-Webdevit/demoCMS.git  /usr/share/tomcat7/webapps/ROOT

chown -R tomcat.tomcat /usr/share/tomcat7/webapps/ROOT/

um das TiagoReis demoCMS zu installieren.

Um sich den Ärger mit nicht gesetzten Passwörtern im Web-Admin zu ersparen kann eine entsprechend vorkonfigurierte railo-web.xml.cfm in den Ordner /usr/share/tomcat7/webapps/ROOT/WEB-INF/railo/ geladen werden.

Alternative und von mir bevorzugt kann auch eine server.xml, in der Serverpasswort und defaul web admin Passwort bereits gesetzt sind, in das Verzeichnis /usr/share/tomcat7/railo4/railo-server/context/ kopiert werden.
Vor dem ersten Aufruf des Railo Admins existiert dieser Ordner nicht und muss entsprechen mit mkdir angelegt werden.

Dort können auch Datenbanken und Mail Server installiert werden. Natürlich bietet sich hier auch die Nutzung der aws Dienste an. Ein awsWrapper ist hier zu finden, der ist etwas verbugt aber anpassbar. Ansonsten schreibe ich grad einen Wrapper der hier zu finden ist.

Und schon können x Passwort gesicherte Railo Instanzen mit einem Git Projekt gestartet werden. Um ein Update der Application auf die Server zu spielen braucht man nur noch alles ins git zu pushen und die neue Instanzen des alten Servers starten, nicht vergessen die alten zu terminieren. Mit einer AutoScalling Group benötigt man nur noch die terminierung der Instanzen.