One place for hosting & domains

      installieren

      So installieren und konfigurieren Sie Elasticsearch unter Ubuntu 20.04


      Einführung

      Elasticsearch ist eine Plattform für verteilte Suche und Analyse von Daten in Echtzeit. Aufgrund hoher Benutzerfreundlichkeit, leistungsfähiger Funktionen und Skalierbarkeit ist sie eine beliebte Wahl.

      In diesem Artikel installieren Sie Elasticsearch, konfigurieren es für Ihren Anwendungsfall, sichern Ihre Installation und unternehmen die ersten Schritte mit Ihrem Elasticsearch-Server.

      Voraussetzungen

      Bevor Sie dieses Tutorial absolvieren, benötigen Sie Folgendes:

      In diesem Tutorial arbeiten wir mit der Mindestmenge von CPUs und RAM, die zur Ausführung von Elasticsearch benötigt werden. Beachten Sie, dass die Menge von CPUs, RAM und Speicher, die Ihr Elasticsearch-Server benötigt, von der Menge der Protokolle abhängt, die Sie erwarten.

      Schritt 1 — Installieren und Konfigurieren von Elasticsearch

      Die Elasticsearch-Komponenten sind in Standard-Paket-Repositorys von Ubuntu nicht verfügbar. Sie können jedoch mit APT installiert werden, nachdem Sie die Paketquellliste von Elastic hinzugefügt haben.

      Alle Pakete werden mit dem Signierschlüssel von Elasticsearch signiert, um das System vor Paket-Spoofing zu schützen. Pakete, die mit dem Schlüssel authentifiziert wurden, werden von Ihrem Paketmanager als vertrauenswürdig eingestuft. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Paketquellliste von Elasticsearch hinzu, um Elasticsearch zu installieren.

      Verwenden Sie zunächst cURL, das Befehlszeilentool zur Übertragung von Daten mit URLs, um den öffentlichen GPG-Schlüssel von Elasticsearch in APT zu importieren. Beachten Sie, dass wir die Argumente -fsSL nutzen, um alle Fortschritte und möglichen Fehler stumm zu schalten (ausgenommen Serverfehler) und um zuzulassen, dass cURL bei einer Umleitung eine Anfrage an einem neuen Ort stellt. Leiten Sie die Ausgabe des cURL-Befehls in das APT-Schlüsselprogramm weiter, das den öffentlichen GPG-Schlüssel zu APT hinzufügt.

      • curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      Fügen Sie als Nächstes die Elastic-Quellliste in das Verzeichnis sources.list.d ein, in dem APT nach neuen Quellen sucht:

      • echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

      Aktualisieren Sie als Nächstes Ihre Paketlisten, damit APT die neue Elastic-Quelle liest:

      Installieren Sie dann Elasticsearch mit diesem Befehl:

      • sudo apt install elasticsearch

      Elasticsearch ist nun installiert und bereit für die Konfiguration.

      Schritt 2 — Konfigurieren von Elasticsearch

      Um Elasticsearch zu konfigurieren, bearbeiten wir die Hauptkonfigurationsdatei elasticsearch.yml, in der die meisten Konfigurationsoptionen gespeichert sind. Diese Datei befindet sich im Verzeichnis /etc/elasticsearch.

      Verwenden Sie zur Bearbeitung der Konfigurationsdatei von Elasticsearch Ihren bevorzugten Texteditor. Wir verwenden hier nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Anmerkung: Die Konfigurationsdatei von Elasticsearch liegt im YAML-Format vor. Das bedeutet, dass wir das Einrückungsformat beibehalten müssen. Achten Sie darauf, dass Sie beim Bearbeiten der Datei keine zusätzlichen Leerzeichen hinzufügen.

      Die Datei elasticsearch.yml bietet Konfigurationsoptionen für Cluster, Knoten, Pfade, Arbeitsspeicher, Netzwerk, Suche und Gateway. Die meisten dieser Optionen sind in der Datei vorkonfiguriert, aber Sie können sie je nach Ihren Bedürfnissen ändern. Im Sinne unserer Demonstration einer Konfiguration mit nur einem Server werden wir nur die Einstellungen für den Netzwerkhost anpassen.

      Elasticsearch lauscht an Port 9200 auf Verkehr von überall. Sie werden externen Zugriff auf Ihre Elasticsearch-Instanz einschränken wollen, um zu verhindern, dass externe Personen Ihre Daten lesen oder Ihren Elasticsearch-Cluster mit der REST-API herunterfahren. Um Zugriff zu beschränken und damit die Sicherheit zu erhöhen, suchen Sie nach der Zeile, die network.host angibt, heben Sie die Kommentierung auf und ersetzen den Wert durch localhost, sodass die Zeile wie folgt aussieht:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      # ---------------------------------- Network -----------------------------------
      #
      # Set the bind address to a specific IP (IPv4 or IPv6):
      #
      network.host: localhost
      . . .
      

      Wir haben localhost angegeben, damit Elasticsearch an allen Schnittstellen und gebundenen IPs lauscht. Wenn Sie möchten, dass nur an einer bestimmten Schnittstelle gelauscht werden soll, können Sie deren IP-Adresse an Stelle von localhost angeben. Speichern und schließen Sie elasticsearch.yml. Wenn Sie nano verwenden, können Sie dazu STRG+X drücken, gefolgt von Y und dann ENTER.

      Das sind die Mindesteinstellungen, mit denen Sie beginnen können, um Elasticsearch zu verwenden. Sie können Elasticsearch jetzt zum ersten Mal starten.

      Starten Sie den Elasticsearch-Dienst mit systemctl. Geben Sie Elasticsearch einige Momente zum Starten. Andernfalls erhalten Sie möglicherweise Fehlermeldungen, dass Sie keine Verbindung herstellen können.

      • sudo systemctl start elasticsearch

      Führen Sie als Nächstes den folgenden Befehl aus, damit Elasticsearch bei jedem Server-Boot gestartet wird:

      • sudo systemctl enable elasticsearch

      Nachdem Elasticsearch beim Starten nun aktiviert ist, fahren wir mit dem nächsten Schritt fort und besprechen das Thema Sicherheit.

      Schritt 3 — Sichern von Elasticsearch

      Standardmäßig kann Elasticsearch von jedem kontrolliert werden, der auf die HTTP-API zugreifen kann. Das ist nicht immer ein Sicherheitsproblem, da Elasticsearch nur an der Loopback-Schnittstelle lauscht (d. h. 127.0.0.1), auf die nur lokal zugegriffen werden kann. So ist kein öffentlicher Zugriff möglich und solange alle Serverbenutzer vertrauenswürdig sind, ist Sicherheit möglicherweise kein großes Problem.

      Wenn Sie Remotezugriff auf die HTTP-API zulassen müssen, können Sie das Gefahrenpotenzial im Netzwerk mit der Standard-Firewall von Ubuntu (UFW) reduzieren. Diese Firewall sollte bereits aktiviert sein, wenn Sie die Schritte im Tutorial Ersteinrichtung eines Servers unter Ubuntu 20.04 ausgeführt haben.

      Wir konfigurieren nun die Firewall, um Zugriff auf den standardmäßigen HTTP-API-Port (TCP 9200) für den vertrauenswürdigen Remote-Host zuzulassen. Das ist in der Regel der Server, den Sie in einer Einrichtung mit einem einzelnen Server verwenden, wie zum Beispiel 198.51.100.0. Geben Sie, um Zugriff zuzulassen, den folgenden Befehl ein:

      • sudo ufw allow from 198.51.100.0 to any port 9200

      Danach können Sie UFW mit folgendem Befehl aktivieren:

      Überprüfen Sie abschließend mit folgendem Befehl den Status von UFW:

      Wenn Sie die Regeln richtig angegeben haben, sollten Sie eine Ausgabe wie diese erhalten:

      Output

      Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

      Die UFW sollte jetzt aktiviert und zum Schutz von Elasticsearch Port 9200 eingerichtet ein.

      Wenn Sie in zusätzlichen Schutz investieren möchten, bietet Elasticsearch das kommerzielle Shield-Plugin zum Kauf an.

      Schritt 4 — Testen von Elasticsearch

      Jetzt sollte Elasticsearch an Port 9200 ausgeführt werden. Sie können das mit cURL und einer GET-Anfrage testen.

      • curl -X GET 'http://localhost:9200'

      Sie sollten die folgende Antwort erhalten:

      Output

      { "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

      Wenn Sie eine Antwort sehen, die der obigen ähnelt, funktioniert Elasticsearch richtig. Wenn nicht, stellen Sie sicher, dass Sie die Installationsanweisungen richtig befolgt und Elasticsearch Zeit zum vollständigen Starten gegeben haben.

      Um eine gründlichere Prüfung von Elasticsearch vorzunehmen, führen Sie den folgenden Befehl aus:

      • curl -XGET 'http://localhost:9200/_nodes?pretty'

      In der Ausgabe des obigen Befehls können Sie alle aktuellen Einstellungen für Knoten, Cluster, Anwendungspfade, Module und mehr überprüfen.

      Schritt 5 — Verwenden von Elasticsearch

      Um mit der Verwendung von Elasticsearch zu beginnen, fügen wir zuerst Daten hinzu. Elasticsearch nutzt eine RESTful-API, die auf die üblichen CRUD-Befehle reagiert: create, read, update und delete. Dazu verwenden wir erneut den Befehl cURL.

      Sie können Ihren ersten Eintrag wie folgt hinzufügen:

      • curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Sie sollten die folgende Antwort erhalten:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

      Mit cURL haben wir eine HTTP-POST-Anfrage an den Elasticsearch-Server gesendet. Der URI der Anfrage war /tutorial/helloworld/1 mit mehreren Parametern:

      • tutorial ist der Index der Daten in Elasticsearch.
      • helloworld ist der Typ.
      • 1 ist die ID unseres Eintrags unter dem obigen Index und Typ.

      Sie können diesen ersten Eintrag mit einer HTTP-GET-Anfrage abrufen.

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

      Die Ausgabe sollte wie folgt aussehen:

      Output

      {"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

      Um einen bestehenden Eintrag zu ändern, können Sie eine HTTP-PUT-Anfrage verwenden.

      • curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
      • {
      • "message": "Hello, People!"
      • }'

      Elasticsearch sollte die erfolgreiche Änderung wie folgt bestätigen:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

      Im obigen Beispiel haben wir die message des ersten Eintrags in “Hello, People!” geändert. Damit wurde die Versionsnummer automatisch auf 2 erhöht.

      Vielleicht haben Sie in der obigen Anfrage das zusätzliche Argument pretty bemerkt. Das ermöglicht ein visuell lesbares Format, sodass Sie jedes Datenfeld in eine neue Zeile schreiben können. Sie können Ihre Ergebnisse beim Abruf von Daten auch „verschönern“, um eine besser lesbare Ausgabe zu erhalten, indem Sie den folgenden Befehl eingeben:

      • curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

      Nun wird die Antwort so formatiert, dass sie visuell analysiert werden kann:

      Output

      { "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

      Wir haben jetzt Daten in Elasticsearch hinzugefügt und abgefragt. Um mehr über die anderen Operationen zu erfahren, konsultieren Sie bitte die API-Dokumentation.

      Zusammenfassung

      Sie haben Elasticsearch jetzt installiert, konfiguriert und erstmals verwendet. Um die Funktionalität von Elasticsearch weiter zu erkunden, lesen Sie bitte die offizielle Elasticsearch-Dokumentation.



      Source link

      So installieren und sichern Sie Redis unter Ubuntu 20.04 [Quickstart]


      Einführung

      Redis ist ein In-Memory-Schlüsselwertspeicher, der für seine Flexibilität, Leistung und breite Sprachunterstützung bekannt ist. Dieses Quickstart-Tutorial zeigt, wie Sie Redis auf einem Ubuntu 20.04-Server installieren, konfigurieren und sichern.

      Voraussetzungen

      Um diesen Leitfaden auszuführen, benötigen Sie Zugriff auf einen Ubuntu 20.04-Server, der einen non-root user mit sudo-Berechtigungen und eine mit ufw konfigurierte Firewall aufweist. Hierzu können Sie unserem Leitfaden zur Ersteinrichtung eines Servers unter Ubuntu 20.04 folgen.

      Schritt 1 — Installieren und Konfigurieren von Redis

      Als Erstes aktualisieren Sie Ihren lokalen apt-Paketcache:

      Installieren Sie anschließend Redis, indem Sie Folgendes eingeben:

      • sudo apt install redis-server

      Öffnen Sie als Nächstes die Redis-Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

      • sudo nano /etc/redis/redis.conf

      Suchen Sie in der Datei nach der Anweisung supervised, mit der Sie ein Init-System zur Verwaltung von Redis als Dienst deklarieren können. Da Ubuntu das Init-System systemd verwendet, ändern Sie den Wert von no zu systemd:

      /etc/redis/redis.conf

      . . .
      
      # If you run Redis from upstart or systemd, Redis can interact with your
      # supervision tree. Options:
      #   supervised no      - no supervision interaction
      #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
      #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
      #   supervised auto    - detect upstart or systemd method based on
      #                        UPSTART_JOB or NOTIFY_SOCKET environment variables
      # Note: these supervision methods only signal "process is ready."
      #       They do not enable continuous liveness pings back to your supervisor.
      supervised systemd
      
      . . .
      

      Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano zum Bearbeiten der Datei verwendet haben, drücken Sie dazu STRG + X, Y und dann ENTER.

      Starten Sie dann den Redis-Dienst neu, damit die Änderungen, die Sie in der Konfigurationsdatei vorgenommen haben, angewendet werden:

      • sudo systemctl restart redis.service

      Um zu testen, ob Redis richtig funktioniert, stellen Sie mit dem Redis-Befehlszeilenclient redis-cli eine Verbindung zum Server her:

      Testen Sie in der folgenden Eingabeaufforderung die Verbindung mit dem Befehl ping:

      Output

      PONG

      Diese Ausgabe bestätigt, dass die Serververbindung hergestellt ist. Als Nächstes überprüfen Sie, ob Sie Schlüssel festlegen können, indem Sie Folgendes ausführen:

      Output

      OK

      Rufen Sie den Wert ab, indem Sie Folgendes eingeben:

      Wenn alles funktioniert, können Sie den gespeicherten Wert abrufen:

      Output

      "It's working!"

      Nachdem Sie die Bestätigung haben, dass Sie den Wert abrufen können, beenden Sie die Redis-Eingabeaufforderung, um wieder zur Shell zu gelangen:

      Schritt 2 — Konfigurieren eines Redis-Passworts

      Sie können ein Redis-Passwort direkt in der Konfigurationsdatei von Redis, /etc/redis/redis.conf., konfigurieren. Öffnen Sie die Datei erneut mit Ihrem bevorzugten Editor:

      • sudo nano /etc/redis/redis.conf

      Scrollen Sie zum Abschnitt SECURITY und suchen Sie eine Anweisung mit der Kommentierung:

      /etc/redis/redis.conf

      . . .
      # requirepass foobared
      . . .
      

      Heben Sie die Kommentierung auf, indem Sie # entfernen, und ändern Sie foobared in ein sicheres Passwort:

      /etc/redis/redis.conf

      . . .
      requirepass your_redis_password
      . . .
      

      Nach dem Einrichten des Passworts speichern und schließen Sie die Datei. Starten Sie erneut Redis:

      • sudo systemctl restart redis.service

      Öffnen Sie den Redis-Client, um zu testen, ob das Passwort funktioniert:

      Folgendes zeigt eine Sequenz von Befehlen, mit denen getestet wird, ob das Redis-Passwort funktioniert. Der erste Befehl versucht, einen Schlüssel auf einen Wert vor der Authentifizierung einzustellen:

      Das funktioniert nicht, da Sie keine Authentifizierung durchgeführt haben. Daher gibt Redis einen Fehler aus:

      Output

      (error) NOAUTH Authentication required.

      Der nächste Befehl führt die Authentifizierung mit dem Passwort durch, das in der Redis-Konfigurationsdatei angegeben ist:

      Redis bestätigt:

      Output

      OK

      Danach wird der vorherige Befehl erfolgreich ausgeführt:

      Output

      OK

      get key1 fragt Redis nach dem Wert des neuen Schlüssels.

      Output

      "10"

      Nachdem Sie die Bestätigung haben, dass Sie Befehle im Redis-Client nach Authentifizierung ausführen können, beenden Sie redis-cli:

      Schritt 3 — Umbenennen von gefährlichen Befehlen

      Die andere in Redis integrierte Sicherheitsfunktion besteht in der Umbenennung oder vollständigen Deaktivierung bestimmter Befehle, die als gefährlich eingestuft werden. Einige der Befehle, die als gefährlich eingestuft werden, sind: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME und DEBUG. Die Deaktivierung oder Umbenennung dieser und anderer Befehle erschwert es unautorisierten Benutzern, Ihre Daten anders zu konfigurieren, zu zerstören oder anderweitig zu vernichten.

      Um Redis-Befehle umzubenennen oder zu deaktivieren, öffnen Sie erneut die Konfigurationsdatei:

      • sudo nano /etc/redis/redis.conf

      Achtung: Die folgenden Schritte zur Deaktivierung und Umbenennung von Befehlen sind Beispiele. Sie sollten nur die Befehle deaktivieren oder umbenennen, die für Sie sinnvoll sind. Sie können die vollständige Liste der Befehle unter redis.io/commands selbst überprüfen und eruieren, wie diese missbraucht werden könnten.

      Um einen Befehl zu deaktivieren, benennen Sie ihn einfach wie unten gezeigt in eine leere Zeichenfolge um (gekennzeichnet durch ein Paar Anführungszeichen ohne Zeichen dazwischen):

      /etc/redis/redis.conf

      . . .
      # It is also possible to completely kill a command by renaming it into
      # an empty string:
      #
      rename-command FLUSHDB ""
      rename-command FLUSHALL ""
      rename-command DEBUG ""
      . . .
      

      Zur Umbenennung eines Befehls geben Sie diesem wie bei den unten gezeigten Beispielen einen anderen Namen. Umbenannte Befehle sollten für andere schwierig zu erraten und für Sie selbst leicht zu merken sein:

      /etc/redis/redis.conf

      . . .
      # rename-command CONFIG ""
      rename-command SHUTDOWN SHUTDOWN_MENOT
      rename-command CONFIG ASC12_CONFIG
      . . .
      

      Speichern Sie Ihre Änderungen und schließen Sie die Datei.

      Nach der Umbenennung eines Befehls wenden Sie die Änderung an, indem Sie Redis neu starten:

      • sudo systemctl restart redis.service

      Um den neuen Befehl zu testen, gehen Sie in die Redis-Befehlszeile:

      Führen Sie dann eine Authentifizierung durch:

      Output

      OK

      Wenn Sie den Befehl CONFIG wie im vorausgehenden Beispiel in ASC12_CONFIG umbenannt haben, probieren Sie nun den ursprünglichen Befehl CONFIG aus. Das sollte fehlschlagen, da Sie diesen umbenannt haben:

      Output

      (error) ERR unknown command `config`, with args beginning with:

      Der umbenannte Befehl kann jedoch erfolgreich aufgerufen werden. Die Groß- und Kleinschreibung muss dabei nicht beachtet werden:

      • asc12_config get requirepass

      Output

      1) "requirepass" 2) "your_redis_password"

      Zusammenfassung

      In diesem Quickstart-Tutorial haben Sie Redis installiert und konfiguriert, die korrekte Funktion Ihrer Redis-Installation überprüft und die integrierten Sicherheitsfunktionen genutzt, um sie weniger anfällig für Angriffe böswilliger Akteure zu machen.



      Source link

      Installieren eines Linux-, Apache-, MariaDB-, PHP- (LAMP-) Stacks unter CentOS 8


      Einführung

      Ein „LAMP“-Stack ist eine aus Open-Source-Software bestehende Gruppe, die normalerweise zusammenhängend installiert wird, damit ein Server dynamische Websites und in PHP geschriebene Web-Apps hosten kann. Dieser Begriff ist ein Akronym, das für das Linux-Betriebssystem mit dem Webserver Apache steht. Die Backend-Daten werden in einer MariaDB-Datenbank gespeichert und die dynamische Verarbeitung wird mit PHP ausgeführt.

      Die Datenbankschicht in einem LAMP-Stack ist in der Regel ein MySQL-Datenbankserver, aber vor der Veröffentlichung von CentOS 8 war MySQL nicht über die standardmäßigen CentOS-Repositorys verfügbar. Aus diesem Grund wurde MariaDB, eine Abspaltung von MySQL, zu einer weithin akzeptierten Alternative zu MySQL als Standard-Datenbanksystem für LAMP-Stacks auf CentOS-Rechnern. MariaDB dient als vollwertiger Ersatz für den originalen MySQL-Server, was in der Praxis bedeutet, dass Sie zu MariaDB wechseln können, ohne Änderungen an der Konfiguration oder den Codes Ihrer Anwendung vorzunehmen.

      In diesem Leitfaden installieren Sie einen LAMP-Stack auf einem CentOS 8-Server unter Verwendung von MariaDB als Datenbankverwaltungssystem.

      Voraussetzungen

      Um diesem Leitfaden zu folgen, benötigen Sie Zugriff auf einen CentOS 8 Server als non-root user mit Sudo-Berechtigungen, und eine auf Ihrem Server installierte aktive Firewall. Um dies einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8 folgen.

      Schritt 1 – Installieren des Apache-Webservers

      Um Websites für unsere Websitebesucher anzuzeigen, setzen wir Apache ein, einen populären Open-Source-Webserver, der für die Bedienung von PHP-Seiten konfiguriert werden kann. Sie verwenden den dnf Paketmamager, den neuen Standard-Paketmanager auf CentOS 8, um diese Software zu installieren.

      Installieren Sie das Paket httpd mit:

      Geben Sie bei der entsprechenden Aufforderung y ein, um zu bestätigen, dass Sie Apache installieren möchten.

      Wenn die Installation abgeschlossen ist, führen Sie den folgenden Befehl aus, um den Server zu aktivieren und zu starten:

      • sudo systemctl start httpd

      Wenn Sie die Firewall firewalld gemäß unserem Leitfaden zur Ersteinrichtung des Servers aktiviert haben, müssen Sie Verbindungen zu Apache zulassen. Der folgende Befehl ermöglicht dauerhaft HTTP-Verbindungen, die auf Port 80 standardmäßig ausgeführt werden:

      • sudo firewall-cmd --permanent --add-service=http

      Um zu verifizieren, dass die Änderung angewendet wurde, können Sie Folgendes ausführen:

      • sudo firewall-cmd --permanent --list-all

      Die Ausgabe sieht dann so aus:

      Output

      public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      Laden Sie die Firewall-Konfiguration neu, damit die Änderungen wirksam werden:

      • sudo firewall-cmd --reload

      Nachdem die neue Firewall hinzugefügt wurde, können Sie testen, ob der Server läuft, indem Sie auf die öffentliche IP-Adresse des Servers oder den Domänennamen von Ihrem Webbrowser aus zugreifen.

      Anmerkung: Falls Sie DigitalOcean als DNS-Hosting-Anbieter verwenden, konsultieren Sie unsere Produktdokumente für detaillierte Anweisungen, wie Sie einen neuen Domänennamen einrichten und ihn auf Ihren Server verweisen.

      Wenn kein Domänenname auf den Server verweist und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem folgenden Befehl finden:

      • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

      Hierdurch erhalten Sie einige IP-Adressen. Sie können diese abwechselnd in Ihrem Webbrowser ausprobieren.

      Als Alternative können Sie prüfen, welche IP-Adresse von anderen Stellen im Internet aus erreichbar ist:

      Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Apache weitergeleitet:

      Standard Apache-Seite CentOS 8

      Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.

      Schritt 2 — Installieren von MariaDB

      Nachdem Sie nun einen funktionierenden Webserver eingerichtet haben, müssen Sie ein Datenbanksystem installieren, um Daten für Ihre Website speichern und verwalten zu können. Sie installieren nun MariaDB, eine weiterentwickelte Kopie des originalen MySQL Servers von Oracle.

      Um diese Software zu installieren, führen Sie Folgendes aus:

      • sudo dnf install mariadb-server

      Wenn die Installation abgeschlossen ist, aktivieren und starten Sie den MariaDB-Server mit:

      • sudo systemctl start mariadb

      Um die Sicherheit Ihres Datenbankservers zu verbessern, wird empfohlen, ein Sicherheitsskript auszuführen, das in MariaDB vorinstalliert ist. Dieses Skript entfernt einige unsichere Standardeinstellungen und sperrt den Zugriff auf Ihr Datenbanksystem. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

      • sudo mysql_secure_installation

      Dieses Skript führt Sie durch eine Reihe von Aufforderungen, mit denen Sie verschiedene Änderungen an Ihrem MariaDB-Setup vornehmen können. Bei der ersten Eingabeaufforderung werden Sie gebeten, das aktuelle Datenbank-root-Passwort einzugeben. Verwechseln Sie dies nicht mit dem System-root user. Der Datenbank-root user ist ein administrativer Benutzer mit vollen Berechtigungen über das Datenbank-System. Weil Sie MariaDB gerade erst installiert und noch keine Konfigurationsänderungen vorgenommen haben, wird dieses Passwort leer sein, also drücken Sie bei der Eingabeaufforderung einfach ENTER.

      Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie ein Datenbank-root-Passwort einrichten möchten. Und weil MariaDB eine spezielle Authentifizierungsmethode für den root user verwendet, die typischerweise sicherer ist als ein Passwort, müssen Sie das jetzt nicht einrichten. Geben Sie N ein und drücken Sie dann ENTER.

      Dannach können Sie Y und dann ENTER drücken, um die Standardeinstellungen für alle nachfolgenden Fragen zu akzeptieren. Damit werden anonyme Benutzer und die Testdatenbank entfernt, ferngesteuerte root Logins deaktiviert und die neuen Regeln geladen, sodass der Server die Änderungen, die Sie vorgenommen haben, unverzüglich anwendet.

      Wenn Sie fertig sind, melden Sie sich bei MariaDB an, indem Sie Folgendes eingeben:

      Damit wird eine Verbindung zum MariaDB-Server als administrativer Datenbankbenutzer root hergestellt, was durch die Verwendung von sudo bei Ausführung dieses Befehls abgeleitet wird. Die Ausgabe sollte wie folgt aussehen:

      Output

      Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 9 Server version: 10.3.17-MariaDB MariaDB Server 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)]>

      Beachten Sie, dass Sie kein Passwort bereitstellen mussten, um sich als root Benutzer zu verbinden. Das funktioniert, weil die standardmäßige Authentifizierungsmethode für den administrativen MariaDB-Benutzer unix_socket ist und nicht password. Auch wenn dies zunächst wie ein Sicherheitsproblem aussieht, macht es den Datenbankserver sicherer, da sich nur die Systembenutzer mit sudo-Privilegien über die Konsole oder über eine Anwendung, die mit den gleichen Privilegien läuft, als root MariaDB user anmelden dürfen. Praktisch bedeutet dies, dass Sie den administrativer Datenbank root Benutzer nicht verwenden können, um sich von Ihrer PHP-Anwendung aus zu verbinden.

      Um die Sicherheit zu erhöhen, richten Sie am besten für jede Datenbank zugeordnete Benutzerkonten mit weniger expansiven Berechtigungen ein, insbesondere dann, wenn Sie mehrere Datenbanken auf Ihrem Server hosten möchten. Um eine solche Einrichtung zu zeigen, erstellen Sie eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen jedoch durch andere Werte ersetzen.

      Um eine neue Datenbank zu erstellen, führen Sie den folgenden Befehl von Ihrer MariaDB-Konsole aus:

      • CREATE DATABASE example_database;

      Jetzt können Sie einen neuen Benutzer erstellen und ihm volle Berechtigungen zu der benutzerdefinierten Datenbank gewähren, die Sie gerade erstellt haben: Der folgende Befehl definiert das Passwort dieses Benutzers als password, aber Sie sollten diesen Wert durch ein sicheres Passwort Ihrer Wahl ersetzen:

      • GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

      Damit werden dem example_user volle Berechtigungen über die example_database gegeben, während dieser Benutzer gleichzeitig daran gehindert wird, andere Datenbanken auf Ihrem Server zu erstellen oder zu ändern.

      Bestätigen Sie die Berechtigungen, um sicherzustellen, dass sie in der aktuellen Sitzung gespeichert und verfügbar sind:

      Beenden Sie anschließend die MariaDB Shell:

      Sie können testen, ob der neue Benutzer die richtigen Berechtigungen hat, indem Sie sich erneut in die MariaDB-Konsole einloggen, diesmal mit den benutzerdefinierten Anmeldedaten:

      Beachten Sie das Flag -p in diesem Befehl, das Sie nach dem Passwort fragt, welches Sie bei der Erstellung des Benutzers example_user gewählt haben. Nachdem Sie sich in die MariaDB-Konsole eingeloggt haben, bestätigen Sie, dass Sie Zugriff auf die Datenbank example_database haben:

      Damit erhalten Sie die folgende Ausgabe:

      Output

      +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

      Um die MariaDB Shell zu beenden, geben Sie Folgendes ein:

      Zu diesem Zeitpunkt ist Ihr Datenbanksystem eingerichtet und Sie können zur Installation von PHP, der letzten Komponente des LAMP-Stacks, übergehen.

      Schritt 3 — Installieren von PHP

      Sie haben Apache zur Bereitstellung Ihrer Inhalte und MariaDB zur Speicherung und Verwaltung Ihrer Daten installiert. PHP ist die Komponente unserer Einrichtung, die Code verarbeitet, um dynamische Inhalte für den Endbenutzer anzuzeigen. Zusätzlich zum php-Paket benötigen Sie php-mysqlnd, ein PHP-Modul, das PHP die Kommunikation mit MySQL-basierten Datenbanken ermöglicht. Core-PHP-Pakete werden automatisch als Abhängigkeiten installiert.

      Um die Pakete php und php-mysqlnd mit dem dnf-Paketmanager zu installieren, führen Sie Folgendes aus:

      sudo dnf install php php-mysqlnd
      

      Nach Abschluss der Installation müssen Sie den Apache-Webserver neu starten, um das PHP-Modul zu aktivieren:

      sudo systemctl restart httpd
      

      Ihr Webserver ist nun voll eingerichtet. Im nächsten Schritt erstellen Sie ein PHP-Testskript, um sicherzustellen, dass alles wie erwartet funktioniert.

      Schritt 4 – Testen von PHP mit Apache

      Die standardmäßige Apache-Installation unter CentOS 8 erzeugt ein Dokument-Stammverzeichnis, das sich unter /var/www/html befindet. Damit PHP auf Ihrem Webserver korrekt funktioniert, müssen Sie keine Änderungen an den Standardeinstellungen von Apache vornehmen.

      Die einzige Anpassung, die wir vornehmen werden, ist die Änderung der standardmäßigen Berechtigungseinstellungen in Ihrem Dokument-Stammverzeichnis von Apache. Auf diese Weise können Sie Dateien in diesem Verzeichnis mit Ihrem regulären Systembenutzer erstellen und ändern, ohne dass Sie jedem Befehl sudo voranstellen müssen.

      Der folgende Befehl ändert die Eigentümerschaft des standardmäßigen Stammverzeichnisses des Apache-Dokuments auf einen Benutzer und eine Gruppe namens sammy. Achten Sie also darauf, den hervorgehobenen Benutzernamen und die Gruppe in diesem Befehl zu ersetzen, um den Benutzernamen und die Gruppe Ihres Systems widerzuspiegeln.

      • sudo chown -R sammy.sammy /var/www/html/

      Sie erstellen nun eine PHP-Testseite, um sicherzustellen, dass der Webserver wie erwartet funktioniert.

      Der mit CentOS 8 bereitgestellte Standard-Texteditor ist vi. vi ist ein extrem leistungsfähiger Texteditor. Für Benutzer mit wenig Erfahrung kann er etwas stumpfsinnig sein. Eventuell möchten Sie einen benutzerfreundlicheren Editor wie nano installieren, um die Bearbeitung von Dateien auf Ihrem CentOS 8-Server zu erleichtern:

      Geben Sie bei der Aufforderung zur Bestätigung der Installation y ein.

      Erstellen Sie nun eine neue PHP-Datei namens info.php im Verzeichnis /var/www/html:

      • nano /var/www/html/info.php

      Der folgende PHP-Code zeigt Informationen über die aktuelle PHP-Umgebung, die auf dem Server läuft:

      /var/www/html/info.php

      <?php
      
      phpinfo();
      

      Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, können Sie STRG+X drücken, dann Y eingeben und zur Bestätigung ENTER drücken.

      Jetzt können Sie testen, ob Ihr Webserver den Inhalt korrekt anzeigt, der durch ein PHP-Skript erstellt wird. Gehen Sie zu Ihrem Browser und greifen Sie auf Ihren Server-Hostnamen oder die IP-Adresse zu, gefolgt von /info.php:

      http://server_host_or_IP/info.php
      

      Sie sehen eine Seite, die so ähnlich wie die Folgende aussieht:

      CentOS 8 Standard-PHP-Info Apache

      Nachdem Sie die relevanten Informationen über Ihren PHP-Server über diese Seite überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren CentOS-Server enthält. Sie können rm verwenden, um diese Datei zu entfernen:

      • rm /var/www/html/info.php

      Sie können diese Datei jederzeit regenerieren, falls Sie sie später benötigen. Als Nächstes testen Sie die Datenbankverbindung von der PHP-Seite.

      Schritt 5 — Testen der Datenbankverbindung von PHP (optional)

      Wenn Sie testen möchten, ob PHP eine Verbindung mit MariaDB herstellen kann und Datenbankabfragen ausführt, können Sie eine Testtabelle mit Pseudodaten erstellen und die Inhalte mit einem PHP-Skript abfragen.

      Verbinden Sie sich zuerst mit der MariaDB-Konsole mit dem Datenbankbenutzer, den Sie in Schritt 2 dieses Leitfadens erstellt haben:

      Erstellen Sie eine Tabelle namens todo_list. Führen Sie die folgende Anweisung aus der MariaDB-Konsole aus:

      CREATE TABLE example_database.todo_list (
          item_id INT AUTO_INCREMENT,
          content VARCHAR(255),
          PRIMARY KEY(item_id)
      );
      

      Geben Sie nun einige Zeilen an Inhalt in die Testtabelle ein. Sie können den nächsten Befehl ein paar Mal wiederholen, indem Sie verschiedene Werte verwenden:

      • INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

      Um zu bestätigen, dass die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:

      • SELECT * FROM example_database.todo_list;

      Sie sehen die folgende Ausgabe:

      Output

      +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

      Nachdem Sie bestätigt haben, dass Sie gültige Daten in Ihrer Testtabelle haben, können Sie die MariaDB-Konsole verlassen:

      Sie können nun das PHP-Skript erstellen, das sich mit MariaDB verbindet und Ihre Inhalte abfragen. Erstellen Sie mit Ihrem bevorzugten Editor eine neue PHP-Datei in Ihrem benutzerdefinierten Stammverzeichnis. Verwenden Sie hierzu nano:

      • nano /var/www/html/todo_list.php

      Fügen Sie Ihrem PHP-Skript den folgenden Inhalt hinzu:

      /usr/share/nginx/html/todo_list.php

      <?php
      $user = "example_user";
      $password = "password";
      $database = "example_database";
      $table = "todo_list";
      
      try {
        $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
        echo "<h2>TODO</h2><ol>";
        foreach($db->query("SELECT content FROM $table") as $row) {
          echo "<li>" . $row['content'] . "</li>";
        }
        echo "</ol>";
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      

      Speichern und schließen Sie die Datei, wenn die Bearbeitung abgeschlossen ist.

      Sie können diese Seite jetzt in Ihrem Webbrowser aufrufen, indem Sie den Hostnamen oder die öffentliche IP-Adresse Ihres Servers aufrufen, gefolgt von /todo_list.php:

      http://server_host_or_IP/todo_list.php
      

      Sie sollten nun eine Seite ähnlich wie diese sehen, die den Inhalt anzeigt, den Sie in Ihre Testtabelle eingefügt haben:

      Beispiel PHP To-Do-List

      Das bedeutet, dass Ihre PHP-Umgebung zur Verfügung steht, um mit Ihrem MariaDB-Server zu interagieren.

      Zusammenfassung

      In diesem Leitfaden haben Sie eine flexible Grundlage für die Bereitstellung von PHP-Websites und -Anwendungen für Ihre Besucher unter Verwendung von Apache als Webserver erstellt. Sie haben Apache zur Bearbeitung von PHP-Anfragen eingerichtet und haben auch eine MariaDB-Datenbank zur Speicherung der Daten Ihrer Website eingerichtet.



      Source link