Skip to content

Einrichtung eines Webservers

Michael Pilgermann edited this page Sep 4, 2023 · 14 revisions

1. MariaDB aufsetzen

1.1 Installation

_sudo apt-get install mariadb-server_

_sudo systemctl start mariadb.service_

1.2 Konfiguration

(Standart setup-script zur Einrichtung; Fragen nach gebrauch beantworten)

_sudo mysql_secure_installation_

1.3 DB-User anlegen

_sudo mariadb_

(öffnet MariaDB Konsole) (neuen localhost user zum benutzen der Datenbank erstellen)

Folgenden command eingeben:

_GRANT ALL ON . TO 'hier kommt der username'@'localhost' IDENTIFIED BY 'hier das PW' WITH GRANT OPTION;_

(Anmeldung: mysql -u hier kommt der username -p (mit Anschließender passwd-Eingabe) (-u option für Angabe eines users; -p option für Angabe des Passworts; passwd nicht im Command benutzen, da ‘bad practice’; commands und dadurch passwd könnte eventuell in log files eingesehen werden)

1.4 DB aufsetzen

beim erstellten mysql-nutzer anmelden, die neue Datenbank erstellen und setup.sql und initial.sql ausführen:

_mysql -u hierDerBenutzername -p_

_create database name der Datenbenk;_

_use name der Datenbank;_

_source ./relative/path/to/setup.sql;_

_source ./relative/path/to/initial.sql;_

(setup.sql und initial.sql sind in notion)

2. SpringBoot und Maven

Es werden Java und JDK benötigt

_sudo apt install openjdk-17-jdk_

prüfen ob vorhanden mit:

_java -version_

Maven installieren (zum bauen der .jar)

_sudo apt-get install maven_

Bevor man die .jar baut:

Code von Git auf Server in opt-Verzeichnis klonen

application.properties anlegen und in WebBaKI-Order ablegen

pom.xml bearebeiten (siehe Notion WEB-Deployment PDF)

3. Application starten

mit maven die .jar bauen

sudo mvn clean package

jar ausführen:

java -jar NameDerJar.jar

4. Autodeploy

in webbaki-admin:

sudo nano autodeploy.sh

systemctl stop webbaki

apt-get update

apt get upgrade -y

cd /opt/webbaki-admin

rm -rf WebBaKi

git clone https://<<your_access_token_goes_here>>@github.com/THB-webbaki/WebBaKI

cp application.properties /opt/webbaki-admin/WebBaKI/WeBBAKI/src/main/resources

cd /opt/webbaki-admin/WebBaKI/WeBBAKI

rm -rf target/WeBBAKI-0.0.1-SNAPSHOT.jar

mvn clean package

systemctl start webbaki

nginx und autodeploy.sh automatisieren

sudo apt-get install nginx

nginx anpassen unter /etc/nginx/conf.d/

webbaki.conf anlegen:

server{
    # ssl config
    listen 443 ssl;
    include snippets/snakeoil.conf;

    server_name webbakiPNT.th-brandenburg.de;
    #root /home/webbaki/WeBBAKI_2.0/WeBBAKI;

    location / {
         proxy_pass <http://localhost:8080/>;
         #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         #proxy_set_header X-Forwarded-Proto $scheme;
         #proxy_set_header X-Forwarded-Port $server_port;
    }
}

nach Fehlern prüfen

sudo nginx -t

und nginx neu starten

sudo systemctl restart nginx

Webbaki Service für systemctl

sudo nano /etc/systemd/system/webbaki.service

[Unit]

Description=Spring Boot WeBBAKI

After=syslog.target

After=network.target

[Service]

User=root

Type=simple

ExecStart=/usr/bin/java -jar /opt/webbaki-admin/WebBaKI/WeBBAKI/target/WeBBAKI-0.0.1-SNAPSHOT.jar

Restart=always

StandardOutput=journal

StandardError=journal

SyslogIdentifier=webbaki

[Install]

WantedBy=multi-user.target

dann:

sudo systemctl daemon-reload (wird dieser command nach einer Servicefile-Änderung nicht ausgeführt, wird die Änderung nicht übernommen)

sudo systemctl start webbaki

sudo systemctl enable webbaki

Secure Connection

Vorgehen auch hier beschrieben (https://wiki.ubuntuusers.de/ssl-cert/).
sudo apt-get install ssl-cert
sudo make-ssl-cert generate-default-snakeoil

Alternativ kann auch "Lets Encrypt" genutzt werden.

Täglicher Cronjob

sudo crontab -e 0 * * * * /opt/webbaki-admin/autodeploy.sh

m h dom mon dow command cron syntax: "<Minute> <Hour> <DayOfMonth> <Month> <DayOfWeek> <command>"
"*" entspricht "immer"
z.B. 0 * * * * /opt/webbaki-admin/autodeploy.sh -> minute null, jede Stunde, jeden Tag im Monat, ...

Error Logging

system Error Log:
sudo cat /var/log/syslog
(clear the error log: sudo truncate -s 0 /var/log/syslog) mögliche nginx Error bei:
sudo cat /var/log/nginx/error.log