Alles was <zwischen spizklammern>
steht muss durch irgendwas ersetzt werden. Immer auch die spizklammern ersetzten und wenn vorhanden das trennzeichen "-" oder so beachten. <dein-name>
wird zu yanik-kendler
Screen ist eine utility für den install von sachen, dass die nicht abgebrochen werden wenn der user von ssh disconnected. Alle apt installs sollten im screen
ausgeführt werden. Mit exit
kann man screen verlassen.
Falls ein Screen prozess im Hintergrund läuft und nicht von selbst stopt: pkill screen
killt alle screens.
Mit ssh kann man sich auf einen Server verbinden. In unserem fall ist der Server so konfiguriert, dass er nur Verbindungen zulässt die den passenden private key zum angegebenen public key haben.
Der langform befehl wäre ssh -i <private_key_file> user@server
also ssh -i id_rsa ubuntu@<ip.adresse>
. Durch die verwendung von einem config file wird das verkürzt und es reicht den namen des Host Eintrag im config file anzugeben (geht nur wenn das key file id_rsa heißt) ssh <host-name>
Mit exit
kann man die ssh verbindung Verlassen.
Info: die meisten Befehle sollten auf allen Betriebsystemen identisch sein, alle auf der VM sind OS unabhängig. Manche der windows befehle sind vlt auf mac/linux anders.
- auf
oracle.com/cloud
einloggen - unter compute > instances eine neue Instanz anlegen
- instanz benennen
- unter "Image and Shape"
- edit
- change Image
- Ubuntu
- 22.04 Minimal
- "add ssh keys"
- "paste public keys" auswählen
- entweder einen vorhanden public key pasten oder einen erstellen (geht auch auf windows)
- terminal öffnen
- im user directory in .ssh ordner wechseln bzw erstellen
ssh-keygen
ausführen- key name leer lassen
- passphrase leer lassen
code .
ausführen und inhalt von id_rsa.pub kopieren- in inputfeld pasten
- "create"
- virtual cloud network: "vcn..." anclicken
- "subnet.."
- "Default Security List.."
- add ingress Rules
- Source CIDR: 0.0.0.0/0
- Destination Port Range: 80
- Add
- In oracle - burger menu - pinned>instances -
<deine-instanz>
- unter "Instance access" ip kopieren - in vscode im .ssh ordner(c:/users/name/.ssh) ein file "config" erstellen und folgendes einfügen
Host <project-name> HostName <kopierte.ip> User ubuntu
- im Terminal
ssh <project-name>
sudo apt update
sudo apt install screen
immer y bzw yesscreen
sudo apt install nano
immer y bzw yessudo apt install nginx
immer y bzw yesexit
(screen)cd /etc/iptables/
sudo nano rules.v4
- alle lines zwischen "-A OUTPUT..." und "COMMIT" mit strg+k löschen
- zu line "-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT" mit pfeiltasten
- strg+k
- zwei mal strg+u
- bei einer von beiden den --dport von 22 auf 80 ändern
- str+x
- y
- enter
cd /etc/nginx/sites-available
sudo nano default
- nach unten scrollen und unter "location / {... }" folgendes einfügen
location /api/ { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header content-type $content_type; proxy_cache_bypass $http_upgrade; proxy_set_header Connection 'upgrade'; }
- strg+x, y, enter
sudo systemctl start nginx
bzwsudo systemctl restart nginx
screen
sudo apt install postgresql
y bzw yes- bei der restart abfrage
15
restarten exit
(screen)sudo su - postgres
nano setup.sql
create database <projectname>; create user <projectname> with password '<password>'; alter user <projectname> with superuser;
- strg+x
- y
- enter
plsql -f setup.sql
- in den application.propperties die line
quarkus.package.type=uber-jar
hinzufügen - falls noch nicht vorhanden
quarkus.hibernate-orm.sql-load-script=import.sql
ergänzen (nur relevant wenn ihr ein import.sql skript verwendet) - falls noch nicht in den einzelnen resources "api" vorm pfad steht
quarkus.http.root-path=/api
hinzufügen- aberger mag das wenn es so gelöst ist und nicht in den einzelnen resources
- terminal im backend öffnen
mvn clean package
oder./mvnw clean package
- wenn ein test error
mvn -D skipTests=true clean package
oder./mvnw -D skipTests=true clean package
(wenn anderer error gehts auch über IntelliJ) - in den target folder cd'n
scp <dein-jar-runner-file> <project-name>:
(gleicher name wie oben im config file)
- im terminal am server:
screen
sudo apt list | grep jre
- openJDK version 21 headless bis zum leerzeichen kopieren (ohne datum und "amd..")
sudo apt install <kopiertes-ding>
- y
- bei der restart abfrage
15
restarten exit
(screen)java -jar <dein-jar-file>
Euer Projekt sollte jetzt am Server laufen: Kann getestet werden indem ihr die <ip.des.servers>/api/<euer/api/pfad>
im browser eingebt.. der Browser kann aber nur GET requests stellen. Für komplexere routen einfach ein .http file anlegen und dort den POST ausführen.
Ihr könnt theoretisch auch euer Frontend schon hoch pushen bringt aber gerade nichts.
Temporäre Lösung die in Zukunft automatisiert wird
- Nach Quarkus anpassen 3.-7. ein jar file packagen und auf den server laden
- Über ssh auf die Instanz verbinden und
java -jar <dein-jar-file>
- Auf dem Rechner des Teammitglieds einen vorhandenen public key kopieren oder nach Ubuntu instanz erstellen 5.2 einen erstellen und an den Instanz Besitzter senden
- auf dem Besitzter Rechner auf die Instanz ssh'n
ssh <project-name>
cd .ssh
- nano authorized_keys
- ACHTUNG: wenn ihr die erste Zeile aus diesem File löscht oder verändert könnt ihr nicht mehr auf die Instanz zugreifen.
- in einer neuen zeile den public key des teammitglieds einfügen (rechtsklick)