Basic Setup Guide

Basic


Einführung

Dieses Produkt erfordert ein gewisses Level an Expertise. Bei Fragen sind wir über Ticket oder E-Mail erreichbar.

  • Item Name : Basic

Wilkommen zu dieser Installationsanleitung.

Dieser Guide soll dir helfen, alles für die Installation unsere Produkte vorzubereiten.

Vorraussetzungen

Du brauchst die folgenden Sachen:

  1. Einen Server (KVM, LXC kann funktionieren - muss aber nicht)

Als Testserver benutzen wir hier Debian "bullseye" 11 64 bit. Diese Anleitung sollte auch auf anderen Betriebssystemen funktionieren, muss dann aber ggf. entsprechend angepasst werden.

Getting Started #back to top

Wir haben die Option die Produkte über nginx oder Apache laufen zu lassen. In beiden Fällen brauchen wir aber trotzdem PHP.

Stell sicher, dass das System up-to-date ist indem du folgenden Befehl ausführst sudo apt-get update -y && sudo apt-get upgrade -y.

PHP

Da die PHP8 Pakete nicht in den Bullseye-Repositories enthalten sind, müssen wir das Repository von "survy" hinzufügen.

                                    root@server:~# sudo apt install ca-certificates apt-transport-https software-properties-common gnupg2 git unzip -y
                                    root@server:~# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
                                    root@server:~# wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
                                    root@server:~# sudo apt update -y
                                

Danach können wir alle Pakete installieren welche wir benötigen.

                                    root@server:~# sudo apt install -y php8.1-zip php8.1-common php8.1-mysql php8.1-ssh2 php8.1-xml php8.1-curl php8.1-gd php8.1-imagick php8.1-mbstring
                                

Apache2

s.h. oben stehende PHP Installation.

                                    root@server:~# sudo apt install -y apache2 libapache2-mod-php8.1
                                    root@server:~# sudo a2enmod rewrite
                                

Also nächstes muss apache2 konfiguriert werden, sodass wir unsere eigene .htaccess Datei nutzen könenn. Dies wird wie gefolgt gemacht:

Öffne die Apache-2 config-datei mit sudo nano /etc/apache2/apache2.conf und finde den folgenden Absatz:

                                    <Directory /var/www/>
                                        Options Indexes FollowSymLinks
                                        AllowOverride None
                                        Require all granted
                                    </Directory>
                                

Jetzt, ändere das folgende AllowOverride von None auf All. Die Zeile sollte dann so aussehen: AllowOverride All.

Verlasse den Editor mit ctrl + x und bestätige mit y

Starte apache mit sudo systemctl restart apache2 neu und wir sind fertig.

Nginx

Nginx ist eine Alternative zu Apache2, es kann nicht beides gleichzeitig genutzt werden!

Installieren tun wir nginx mit dem folgenden Befehl:

                                        root@server:~# sudo apt install nginx
                                

Da es kein PHP-Module fuer nginx gibt, mössen wir auch PHP-FPM installieren:

                                    root@server:~# sudo apt install php8.1-fpm
                                

Nun koennen wir die Konfiguration in /etc/nginx/sites-enable/default anpassen oder eine neue Daten mit der Konfiguration in /etc/nginx/sites-available/ anlegen.

                                    ##
                                    # Default server configuration
                                    #
                                    server {
                                        listen 80 default_server;
                                        listen [::]:80 default_server;
                                    
                                        # document root
                                        root /var/www/html;
                                    
                                        # Add index.php to the list if you are using PHP
                                        index index.php;
                                        
                                        # Website-Name
                                        server_name _;
                                    
                                        # PHP Handler via FPM
                                        location ~ \.php$ {
                                            include snippets/fastcgi-php.conf;
                                            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
                                        }	
                                    
                                        # Assets zu _views rewriten
                                        location ~* ^\/(assets|css|png|img|imgs|images|js)\/(.*) {
                                                    rewrite (.*) /_views/$1 break;
                                                    return 301;
                                            }
                                    
                                        # mit PHP Versuchen wenn's die Datein nicht gibt.
                                        location / {
                                            try_files $uri $uri/ /index.php?$args;
                                        }
                                    
                                        # config Direktzugriff verbieten
                                        location /config.json {
                                            deny all;
                                        }
                                        
                                        # Zugriff fuer .well-known erlauben wegen ACME
                                        location ~ /\.(?!well-known).* {
                                            deny all;
                                            access_log off;
                                            log_not_found off;
                                        }
                                    }                                    
                                

Die Seite aktivieren und nginx einmal mit sudo systemctl reload nginx neustarten und alles sollte funktionieren.

Datenbank Einrichtung

Solange nicht anders angegeben, braucht das Produkt eine MySQL Datenbank. Wir benutzen MariaDB und dieser Guide wird die Einrichtung und Erstellung eines neuen Nutzer zeigen.

                                    root@server:~# sudo apt install mariadb-server mariadb-client
                                

Also nächtest müssen wir MySQL richtig einrichten. Führen wir sudo mysql_secure_installation aus.

                                    root@server:~# sudo mysql_secure_installation
                                    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
                                    SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

                                    In order to log into MariaDB to secure it, we'll need the current
                                    password for the root user.  If you've just installed MariaDB, and
                                    you haven't set the root password yet, the password will be blank,
                                    so you should just press enter here.

                                    Enter current password for root (enter for none): 
                                    OK, successfully used password, moving on...

                                    Setting the root password ensures that nobody can log into the MariaDB
                                    root user without the proper authorisation.

                                    Set root password? [Y/n] Y
                                    New password: 
                                    Re-enter new password: 
                                    Password updated successfully!
                                    Reloading privilege tables..
                                    ... Success!


                                    By default, a MariaDB installation has an anonymous user, allowing anyone
                                    to log into MariaDB without having to have a user account created for
                                    them.  This is intended only for testing, and to make the installation
                                    go a bit smoother.  You should remove them before moving into a
                                    production environment.

                                    Remove anonymous users? [Y/n] Y
                                    ... Success!

                                    Normally, root should only be allowed to connect from 'localhost'.  This
                                    ensures that someone cannot guess at the root password from the network.

                                    Disallow root login remotely? [Y/n] Y
                                    ... Success!

                                    By default, MariaDB comes with a database named 'test' that anyone can
                                    access.  This is also intended only for testing, and should be removed
                                    before moving into a production environment.

                                    Remove test database and access to it? [Y/n] Y
                                    - Dropping test database...
                                    ... Success!
                                    - Removing privileges on test database...
                                    ... Success!

                                    Reloading the privilege tables will ensure that all changes made so far
                                    will take effect immediately.

                                    Reload privilege tables now? [Y/n] Y
                                    ... Success!

                                    Cleaning up...

                                    All done!  If you've completed all of the above steps, your MariaDB
                                    installation should now be secure.

                                    Thanks for using MariaDB!

                                

Wir bestätigen erstmal mit enter, da wir noch kein Passwort für den root-Nutzer haben. Danach antworten wir immer mit Y und wenn wir nach einem root-passwort gefragt werden, geben wir einfach root ein.
Es sollte angemerkt werden, das dies keine Sicherheitslücke ist, da wird dem root-Nutzer den login nur von localhost (dem Server selber) erlauben. Wenn du planst ein Programm wie phpmyadmin oder etwas ähnliches zu verwenden, ist es empfholen ein sicheres Passwort zu wählen.

Jetzt wollen wir einen Nutzer für das Produkt erstellen.
Führe die mysql shell aus indem du sudo mysql im Terminal eingibst. Du solltest eine Ausgabe ählich zu dieser erhalten:

                                    root@server:~# sudo mysql
                                    Welcome to the MariaDB monitor.  Commands end with ; or \g.
                                    Your MariaDB connection id is 57
                                    Server version: 10.3.23-MariaDB-0+deb10u1 Debian 10
                                    
                                    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
                                    
                                    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                                    
                                    MariaDB [(none)]> 
                                

Das heißt, dass wir uns erfolgreich mit der Datenbank verbunden haben.

                                    MariaDB [(none)]> CREATE USER 'CP'@'localhost' IDENTIFIED BY 'CP';
                                

Wieder, wir erlauben dem Nutzer den login nur von localhost, deswegen ist CP als Password ausreichend.

                                    MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'CP'@'localhost';
                                

Dies gibt dem Nutzer Rechte für alle Datenbank, da wir keine Datenbank spezifisch für das Produkt erstellt haben. Dieser Schritt kann auch nach dem importieren der Datenbank ausgeführt werden um die Rechte des Nutzer nur für die spezifische Datenbank zu setzen.

                                    MariaDB [(none)]> FLUSH PRIVILEGES;
                                

Dieser Befehl lädt die Rechte-tabelle neu und unser Nutzer ist damit einsatzfähig.

Dies schließt die Einrichtung ab. Du kannst nun mit der Einrichtung des Produkts forfahren.