Skip to content
This repository has been archived by the owner on Oct 29, 2024. It is now read-only.

Adminhandbuch

Sandro Sp edited this page Sep 6, 2022 · 3 revisions

Hier findest du alle Anleitungen zu den täglichen Aufgaben des Admin es HPI Connect Portals.

Generelles:

Administratives:

Generelles How-To

Mit den Servern verbinden

  • 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/)

Rails Konsole öffnen

Versionen der deployten Webseiten sehen

Neue Versionen deployen

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

Rollback - Hilfe! Nach dem Deployment ist alles kaputt!

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

Etwas funktioniert nicht - wo fange ich an?

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

Eine Security Vulnerability! Was tun?

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.

Administratives

Passwörter von Usern zurücksetzen

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

Hinzufügen neuer Alumni

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. grafik

Beantworten technischer Fragen

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.