-
Notifications
You must be signed in to change notification settings - Fork 4
Adminhandbuch
Hier findest du alle Anleitungen zu den täglichen Aufgaben des Admin es HPI Connect Portals.
Generelles:
- Mit den Servern verbinden
- Rails Konsole öffnen
- Versionen der deployten Webseiten sehen
- Neue Versionen deployen
- Rollback - Hilfe! Nach dem Deployment ist alles kaputt!
- Etwas funktioniert nicht - wo fange ich an?
- Eine Security Vulnerability! Was tun?
Administratives:
- Terminal öffnen
- snx für vpn
- dann mit server verbinden
-
production →
ssh [deploy@172.16.64.97](https://deploy@172.16.64.97/)
-
staging →
ssh [deploy@172.16.65.86](https://deploy@172.16.65.86/)
-
-
In Repo root rein
cd /var/www/hpi-career/current
-
zum starten der Konsole
bundle exec rails c -e production
- Terminal öffnen
- snx für vpn
- dann im Browser IP des Servers aufrufen
- prod → 172.16.64.97 -> das geht nicht richtig, deswegen lieber hier: https://www.hpi.uni-potsdam.de/connect/jobportal/de
- stag → 172.16.65.86
Wenn du etwas dazu entwickelt/geupdatet hast, sind die Änderungen erst live, wenn das auch auf Production deployt wurde. Um vorher größere Änderungen zu testen, empfiehlt es sich zuvor auf staging zu deployen und dort alles zu testen. Es wird der staging server vom staging branch deployt und vom master der production. Nach dem deployment ist die live Website eine kurze Zeit nicht erreichbar und danach noch kurz ein wenig langsam. Es kann auch sein, dass das deployment hängen bleibt, dann einfach mit ctrl+c den Befehl beenden und erneut ausführen(top
- zeigt an welche Prozesse laufen). Wenn du das Deployment verifizieren willst, kannst du auf dem server in var/wwww/hpi-carrer mit ls -al
die Uhrzeit checken, ob current auf neuesten release zeigt/vor kurzem aktualisiert wurde. Am besten deployst du abends, dann kann man noch auf Problemchen reagieren.
Für das Deployment befolgst du folgende Schritte:
- local bei dir ins repo
- git pull
- merge updates in gewünschten branch (master oder staging) den du deployen möchtest
- git push
- dann folgende Befehle
snx #connect to vpn
git checkout staging branch # could alternitively also be staging
ssh-add ~/.ssh/id_rsa
export SECRET_KEY_BASE=58407dfa7811dcf55dfe650d2c3963700b01bc53b1912c46049521ec2d7ac6164857fc5f1a04c09cd29858eba359d09fdf83393ac2b48a0f4b33a9a784b30fd7 # benötigt von einem gem
bundle exec cap production deploy # when on deploy for production, alternatively bundle exec staging deploy
Keine Sorge - dafür gibt es Rollbacks.
Mit bundle execute cap deploy:rollback
müsstest du die Änderungen rückgängig machen können (Angenommen du bist im Zustand, dass du gerade deployt hast, als VPN etc)
Hier kannst du auch weitere Befehle finden: https://stackoverflow.com/questions/496998/how-do-you-roll-back-to-the-previously-deployed-version-with-capistrano
Manchmal wird dir mitgeteilt, dass Kunden sich über eine kaputte Funktionalität beschweren. Dabei kannst du folgende Stellen checken:
- Besuche die Webseite in Production und versuche das Problem zu rekreieren
- Resette das Passwort des Users, sende es dir selbst per Mail und logge dich mit seinem Account ein. Schaue dann, ob du es selbst hinbekommst. Resette das Passwort erneut und sende es an den User.
- Betrachte die Logs des Production servers. Gehe dafür in das Verzeichnis für die Rails Console und suche in der Ebene darüber nach den logs. Mit
tail -f production.log
kannst du dir die letzten Log-Einträge anschauen. - Nutze den RubyMine debugger und versuche die Schritte im code nachzuvollziehen. Setze dir Breakpunkte an Stellen, wo du vermutest, dass der Fehler liegt
- Frage nach Hilfe bei den Devs von openHPI
Der dependabot von Github informiert dich, wenn du Code/Gem nutztst, welcher Sicherheitsücken hat. Schaue dafür im Securty Tab des Repos nach. Dort wird dir meist gezeigt, welche Version fehlerhaft ist und auf welche du upgraden musst, um die Lücke zu schließen. Wenn du Glück hast, wird auch direkt ein PR gestellt, den du dann auf staging mergen, dann testen und schlussendlich auf production deployen kannst. Nur wenn du die Änderung deployed hast, ist die Lücke geschlossen! Wenn es keinen PR gibt, dann google die Lücke und lese nach, was gemacht werden muss. Meistens ist es ein Rails update, welches du ausführen musst. Sieh aber zu, dass du die Lücke zeitnah geschlossen bekommst.
Häufiger kommt es vor, dass für ein Unternehmen, weder Email noch Passwort für den Account bekannt ist. Das ist deine Challenge als Detektiv:in einzugreifen und den Tag zu retten!
Dafür musst du auf die Production Datenbank ein wenig mit der Rails Konsole herumspielen. Da hast du Zugriff auf alle User.
Meistens bekommst du nur den Namen des Unternehmens oder eine Email Adresse. In folgenden Datanenbanken kannst du mit den Befehlen der Rails Konsole dich schnell zurechtfinden: User
, Staff
, Employer
Folgende Befehle (anhand der Datenbank User gezeigt) sind nützlich:
User.last
- zeigt dir den letzten User
User.all
- zeigt dir alle User
User.count
- zeigt die Anzahl der Einträge in User
a = User.last
- ermöglicht dir einen Eintrag einer Variable zuzuschreiben
a = User.where(email: "youremail")
- speichert in a alle User mit dem Wert "youremail" evtl. in einer Liste (mit a[0] bekommst du den ersten Eintrag)
a.email
- returnt den Wert des Feldes email des Users der unter a gespeichert wurde
a.email = "your_email@example.com"
- setzt den Wert auf deine Email
a.save
- speichert die Änderung, der alte Wert wird überschrieben
a.set_random_password
- generiert ein neues Passwort und schickt es in einer Mail an die Adresse von a.email
Manchmal wird dir aber nur der Unternehmensname genannt und du musst dann schauen, wie du an den Staff User kommst. Dafür suchst du nach dem Unternehmen (meistens mit Firma wie im Impressum der Website des Unternehmens benannt) in Employer und holst dir die id des Unternehmens. Anschließend schaust du in Staff nach einer Referenz zwischen user und Employer, bei der die Employer_id gleich der vorherigen ist. Daraus kannst du dir die Referenz zu dem User eintrag holen (manifestation_id). Mit dieser id kannst du dann in User den Eintrag mit der manifestation_id suchen. Hier nochmal die Befehle:
e = Employer.where(name: "Unternehmensname")
s = Staff.where(emplyer_id: e.id)
u = User.where(manifestation_id: s.id)
Davon das Passwort resetten
Jedes Jahr schließen neue Studierende am HPI ihr Studium ab. Damit diese zum Portal eingeladen werden, musst du sie einladen. Das machst du wie folgt. Zunächst bekommst du eine Liste vom Studienreferat mit Vorname, Nachname der Studierenden. Im Portal gibt es die Funktion "Alumni importieren", welche ein UTF-8 .csv importiert und dann an alle darin gelisteten Mails eine Mail schickt. Dieses .csv benötigt die Felder lastname, firstname, alumni_email, email. Dabei sind alle Felder ohne Umlaute zu schreiben (ä -> ae, ß->ss) und auch Zweitnamen müssen entfernt werden. Die Alumni Email generierst du dir, indem du firstname und lastname mit einem . konkatinierst. Die email ist in folgendem Format zu generieren: vorname.nachname@student.hpi.uni-potsdam.de Gegebenenfalls gibt es komplizierte Fälle, wobei du dann einfach die Email der Person ermittelst, indem du in OWA eine Mail versuchst an sie zu schreiben. Im Empfängerfeld wird dir dann die richtige Email Adresse vorgeschlagen. Den Upload musst du danach noch in deiner Entwicklungsumgebung testen! Dafür loggst du dich mit den Admin Credentials (user: admin@example.com pw: admin) ein und führst dort den Import durch. Die Funktionalität findest du in der Leiste am oberen Bildrand.
Es gibt ein paar Fragen, die häufiger aufkommen. Hier sind Antworten.
Können wir sehen, wie gut sich Anzeigen schlagen und welche am besten performen? Nein, momentan sind keine analytischen Funktionen implementiert.
Ich sehe weniger Studenten als gedacht, wenn ich als Unternehmen nach neuen Talenten suche. Woran liegt das? User der Plattform können die Sichtbarkeit einstellen, somit auch, ob sie von Unternehmen gefunden werden können oder nicht.