NGINX Webserver aufsetzen

| Linux

Nachdem ich den Vorgang des aufsetzen eines Webservers schon x-mal in meinem Leben gemacht habe und immer noch in diversesten Foren nachschauen muss, wie genau jetzt der Befehl ging, welche Pakete ich brauche und welche Configs ich bearbeiten muss, schreibe ich das ganze mal hier nett zusammen :)

Als Ausgangsbasis gehe ich von meinem neuen Raspberry Pi 4B aus, den ich mit dem neuen 64Bit Raspberry Pi OS installiert habe. (Die 64Bit am RPI sind ziemlich geil wegen den 8GB RAM die er hat!) Wir werden in diesem Post nur die Grundlegenden Dinge durchgehen, sodass der Webserver läuft. Details für einzelne CMS oder Datenbank aufsetzen wird hier nicht aufgelistet.

Im ersten Schritt installieren wir NGINX und PHP8.1 und verknüpfen die Zwei miteinander. Das erste und leichtere ist wir installieren nginx:

sudo apt update
sudo apt install nginx

Da die Standardbibliothek im RPI von PHP noch die Version 7.4 ist, müssen wir eine zusätzliche Repository Quelle angeben um die 8.1er herunterzuladen. Doch das hinzufügen der Quelle unterscheidet sich je Distribution daher splitte ich dies auf:

Ubuntu + Raspberry 32Bit
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Debian + Raspberry 64Bit
sudo apt install apt-transport-https lsb-release ca-certificates wget -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg packages.sury.org/php/apt.gpg

echo "deb packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

Danach können wir PHP ganz bequem installieren. 

sudo apt install php8.1-common php8.1-cli -y

Alle Pakete haben das selbe Muster, deshalb heißen die PHPErweiterungen z.B. so: php8.1-fpm, php8.1-gd, php8.1-mbstring


Nachdem wir nun NGINX und PHP installiert haben, müssen wir noch nginx konfigurieren. Dazu legen wir unter /etc/nginx/sites-available eine neue datei an und fügen folgendes ein:

server {
    listen 80 default_server;
    server_name<hostname>;
}

server {

        listen 443;
        root /var/www/html;

        index index.html index.php;

        server_name  <hostname>;

        location ~ [^/]\.php(/|$) {
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            if (!-f $document_root$fastcgi_script_name) {
                return 404;
            }
            fastcgi_buffer_size 32k;
            fastcgi_buffers 8 16k;
            fastcgi_connect_timeout 240s;
            fastcgi_read_timeout 240s;
            fastcgi_send_timeout 240s;

            # this is the PHP-FPM upstream - see also: www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
            #connecting-nginx-to-php-fpm
            fastcgi_pass         unix:/var/run/php/php8.1-fpm.sock;
            fastcgi_index        index.php;
            include              fastcgi.conf;
        }
}

Nun starten wir nginx einmal neu mit sudo service nginx restart und unsere Webseite ist erreichbar und PHP ist implementiert. Zum Abschluss integrieren wir noch ein Let's Encrypt Zertifikat und lassen unser Zertifikat automatisch erneuern. Dafür führen wir folgende Befehle aus:

sudo apt-get install certbot 
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx -d <hostname>

Mit diesen Befehlen haben wir certbot installiert und die Vorlage für nginx. Der letzte Befehl durchsucht im nginx Folder alle Seiten und implementiert automatisch das SSL Zertifikat. Für die Erneuerung fehlt nur noch ein Cronjob:

sudo crontab -e
0 12 * * * /usr/bin/certbot renew --quiet

Die zweite Zeile mit dem Cronjob einfach ans Ende des Files hängen und fertig. Nun haben wir einen voll funktionstüchtigen Server der bereit ist mit Inhalt zu befüllen. Sei es ein Wordpress oder Typo3 oder ein statisches HTML, der Kreativität sind keine Grenzen gesetzt!


OPTIONAL: 

Composer installation
Composer ist ein Paketmanager zum Installieren von verschiedensten Paketen aus dem Netz und wird generell zur Installation von verschiedensten CMS verwendet (TYPO3/Laravel) daher hier eine kurze Beschreibung wie dieser global installiert wird:

sudo apt install wget php-cli php-zip unzip
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
HASH="$(wget -q -O - composer.github.io/installer.sig)"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer -v

Gib mir Feedback!

Hab ich Blödsinn geschrieben oder etwas vergessen? Dann zögere nicht weiter und lass es mich sofort wissen indem du hier einen Kommentar hinterlässt!

×
Captcha Code

Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren