{"id":7769,"date":"2019-09-18T12:52:35","date_gmt":"2019-09-18T10:52:35","guid":{"rendered":"https:\/\/contabo.com\/blog\/?p=7769"},"modified":"2021-12-22T10:56:48","modified_gmt":"2021-12-22T09:56:48","slug":"lemp-debian-nginx-certbot-mariadb-php","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/lemp-debian-nginx-certbot-mariadb-php\/","title":{"rendered":"LEMP: Debian, NGINX + Certbot, MariaDB, PHP"},"content":{"rendered":"\n<p>In diesem Tutorial zeigen wir, wie man sein Debian System f\u00fcr das Hosten von einer oder mehreren Webseiten vorbereitet.<br>Wir werden keine Optimierungen der Konfigurationen durchf\u00fchren, es gibt je nach Art der Webseite oder Servertyp verschiedene M\u00f6glichkeiten die Konfigurationen weiter zu optimieren. NGINX, MySQL bzw. MariaDB und PHP (LEMP) erhalten lediglich die Grundkonfiguration, die f\u00fcr unsere Webseite (eine phpinfo Datei) ben\u00f6tigt werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Installation der Software <\/h3>\n\n\n\n<p>Sollten Sie sich nicht sicher sein, ob Ihr Benutzer \u00fcber die notwendigen Rechte verf\u00fcgt, k\u00f6nnen Sie zu Beginn einer jeden SSH-Session das folgende Kommando ausf\u00fchren:<br><\/p>\n\n\n\n<p><code>sudo -i<\/code><\/p>\n\n\n\n<p>Nach Ausf\u00fchrung des Kommandos erhalten Sie weiterf\u00fchrende (Root-) Berechtigungen ohne das Kommando &#8222;sudo&#8220; jedem Befehl auf der Kommandozeile voranstellen zu m\u00fcssen.<\/p>\n\n\n\n<p>NGINX, Certbot, PHP Installation:<\/p>\n\n\n\n<p><code>:~# apt install nginx python3-certbot-nginx php-fpm php-mysql zip unzip pwgen<\/code><\/p>\n\n\n\n<p> MariaDB kann mit folgendem Befehl installiert werden: <\/p>\n\n\n\n<p><code>  :~# apt install mariadb-server <\/code><\/p>\n\n\n\n<p>Eine Installation \u00fcber die bereits konfigurierten Standard-Paketquellen installiert nicht zwingend die aktuelle stable MariaDB Version. Falls Sie die aktuellen MariaDB Pakete ben\u00f6tigen, besuchen Sie bitte:  <a rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/downloads.mariadb.org\/mariadb\/repositories\/\" target=\"_blank\">Official MariaDB Repo<\/a> und folgen Sie der Anleitung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Konfiguration der Software<\/h3>\n\n\n\n<p>Nach der Installation der Software sollte zun\u00e4chst die Datenbank abgesichert und konfiguriert werden:<\/p>\n\n\n\n<p><code>:~# mysql_secure_installation &amp;&amp; mysql_upgrade<br>:~#mysql<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> Welcome to the MariaDB monitor.  Commands end with ; or \\g.\n Your MariaDB connection id is 55\n Server version: 10.4.6-MariaDB-1:10.4.6+maria~buster mariadb.org binary distribution\n Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. <\/pre>\n\n\n\n<p>Anschlie\u00dfend starten wir den Certbot, welcher f\u00fcr unseren default vmXXXX.contaboserver.net Hostnamen ein Zertifikat beantragen wird.<br>Man kann hier auch jede andere Webseite konfigurieren.<br><br><strong>Wichtig:<\/strong> Falls Sie weitere Domains absichern m\u00f6chten, dann einfach mit der &#8222;-d&#8220; Option direkt hinterm dem Befehl, Certbot muss und sollte nicht mehrmals ausgef\u00fchrt werden.<\/p>\n\n\n\n<p><code>:~# certbot --nginx -d  $(hostname) -d  vmXXXX.contaboserver.net   <\/code><\/p>\n\n\n\n<p>Certbot wird eine Konfiguration der abgesicherten Website in \/etc\/nginx\/sites-enabled\/ erstellen.<br><br>Als n\u00e4chstes konfigurieren wir PHP, damit der NGINX Webserver wei\u00df, wo der PHP-Interpreter lauscht. Wir pr\u00fcfen nun, wie PHP konfiguriert ist und wo es verf\u00fcgbar ist:<\/p>\n\n\n\n<p><code>:~# grep \"listen =\" \/etc\/php\/7.3\/fpm\/pool.d\/www.conf<br>listen = \/run\/php\/php7.3-fpm.sock<\/code><\/p>\n\n\n\n<p>In diesem Fall ist PHP \u00fcber UNIX Socket konfiguriert, \u00c4nderungen nehmen wir keine vor. Die oben gepr\u00fcfte php-pool Konfiguration bietet sehr viele M\u00f6glichkeiten PHP zu optimieren.<br>\u00d6ffnen Sie nun die  \/etc\/nginx\/sites-enabled\/default Datei mit einem Editor, eine PHP-Sektion ist bereits sichtbar, diese muss f\u00fcr jede Webseite welche PHP ben\u00f6tigt, hinzugef\u00fcgt werden. Au\u00dferdem muss folgende Zeile um &#8222;index.php&#8220; erweitert werden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">index index.php index.html index.htm;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">location ~ .php$ {<br>                include snippets\/fastcgi-php.conf;<br>                fastcgi_pass unix:\/run\/php\/php7.3-fpm.sock;<br>                }<\/pre>\n\n\n\n<p><code>:~# systemctl restart nginx<\/code><\/p>\n\n\n\n<p>Wir werden nun phpMyAdmin herunterladen und verf\u00fcgbar machen.<br>phpMyAdmin ist unter Debian 10 leider nicht einfach \u00fcber &#8222;apt install phpmyadmin&#8220; verf\u00fcgbar, vermutlich wird das Paket verf\u00fcgbar werden, sobald die aktuelle Alpha Version zu &#8222;Stable&#8220; wird.<br>F\u00fcr den Download besuchen Sie <a href=\"https:\/\/www.phpmyadmin.net\/downloads\/\" rel=\"nofollow\">Official phpMyAdmin Website<\/a>. Unter Debian 10 ist PHP 7.3 Standard, daher ben\u00f6tigen wir die Alpha Version von phpMyAdmin f\u00fcr volle Kompatibilit\u00e4t. Diese Version ist noch in der Testphase.<\/p>\n\n\n\n<p><code> :~# mkdir \/var\/www\/phpmyadmin<br> :~# cd \/var\/www\/phpmyadmin\/<br> :~# wget https:\/\/files.phpmyadmin.net\/phpMyAdmin\/5.0.0-alpha1\/phpMyAdmin-5.0.0-alpha1-all-languages.zip<br> &amp;&amp; unzip phpMyAdmin-5.0.0-alpha1-all-languages.zip<br> :~# mv phpMyAdmin-5.0.0-alpha1-all-languages\/* .<br><\/code><\/p>\n\n\n\n<p>Wir importieren nun die Datenbank und erstellen einen Nutzer.<br>Passw\u00f6rter k\u00f6nnen mittels &#8222;pwgen&#8220; erstellt werden:<\/p>\n\n\n\n<p><code> :~# mysql &lt;  sql\/create_tables.sql<\/code><br><code> :~# mysql<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">CREATE USER 'phpmyadminuser'@'localhost'  IDENTIFIED BY 'USE ONLY SECURE PASSWORDS !!';\nGRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'phpmyadminuser'@'localhost'<br>  IDENTIFIED BY 'USE ONLY SECURE PASSWORDS !!';\nFLUSH PRIVILEGES;<\/pre>\n\n\n\n<p>Jetzt konfigurieren wir phpMyAdmin in der config.inc.php Datei, folgende Zeilen m\u00fcssen angepasst werden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/* User used to manipulate with storage *\/\n  $cfg['Servers'][$i]['controlhost'] = 'localhost';\n  $cfg['Servers'][$i]['controlport'] = '3306';\n  $cfg['Servers'][$i]['controluser'] = 'phpmyadminuser';<\/pre>\n\n\n\n<p><code> :~# cp -p config.sample.inc.php config.inc.php<br> :~# pwgen 32 1 #Copy the password for blowfish secret<br> :~# chown www-data: \/var\/www\/phpmyadmin -R<\/code><\/p>\n\n\n\n<p>Abschlie\u00dfend k\u00f6nnen wir die Seite \u00fcber NGINX erreichbar machen, wir nutzen hier wieder den Hostnamen unseres Servers und tragen in der server {} Sektion folgende Konfiguration ein:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">    location \/phpmyadmin {\n           root \/var\/www\/phpmyadmin\/;\n           index index.php index.html index.htm;\n           location ~ ^\/phpmyadmin\/(.+\\.php)$ {\n                   try_files $uri =404;\n                   root \/var\/www\/phpmyadmin\/;\n                   fastcgi_pass unix:\/run\/php\/php7.3-fpm.sock;\n                   fastcgi_index index.php;\n                   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n           }\n           location ~* ^\/phpmyadmin\/(.+\\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {\n                   root \/var\/www\/phpmyadmin\/;\n           }\n    }<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Tutorial zeigen wir, wie man sein Debian System f\u00fcr das Hosten von einer oder mehreren Webseiten vorbereitet.Wir werden keine Optimierungen der Konfigurationen durchf\u00fchren, es gibt je nach Art der Webseite oder Servertyp verschiedene M\u00f6glichkeiten die Konfigurationen weiter zu optimieren. NGINX, MySQL bzw. MariaDB und PHP (LEMP) erhalten lediglich die Grundkonfiguration, die f\u00fcr unsere [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1399],"tags":[181,505,532,570,632,737,894],"ppma_author":[1493],"class_list":["post-7769","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-contabo","tag-lemp","tag-mariadb","tag-nginx","tag-php","tag-server-administration","tag-vps"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Gianni-Donato","author_link":"https:\/\/contabo.com\/blog\/de\/author\/gianni-donato\/"},"uagb_comment_info":0,"uagb_excerpt":"In diesem Tutorial zeigen wir, wie man sein Debian System f\u00fcr das Hosten von einer oder mehreren Webseiten vorbereitet.Wir werden keine Optimierungen der Konfigurationen durchf\u00fchren, es gibt je nach Art der Webseite oder Servertyp verschiedene M\u00f6glichkeiten die Konfigurationen weiter zu optimieren. NGINX, MySQL bzw. MariaDB und PHP (LEMP) erhalten lediglich die Grundkonfiguration, die f\u00fcr unsere&hellip;","authors":[{"term_id":1493,"user_id":17,"is_guest":0,"slug":"gianni-donato","display_name":"Gianni-Donato","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/4457fc8553ead9a4e1e3d5b4a940590df9bad9d9132e58e40df3894b99bbe5d0?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/7769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=7769"}],"version-history":[{"count":0,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/7769\/revisions"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=7769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=7769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=7769"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=7769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}