Früher oder später kommt man an den Punkt wo man sich um das Deployment seiner Projekte nicht mehr händisch kümmern möchte. Klassischerweise wird dafür ein Jenkins, bzw. Hudson Server genutzt. Für node Projekte gibt hier auch ein entsprechendes Plugin. Alternativ dazu kann man auch Strider CD nutzen.

Als Vorraussetzung wird auf der Homepage folgendes genannt:

  • nodejs
  • mongoDB
  • git
  • node-gyp

Die Installation ist dann sehr einfach. Das Repository wird von github geklont und danach im Verzeichnis die Abhängigkeiten per npm install installiert.

Falls eine lokale mongoDB Instanz genutzt wird kann danach direkt ein User hinzugefügt werden.

1
2
3
4
5
6
7
8
9
10
11
$ node bin/strider addUser
Enter email []: strider@example.com
Is admin? (y/n) [n]: y
Enter password []: *******

Email: strider@example.com
Password: ****
isAdmin: true
OK? (y/n) [y]:
22 Oct 21:21:01 - info: Connecting to MongoDB URL: mongodb://localhost/strider-foss
22 Oct 21:21:01 - info: User added successfully! Enjoy.

Danach kann die Anwendung mit dem Befehl NODE_ENV=production npm start gestartet werden und sollte dann unter http://:3000 verfügbar sein.

Konfiguration

Die Konfigurationsparamter kann man auch bequem in der Datei .striderrc als JSON-Objekt hinterlegen, die im strider Verzeichnis gespeichert wird.

1
2
3
4
5
6
7
8
9
10
{
"server_name": "https://my.host.net",
"port": "3000",
"DB_URI": "mongodb://[username:password@]host1[:port1]",
"smtp_host": "smtp.server.com",
"smtp_port": "25",
"smtp_user": "myUserName",
"smtp_pass": "mySecretPassword",
"smtp_from": "Lars lars@migula.net"
}

Die Parameter server_name und port geben an unter welchem Host die Strider Instanz betrieben und auf welchem Port der Webserver erreichbar ist.
Nach dem Erstellen der Konfigurationsdatei kann der Server über npm start gestartet werden.

pm2

Da das Starten direkt in der Konsole eher unpraktisch ist und man den Dienst ja auch nicht in einer screen Instanz laufen lassen möchte bietet sich das Tool pm2 an, mit dem Node Prozesse direkt beim Systemstart hochgefahren werden können.
Installiert wird das Tool per sudo npm install pm2 -g und danach kann aus der Strider-Verzeichnis über pm2 start bin/strider.js der Dienst gestartet werden.
Eine Übersicht über die laufenden Prozesse erhält man mit dem Befehl pm2 status. Die Übersicht sollte dann ungefähr so aussehen.

1
2
3
4
5
6
7
lmigula@gateway:~$ pm2 status
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App nameid │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ strider │ 0 │ fork │ 1808 │ online │ 02D │ 25.906 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

Falls als Status nicht online angezeigt wird hilft pm2 logs um den Fehler zu finden, oder man sucht direkt im Verzeichnis ~/.pm2/logs/ im entsprechenden Log-File.

Im nächsten Teil werde ich dann beschreiben wie man unter Strider einen Job anlegt.