{"id":312,"date":"2023-01-22T17:57:00","date_gmt":"2023-01-22T16:57:00","guid":{"rendered":"https:\/\/securityeye.wordifysites.com\/?p=312"},"modified":"2024-02-23T09:53:21","modified_gmt":"2024-02-23T08:53:21","slug":"nginx-lemp-stack","status":"publish","type":"post","link":"https:\/\/swissmakers.ch\/en\/nginx-lemp-stack\/","title":{"rendered":"Nginx LEMP Stack on Rocky Linux"},"content":{"rendered":"\n<p><strong>Rocky Linux<\/strong> ist eine auf CentOS basierende Distribution, die eine <strong>stabile<\/strong> und <strong>zuverl\u00e4ssige Plattform<\/strong> f\u00fcr die <strong>Entwicklung und den Betrieb von Web-Anwendungen<\/strong> bietet.<\/p>\n\n\n\n<p>In diesem Blog-Post zeigen wir Ihnen, wie Sie einen <strong>LEMP-Stack<\/strong> (<strong>Nginx, PHP 8.2 und MariaDB<\/strong>) auf <strong>Rocky Linux 8<\/strong> installieren und zus\u00e4tzlich absichern k\u00f6nnen.<\/p>\n\n\n\n<p>Der <strong>Nginx-Webserver<\/strong> ist eine der am <strong>h\u00e4ufigsten verwendeten L\u00f6sungen f\u00fcr die Bereitstellung von Web-Anwendungen.<\/strong> Nginx ist bekannt f\u00fcr seine <strong>Leistung<\/strong>, <strong>Skalierbarkeit<\/strong> und <strong>Zuverl\u00e4ssigkeit<\/strong>.<\/p>\n\n\n\n<p>Einige der Vorteile von Nginx sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hohe Leistung<\/strong>: Nginx ist besonders gut geeignet f\u00fcr die Verarbeitung von statischen Inhalten und die Behandlung von vielen gleichzeitigen Verbindungen.<\/li>\n\n\n\n<li><strong>Skalierbarkeit<\/strong>: Nginx erm\u00f6glicht es, horizontale Skalierung durch die Verwendung von mehreren Prozessen und die Verteilung der Last auf mehrere Server zu erreichen.<\/li>\n\n\n\n<li><strong>Robustheit<\/strong>: Nginx ist f\u00fcr seine Robustheit und F\u00e4higkeit bekannt, auch bei hohen Lasten stabil zu bleiben.<\/li>\n\n\n\n<li><strong>Ressourceneffizienz<\/strong>: Nginx verwendet weniger Ressourcen als andere Webserver und ist daher auf leistungsschwachen Servern gut einsetzbar.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote zitate is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Nginx ist der Bodyguard unter den Webservern \u2013 stark, zuverl\u00e4ssig und immer bereit, die Lasten zu tragen.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"gb-headline gb-headline-50255b4e gb-headline-text\">Grundlegende Quell- und Paket-Installation<\/h2>\n\n\n\n<p>F\u00fchren Sie zun\u00e4chst das folgende Kommando aus, um das Remi-Repository auf Ihrem System zu installieren. Dieses Repository enth\u00e4lt aktuellere Versionen von PHP, die nicht im Standard-Repository enthalten sind.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Hinzuf\u00fcgen des Remi-Repository zu Rocky:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-e6368a73ddfc8c70ed86d3ed9b16207b\"><code lang=\"vim\" class=\"language-vim\"># dnf install -y https:\/\/rpms.remirepo.net\/enterprise\/remi-release-8.rpm<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Aktivieren Sie das Remi-Repository f\u00fcr <strong>PHP 8.2:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-b5aa6e933e01396d37980f0633b06827\"><code lang=\"vim\" class=\"language-vim\"># dnf module enable remi-php82<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Aktualisierten Sie das System und installieren Sie dann sogleich alle erforderlichen Abh\u00e4ngigkeiten f\u00fcr das Stack:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-60305d9c989cdc282e5e6e3db312159d\"><code lang=\"vim\" class=\"language-vim\"># dnf update -y\n# dnf install -y nginx mariadb-server mariadb php-imagick php-intl php-common php-pecl-apcu php-fpm php-cli php-devel php-gd php-mysqlnd php-pear php-xml php-mbstring php-json php-pecl-apcu php-pecl-apcu-devel php-pecl-imagick php-intl php-opcache php-zip php-bcmath php-process php-gmp php-pecl-selinux<\/code><\/pre>\n\n\n\n<h2 class=\"gb-headline gb-headline-d4c31eaf gb-headline-text\">Konfiguration von MariaDB<\/h2>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Starten Sie den MariaDB-Dienst und aktivieren Sie ihn, indem Sie die folgenden Befehle ausf\u00fchren:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-824de9330b04921f12916640e7646c50\"><code lang=\"vim\" class=\"language-vim\"># systemctl enable mariadb --now\n# systemctl status mariadb<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>Sichern Sie die MariaDB-Installation, indem Sie &#171;<code>mysql_secure_installation<\/code>&#187; ausf\u00fchren. Zum Generieren eines starken Passwortes empfiehlt sich der erste Command (folgen Sie anschliessend den Anweisungen):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-5f11d8f5768ee2f1fb63c502589e0cee\"><code lang=\"vim\" class=\"language-vim\"># openssl rand -base64 30 &gt; \/root\/.mariadb-root-pw &amp;&amp; cat \/root\/.mariadb-root-pw\n# mysql_secure_installation<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>Erstellen Sie eine neue Datenbank und einen neuen Benutzer f\u00fcr Ihre Web-Anwendung und geben Sie dem Benutzer alle Berechtigungen f\u00fcr die Datenbank, indem Sie die folgenden Befehle ausf\u00fchren:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-31337939e181ac00084e144229e1efeb\"><code lang=\"vim\" class=\"language-vim\"># mysql -u root --password=$(cat \/root\/.mariadb-root-pw)\n\nMariaDB [(none)]&gt; CREATE DATABASE IF NOT EXISTS meine_neue_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;\nMariaDB [(none)]&gt; CREATE USER 'meinuser'@'localhost' IDENTIFIED BY 'mein-passwort-swissmakers';\nMariaDB [(none)]&gt; GRANT ALL PRIVILEGES ON meine_neue_db.* TO 'meinuser'@'localhost';\nMariaDB [(none)]&gt; FLUSH PRIVILEGES;\nMariaDB [(none)]&gt; quit<\/code><\/pre>\n\n\n\n<h2 class=\"gb-headline gb-headline-8d28e060 gb-headline-text\">Konfiguration von PHP-FPM (Kommunikation zu Ngnix)<\/h2>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>Konfigurieren Sie <strong>PHP-FPM<\/strong>, indem Sie die Datei &#171;<code>\/etc\/php-fpm.d\/www.conf<\/code>&#187; bearbeiten.<br>Entfernen Sie die Kommentare und \u00e4ndern Sie die folgenden Zeilen:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-a4289b0ddadb5930131ca24d5e60e1a0\"><code lang=\"vim\" class=\"language-vim\"># vim \/etc\/php-fpm.d\/www.conf\n\n    listen = \/var\/run\/php-fpm\/php-fpm.sock\n    user = nginx\n    group = nginx<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>Starten und aktivieren Sie den PHP-FPM-Dienst:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-6bf667abf3a8090f488fa90e3f0ca973\"><code lang=\"vim\" class=\"language-vim\"># systemctl enable php-fpm --now\n# systemctl status php-fpm<\/code><\/pre>\n\n\n\n<h2 class=\"gb-headline gb-headline-4cb9a25b gb-headline-text\">Basiskonfiguration von Nginx<\/h2>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>Konfigurieren Sie Nginx, indem Sie die Datei &#171;<code>\/etc\/nginx\/nginx.conf<\/code>&#187; bearbeiten. F\u00fcgen Sie die folgenden Zeilen im <strong>http-Block<\/strong> hinzu:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-7f38362871abc30534d60f3ad07163cf\"><code lang=\"vim\" class=\"language-vim\"># vim \/etc\/nginx\/nginx.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-a0ed3e37d4c5cb5f2ab2f75ebb947921\"><code lang=\"json\" class=\"language-json\">server {\n    listen 80;\n    listen [::]:80;\n    server_name meine-webpage.ch www.meine-webpage.ch;\n\n    root \/var\/www\/html;\n    index index.php index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ \/index.php?$args;\n    }\n\n    # used to pass php scripts to php-fpm via a unix socket\n    location ~ \\.php$ {\n        fastcgi_pass unix:\/var\/run\/php-fpm\/php-fpm.sock;\n        fastcgi_index index.php;\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n    }\n\n    # deny all hidden files (e.g. .htpasswd) except .well-known\/\n    location ~* \/\\.(?!well-known\\\/) {\n    \tdeny all;\n    }\n\n    # protect other system files\n    location ~* (?:\\.(?:bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$ {\n    \tdeny all;\n    }\n}<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u00dcberpr\u00fcfen Sie die Konfiguration von Nginx auf Fehler:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-3e7312f37580bdff4c4941072191fd1f\"><code lang=\"vim\" class=\"language-vim\"># nginx -t<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"11\">\n<li>Wird kein Fehler gefunden, heisst das, dass unsere Konfiguration valid ist und wir k\u00f6nnen wie folgt den Nginx Webserver starten:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-422fc91a44d68303af437ff5568afe14\"><code lang=\"vim\" class=\"language-vim\"># systemctl enable nginx --now\n# systemctl status nginx<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"12\">\n<li>Ist <a href=\"https:\/\/swissmakers.ch\/firewalld-basics\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/swissmakers.ch\/firewalld-basics\/\" rel=\"noreferrer noopener\">Firewalld<\/a> aktiv auf Ihrem System, m\u00fcssen Sie noch den <strong>Port 80<\/strong> wie folgt \u00f6ffnen, damit der Webserver von ausserhalb (bez. Ihrem LAN aus) erreichbar ist:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-a3f94c6f6401131d594352e90837f298\"><code lang=\"vim\" class=\"language-vim\"># firewall-cmd --permanent --add-service=http\n# firewall-cmd --reload<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"13\">\n<li>Testen Sie den LEMP-Stack, indem Sie eine neue PHP-Datei (<code>info.php<\/code>) im Verzeichnis &#171;<code>\/var\/www\/html\/<\/code>&#187; mit folgendem Code erstellen (diese sollte dann unter <strong>http:\/\/IP-ihres.servers\/info.php<\/strong> erreichbar sein):<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-63289c513f71a1f8d2ad1ddde7f610d2\"><code lang=\"vim\" class=\"language-vim\"># vim \/var\/www\/html\/info.php\n\n    &lt;?php phpinfo(); ?&gt;\n<\/code><\/pre>\n\n\n\n<p><strong>Bitte beachten Sie, dass diese Anleitung als allgemeine Hilfe gedacht ist und je nach spezifischem Setup und Ihren Anforderungen Anpassungen erforderlich sein k\u00f6nnen. Es ist wichtig, die Dokumentation und die Anleitungen der verwendeten Software sorgf\u00e4ltig zu lesen, um sicherzustellen, dass die Konfigurationen korrekt durchgef\u00fchrt werden.<\/strong><\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-b5b21d16 gb-headline-text\">Absichern des LEMP-Stacks<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Verwenden Sie eine Firewall<\/strong>, um eingehenden Traffic auf die erforderlichen Ports zu beschr\u00e4nken.<\/li>\n\n\n\n<li>Verwenden Sie <strong>starke Passw\u00f6rter f\u00fcr alle System- und Datenbankbenutzer<\/strong>.<\/li>\n\n\n\n<li>Halten Sie alle <strong>Software auf dem neuesten Stand<\/strong>, indem Sie regelm\u00e4ssig Sicherheitspatches anwenden.<\/li>\n\n\n\n<li><strong>Verwenden Sie HTTPS<\/strong> f\u00fcr alle Web-Traffic, um <strong>Daten in Transit zu verschl\u00fcsseln<\/strong>.<\/li>\n\n\n\n<li><strong>Beschr\u00e4nken Sie die Anzahl der Benutzer<\/strong> mit Zugriff auf den Server und <strong>\u00fcberwachen Sie verd\u00e4chtige Aktivit\u00e4ten<\/strong>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Rocky Linux is a distribution based on CentOS that provides a stable and reliable platform for ... <\/p>\n<p class=\"read-more-container\"><a title=\"Nginx LEMP Stack on Rocky Linux\" class=\"read-more button\" href=\"https:\/\/swissmakers.ch\/en\/nginx-lemp-stack\/#more-312\" aria-label=\"Read more about Nginx LEMP Stack on Rocky Linux\">Read more<\/a><\/p>","protected":false},"author":2,"featured_media":1542,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","footnotes":""},"categories":[25],"tags":[33,37,41],"class_list":["post-312","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webserver","tag-linux","tag-nginx","tag-rocky-linux","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"taxonomy_info":{"category":[{"value":25,"label":"Webserver"}],"post_tag":[{"value":33,"label":"linux"},{"value":37,"label":"nginx"},{"value":41,"label":"rocky linux"}]},"featured_image_src_large":["https:\/\/swissmakers.ch\/wp-content\/uploads\/2022\/04\/AdobeStock_551722511-scaled-1-1024x690.webp",1024,690,true],"author_info":{"display_name":"Michael Reber","author_link":"https:\/\/swissmakers.ch\/en\/author\/michael\/"},"comment_info":0,"category_info":[{"term_id":25,"name":"Webserver","slug":"webserver","term_group":0,"term_taxonomy_id":25,"taxonomy":"category","description":"","parent":0,"count":3,"filter":"raw","cat_ID":25,"category_count":3,"category_description":"","cat_name":"Webserver","category_nicename":"webserver","category_parent":0}],"tag_info":[{"term_id":33,"name":"linux","slug":"linux","term_group":0,"term_taxonomy_id":33,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"},{"term_id":37,"name":"nginx","slug":"nginx","term_group":0,"term_taxonomy_id":37,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":41,"name":"rocky linux","slug":"rocky-linux","term_group":0,"term_taxonomy_id":41,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/comments?post=312"}],"version-history":[{"count":18,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/312\/revisions"}],"predecessor-version":[{"id":6847,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/posts\/312\/revisions\/6847"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/media\/1542"}],"wp:attachment":[{"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/media?parent=312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/categories?post=312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swissmakers.ch\/en\/wp-json\/wp\/v2\/tags?post=312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}