

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AL2 auf Amazon EC2
<a name="ec2"></a>

**Anmerkung**  
 AL2 ist nicht mehr die aktuelle Version von Amazon Linux. AL2023 ist der Nachfolger von AL2. Weitere Informationen finden Sie unter [Vergleichen AL2 AL2023 und](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) in der Liste der [Paketänderungen AL2023 im AL2023 ](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) [Benutzerhandbuch](https://docs.aws.amazon.com/linux/al2023/ug/). 

 

**Topics**
+ [Starten Sie die Amazon EC2 EC2-Instance mit AMI AL2](#launch-ec2-instance)
+ [Finden Sie das neueste AL2 AMI mit Systems Manager](#find-latest-al2-using-systems-manager)
+ [Stellen Sie eine Connect zu einer Amazon EC2 EC2-Instance her](#connect-to-amazon-linux-limits-ec2)
+ [AL2 AMI-Boot-Modus](#default-boot-mode-al2)
+ [Paket-Repository](#package-repository)
+ [Verwenden Sie Cloud-Init auf AL2](amazon-linux-cloud-init.md)
+ [Instanzen konfigurieren AL2](configure-ec2-instance.md)
+ [Vom Benutzer bereitgestellte Kernel](UserProvidedKernels.md)
+ [AL2 AMI-Release-Benachrichtigungen](linux-ami-notifications.md)
+ [Konfigurieren Sie die MATE-Desktop-Verbindung AL2](amazon-linux-ami-mate.md)
+ [AL2 Anleitungen](al2-tutorials.md)

## Starten Sie die Amazon EC2 EC2-Instance mit AMI AL2
<a name="launch-ec2-instance"></a>

Sie können eine Amazon EC2 EC2-Instance mit dem AL2 AMI starten. Weitere Informationen finden Sie unter [Schritt 1: Eine Instance starten](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance).

## Finden Sie das neueste AL2 AMI mit Systems Manager
<a name="find-latest-al2-using-systems-manager"></a>

Amazon EC2 bietet AWS Systems Manager öffentliche Parameter für public, die von AMIs verwaltet werden und AWS die Sie beim Starten von Instances verwenden können. Beispielsweise `/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2` ist der von EC2 bereitgestellte Parameter in allen Regionen verfügbar und verweist immer auf die neueste Version des AL2 AMI in einer bestimmten Region.

Informationen zum neuesten AL2023 AMI finden Sie AWS Systems Manager unter [Erste Schritte mit AL2023](https://docs.aws.amazon.com/linux/al2023/ug/get-started.html).

Die öffentlichen Amazon EC2-AMI-Parameter sind über den folgenden Pfad verfügbar:

`/aws/service/ami-amazon-linux-latest`

Sie können eine Liste aller Amazon Linux-Geräte AMIs in der aktuellen AWS Region anzeigen, indem Sie den folgenden AWS CLI Befehl ausführen.

```
aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest --query "Parameters[].Name"
```

**So starten Sie eine Instance mit einem öffentlichen Parameter:**  
Im folgenden Beispiel wird der von EC2 bereitgestellte öffentliche Parameter verwendet, um eine `m5.xlarge` Instance mit dem neuesten AL2 AMI zu starten.

Um den Parameter im Befehl anzugeben, verwenden Sie die folgende Syntax: `resolve:ssm:public-parameter`, wobei `resolve:ssm` das Standardpräfix und `public-parameter` der Pfad und Name des öffentlichen Parameters ist.

In diesem Beispiel sind die Parameter `--count` und `--security-group` nicht enthalten. Der Standardwert für `--count` lautet 1. Wenn Sie über eine Standard-VPC und eine Standardsicherheitsgruppe verfügen, werden diese verwendet.

```
aws ec2 run-instances 
    --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2 
    --instance-type m5.xlarge 
    --key-name MyKeyPair
```

Weitere Informationen finden Sie im *AWS Systems Manager Benutzerhandbuch* unter [Verwenden von öffentlichen Parametern](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters.html).

**Grundlegendes zu Amazon Linux 2-AMI-Namen**  
Amazon Linux 2-AMI-Namen verwenden das folgende Benennungsschema:

`amzn2-ami-[minimal-][kernel-{5.10,default,4.14}]-hvm-{x86_64,aarch64}-{ebs,gp2}`
+ **Minimal** AMIs enthält einen minimierten Satz vorinstallierter Pakete, um die Image-Größe zu reduzieren.
+ **Kernel-Version** bestimmt die Kernel-Version, die auf dem jeweiligen AMI vorinstalliert ist:
  + `kernel-5.10`wählt die Linux-Kernel-Version 5.10 aus. *Dies ist die empfohlene Kernel-Version für AL2.*
  + `kernel-default`wählt den empfohlenen Standardkernel für aus AL2. Es ist ein Alias für Kernel-5.10.
  + `kernel-4.14`wählt die Linux-Kernel-Version 4.14 aus. *Dies wird nur aus Gründen der Kompatibilität mit älteren AMI-Versionen bereitgestellt. Verwenden Sie diese Version nicht für den Start neuer Instances. Gehen Sie davon aus, dass dieses AMI nicht mehr unterstützt wird.*
  + Ein spezieller Satz von AMI-Namen existiert ohne Verweis auf einen bestimmten Kernel. Dies AMIs sind ein Alias für Kernel-4.14. *Diese AMIs werden nur aus Gründen der Kompatibilität mit älteren AMI-Versionen bereitgestellt. Verwenden Sie diesen AMI-Namen nicht für den Start neuer Instances. Erwarten Sie, dass der Kernel für diese AMIs aktualisiert wird.*
+ **x86\$164/aarch64** bestimmt die CPU-Plattform, auf der das AMI ausgeführt werden soll. Wählen Sie x86\$164 für Intel- und AMD-basierte EC2-Instances aus. Wählen Sie aarch64 für EC2-Graviton-Instances aus.
+ **ebs/gp2** bestimmt den EBS-Volumetyp, der zur Bereitstellung des jeweiligen AMI verwendet wird. Weitere Informationen finden Sie unter [EBS-Volumetypen.](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) *Wählen Sie immer gp2 aus.*

## Stellen Sie eine Connect zu einer Amazon EC2 EC2-Instance her
<a name="connect-to-amazon-linux-limits-ec2"></a>

Es gibt mehrere Möglichkeiten, eine Verbindung zu Ihrer Amazon Linux-Instance herzustellen, darunter SSH und EC2 Instance Connect. AWS Systems Manager Session Manager Weitere Informationen finden Sie unter [Connect to your Linux Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

**SSH-Benutzer und **sudo****  
Amazon Linux erlaubt standardmäßig keine Remote `root` Secure Shell (SSH). Außerdem ist die Passwortauthentifizierung deaktiviert, um Brute-Force-Angriffe zu verhindern. Sie können die Anmeldung bei einer Amazon Linux Instance über SSH aktivieren, indem Sie Ihr Schlüsselpaar beim Start der Instance bereitstellen. Außerdem müssen Sie die Sicherheitsgruppe für den Start der Instance so konfigurieren, dass der Zugriff über SSH erlaubt ist. Standardmäßig ist das einzige Konto, das sich remote über SSH anmelden kann,. `ec2-user` Dieses Konto hat auch **sudo** Rechte. Wenn Sie die `root` Fernanmeldung aktivieren, beachten Sie, dass diese weniger sicher ist, als sich auf Schlüsselpaare und einen sekundären Benutzer zu verlassen.

## AL2 AMI-Boot-Modus
<a name="default-boot-mode-al2"></a>

AL2 AMIs haben keinen Startmodus-Parameter gesetzt. Instances, die von gestartet werden, AL2 AMIs folgen dem Standardwert für den Startmodus des Instance-Typs. Weitere Informationen finden Sie unter [Startmodi](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

## Paket-Repository
<a name="package-repository"></a>

Diese Information bezieht sich auf AL2. Weitere Informationen dazu AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten AL2023 im](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Amazon Linux 2023-Benutzerhandbuch*. 

AL2 und AL1 sind für die Verwendung mit Online-Paket-Repositorys konzipiert, die in jeder Amazon EC2 EC2-Region gehostet werden. AWS Die Repositorys sind in allen Regionen verfügbar; der Zugriff erfolgt mithilfe des **yum**-Aktualisierungstools. Dadurch, dass die Repositorys in jeder Region gehostet werden, können wir Aktualisierungen schnell und ohne jegliche Datenübertragungskosten bereitstellen.

**Wichtig**  
Die letzte Version von AL1 erreichte EOL am 31. Dezember 2023 und wird ab dem 1. Januar 2024 keine Sicherheitsupdates oder Bugfixes mehr erhalten. Weitere Informationen finden Sie unter [Amazon Linux AMI end-of-life](https://aws.amazon.com//blogs/aws/update-on-amazon-linux-ami-end-of-life/).

Wenn Sie keine Daten oder Anpassungen für Ihre Instances beibehalten müssen, können Sie neue Instances mit dem aktuellen AL2 AMI starten. Wenn Sie Daten oder Anpassungen für Ihre Instances aufbewahren müssen, können Sie diese Instances über die Amazon Linux-Paket-Repositorys verwalten. Diese Repositorys enthalten alle aktualisierten Pakete. Sie können diese Aktualisierungen in Ihren ausgeführten Instances installieren. Frühere Versionen des AMI und der Aktualisierungspakete können weiterhin verwendet werden, auch wenn neue Versionen veröffentlicht werden.

**Anmerkung**  
Informationen zum Aktualisieren und Installieren von Paketen ohne Internetzugang auf einer Amazon EC2 EC2-Instance finden Sie unter [Wie kann ich Yum aktualisieren oder Pakete ohne Internetzugang auf meinen laufenden Amazon EC2 EC2-Instances installieren AL1,, AL2](https://repost.aws/knowledge-center/ec2-al1-al2-update-yum-without-internet) oder? AL2023

Für die Installation von Paketen verwenden Sie den folgenden Befehl:

```
[ec2-user ~]$ sudo yum install package
```

Wenn Sie feststellen, dass Amazon Linux die von Ihnen benötigte Anwendung nicht enthält, können Sie die Anwendung direkt auf Ihrer Amazon-Linux-Instance installieren. Amazon Linux verwendet RPMs und yum für die Paketverwaltung, und das ist wahrscheinlich der direkteste Weg, neue Anwendungen zu installieren. Überprüfen Sie zunächst, ob eine Anwendung in unserem zentralen Amazon-Linux-Repository verfügbar ist, da dort viele Anwendungen verfügbar sind. Von dort aus können Sie diese Anwendungen zu Ihrer Amazon Linux-Instance hinzufügen.

Um Ihre Anwendungen auf eine ausgeführte Amazon-Linux-Instance hochzuladen, verwenden Sie **scp** oder **sftp** und konfigurieren anschließend die Anwendung, indem Sie sich bei Ihrer Instance anmelden. Sie können Ihre Anwendungen außerdem mit der Aktion **PACKAGE\$1SETUP** aus dem enthaltenen cloud-init-Paket beim Starten der Instance hochladen. Weitere Informationen finden Sie unter [Verwenden Sie Cloud-Init auf AL2](amazon-linux-cloud-init.md). 

### Sicherheits-Updates
<a name="security-updates"></a>

Sicherheitsupdates werden mithilfe der Paket-Repositorys bereitgestellt. Sowohl Sicherheitsupdates als auch aktualisierte AMI-Sicherheitswarnungen werden im [Amazon Linux Security Center](https://alas.aws.amazon.com) veröffentlicht. Weitere Informationen zu AWS -Sicherheitsrichtlinien oder zum Melden eines Sicherheitsproblems finden Sie unter [AWS -Cloud-Sicherheit](https://aws.amazon.com/security/).

AL1 und AL2 sind so konfiguriert, dass sie kritische oder wichtige Sicherheitsupdates beim Start herunterladen und installieren. Kernel-Updates sind in dieser Konfiguration nicht enthalten.

In hat AL2023 sich diese Konfiguration im Vergleich zu AL1 und geändert AL2. Weitere Informationen zu Sicherheitsupdates für AL2023 finden Sie unter [Sicherheitsupdates und Funktionen](https://docs.aws.amazon.com/linux/al2023/ug/security-features.html) im *Amazon Linux 2023 User Guide*.

Wir empfehlen Ihnen, nach dem Start die erforderlichen Aktualisierungen für Ihren Anwendungsfall vorzunehmen. Beispielsweise möchten Sie möglicherweise alle Updates (nicht nur Sicherheitsupdates) beim Start anwenden oder jedes Update auswerten und nur die Updates anwenden, die für Ihr System gelten. Dies wird mit Hilfe der folgenden cloud-init-Einstellung gesteuert: `repo_upgrade`. Der folgende Ausschnitt aus der cloud-init-Konfiguration zeigt, wie Sie die Einstellungen in dem Benutzerdaten-Text ändern können, den Sie an die Instance-Initialisierung übergeben:

```
#cloud-config
repo_upgrade: security
```

 Die möglichen Werte für `repo_upgrade` sind wie folgt: 

`critical`  
Anwenden ausstehender wichtiger Sicherheitsupdates.

`important`  
Anwenden herausragend wichtiger und wichtiger Sicherheitsupdates.

`medium`  
Anwenden herausragend wichtiger, wichtiger und mittlerer Sicherheitsupdates.

`low`  
Anwenden aller ausstehenden Sicherheitsupdates an, einschließlich Sicherheitsupdates mit niedrigem Schweregrad.

`security`  
Installieren ausstehender kritischer oder wichtiger Aktualisierungen, die Amazon als Sicherheitsupdates gekennzeichnet hat.

`bugfix`  
Installieren von Aktualisierungen, die Amazon als Fehlerbehebungen gekennzeichnet hat. Fehlerbehebungen decken eine größere Anzahl von Aktualisierungen ab; dazu gehören Sicherheitsupdates und Patches für eine Reihe von anderen, kleineren Fehlern.

`all`  
Installieren Sie alle verfügbaren Aktualisierungen, unabhängig davon, wie sie klassifiziert werden.

`none`  
Installieren Sie keine Updates beim Startup der Instance.

**Hinweis**  
Amazon Linux kennzeichnet keine Updates als`bugfix`. Um nicht sicherheitsrelevante Updates von Amazon Linux anzuwenden, verwenden Sie`repo_upgrade: all`.

Die Standardeinstellung für `repo_upgrade` ist „security”. Das heißt, wenn Sie in Ihren Benutzerdaten keinen anderen Wert angeben, führt Amazon Linux standardmäßig beim Starten die Sicherheitsupgrades für alle derzeit installierten Pakete aus. Amazon Linux benachrichtigt Sie außerdem über Aktualisierungen der installierten Pakete, indem bei der Anmeldung die Anzahl der verfügbaren Aktualisierungen über die `/etc/motd`-Datei aufgelistet wird. Sie installieren diese Aktualisierungen, indem Sie den Befehl **sudo yum upgrade** in der Instance ausführen. 

### Repository-Konfiguration
<a name="repository-config"></a>

Für AL1 und AMIs sind eine Momentaufnahme der Pakete AL2, die zum Zeitpunkt der Erstellung des AMI verfügbar waren, mit Ausnahme von Sicherheitsupdates. Bei allen Paketen, die sich nicht auf dem ursprünglichen AMI befinden, sondern zur Laufzeit installiert wurden, handelt es sich um die neueste verfügbare Version. Führen Sie den Befehl aus AL2, um die neuesten verfügbaren Pakete für zu erhalten**yum update -y**.

**Tipp zur Problembehebung**  
Wenn bei der Ausführung **yum update** von Nano-Instance-Typen ein `cannot allocate memory` Fehler auftritt`t3.nano`, z. B. müssen Sie möglicherweise Swap-Speicherplatz zuweisen, um das Update zu aktivieren.

Denn AL2023 die Repository-Konfiguration hat sich im Vergleich zu AL1 und AL2 geändert. Weitere Informationen zum AL2023 Repository finden Sie unter [Pakete und Betriebssystemupdates verwalten](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html).

Versionen bis zu AL2023 wurden so konfiguriert, dass sie einen kontinuierlichen Fluss von Updates bereitstellen, um von einer Nebenversion von Amazon Linux zur nächsten Version, auch *Rolling Releases genannt, zu übertragen*. Als bewährte Methode empfehlen wir, Ihr AMI auf das neueste verfügbare AMI zu aktualisieren, anstatt alte zu starten AMIs und Updates anzuwenden.

Direkte Upgrades zwischen den wichtigsten Amazon Linux-Versionen, z. B. von bis AL2 oder von AL1 AL2 bis AL2023, werden nicht unterstützt. Weitere Informationen finden Sie unter [Amazon Linux-Verfügbarkeit](what-is-amazon-linux.md#amazon-linux-availability).

# Verwenden Sie Cloud-Init auf AL2
<a name="amazon-linux-cloud-init"></a>

Das cloud-init-Paket ist eine Open-Source-Anwendung, die von Canonical entwickelt wurde und für das Bootstrapping von Linux-Images in einer Cloud-Computing-Umgebung wie Amazon EC2 verwendet wird. Amazon Linux enthält eine angepasste Version von cloud-init. Auf diese Weise können Sie Aktionen angeben, die beim Booten auf Ihrer Instanz ausgeführt werden sollen. Sie können die gewünschten Aktionen beim Start einer Instance über die Benutzerdatenfelder an cloud-init übergeben. Das bedeutet, dass Sie Common AMIs für viele Anwendungsfälle verwenden und diese beim Start dynamisch konfigurieren können. Amazon Linux verwendet cloud-init auch für die Anfangskonfiguration des ec2-user-Kontos.

 Weitere Informationen finden Sie in der [cloud-init-Dokumentation](http://cloudinit.readthedocs.org/en/latest/). 

Amazon Linux verwendet die cloud-init-Aktionen aus `/etc/cloud/cloud.cfg.d` und `/etc/cloud/cloud.cfg`. Sie können Ihre eigenen cloud-init-Aktionsdateien unter erstelle `/etc/cloud/cloud.cfg.d`. Alle Dateien in diesem Verzeichnis werden von cloud-init eingelesen. Sie werden in lexikografischer Reihenfolge eingelesen, wobei später eingelesene Dateien die Werte in früher eingelesenen Dateien überschreiben.

Das cloud-init-Paket führt diese (und andere) allgemeine Konfigurationsaufgaben für Instances während des Bootvorgangs durch:
+ Einstellen des Standard-Gebietsschemas.
+ Einstellen des Hostnamens.
+ Analysieren und Verarbeiten von Benutzerdaten.
+ Generieren privater SSH-Schlüssel für den Host.
+ Hinzufügen der öffentlichen SSH-Schlüssel eines Benutzers zu `.ssh/authorized_keys`, um eine einfache Anmeldung und Administration zu ermöglichen.
+ Vorbereiten der --Repositorys für die Paketverwaltung.
+ Verarbeiten der in den Benutzerdaten definierten Paketaktionen.
+ Führen Sie Benutzerskripts aus, die in Benutzerdaten gefunden wurden.
+ Mounten von Instance-Speicher-Volumes, falls zutreffend.
  + Standardmäßig wird das Instance-Speicher-Volume `ephemeral0` unter `/media/ephemeral0` gemountet – wenn es vorhanden ist und ein gültiges Dateisystem enthält; andernfalls wird es nicht gemountet.
  + Standardmäßig werden alle Swap-Volumes gemountet, die der Instance zugeordnet sind (gilt nur für die Instance-Typen `m1.small` und `c1.medium`).
  + Sie können den Standard-Einhängepunkt für ein Instance-Speicher-Volume mithilfe der folgenden cloud-init-Anweisung überschreiben:

    ```
    #cloud-config
    mounts:
    - [ ephemeral0 ]
    ```

    Weitere Informationen zum Steuern von Mountvorgängen finden Sie unter [Mounts](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#mounts) in der cloud-init-Dokumentation.
  + Instance-Speicher-Volumes mit TRIM-Unterstützung werden beim Start einer Instance nicht formatiert, d. h. Sie müssen Sie partitionieren und formatieren, bevor Sie sie mounten können. Weitere Informationen finden Sie unter [TRIMUnterstützung für Instance-Speicher-Volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport). Sie können das `disk_setup`-Modul verwenden, um Instance-Speicher-Volumes während des Bootvorgangs zu partitionieren und zu formatieren. Weitere Informationen finden Sie unter [Disk Setup](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#disk-setup) in der cloud-init-Dokumentation.

## Unterstützte Benutzerdatenformate
<a name="supported-user-data-formats"></a>

Das Cloud-Init-Paket unterstützt die Verarbeitung von Benutzerdaten in einer Vielzahl von Formaten:
+ Gzip
  + Wenn Benutzerdaten gzip-komprimiert sind, dekomprimiert Cloud-Init die Daten und verarbeitet sie entsprechend.
+ MIME, mehrteilig
  + Wenn Sie eine mehrteilige MIME-Datei verwenden, können Sie mehrere Datentypen angeben. Sie könnten beispielsweise sowohl ein Benutzerdatenskript als auch einen Cloud-Konfigurationstyp angeben. Jeder Teil der mehrteiligen Datei kann von cloud-init entsprechend verarbeitet werden, wenn es sich um ein unterstütztes Format handelt.
+ Base64-Decodierung
  +  Wenn Benutzerdaten Base64-codiert sind, bestimmt cloud-init, ob es die dekodierten Daten als einen der unterstützten Typen verstehen kann. Wenn die decodierten Daten lesbar sind, werden die Daten von vollständig decodiert und weiter verarbeitet. Wenn sie nicht lesbar sind, werden die Base64-Daten unverändert zurückgegeben.
+ Benutzerdatenskript
  + Beginnt mit `#!` oder `Content-Type: text/x-shellscript`
  + Das Skript wird beim ersten Systemstartzyklus von `/etc/init.d/cloud-init-user-scripts` ausgeführt. Dies geschieht relativ spät während des Bootvorgangs (nachdem die Aktionen für die Ausgangskonfiguration durchgeführt wurden).
+ Include-Datei
  + Beginnt mit `#include` oder `Content-Type: text/x-include-url`
  + Dabei handelt es sich um eine Datei mit einzuschließenden Inhalten. Die Datei enthält eine Liste von, eine pro Zeile. URLs Jeder von ihnen URLs wird gelesen, und ihr Inhalt durchläuft dasselbe Regelwerk. Der aus der URL gelesene Inhalt kann gzip-komprimiert oder Klartext sein. MIME-multi-part
+ Cloud-Konfigurationsdaten
  + Beginnt mit `#cloud-config` oder `Content-Type: text/cloud-config`
  + Bei diesem Inhalt handelt es sich um Cloud-Konfigurationsdaten.
+ Upstart-Job (wird nicht unterstützt auf AL2)
  + Beginnt mit `#upstart-job` oder `Content-Type: text/upstart-job`
  + Dieser Inhalt wird in einer Datei in gespeichert`/etc/init`, und Upstart verwendet den Inhalt wie andere Upstart-Jobs.
+ Cloud-Boothook
  + Beginnt mit `#cloud-boothook` oder `Content-Type: text/cloud-boothook`
  + Dabei handelt es sich um Boothook-Daten. Sie werden in einer Datei unter `/var/lib/cloud` gespeichert und unmittelbar danach ausgeführt.
  +  Das ist der am frühesten verfügbare *Hook*. Es gibt keinen Mechanismus, der garantiert, dass dieser nur ein Mal ausgeführt wird. Der Boothook muss selbst dafür sorgen. Er wird mit der Instance-ID in der Umgebungsvariablen `INSTANCE_ID` bereitgestellt. Verwenden Sie diese Variable, um einen once-per-instance Satz von Boothook-Daten bereitzustellen.

# Instanzen konfigurieren AL2
<a name="configure-ec2-instance"></a>

Nachdem Sie Ihre AL2 Instance erfolgreich gestartet und sich bei ihr angemeldet haben, können Sie Änderungen daran vornehmen. Ihnen stehen viele Wege zur Konfiguration einer Instance offen, um die Anforderungen einer bestimmten Anwendung zu erfüllen. Die folgenden Aufgaben sollen Ihnen bei den ersten Schritten helfen.

**Topics**
+ [Gängige Konfigurationsszenarien](#instance-configuration-scenarios)
+ [Software auf Ihrer AL2 Instance verwalten](managing-software.md)
+ [Kontrolle des Prozessorstatus für Ihre Amazon EC2 EC2-Instance AL2](processor_state_control.md)
+ [I/O-Scheduler für AL2](io-scheduler.md)
+ [Ändern Sie den Hostnamen Ihrer Instanz AL2](set-hostname.md)
+ [Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2](dynamic-dns.md)
+ [Konfigurieren Sie Ihre Netzwerkschnittstelle mit ec2-net-utils für AL2](ec2-net-utils.md)

## Gängige Konfigurationsszenarien
<a name="instance-configuration-scenarios"></a>

Die Basisversion von Amazon Linux umfasst viele Softwarepakete and Serviceprogramme, die für grundlegende Servervorgänge benötigt werden. Allerdings stehen noch viele weitere Softwarepakete in verschiedenen Software-Repositorys zur Verfügung und Sie können sogar noch mehr Pakete aus Quellcode selbst erstellen. Weitere Informationen zum Installieren und Erstellen von Software von diesen Standorten finden Sie unter [Software auf Ihrer AL2 Instance verwalten](managing-software.md).

Amazon-Linux-Instances sind mit einem `ec2-user` vorkonfiguriert, aber Sie möchten möglicherweise andere Benutzer hinzufügen, die nicht über Super-User-Privilegien verfügen. Weitere Informationen zum Hinzufügen und Entfernen von Benutzern finden Sie unter [Benutzer auf Ihrer Linux Instance verwalten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

Falls Sie über ein Netzwerk mit einem Domain-Namen verfügen, können Sie den Hostnamen einer Instance so verändern, dass sie sich als Teil dieser Domain identifiziert. Außerdem können Sie die Systemanzeige einen aussagekräftigeren Namen anzeigen lassen, ohne die Einstellungen des Hostnamens zu verändern. Weitere Informationen finden Sie unter [Ändern Sie den Hostnamen Ihrer Instanz AL2](set-hostname.md). Sie können eine Instance für die Verwendung eines Serviceanbieters für ein dynamisches DNS konfigurieren. Weitere Informationen finden Sie unter [Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2](dynamic-dns.md).

Wenn Sie eine Instance in Amazon EC2 starten, haben Sie die Möglichkeit, Benutzerdaten an die Instance zu übergeben, die verwendet werden können, um allgemeine Konfigurationsaufgaben durchzuführen und nach dem Start der Instance Skripts auszuführen. Sie können zwei Arten von Benutzerdaten an Amazon EC2 übergeben: Cloud-Init-Anweisungen und Shell-Skripts. Weitere Informationen finden Sie unter [Befehle auf Ihrer Linux Instance beim Start ausführen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

# Software auf Ihrer AL2 Instance verwalten
<a name="managing-software"></a>

Die Basisversion von Amazon Linux umfasst viele Softwarepakete and Serviceprogramme, die für grundlegende Servervorgänge benötigt werden.

Diese Information bezieht sich auf AL2. Weitere Informationen dazu AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten AL2023 im](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Amazon Linux 2023-Benutzerhandbuch*.

Software sollte nach Möglichkeit auf dem neuesten Stand gehalten werden. Viele Pakete einer Linux-Bereitstellung werden häufig aktualisiert, um Fehler zu beheben, Features hinzuzufügen und Sicherheitslücken zu schließen. Weitere Informationen finden Sie unter [Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz](install-updates.md).

Standardmäßig werden AL2 Instances mit den folgenden aktivierten Repositorys gestartet:
+ `amzn2-core`
+ `amzn2extra-docker`

In diesen Repositorys sind zwar viele Pakete verfügbar, von denen sie aktualisiert werden AWS, aber vielleicht gibt es ein Paket, das Sie installieren möchten und das in einem anderen Repository enthalten ist. Weitere Informationen finden Sie unter [Fügen Sie Repositorys auf einer Instance AL2 hinzu](add-repositories.md). Weitere Informationen dazu, wie Sie Pakete in aktivierten Repositorys finden und installieren finden Sie unter [Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz](find-install-software.md).

Nicht alle Software steht als Paket in einem Repository zur Verfügung: Einige Software muss auf einer Instance aus ihrem Quellcode kompiliert werden. Weitere Informationen finden Sie unter [Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor](compile-software.md).

AL2 Instanzen verwalten ihre Software mithilfe des Yum-Paketmanagers. Der Paketmanager „yum“ kann Software installieren, entfernen und aktualisieren sowie alle Abhängigkeiten eines Pakets verwalten.

**Topics**
+ [Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz](install-updates.md)
+ [Fügen Sie Repositorys auf einer Instance AL2 hinzu](add-repositories.md)
+ [Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz](find-install-software.md)
+ [Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor](compile-software.md)

# Aktualisieren Sie die Instanzsoftware auf Ihrer AL2 Instanz
<a name="install-updates"></a>

Software sollte nach Möglichkeit auf dem neuesten Stand gehalten werden. Pakete einer Linux-Bereitstellung werden häufig aktualisiert, um Fehler zu beheben, Features hinzuzufügen und Sicherheitslücken zu schließen. Wenn Sie eine Amazon Linux-Instance zum ersten Mal starten und eine Verbindung zu ihr herstellen, wird u. U. eine Meldung angezeigt, die Sie dazu auffordert, aus Sicherheitsgründen Softwarepakete zu aktualisieren. In diesem Abschnitt wird beschrieben, wie Sie das gesamte System oder nur ein einzelnes Paket aktualisieren.

Diese Information bezieht sich auf AL2. Weitere Informationen dazu AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten AL2023 im](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Amazon Linux 2023-Benutzerhandbuch*.

Informationen zu Änderungen und Aktualisierungen von finden Sie in AL2 den [AL2 Versionshinweisen](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Informationen zu Änderungen und Aktualisierungen von finden Sie in AL2023 den [AL2023 Versionshinweisen](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**Wichtig**  
Wenn Sie eine EC2-Instance gestartet haben, die ein Amazon Linux 2-AMI in einem IPv6 Nur-Only-Subnetz verwendet, müssen Sie eine Verbindung mit der Instance herstellen und sie ausführen. `sudo amazon-linux-https disable` Dadurch kann Ihre AL2 Instance über den HTTP-Patch-Service eine Verbindung zum yum Repository in S3 IPv6 herstellen.

**Um alle Pakete auf einer AL2 Instanz zu aktualisieren**

1. (Optional) Starten Sie eine **screen**-Sitzung im Shell-Fenster. Manchmal treten u. U. Netzwerkunterbrechungen auf, die die SSH-Verbindung zur Instance unterbrechen. Wenn dies während einer lang andauernden Softwareaktualisierung geschieht, verwirrt dies die Instance, sie kann aber wiederhergestellt werden. Eine **screen**-Sitzung ermöglicht Ihnen, die Aktualisierung auch im Falle einer Verbindungsunterbrechung fortzusetzen, und später können Sie problemlos eine neue Verbindung zur Sitzung herstellen.

   1. Führen Sie den Befehl **screen** aus, um die Sitzung zu beginnen.

      ```
      [ec2-user ~]$ screen
      ```

   1. Wird die Verbindung der Sitzung getrennt, melden Sie sich erneut auf der Instance an und rufen Sie die Liste der verfügbaren Bildschirme auf.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Stellen Sie mithilfe des Befehls **screen -r** und der Prozess-ID des vorherigen Befehls erneut eine Verbindung zu dem Bildschirm her.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Wenn Sie **screen** nicht weiter benötigen, verwenden Sie den Befehl **exit**, um die Sitzung zu schließen.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Führen Sie den Befehl **yum update** aus. Fügen Sie optional das Flag `--security` hinzu, um nur Sicherheitsaktualisierungen zu installieren.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Überprüfen Sie die aufgeführten Pakete, geben Sie **y** ein und drücken Sie die Eingabetaste, um die Aktualisierungen anzunehmen. Die Aktualisierung aller Pakete eines Systems nimmt u. U. mehrere Minuten in Anspruch. Die Ausgabe von **yum** zeigt den Status der Aktualisierung an, während diese durchgeführt wird.

1. (Optional) [Starten Sie Ihre Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) neu, um sicherzustellen, dass Sie die neuesten Pakete und Bibliotheken aus Ihrem Update verwenden. Kernel-Updates werden erst geladen, wenn ein Neustart erfolgt. Auf Aktualisierungen der `glibc`-Bibliotheken sollte ebenso ein Neustart folgen. Für Aktualisierungen der Pakete, die Services steuern, reicht u. U. der Neustart des Service aus, um Aktualisierungen zu aktivieren, aber ein Systemneustart stellt sicher, dass alle durchgeführten Paket- und Bibliothekaktualisierungen vollständig geladen werden.

**Um ein einzelnes Paket auf einer AL2 Instance zu aktualisieren**

Wenden Sie die folgende Vorgehensweise an, um anstatt des ganzen Systems nur ein einzelnes Paket (und seine Abhängigkeiten) zu aktualisieren.

1. Führen Sie den Befehl **yum update** mit dem Namen des Pakets aus, das Sie aktualisieren möchten.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Überprüfen Sie die aufgeführten Paketinformationen, geben Sie **y** ein und drücken Sie die Eingabetaste, um die Aktualisierung(en) anzunehmen. Manchmal wird mehr als ein Paket aufgeführt, falls Probleme mit Paketabhängigkeiten bestehen. Die Ausgabe von **yum** zeigt den Status der Aktualisierung an, während diese durchgeführt wird.

1. (Optional) [Starten Sie Ihre Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) neu, um sicherzustellen, dass Sie die neuesten Pakete und Bibliotheken aus Ihrem Update verwenden. Kernel-Updates werden erst geladen, wenn ein Neustart erfolgt. Auf Aktualisierungen der `glibc`-Bibliotheken sollte ebenso ein Neustart folgen. Für Aktualisierungen der Pakete, die Services steuern, reicht u. U. der Neustart des Service aus, um Aktualisierungen zu aktivieren, aber ein Systemneustart stellt sicher, dass alle durchgeführten Paket- und Bibliothekaktualisierungen vollständig geladen werden.

# Fügen Sie Repositorys auf einer Instance AL2 hinzu
<a name="add-repositories"></a>

Diese Information bezieht sich auf. AL2 Weitere Informationen dazu AL2023 finden Sie unter [Deterministische Upgrades durch versionierte Repositorys AL2023 im Amazon](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) *Linux 2023* User Guide.

Standardmäßig werden AL2 Instances mit den folgenden aktivierten Repositorys gestartet:
+ `amzn2-core`
+ `amzn2extra-docker`

In diesen Repositorys befinden sich viele Pakete, die von Amazon Web Services aktualisiert werden, aber möglicherweise möchten Sie ein Paket installieren, das in einem anderen Repository enthalten ist.

Zum Installieren eines Pakets aus einem anderen Repository mithilfe von **yum** müssen Sie die Daten des Repository der Datei `/etc/yum.conf` oder seiner eigenen `repository.repo`-Datei im Verzeichnis `/etc/yum.repos.d` hinzufügen. Dies kann manuell erfolgen, aber die meisten yum-Repositorys verfügen über eigene `repository.repo`-Dateien an ihrer Repository-URL.

**Stellen Sie wie folgt fest, welche yum-Repositorys bereits installiert sind:**  
Mit dem folgenden Befehl führen Sie die installierten yum-Repositorys auf:

```
[ec2-user ~]$ yum repolist all
```

Die resultierende Ausgabe führt alle installierten Repositorys und ihre jeweiligen Status auf. Aktivierte Repositorys zeigen die Anzahl der Pakete an, die sie enthalten.

**Fügen Sie ein yum-Repository wie folgt zur Datei hinzu /etc/yum.repos.d**

1. Suchen Sie den Speicherort der Datei `.repo`. Dieser hängt von dem Repository ab, das Sie hinzufügen. In diesem Beispiel befindet sich die Datei `.repo` unter `https://www.example.com/repository.repo`.

1. Erstellen Sie ein Repository mit dem Befehl **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Nach der Installation von Repositorys müssen diese wie folgt aktiviert werden.

**Aktivieren Sie ein yum-Repository in wie folgt /etc/yum.repos.d**  
Verwenden Sie den Befehl **yum-config-manager** mit dem `--enable repository`-Namespace. Der folgende Befehl aktiviert das Repository „Extra Packages for Enterprise Linux (EPEL)“ des Projekts „Fedora“. Standardmäßig steht dieses Repository auf `/etc/yum.repos.d`-Instances unter Amazon Linux AMI zur Verfügung, ist aber nicht aktiviert.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

Weitere Informationen und den Download der neuesten Version dieses Pakets finden Sie unter [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Suchen und installieren Sie Softwarepakete auf einer AL2 Instanz
<a name="find-install-software"></a>

Sie können ein Paketverwaltungstool verwenden, um Softwarepakete zu suchen und zu installieren. In Amazon Linux 2 ist das Standard-Tool zur Verwaltung von SoftwarepaketenYUM. In ist AL2023 das Standard-Tool zur Verwaltung von SoftwarepaketenDNF. Weitere Informationen finden Sie unter [Package Management Tool](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) im *Amazon Linux 2023 User Guide*.

## Suchen Sie nach Softwarepaketen auf einer AL2 Instance
<a name="find-software"></a>

Verwenden Sie den Befehl **yum search**, um nach den Beschreibungen der Pakete zu suchen, die in den konfigurierten Repositorys zur Verfügung stehen. Diese Funktion ist besonders hilfreich, wenn Sie den genauen Namen des zu installierenden Pakets nicht kennen. Hängen Sie die Stichwortsuche einfach an den Befehl an. Grenzen Sie die Suchanfragen mit Anführungszeichen ab, wenn Sie mehrere Stichwortsuchen anhängen.

```
[ec2-user ~]$ yum search "find"
```

Es folgt eine Beispielausgabe.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Mehrere Schlüsselwortsuchanfragen in Anführungszeichen geben nur Ergebnisse zurück, die exakt zu der Anfrage passen. Falls Sie das gesuchte Paket nicht finden, suchen Sie nur nach einem Stichwort und überfliegen Sie die Ergebnisse. Sie können auch Synonyme der Stichwörter verwenden, um die Suche zu verallgemeinern.

Weitere Informationen zu Paketen für AL2 finden Sie unter:
+ [AL2 Extras-Bibliothek](al2-extras.md)
+ [Paket-Repository](ec2.md#package-repository)

## Installieren Sie Softwarepakete auf einer AL2 Instanz
<a name="install-software"></a>

In AL2 durchsucht das Yum-Paketverwaltungstool alle Ihre aktivierten Repositorys nach verschiedenen Softwarepaketen und behandelt alle Abhängigkeiten im Softwareinstallationsprozess. Informationen zur Installation von Softwarepaketen in AL2023 finden Sie unter [Pakete und Betriebssystemupdates verwalten](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) im *Amazon Linux 2023-Benutzerhandbuch*.

**So installieren Sie ein Paket aus einem Repository:**  
Verwenden Sie den **yum install *package*** Befehl und *package* ersetzen Sie ihn durch den Namen der zu installierenden Software. Geben Sie beispielsweise den folgenden Befehl ein, um den **links** textbasierten Webbrowser Links zu installieren:

```
[ec2-user ~]$ sudo yum install links
```

**So installieren Sie RPM-Paketdateien, die Sie heruntergeladen haben:**  
Sie können auch den Befehl **yum install** verwenden, um RPM-Paketdateien zu installieren, die Sie aus dem Internet heruntergeladen haben. Hängen Sie dazu anstatt des Namens eines Repository-Pakets den Pfad der RPM-Datei an den Installationsbefehl an.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**So erstellen Sie eine Liste der installierten Pakete:**  
Verwenden Sie den folgenden Befehl, um eine Liste der installierten Pakete auf Ihrer Instance anzuzeigen.

```
[ec2-user ~]$ yum list installed
```

# Bereiten Sie die Kompilierung der Software auf einer AL2 Instanz vor
<a name="compile-software"></a>

Open-Source-Software ist im Internet verfügbar, ohne dass sie vorkompiliert und in einem Paketarchiv zum Download bereitgestellt wurde. Irgendwann stoßen Sie wahrscheinlich auf ein Softwarepaket, dass Sie selbst aus seinem Quellcode kompilieren möchten. Damit Ihr System Software in AL2 und Amazon Linux kompilieren kann, müssen Sie mehrere Entwicklungstools installieren, z. B. **make****gcc**, und**autoconf**.

Da nicht jede Amazon EC2-Instance Software kompilieren muss, sind diese Tools nicht standardmäßig installiert. Stattdessen stehen sie in Form einer Paketgruppe namens „Development Tools“ zur Verfügung, die sich einer Instance einfach mithilfe des Befehls **yum groupinstall** hinzufügen lässt.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

Software-Quellcodepakete stehen häufig (von Websites wie [https://github.com/](https://github.com/)und [http://sourceforge.net/](https://sourceforge.net/)) als komprimierte Archivdatei, die als Tarball bezeichnet wird, zum Herunterladen zur Verfügung. Sie verfügen üblicherweise über die Dateierweiterung `.tar.gz`. Diese Archive lassen sich mithilfe des Befehls **tar** dekomprimieren.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Wenn Sie das Quellcodepaket dekomprimiert und extrahiert haben, suchen Sie die Datei `README` oder `INSTALL` im Quellcodeverzeichnis. Diese Dateien enthalten weitere Anleitungen zum Kompilieren und Installieren des Quellcodes. 

**So rufen Sie den Quellcode für Amazon Linux-Pakete ab**  
Amazon Web Services stellt den Quellcode von installierten Paketen zur Verfügung. Nutzen Sie zum Herunterladen des Quellcodes von installierten Paketen den Befehl **yumdownloader --source**.

Führen Sie den **yumdownloader --source *package*** Befehl aus, um den Quellcode für *package* herunterzuladen. Geben Sie beispielsweise den folgenden Befehl ein, um den Quellcode des Pakets `htop` zu installieren:

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

Der Speicherort des Quell-RPM befindet sich in dem Verzeichnis, aus dem Sie den Befehl ausgeführt haben.

# Kontrolle des Prozessorstatus für Ihre Amazon EC2 EC2-Instance AL2
<a name="processor_state_control"></a>

Über den C-Zustand werden die Ruhezustandsebenen gesteuert, in denen sich ein Core im Leerlauf befinden kann. C-Zustände sind von C0 (Arbeitszustand, in dem der Core „wach“ ist und Anweisungen ausführt) bis C6 („tiefster“ Leerlaufzustand, in dem ein Core ausgeschaltet ist) nummeriert.

P-Status steuern die gewünschte Leistung (in CPU-Frequenz) eines Kerns. P-Zustände sind ab P0 (höchste Performancestufe, in der Intel Turbo Boost-Technologie für den Core eingesetzt werden kann, um ggf. die Frequenz zu erhöhen) über P1 (in diesem P-Zustand wird die maximale Basisfrequenz angefordert) bis P15 (geringstmögliche Frequenz) nummeriert.

Es kann ratsam sein, die Einstellungen für den C- bzw. P-Zustand zu ändern, um die Konsistenz der Prozessorleistung zu erhöhen, die Latenz zu reduzieren oder Ihre Instance für einen bestimmten Workload zu optimieren. Die Standardeinstellungen für den C- und P-Zustand sind auf maximale Performance ausgelegt. Dies ist für die meisten Workloads optimal. Erwägen Sie jedoch, mit den für diese Instances verfügbaren Einstellungen für den C- oder P-Zustand zu experimentieren, wenn Ihre Anwendung von einer verringerten Latenz auf Kosten von höheren Single- oder Dual-Core-Frequenzen oder von einer konsistenten Performance bei niedrigeren Frequenzen (im Gegensatz zu diskontinuierlichen Turbo Boost-Frequenzen) profitieren würde.

Informationen zu Amazon EC2 EC2-Instance-Typen, die es dem Betriebssystem ermöglichen, C-Status und P-Status von Prozessoren zu steuern, finden Sie unter [Prozessor-State-Steuerung für Ihre Amazon EC2 EC2-Instance im *Amazon* EC2 EC2-Benutzerhandbuch](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).

In den folgenden Abschnitten werden die unterschiedlichen Prozessorstatuskonfigurationen und die Überwachung der Auswirkungen Ihrer Konfiguration beschrieben. Diese Verfahren wurden für Amazon Linux geschrieben und gelten für Amazon Linux. Sie könnten jedoch auch für andere Linux-Distributionen mit einer Linux-Kernel-Version 3.9 oder neuer funktionieren.

**Anmerkung**  
Bei den Beispielen auf dieser Seite wurde Folgendes verwendet:  
Das **turbostat**-Dienstprogramm zeigt Informationen zur Prozessorfrequenz und zum C-Zustand an. Das **turbostat**-Dienstprogramm ist standardmäßig unter Amazon Linux verfügbar.
Der **stress**-Befehl simuliert eine Workload. Um **stress** zu installieren, aktivieren Sie zuerst das EPEL-Repository, indem Sie**sudo amazon-linux-extras install epel** und dann **sudo yum install -y stress** ausführen.
Wenn die Ausgabe die Informationen zum C-Zustand nicht anzeigt, schließen Sie die Option **--debug** im Befehl (**sudo turbostat --debug stress *<options>***) ein.

**Topics**
+ [Höchste Performance mit maximaler Turbo Boost-Frequenz](#turbo-perf)
+ [Hohe Performance und geringe Latenz durch die Beschränkung von tieferen C-Zuständen](#c-states)
+ [Basis-Performance mit geringster Variabilität](#baseline-perf)

## Höchste Performance mit maximaler Turbo Boost-Frequenz
<a name="turbo-perf"></a>

Dies ist die Standardkonfiguration zum Steuern des Prozessorzustands für das Amazon Linux AMI und wird für die meisten Workloads empfohlen. Diese Konfiguration bietet die höchste Performance mit geringerer Variabilität. Wenn für inaktive Cores „tiefere“ Ruhezustände zugelassen werden, ist der thermische Spielraum vorhanden, der erforderlich ist, damit Single- oder Dual-Core-Prozesse ihr maximales Turbo Boost-Potenzial erreichen können.

Das folgende Beispiel enthält eine Instance vom Typ `c4.8xlarge` mit zwei aktiven Cores, die ihre maximale Turbo Boost-Prozessorfrequenz erreichen.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

In diesem Beispiel laufen v CPUs 21 und 28 mit ihrer maximalen Turbo-Boost-Frequenz, weil die anderen Kerne in den `C6` Ruhezustand übergegangen sind, um Strom zu sparen und sowohl Strom als auch thermischen Spielraum für die arbeitenden Kerne bereitzustellen. v CPUs 3 und 10 (jeweils teilen sich einen Prozessorkern mit v CPUs 21 und 28) befinden sich in dem `C1` Zustand und warten auf Anweisungen.

Im folgenden Beispiel verrichten alle 18 Kerne aktiv Arbeit, sodass kein Spielraum für maximalen Turbo-Boost besteht, aber sie laufen alle mit der „All-Core-Turbo-Boost-Geschwindigkeit“ von 3,2 GHz.

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Hohe Performance und geringe Latenz durch die Beschränkung von tieferen C-Zuständen
<a name="c-states"></a>

Mit dem C-Zustand werden die Ruhezustandsebenen gesteuert, in denen sich ein Core im inaktiven Zustand befinden kann. Es kann ratsam sein, die C-Zustände zu steuern, um Ihr System im Hinblick auf Latenz und Performance zu optimieren. Das Versetzen von Cores in den Ruhezustand benötigt Zeit. Und auch wenn ein Core im Ruhezustand mehr Spielraum zur Nutzung einer höheren Frequenz durch einen anderen Core zulässt, dauert es auch wieder eine gewisse Zeit, bis der Core aus dem Ruhezustand erwacht und Arbeitsschritte ausführen kann. Falls sich beispielsweise ein Core, der für die Verarbeitung von Netzwerkpaketunterbrechungen zugewiesen ist, im Ruhezustand befindet, kann es bei der Verarbeitung der Unterbrechung zu einer Verzögerung kommen. Sie können das System so konfigurieren, dass keine tieferen C-Zustände verwendet werden. Hierdurch wird die Latenz in Bezug auf die Prozessorreaktion reduziert, aber gleichzeitig wird auch der Turbo Boost-Spielraum für andere Cores verringert.

Ein häufiges Szenario zum Deaktivieren von tieferen Ruhezuständen ist die Nutzung einer Redis-Datenbankanwendung, bei der die Datenbank im Systemspeicher gespeichert wird, um für Abfragen eine möglichst geringe Reaktionszeit zu erzielen.

**Um tiefere Schlafzustände zu begrenzen, aktivieren Sie AL2**

1. Öffnen Sie die Datei `/etc/default/grub` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Bearbeiten Sie die Zeile `GRUB_CMDLINE_LINUX_DEFAULT` und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1.  Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**So begrenzen Sie tiefere Ruhezustände für Amazon Linux AMI**

1. Öffnen Sie die Datei `/boot/grub/grub.conf` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Bearbeiten Sie die Zeile `kernel` des ersten Eintrags und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

Das folgende Beispiel enthält eine Instance vom Typ `c4.8xlarge` mit zwei aktiven Cores, für die die Core-Frequenz vom Typ „Turbo Boost für alle Cores“ genutzt wird.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

In diesem Beispiel laufen die Kerne für Version CPUs 19 und 28 mit 3.2 GHz, und die anderen Kerne befinden sich im `C1` C-Status und warten auf Befehle. Für die aktiven Cores wird zwar nicht die maximale Turbo Boost-Frequenz erreicht, aber die inaktiven Cores können viel schneller auf neue Anforderungen reagieren, als dies im tieferen C-Zustand `C6` der Fall wäre.

## Basis-Performance mit geringster Variabilität
<a name="baseline-perf"></a>

Sie können die Variabilität der Prozessorfrequenz mit P-Zuständen reduzieren. Mit P-Zuständen wird die gewünschte Performance für einen Core gesteuert (nach CPU-Frequenz). Für die meisten Workloads wird im Zustand P0, in dem Turbo Boost angefordert wird, eine bessere Performance erzielt. Es kann aber sein, dass Sie für Ihr System eine konsistente Performance konfigurieren möchten, weil es bei der Aktivierung von Turbo Boost-Frequenzen zu einer diskontinuierlichen Performance kommen kann. 

Intel Advanced Vector Extensions (AVX oder AVX2) -Workloads können bei niedrigeren Frequenzen eine gute Leistung erbringen, und AVX-Befehle können mehr Strom verbrauchen. Wenn der Prozessor bei einer niedrigeren Frequenz ausgeführt wird, indem Turbo Boost deaktiviert wird, kann die genutzte Leistungsmenge reduziert und die Geschwindigkeit konsistenter gehalten werden. Weitere Informationen zur Optimierung Ihrer Instance-Konfiguration und des Workload für AVX erhalten Sie auf der [Intel-Website](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

CPU-Leerlauf-Treiber steuern den P-Zustand. Neuere CPU-Generationen erfordern aktualisierte CPU-Leerlauf-Treiber, die der Kernelebene wie folgt entsprechen:
+ Linux-Kernel-Versionen 6.1 und höher — Unterstützt Intel Granite Rapids (z. B. R8i)
+ Linux-Kernel-Versionen 5.10 und höher — Unterstützt AMD Milan (zum Beispiel M6a)
+ Linux-Kernel-Versionen 5.6 und höher — Unterstützt Intel Icelake (zum Beispiel M6i)

Führen Sie den folgenden Befehl aus, um festzustellen, ob der Kernel eines laufenden Systems die CPU erkennt.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Wenn die Ausgabe dieses Befehls auf fehlende Unterstützung hinweist, empfehlen wir Ihnen, den Kernel upzugraden.

In diesem Abschnitt wird beschrieben, wie Sie tiefere Ruhezustände begrenzen und Turbo Boost deaktivieren (durch Anforderung des P-Zustands `P1`), um für diese Arten von Workloads ein geringe Latenz und die geringstmögliche Variabilität der Prozessorgeschwindigkeit bereitzustellen.

**Um tiefere Schlafzustände zu begrenzen und Turbo Boost einzuschalten AL2**

1. Öffnen Sie die Datei `/etc/default/grub` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Bearbeiten Sie die Zeile `GRUB_CMDLINE_LINUX_DEFAULT` und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1.  Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand `P1` bereitgestellt wird.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**So begrenzen Sie tiefere Ruhezustände und deaktivieren Turbo Boost für Amazon Linux AMI**

1. Öffnen Sie die Datei `/boot/grub/grub.conf` mit einem Editor Ihrer Wahl.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Bearbeiten Sie die Zeile `kernel` des ersten Eintrags und fügen Sie die Optionen `intel_idle.max_cstate=1` und `processor.max_cstate=1` hinzu, um `C1` als tiefstmöglichen C-Zustand für Cores im Leerlauf festzulegen.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Die`intel_idle.max_cstate=1`-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, die `processor.max_cstate=1`-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen.

1. Speichern Sie die Datei und beenden Sie den Editor.

1. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand `P1` bereitgestellt wird.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

Das folgende Beispiel zeigt eine `c4.8xlarge` Instanz mit zwei V, die CPUs aktiv mit der Basiskernfrequenz arbeiten, ohne Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Die Kerne für v CPUs 21 und 28 arbeiten aktiv mit der Basisprozessorgeschwindigkeit von 2,9 GHz, und alle inaktiven Kerne laufen ebenfalls mit der Basisgeschwindigkeit im `C1` C-Zustand und sind bereit, Befehle anzunehmen.

# I/O-Scheduler für AL2
<a name="io-scheduler"></a>

Die I/O scheduler is a part of the Linux operating system that sorts and merges I/O Anfragen und bestimmt die Reihenfolge, in der sie verarbeitet werden.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/OScheduler haben bei Solid-State-Geräten und virtualisierten Umgebungen weniger Wirkung. Dies liegt daran, dass sich der sequentielle und zufällige Zugriff bei Solid-State-Geräten nicht unterscheiden und der Host für virtualisierte Umgebungen eine eigene Planungsebene bereitstellt.

In diesem Thema wird der Amazon I/O Linux-Scheduler behandelt. Weitere Informationen über den I/O-Scheduler, der von anderen Linux-Verteilungen verwendet wird, finden Sie in der jeweiligen Dokumentation.

**Topics**
+ [Unterstützte Scheduler](#supported-schedulers)
+ [Standard-Scheduler](#default-schedulers)
+ [Ändern des Schedulers](#change-scheduler)

## Unterstützte Scheduler
<a name="supported-schedulers"></a>

Amazon Linux unterstützt die folgenden I/O Scheduler:
+ `deadline`— Der *Deadline* I/O Scheduler sortiert I/O Anfragen und bearbeitet sie in der effizientesten Reihenfolge. Es garantiert eine Startzeit für alle I/O request. It also gives I/O Anfragen, die zu lange ausstehen und eine höhere Priorität haben.
+ `cfq`— Der *Completely Fair Queueing* (CFQ) I/O -Scheduler versucht, I/O resources between processes. It sorts and inserts I/O Anfragen fair den Warteschlangen pro Prozess zuzuordnen.
+ `noop`— Die I/O scheduler inserts all I/O Noop-Anfragen (*No Operation*) werden einer FIFO-Warteschlange zugeordnet und dann zu einer einzigen Anfrage zusammengeführt. Dieser Scheduler führt keine Anforderungssortierung durch.

## Standard-Scheduler
<a name="default-schedulers"></a>

No Operation (noop) ist der I/O Standard-Scheduler für Amazon Linux. Dieser Scheduler wird aus folgenden Gründen verwendet:
+ Viele Instance-Typen verwenden virtualisierte Geräte, bei denen der zugrunde liegende Host die Planung für die Instance durchführt.
+ Solid-State-Geräte werden in vielen Instance-Typen verwendet, bei denen die Vorteile eines I/O Schedulers weniger wirksam sind.
+ Es ist der am wenigsten invasive I/O Scheduler und kann bei Bedarf angepasst werden.

## Ändern des Schedulers
<a name="change-scheduler"></a>

Eine Änderung des I/O Schedulers kann die Leistung erhöhen oder verringern, je nachdem, ob der Scheduler dazu führt, dass mehr oder weniger I/O Anfragen in einer bestimmten Zeit abgeschlossen werden. Dies hängt weitgehend von Ihrer Workload, der Generierung des verwendeten Instance-Typs und dem Gerätetyp. Wenn Sie den verwendeten I/O-Scheduler ändern, empfehlen wir Ihnen, ein Tool wie **iotop** zu verwenden, um die I/O Leistung zu messen und festzustellen, ob die Änderung für Ihren Anwendungsfall von Vorteil ist.

Sie können den I/O Scheduler für ein Gerät mithilfe des folgenden Befehls anzeigen, der `nvme0n1` als Beispiel dient. Ersetzen Sie `nvme0n1` im folgenden Befehl mit dem Gerät in `/sys/block` Ihrer Instance.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Verwenden Sie den folgenden Befehl, um den I/O Scheduler für das Gerät einzurichten. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Verwenden Sie beispielsweise den folgenden Befehl, um den I/O Scheduler für ein *xvda* Gerät von `noop` bis `cfq` einzustellen. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Ändern Sie den Hostnamen Ihrer Instanz AL2
<a name="set-hostname"></a>

Wenn Sie eine Instance in einer privaten VPC starten, weist Amazon EC2 einen Hostnamen des Gastbetriebssystems zu. Der Typ des Hostnamens, den Amazon EC2 zuweist, hängt von Ihren Subnetzeinstellungen ab. Weitere Informationen zu EC2-Hostnamen finden Sie unter [Hostnamentypen für Amazon EC2 EC2-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) im *Amazon* EC2 EC2-Benutzerhandbuch.

Ein typischer privater DNS-Name von Amazon EC2 für eine EC2-Instance, die für die Verwendung einer IP-basierten Benennung mit einer IPv4 Adresse konfiguriert ist`ip-12-34-56-78.us-west-2.compute.internal`, sieht ungefähr so aus:, wobei der Name aus der internen Domain, dem Service (in diesem Fall`compute`), der Region und einer Form der privaten Adresse besteht. IPv4 Teil dieses Hostnamens wird von der Shell-Anzeige gezeigt, wenn Sie sich bei der Instance anmelden (z. B., `ip-12-34-56-78`). Jedes Mal, wenn Sie Ihre Amazon EC2 EC2-Instance beenden und neu starten (es sei denn, Sie verwenden eine Elastic IP-Adresse), ändert sich die öffentliche IPv4 Adresse, ebenso wie Ihr öffentlicher DNS-Name, Ihr System-Hostname und Ihre Shell-Eingabeaufforderung.

**Wichtig**  
Diese Informationen gelten für Amazon Linux. Weitere Informationen zu anderen Verteilungen finden Sie in der jeweiligen Dokumentation.

## Ändern des Systemhostnamens
<a name="set-hostname-system"></a>

Falls Sie für die IP-Adresse der Instance einen öffentlichen DNS-Namen registriert haben (z. B. `webserver.mydomain.com`), können Sie den Systemhostnamen so einstellen, dass sich die Instance als Teil dieser Domain identifiziert. Dadurch wird auch die Shell-Eingabeaufforderung so geändert, dass sie den ersten Teil dieses Namens anstelle des von AWS (z. B.) angegebenen Hostnamens anzeigt. `ip-12-34-56-78` Auch wenn Sie keinen öffentlichen DNS-Namen registriert haben, können Sie den Hostnamen ändern. Allerdings unterscheidet sich die Vorgehensweise ein wenig.

Damit Ihre Hostnamen-Aktualisierung fortbesteht, müssen Sie sicherstellen, dass die `preserve_hostname`-Cloud-Init-Einstellung auf `true` eingestellt ist. Sie können den folgenden Befehl ausführen, um diese Einstellung zu bearbeiten oder hinzuzufügen:

```
sudo vi /etc/cloud/cloud.cfg
```

Wenn die `preserve_hostname`-Einstellung nicht aufgeführt ist, fügen Sie am Ende der Datei die folgende Textzeile hinzu: 

```
preserve_hostname: true
```

**Ändern Sie den Systemhostnamen wie folgt in einen öffentlichen DNS-Namen:**

Führen Sie diese Schritte aus, falls Sie bereits einen öffentlichen DNS-Namen registriert haben.

1. 
   + Für AL2: Verwenden Sie den **hostnamectl** Befehl, um Ihren Hostnamen so einzustellen, dass er den vollqualifizierten Domainnamen wiedergibt (z. B.**webserver.mydomain.com**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Für Amazon Linux AMI: Öffnen Sie auf der Instance die Konfigurationsdatei `/etc/sysconfig/network` in einem Texteditor Ihrer Wahl und ändern Sie den Eintrag `HOSTNAME` so, dass er den vollqualifizierten Domain-Namen wiederspiegelt (z. B. **webserver.mydomain.com**).

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Starten Sie die Instance neu, damit der neue Hostname übernommen und angezeigt wird.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Alternativ können Sie einen Neustart über die Amazon EC2-Konsole ausführen. Hierzu wählen Sie auf der Seite **Instances (Instances)** die Instance und anschließend **Instance state (Instance-Status)**, **Reboot instance (Instance neu starten)** aus.

1. Melden Sie sich bei der Instance an und überprüfen Sie, ob der Hostname aktualisiert wurde. Ihr Eintrag sollte den neuen Hostnamen bis zum ersten "." anzeigen, und der Befehl **hostname** sollte den vollqualifizierten Domain-Namen anzeigen.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Ändern Sie den Systemhostnamen wie folgt ohne einen öffentlichen DNS-Namen:**

1. 
   + Für AL2: Verwenden Sie den **hostnamectl** Befehl, um Ihren Hostnamen so einzustellen, dass er dem gewünschten Systemhostnamen entspricht (z. B.). **webserver**

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Für Amazon Linux AMI: Öffnen Sie auf Ihrer Instance die Konfigurationsdatei `/etc/sysconfig/network` in einem Texteditor Ihrer Wahl und ändern Sie den Eintrag `HOSTNAME` so, dass er den gewünschten Systemhostnamen widerspiegelt (z. B. **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Öffnen Sie die Datei `/etc/hosts` in einem Texteditor Ihrer Wahl und ändern Sie den mit **127.0.0.1** beginnenden Eintrag so, dass er dem folgenden Beispiel entspricht, wobei Sie einen eigenen Hostnamen angeben.

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Starten Sie die Instance neu, damit der neue Hostname übernommen und angezeigt wird.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Alternativ können Sie einen Neustart über die Amazon EC2-Konsole ausführen. Hierzu wählen Sie auf der Seite **Instances (Instances)** die Instance und anschließend **Instance state (Instance-Status)**, **Reboot instance (Instance neu starten)** aus.

1. Melden Sie sich bei der Instance an und überprüfen Sie, ob der Hostname aktualisiert wurde. Ihr Eintrag sollte den neuen Hostnamen bis zum ersten "." anzeigen, und der Befehl **hostname** sollte den vollqualifizierten Domain-Namen anzeigen.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

Sie können auch mehr programmatische Lösungen implementieren, z. B. die Angabe von Benutzerdaten zur Konfiguration Ihrer Instance. Wenn Ihre Instance Teil einer Auto-Scaling-Gruppe ist, können Sie Lebenszyklus-Hooks verwenden, um Benutzerdaten festzulegen. Weitere Informationen finden Sie unter [Ausführen von Befehlen auf Linux-Instances beim Start](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) und [Lebenszyklus-Hook für Instance-Start](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) im *AWS CloudFormation -Benutzerhandbuch*.

## Ändern der Shell-Anzeige ohne Auswirkungen auf den Hostnamen
<a name="set-hostname-shell"></a>

Wenn Sie den Hostnamen für Ihre Instance nicht ändern möchten, Sie aber möchten, dass ein nützlicherer Systemname (wie**webserver**) angezeigt wird als der von AWS (z. B.) angegebene private Name, `ip-12-34-56-78` können Sie die Shell-Prompt-Konfigurationsdateien so bearbeiten, dass Ihr System-Spitzname anstelle des Hostnamens angezeigt wird.

**Lassen Sie die Shell-Anzeige wie folgt einen Hostspitznamen anzeigen:**

1. Erstellen Sie eine Datei unter `/etc/profile.d`, die die Umgebungsvariable `NICKNAME` auf den Wert einstellt, den die Shell-Anzeige anzeigen soll. Führen Sie den folgenden Befehl aus, um als Systemspitznamen beispielsweise **webserver** festzulegen.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Öffnen Sie die Datei `/etc/bashrc` (Red Hat) oder `/etc/bash.bashrc` (Debian/Ubuntu) in Ihrem bevorzugten Texteditor (z. B. **vim** oder **nano**). Sie müssen **sudo** mit dem Editorbefehl verwenden, da `/etc/bashrc` und `/etc/bash.bashrc` Eigentum von `root` sind.

1. Bearbeiten Sie die Datei und ändern Sie die Shell-Anzeigenvariable (`PS1`) so, dass der Spitzname anstelle des Hostnamens angezeigt wird. Suchen Sie die folgende Zeile, in der die Shell-Anzeige in `/etc/bashrc` oder `/etc/bash.bashrc` festlegt wird (die Stelle und mehrere umgebende Zeilen werden im Folgenden angezeigt, um Kontext zu liefern. Suchen Sie die Zeile, die mit `[ "$PS1"` beginnt):

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Ändern Sie den Wert von `\h` (Symbol für `hostname`) in dieser Zeile auf den Wert der Variable `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Optional) Führen Sie die folgenden Schritte aus, um die Titel von Shell-Fenstern auf den neuen Spitznamen einzustellen.

   1. Erstellen Sie eine Datei namens `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Machen Sie die Datei mithilfe des folgenden Befehls ausführbar:

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Öffnen Sie die Datei `/etc/sysconfig/bash-prompt-xterm` mit einem Texteditor Ihrer Wahl (z. B. **vim** oder **nano**). Sie müssen **sudo** mit dem Editor verwenden, da die Datei `/etc/sysconfig/bash-prompt-xterm` Eigentum von `root` ist.

   1. Fügen Sie der Datei die folgende Zeile hinzu.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Melden Sie sich ab und wieder an, damit der neue Spitzname übernommen und angezeigt wird.

## Ändern des Hostnamens auf anderen Linux-Bereitstellungen
<a name="set-hostname-other-linux"></a>

Die Vorgehensweisen auf dieser Seite sind ausschließlich für die Verwendung mit Amazon Linux gedacht. Weitere Informationen zu anderen Linux-Bereitstellungen finden Sie in der jeweiligen Dokumentation und den folgenden Artikeln:
+ [Wie weise ich einer privaten Amazon-EC2-Instance, auf der RHEL 7 oder Centos 7 ausgeführt wird, einen statischen Hostnamen zu?](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Richten Sie dynamisches DNS auf Ihrer Instanz ein AL2
<a name="dynamic-dns"></a>

Beim Start einer EC2-Instance wird ihr eine öffentliche IP-Adresse und ein öffentlicher Domain Name System (DNS)-Name zugewiesen, mit deren Hilfe die Instance aus dem Internet erreicht werden kann. Diese öffentlichen Namen müssen relativ lang sein, um eindeutig zu bleiben, da sich sehr viele Hosts in der Amazon Web Services-Domain befinden. Ein typischer öffentlicher DNS-Name von Amazon EC2 sieht etwa so aus:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, wobei der Name aus der Amazon Web Services Services-Domain, dem Service (in diesem Fall`compute`) AWS-Region, der und einer Form der öffentlichen IP-Adresse besteht.

Dynamische DNS-Services stellen innerhalb der Domain benutzerdefinierte DNS-Hostnamen zur Verfügung, die einprägsam sind und den Anwendungsfall des Hosts anzeigen. Einige dieser Services sind auch kostenlos. Sie können einen Anbieter für ein dynamisches DNS mit Amazon EC2 verwenden und die Instance so konfigurieren, dass sie die mit einem öffentlichen DNS-Namen verknüpfte IP-Adresse bei jedem Start der Instance aktualisiert. Sie können aus vielen verschiedenen Anbietern auswählen. Die genauen Details zur Auswahl eines Anbieters und der Registrierung eines Namens bei einem Anbieter würden den Rahmen dieses Leitfadens sprengen.<a name="procedure-dynamic-dns"></a>

**Verwenden Sie das dynamische DNS mit Amazon EC2 wie folgt:**

1. Registrieren Sie sich bei einem Serviceanbieter für ein dynamisches DNS und registrieren Sie bei diesem Anbieter einen öffentlichen DNS-Namen. Diese Vorgehensweise verwendet den kostenlosen Service von [noip.com/free](https://www.noip.com/free) als Beispiel.

1. Konfigurieren des Aktualisierungsclient für das dynamische DNS. Sobald Sie über einen Serviceanbieter für ein dynamisches DNS und einen dort registrierten öffentlichen DNS-Namen verfügen, verknüpfen Sie den DNS-Namen mit der IP-Adresse einer Instance. Viele Anbieter (einschließlich [noip.com](https://noip.com)) ermöglichen Ihnen, dies manuell von der Seite Ihres Benutzerkontos auf deren Website aus zu tun, aber viele unterstützen auch Aktualisierungsclients. Wird auf Ihrer EC2-Instance ein Aktualisierungsclient ausgeführt, wird der Datensatz Ihres dynamischen DNS jedes Mal aktualisiert, wenn sich die IP-Adresse ändert, wie nach einem Neustart. In diesem Beispiel wird der noip2-Client installiert, der mit dem von [noip.com](https://noip.com) zur Verfügung gestellten Service zusammenarbeitet.

   1. Aktivieren Sie das EPEL-Repository (Extra Packages for Enterprise Linux), um Zugriff auf den `noip2` Client zu erhalten.
**Anmerkung**  
AL2 Auf Instanzen sind die GPG-Schlüssel und Repository-Informationen für das EPEL-Repository standardmäßig installiert. [Weitere Informationen und den Download der neuesten Version dieses Pakets finden Sie unter https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Installieren Sie das Paket `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Erstellen Sie die Konfigurationsdatei. Geben Sie Ihre Anmeldedaten an, wenn Sie dazu aufgefordert werden, und beantworten Sie die darauffolgenden Fragen, um den Client zu konfigurieren.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Aktivieren Sie den noip-Service.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Starten Sie den Service „noip“.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Dieser Befehl startet den Client, der die von Ihnen erstellte Konfigurationsdatei (`/etc/no-ip2.conf`) liest und die IP-Adresse für den von Ihnen ausgewählten öffentlichen DNS-Namen aktualisiert.

1. Überprüfen Sie, ob der Aktualisierungsclient die richtige IP-Adresse für den dynamischen DNS-Namen angegeben hat. Geben Sie den DNS-Datensätzen einige Minuten Zeit für die Aktualisierung und versuchen Sie dann, mithilfe von SSH eine Verbindung zwischen der Instance und dem anhand dieser Vorgehensweise konfigurierten öffentlichen DNS-Namen herzustellen.

# Konfigurieren Sie Ihre Netzwerkschnittstelle mit ec2-net-utils für AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs kann zusätzliche Skripts enthalten, die von AWS, so genannten ec2-net-utils, installiert wurden. Mit diesen Skripts kann die Konfiguration Ihrer Netzwerkschnittstellen optional automatisiert werden. Diese Skripte sind nur für verfügbar. AL2 

**Anmerkung**  
Für Amazon Linux 2023 generiert das `amazon-ec2-net-utils` Paket schnittstellenspezifische Konfigurationen im `/run/systemd/network` Verzeichnis. Weitere Informationen finden Sie unter [Networking-Service](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) im *Benutzerhandbuch zu Amazon Linux 2023*.

Verwenden Sie den folgenden Befehl, um das Paket zu installieren, AL2 falls es noch nicht installiert ist, oder aktualisieren Sie es, wenn es installiert ist und zusätzliche Updates verfügbar sind:

```
$ yum install ec2-net-utils
```

Die folgenden Komponenten sind Teil von ec2-net-utils:

udev-Regeln (`/etc/udev/rules.d`)  
Identifiziert Netzwerkschnittstellen, wenn sie an eine laufende Instance angefügt, von ihr getrennt oder wieder angefügt werden, und stellt sicher, dass das Hotplug-Skript ausgeführt wird (`53-ec2-network-interfaces.rules`). Ordnet die MAC-Adresse einem Gerätenamen zu (`75-persistent-net-generator.rules`, der `70-persistent-net.rules` generiert).

Hotplug-Skript  
Generiert eine Schnittstellenkonfigurationsdatei, die mit DHCP verwendet werden kann (`/etc/sysconfig/network-scripts/ifcfg-eth`*N*). Generiert zudem eine Routing-Konfigurationsdatei (`/etc/sysconfig/network-scripts/route-eth`*N*).

DHCP-Skript  
Wenn die Netzwerkschnittstelle einen neuen DHCP-Lease erhält, fragt dieses Skript die Instance-Metadaten nach Elastic IP-Adressen ab. Für jede Elastic IP-Adresse fügt es der Datenbank eine Regel für die Routing-Richtlinien hinzu, um sicherzustellen, dass für ausgehenden Datenverkehr die richtige Netzwerkschnittstelle verwendet wird. Sie fügt der Netzwerkschnittstelle darüber hinaus jede private IP-Adresse als sekundäre Adresse hinzu.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Erweitert die Funktionalität des **ifup**-Standardbefehls. Nachdem dieses Skript die Konfigurationsdateien `ifcfg-eth`*N* und `route-eth`*N* neu geschrieben hat, führt es den Befehl **ifup** aus.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Erweitert die Funktionalität des **ifdown**-Standardbefehls. Nachdem dieses Skript sämtliche Regeln für die Netzwerkschnittstelle aus der Datenbank für die Routing-Richtlinien entfernt hat, führt es den Befehl **ifdown** aus.

**ec2ifscan** (`/usr/sbin/`)  
Führt eine Prüfung auf unkonfigurierte Netzwerkschnittstellen durch und konfiguriert sie.  
Dieses Skript ist in der ersten Version von ec2-net-utils nicht verfügbar.

Verwenden Sie den folgenden Befehl, um sämtliche Konfigurationsdateien aufzulisten, die von ec2-net-utils generiert wurden:

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Um die Automatisierung zu deaktivieren, können Sie `EC2SYNC=no` der entsprechenden Datei `ifcfg-eth`*N* hinzufügen. Verwenden Sie z. B. den folgenden Befehl, um die Automatisierung für die Schnittstelle eth1 zu deaktivieren:

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Zum vollständigen Deaktivieren der Automatisierung können Sie das Paket mithilfe des folgenden Befehls entfernen:

```
$ yum remove ec2-net-utils
```

# Vom Benutzer bereitgestellte Kernel
<a name="UserProvidedKernels"></a>

Falls Sie auf Ihren Amazon EC2-Instances einen benutzerdefinierten Kernel benötigen, können Sie mit einem AMI beginnen, das Ihren Anforderungen am ehesten entspricht. Kompilieren Sie den benutzerdefinierten Kernel auf Ihrer Instance und aktualisieren Sie den Bootloader so, dass er auf den neuen Kernel verweist. Dieser Prozess variiert je nach Virtualisierungstyp, der von Ihrem AMI verwendet wird. Weitere Informationen finden Sie unter [Linux-AMI-Virtualisierungstypen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

**Topics**
+ [HVM AMIs (GRUB)](#HVM_instances)
+ [Paravirtuell AMIs (PV-GRUB)](#Paravirtual_instances)

## HVM AMIs (GRUB)
<a name="HVM_instances"></a>

HVM-Instance-Volumes werden wie echte physische Datenträger behandelt. Der Startvorgang ähnelt dem Vorgang eines Bare-Metal-Betriebssystems mit einem partitionierten Datenträger und Bootloader, sodass die Verwendung mit allen derzeit unterstützten Linux-Distributionen möglich ist. Der gebräuchlichste Bootloader ist GRUB oder. GRUB2

Standardmäßig sendet GRUB seine Ausgabe nicht an die Instance-Konsole, da dies zu einer zusätzlichen Startverzögerung führt. Weitere Informationen finden Sie unter [Instance-Konsolenausgabe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshoot-unreachable-instance.html#instance-console-console-output) im *Benutzerhandbuch für Amazon EC2*. Wenn Sie einen benutzerdefinierten Kernel installieren, sollten Sie erwägen, die GRUB-Ausgabe zu aktivieren.

Es ist nicht erforderlich, einen Fallback-Kernel anzugeben. Es empfiehlt sich jedoch die Verwendung eines Fallbacks, wenn Sie einen neuen Kernel testen. In GRUB kann dann ein Fallback auf einen anderen Kernel durchgeführt werden, falls der neue Kernel ausfällt. Bei Vorhandensein eines Fallback-Kernels kann die Instance auch dann gestartet werden, wenn der neue Kernel nicht gefunden werden kann.

Das Legacy-GRUB für Amazon Linux verwendet`/boot/grub/menu.lst`. GRUB2 für AL2 Anwendungen`/etc/default/grub`. Weitere Informationen zum Aktualisieren des Standardkernels im Bootloader finden Sie in der Dokumentation für die Linux-Distribution.

## Paravirtuell AMIs (PV-GRUB)
<a name="Paravirtual_instances"></a>

AMIs *die paravirtuelle (PV) Virtualisierung verwenden, verwenden während des Startvorgangs ein System namens PV-GRUB.* PV-GRUB ist ein Paravirtual-Bootloader, bei dem eine gepatchte Version von GNU GRUB 0.97 ausgeführt wird. Wenn Sie eine Instance starten, startet PV-GRUB den Bootprozess und führt dann das Chain Loading für den Kernel durch, der in der Datei `menu.lst` Ihres Images angegeben ist.

PV-GRUB erkennt standardmäßige `grub.conf`- oder `menu.lst`-Befehle, sodass alle derzeit unterstützten Linux-Distributionen verwendet werden können. Für ältere Distributionen, z. B. Ubuntu 10.04 LTS, Oracle Enterprise Linux oder CentOS 5.x, ist ein spezielles Kernel-Paket vom Typ „ec2“ oder „xen“ erforderlich. Bei neueren Distributionen sind die erforderlichen Treiber im Kernel-Standardpaket enthalten.

Für die meisten modernen AMIs mit Paravirtual wird standardmäßig ein PV-GRUB-AKI verwendet (einschließlich aller Paravirtual-Linux-AMIs, die im Schnellstartmenü des Amazon EC2-Launch Wizard enthalten sind). Sie müssen also keine weiteren Schritte ausführen, um auf Ihrer Instance einen anderen Kernel zu verwenden, vorausgesetzt, der gewünschte Kernel ist mit Ihrer Distribution kompatibel. Der beste Ansatz zur Ausführung eines benutzerdefinierten Kernels auf Ihrer Instance besteht darin, mit einem AMI zu beginnen, das Ihren Anforderungen am ehesten entspricht. Kompilieren Sie den benutzerdefinierten Kernel dann auf Ihrer Instance und ändern Sie die Datei `menu.lst`, um den Startvorgang mit diesem Kernel durchzuführen.

Sie können überprüfen, ob das Kernel-Image für ein AMI ein PV-GRUB-AKI ist. Führen Sie den folgenden Befehl [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) aus (ersetzt Ihre Kernel-Image-ID) und überprüfen Sie, ob das `Name`-Feld mit `pv-grub` beginnt:

```
aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd
```

**Topics**
+ [Einschränkungen von PV-GRUB](#pv-grub-limitations)
+ [Configuring GRUB](#configuringGRUB)
+ [Amazon PV-GRUB-Kernel-Image IDs](#AmazonKernelImageIDs)
+ [Aktualisieren von PV-GRUB](#UpdatingPV-GRUB)

### Einschränkungen von PV-GRUB
<a name="pv-grub-limitations"></a>

Für PV-GRUB gelten die folgenden Einschränkungen:
+ Es ist nicht möglich, die 64-Bit-Version von PV-GRUB zu verwenden, um einen 32-Bit-Kernel zu starten (und umgekehrt).
+ Bei Verwendung eines PV-GRUB-AKI können Sie kein Amazon Ramdisk Image (ARI) angeben.
+ AWS hat getestet und verifiziert, dass PV-GRUB mit den folgenden Dateisystemformaten funktioniert: EXT2,,, JFS EXT3 EXT4, XFS und ReiserFS. Andere Dateisystemformate funktionieren unter Umständen nicht.
+ PV-GRUB kann Kernel starten, die mit den Komprimierungsformaten gzip, bzip2, lzo und xz komprimiert wurden.
+ Cluster unterstützen oder benötigen PV-GRUB AMIs nicht, da sie die vollständige Hardwarevirtualisierung (HVM) verwenden. Während Paravirtual-Instances zum Starten PV-GRUB verwenden, werden HVM-Instance-Volumes wie echte Datenträger behandelt. Der Startvorgang ähnelt dem Startvorgang eines Bare-Metal-Betriebssystems mit einem partitionierten Datenträger und Bootloader. 
+ Die PV-GRUB-Versionen 1.03 und früher weisen keine Unterstützung für die GPT-Partitionierung auf, sondern nur für die MBR-Partitionierung.
+ Wenn Sie planen, einen Logical Volume Manager (LVM) für Volumes Amazon Elastic Block Store (Amazon EBS) zu verwenden, benötigen Sie eine separate Boot-Partition außerhalb des LVM. Anschließend können Sie mit dem LVM logische Volumes erstellen.

### Konfigurieren Sie GRUB für paravirtuell AMIs
<a name="configuringGRUB"></a>

Zum Starten von PV-GRUB muss im Image die GRUB-Datei `menu.lst` enthalten sein. Der am häufigsten verwendete Speicherort für diese Datei ist `/boot/grub/menu.lst`.

Unten ist ein Beispiel für die Konfigurationsdatei `menu.lst` zum Starten eines AMI mit einem PV-GRUB-AKI angegeben. In diesem Beispiel können Sie zwischen zwei Kernel-Einträgen wählen: Amazon Linux 2018.03 (ursprünglicher Kernel für dieses AMI) und Vanilla Linux 4.16.4 (neuere Version des Vanilla Linux-Kernels von [https://www.kernel.org/](https://www.kernel.org/)). Der Vanilla-Eintrag wurde aus dem Originaleintrag für dieses AMI kopiert und die Pfade `kernel` und `initrd` wurden auf die neuen Speicherorte aktualisiert. Mit dem Parameter `default 0` wird für den Bootloader auf den ersten Eintrag verwiesen, der sichtbar ist (in diesem Fall der Vanilla-Eintrag), und mit dem Parameter `fallback 1` wird für den Bootloader auf den nächsten Eintrag verwiesen, falls beim Starten des ersten Eintrags ein Problem auftritt.

```
default 0
fallback 1
timeout 0
hiddenmenu

title Vanilla Linux 4.16.4
root (hd0)
kernel /boot/vmlinuz-4.16.4 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.16.4

title Amazon Linux 2018.03 (4.14.26-46.32.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.14.26-46.32.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.14.26-46.32.amzn1.x86_64.img
```

Es ist nicht erforderlich, in Ihrer Datei `menu.lst` einen Fallback-Kernel anzugeben. Wir empfehlen Ihnen aber die Verwendung eines Fallbacks, wenn Sie einen neuen Kernel testen. In PV-GRUB kann dann ein Fallback auf einen anderen Kernel durchgeführt werden, falls der neue Kernel ausfällt. Bei Vorhandensein eines Fallback-Kernels kann die Instance auch dann gestartet werden, wenn der neue Kernel nicht gefunden werden kann. 

PV-GRUB prüft die folgenden Speicherorte auf das Vorhandensein von `menu.lst` und verwendet das erste Vorkommen der Datei:
+  `(hd0)/boot/grub` 
+  `(hd0,0)/boot/grub` 
+  `(hd0,0)/grub` 
+  `(hd0,1)/boot/grub` 
+  `(hd0,1)/grub` 
+  `(hd0,2)/boot/grub` 
+  `(hd0,2)/grub` 
+  `(hd0,3)/boot/grub` 
+  `(hd0,3)/grub` 

Beachten Sie, dass mit PV-GRUB 1.03 und früher nur einer der ersten beiden Speicherorte der Liste geprüft wird.

### Amazon PV-GRUB-Kernel-Image IDs
<a name="AmazonKernelImageIDs"></a>

PV-GRUB-AKIs sind in allen Amazon EC2-Regionen verfügbar, außer Asien-Pazifik (Osaka). Es gibt sowohl 32-Bit AKIs - als auch 64-Bit-Architekturtypen. Die meisten modernen AMIs Geräte verwenden standardmäßig ein PV-GRUB-AKI.

Wir empfehlen Ihnen, immer die aktuelle Version des PV-GRUB-AKI zu nutzen, da nicht alle Versionen des PV-GRUB-AKI mit allen Instance-Typen kompatibel sind. Verwenden Sie den folgenden Befehl [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html), um eine Liste der AKIs PV-GRUB-Dateien für die aktuelle Region abzurufen:

```
aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz
```

PV-GRUB ist das einzige AKI, das in der Region `ap-southeast-2` verfügbar ist. Stellen Sie sicher, dass für AMIs, die Sie in diese Region kopieren möchten, eine Version von PV-GRUB verwendet wird, die in dieser Region verfügbar ist.

Im Folgenden sind die aktuellen AKI für jede Region aufgeführt. IDs Registrieren Sie sich neu AMIs mit einem hd0-AKI.

**Anmerkung**  
Aus AKIs Gründen der Abwärtskompatibilität bieten wir weiterhin hd00 in Regionen an, in denen sie zuvor verfügbar waren.


**ap-northeast-1, Asia Pacific (Tokyo)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-f975a998  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-7077ab11  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-1, Asia Pacific (Singapore) Region**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-17a40074  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-73a50110  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-2, Asia Pacific (Sydney)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-ba5665d9  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-66506305  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-central-1, Europe (Frankfurt)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-1419e57b  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-931fe3fc  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-west-1, Europe (Ireland)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-1c9fd86f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-dc9ed9af  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**sa-east-1, South America (São Paulo)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-7cd34110  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-912fbcfd  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-east-1, US East (N. Virginia)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-04206613  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-5c21674b  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-gov-west-1, AWS GovCloud (US-West)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-5ee9573f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-9ee55bff  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-1, US West (N. California)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-43cf8123  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-59cc8239  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-2, US West (Oregon)**  

| Image-ID | Name des Images | 
| --- | --- | 
|  aki-7a69931a  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-70cb0e10  |  pv-grub-hd0\$11.05-x86\$164.gz  | 

### Aktualisieren von PV-GRUB
<a name="UpdatingPV-GRUB"></a>

Wir empfehlen Ihnen, immer die aktuelle Version des PV-GRUB-AKI zu nutzen, da nicht alle Versionen des PV-GRUB-AKI mit allen Instance-Typen kompatibel sind. Ältere Versionen von PV-GRUB sind ebenfalls nicht in allen Regionen verfügbar. Beim Kopieren eines AMI, für das eine ältere Version verwendet wird, in eine Region, von der diese Version nicht unterstützt wird, gilt daher Folgendes: Das Starten von Instances, die über dieses AMI gestartet werden, ist erst möglich, wenn Sie das Kernel-Image aktualisieren. Verwenden Sie die folgenden Vorgehensweisen, um die PV-GRUB-Version Ihrer Instance zu überprüfen und ggf. zu aktualisieren.

**So überprüfen Sie Ihre PV-GRUB-Version**

1. Ermitteln Sie die Kernel-ID für Ihre Instance.

   ```
   aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region
   
   {
       "InstanceId": "instance_id", 
       "KernelId": "aki-70cb0e10"
   }
   ```

   Die Kernel-ID für diese Instance lautet `aki-70cb0e10`.

1. Zeigen Sie die Versionsinformationen für diese Kernel-ID an.

   ```
   aws ec2 describe-images --image-ids aki-70cb0e10 --region region
   
   {
       "Images": [
           {
               "VirtualizationType": "paravirtual", 
               "Name": "pv-grub-hd0_1.05-x86_64.gz", 
               ...
               "Description": "PV-GRUB release 1.05, 64-bit"
           }
       ]
   }
   ```

   Dieses Kernel-Image hat die Version PV-GRUB 1.05. Falls Sie nicht die aktuelle PV-GRUB-Version nutzen (wie unter [Amazon PV-GRUB-Kernel-Image IDs](#AmazonKernelImageIDs) gezeigt), sollten Sie das Image mit den unten angegebenen Schritten aktualisieren.

**So aktualisieren Sie Ihre PV-GRUB-Version**

Wenn für Ihre Instance eine ältere Version von PV-GRUB verwendet wird, sollten Sie das Update auf die aktuelle Version durchführen.

1. Ermitteln Sie das aktuelle PV-GRUB-AKI für Ihre Region und Prozessorarchitektur anhand von [Amazon PV-GRUB-Kernel-Image IDs](#AmazonKernelImageIDs).

1. Halten Sie Ihre Instance an. Ihre Instance muss angehalten werden, damit das verwendete Kernel-Image geändert werden kann.

   ```
   aws ec2 stop-instances --instance-ids instance_id --region region
   ```

1. Ändern Sie das Kernel-Image, das für Ihre Instance verwendet wird.

   ```
   aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
   ```

1. Starten Sie Ihre Instance neu.

   ```
   aws ec2 start-instances --instance-ids instance_id --region region 
   ```

# AL2 AMI-Release-Benachrichtigungen
<a name="linux-ami-notifications"></a>

Um benachrichtigt zu werden, wenn neue Amazon AMIs Linux-Versionen veröffentlicht werden, können Sie ein Abonnement über Amazon SNS abschließen.

Informationen zum Abonnieren von Benachrichtigungen für AL2023 finden Sie unter [Empfangen von Benachrichtigungen über neue Updates](https://docs.aws.amazon.com/linux/al2023/ug/receive-update-notification.html) im *Amazon Linux 2023-Benutzerhandbuch*.

**Anmerkung**  
Der Standard-Support für AL1 endete am 31. Dezember 2020. Die Phase des AL1 Wartungssupports endete am 31. Dezember 2023. Weitere Informationen zur AL1 EOL und zum Wartungssupport finden Sie im Blogbeitrag [Update on Amazon Linux AMI end-of-life](https://aws.amazon.com/blogs/aws/update-on-amazon-linux-ami-end-of-life/).

**So abonnieren Sie Amazon Linux-Benachrichtigungen**

1. Öffnen Sie die Amazon SNS SNS-Konsole unter [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home).

1. Ändern Sie, falls erforderlich, die Region in der Navigationsleiste zu **US East (N. Virginia)**. Sie müssen die Region auswählen, in der die SNS-Benachrichtigung, die Sie abonnieren, erstellt wurde.

1. Wählen Sie im Navigationsbereich **Subscriptions** und **Create subscription** aus.

1. Führen Sie im Dialogfeld **Create subscription** die folgenden Schritte aus:

   1. [AL2]Kopieren Sie für **Topic ARN** den folgenden Amazon-Ressourcennamen (ARN): **arn:aws:sns:us-east-1:137112412989:amazon-linux-2-ami-updates**.

   1. [Amazon Linux]Kopieren Sie für **Topic ARN** den folgenden Amazon-Ressourcennamen (ARN): **arn:aws:sns:us-east-1:137112412989:amazon-linux-ami-updates**.

   1. Wählen Sie unter **Protocol (Protokoll)** die Option **Email (E-Mail)** aus.

   1. Geben Sie unter **Endpoint (Endpunkt)** eine E-Mail-Adresse ein, um die Benachrichtigungen zu empfangen.

   1. Wählen Sie **Create subscription**.

1. Sie erhalten eine Bestätigungs-E-Mail mit dem Betreff „AWS Benachrichtigung — Abonnementbestätigung“. Öffnen Sie die E-Mail und wählen Sie **Confirm subscription** aus, um Ihr Abonnement abzuschließen.

Wann immer diese veröffentlicht AMIs werden, senden wir Benachrichtigungen an die Abonnenten des entsprechenden Themas. Wenn Sie diese Benachrichtigungen nicht mehr erhalten möchten, führen Sie die folgenden Schritte aus, um sich abzumelden.

**So melden Sie sich von den Amazon Linux-Benachrichtigungen ab**

1. Öffnen Sie die Amazon SNS SNS-Konsole unter [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home).

1. Ändern Sie, falls erforderlich, die Region in der Navigationsleiste zu **US East (N. Virginia)**. Sie müssen die Region verwenden, in der die SNS-Benachrichtigung erstellt wurde.

1. Wählen Sie im Navigationsbereich **Subscriptions (Abonnements)** und dann das Abonnement aus. Klicken Sie dann auf **Actions (Aktionen)** und **Delete subscriptions (Abonnements löschen)**.

1. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie **Delete (Löschen)**.

**Amazon Linux-AMI SNS-Nachrichtenformat**  
Das Schema für die SNS-Nachricht lautet wie folgt. 

```
{
    "description": "Validates output from AMI Release SNS message",
    "type": "object",
    "properties": {
        "v1": {
            "type": "object",
            "properties": {
                "ReleaseVersion": {
                    "description": "Major release (ex. 2018.03)",
                    "type": "string"
                },
                "ImageVersion": {
                    "description": "Full release (ex. 2018.03.0.20180412)",
                    "type": "string"
                },
                "ReleaseNotes": {
                    "description": "Human-readable string with extra information",
                    "type": "string"
                },
                "Regions": {
                    "type": "object",
                    "description": "Each key will be a region name (ex. us-east-1)",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "Name": {
                                    "description": "AMI Name (ex. amzn-ami-hvm-2018.03.0.20180412-x86_64-gp2)",
                                    "type": "string"
                                },
                                "ImageId": {
                                    "description": "AMI Name (ex.ami-467ca739)",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "Name",
                                "ImageId"
                            ]
                        }
                    }
                }
            },
            "required": [
                "ReleaseVersion",
                "ImageVersion",
                "ReleaseNotes",
                "Regions"
            ]
        }
    },
    "required": [
        "v1"
    ]
}
```

# Konfigurieren Sie die MATE-Desktop-Verbindung AL2
<a name="amazon-linux-ami-mate"></a>

Die [MATE-Desktop-Umgebung](https://mate-desktop.org/) ist vorinstalliert und AMIs mit der folgenden Beschreibung vorkonfiguriert:

"`.NET Core x.x, Mono x.xx, PowerShell x.x, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS).`"

Die Umgebung bietet eine intuitive grafische Benutzeroberfläche für die Verwaltung von AL2 -Instances mit minimaler Verwendung der Befehlszeile. Die Schnittstelle verwendet grafische Darstellungen, wie z. B. Symbole, Fenster, Symbolleisten, Ordner, Hintergrundbilder und Desktop-Widgets. Integrierte, GUI-basierte Tools sind zur Ausführung allgemeiner Aufgaben verfügbar. Es gibt beispielsweise Tools zum Hinzufügen und Entfernen von Software, zum Anwenden von Updates, zum Organisieren von Dateien, zum Starten von Programmen und zum Überwachen des Systemstatus.

**Wichtig**  
`xrdp` ist die im AMI gebündelte Remote-Desktop-Software. Standardmäßig verwendet `xrdp` ein selbstsigniertes TLS-Zertifikat, um Remotedesktopsitzungen zu verschlüsseln. AWS Weder die Entwickler noch die `xrdp` Entwickler empfehlen, selbstsignierte Zertifikate in der Produktion zu verwenden. Beziehen Sie stattdessen ein Zertifikat von einer entsprechenden Zertifizierungsstelle (CA) und installieren Sie es auf Ihren Instances. Weitere Informationen über die TLS-Konfiguration finden Sie in [TLS-Sicherheitsebene](https://github.com/neutrinolabs/xrdp/wiki/TLS-security-layer) auf der `xrdp`-Wiki.

**Anmerkung**  
Wenn Sie lieber einen Virtual Network Computing (VNC) -Service anstelle von xrdp verwenden möchten, lesen Sie den Artikel [How do I install a GUI on my Amazon EC2 instance running AL2](https://repost.aws/knowledge-center/ec2-linux-2-install-gui) AWS Knowledge Center.

## Voraussetzung
<a name="al2-mate-configure-prerequisite"></a>

Um die in diesem Thema aufgeführten Befehle auszuführen, müssen Sie AWS Command Line Interface (AWS CLI) oder AWS Tools for Windows PowerShell installieren und Ihr AWS Profil konfigurieren.

**Optionen**

1. Installation des AWS CLI — Weitere Informationen finden Sie unter [Installation AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) und [Grundlagen der Konfiguration](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) im *AWS Command Line Interface Benutzerhandbuch*.

1. Installieren Sie die Tools für Windows PowerShell — Weitere Informationen finden Sie im *AWS -Tools für PowerShell Benutzerhandbuch* unter [Installation von AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) und [Gemeinsam genutzte Anmeldeinformationen](https://docs.aws.amazon.com/powershell/latest/userguide/shared-credentials-in-aws-powershell.html).

**Tipp**  
Als Alternative zur vollständigen Installation von können Sie eine browserbasierte AWS CLI, vorauthentifizierte Shell verwenden [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), die direkt von der aus gestartet wird. AWS-Managementkonsole Vergewissern Sie sich AWS-Regionen, dass der [Support](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html) in der Region, in der Sie arbeiten, verfügbar ist.

## Konfigurieren Sie die RDP-Verbindung
<a name="al2-mate-configure-connection"></a>

Befolgen Sie diese Schritte, um eine Remote Desktop Protocol (RDP) -Verbindung von Ihrem lokalen Computer zu einer AL2 -Instance einzurichten, auf der die MATE-Desktop-Umgebung ausgeführt wird.

1. Um die ID des AMI abzurufen AL2 , für das MATE im AMI-Namen enthalten ist, können Sie den Befehl [describe-images](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html) in Ihrem lokalen Befehlszeilentool verwenden. Wenn Sie die Befehlszeilentools nicht installiert haben, können Sie die folgende Abfrage direkt von einer AWS CloudShell Sitzung aus ausführen. Informationen darüber, wie Sie eine Shell-Sitzung von aus starten CloudShell, finden Sie unter [Erste Schritte mit AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html). In der Amazon-EC2-Konsole finden Sie das Mate-enthaltene AMI, indem Sie eine Instance starten und dann `MATE` in die AMI-Suchleiste eingeben. Der AL2 Quick Start mit vorinstalliertem MATE wird in den Suchergebnissen angezeigt.

   ```
   aws ec2 describe-images --filters "Name=name,Values=amzn2*MATE*" --query "Images[*].[ImageId,Name,Description]"
   [
       [
           "ami-0123example0abc12",
           "amzn2-x86_64-MATEDE_DOTNET-2020.12.04",
           ".NET Core 5.0, Mono 6.12, PowerShell 7.1, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS)."
       ],
       [
           "ami-0456example0def34",
           "amzn2-x86_64-MATEDE_DOTNET-2020.04.14",
           "Amazon Linux 2 with .Net Core, PowerShell, Mono, and MATE Desktop Environment"
       ]
   ]
   ```

   Wählen Sie das AMI, das für Ihre Verwendung geeignet ist.

1. Starten Sie eine EC2-Instance mit dem AMI, das Sie im vorherigen Schritt gefunden haben. Konfigurieren Sie die Sicherheitsgruppe so, dass eingehender TCP-Datenverkehr an Port 3389 zugelassen wird. Weitere Informationen über das Konfigurieren von Sicherheitsgruppen finden Sie unter [Sicherheitsgruppen für Ihre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html). Mit dieser Konfiguration können Sie einen RDP-Client verwenden, um eine Verbindung mit der Instance herzustellen.

1. Stellen Sie über [SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html) eine Verbindung mit der Instance her.

1. Aktualisieren Sie die Software und den Kernel auf der Instance.

   ```
   [ec2-user ~]$ sudo yum update
   ```

   Starten Sie nach Abschluss der Aktualisierung die Instance neu, damit die neuesten Pakete und Bibliotheken aus dem Update genutzt werden. Kernel-Updates werden erst nach einem Neustart des Systems geladen.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Stellen Sie eine neue Verbindung zur Instance her und führen Sie den folgenden Befehl auf Ihrer Linux-Instance aus, um das Passwort für `ec2-user` festzulegen.

   ```
   [ec2-user ~]$ sudo passwd ec2-user
   ```

1. Installieren Sie das Zertifikat und den Schlüssel.

   Wenn Sie bereits über ein Zertifikat und einen Schlüssel verfügen, kopieren Sie diese in das Verzeichnis `/etc/xrdp/` wie folgt:
   + Zertifikat – `/etc/xrdp/cert.pem`
   + Schlüssel: `/etc/xrdp/key.pem`

   Wenn Sie kein Zertifikat und keinen Schlüssel haben, verwenden Sie den folgenden Befehl, um sie im `/etc/xrdp`-Verzeichnis zu generieren.

   ```
   $ sudo openssl req -x509 -sha384 -newkey rsa:3072 -nodes -keyout /etc/xrdp/key.pem -out /etc/xrdp/cert.pem -days 365
   ```
**Anmerkung**  
Dieser Befehl generiert ein Zertifikat, das 365 Tage gültig ist.

1. Öffnen Sie einen RDP-Client auf dem Computer, von dem aus Sie eine Verbindung zur Instance herstellen werden (z. B. Remote-Desktop-Verbindung auf einem Computer mit Microsoft Windows). Geben Sie `ec2-user` als Benutzernamen ein und geben Sie das Passwort ein, das Sie im vorherigen Schritt festgelegt haben.

**Um `xrdp` auf Ihrer Amazon EC2-Instance zu deaktivieren**  
Sie können `xrdp` jederzeit ausschalten, indem Sie einen der folgenden Befehle auf Ihrer Linux-Instance ausführen. Die folgenden Befehle wirken sich nicht auf Ihre Fähigkeit aus, MATE mit einem X11-Server zu verwenden.

```
[ec2-user ~]$ sudo systemctl disable xrdp
```

```
[ec2-user ~]$ sudo systemctl stop xrdp
```

**So aktivieren Sie `xrdp` auf Ihrer Amazon EC2-Instance**  
Führen Sie zur erneuten Aktivierung einen der folgenden Befehle auf Ihrer AL2 Linux-Instance aus, `xrdp` sodass Sie eine Verbindung zu Ihrer Instance herstellen können, auf der die MATE-Desktop-Umgebung ausgeführt wird.

```
[ec2-user ~]$ sudo systemctl enable xrdp
```

```
[ec2-user ~]$ sudo systemctl start xrdp
```

# AL2 Anleitungen
<a name="al2-tutorials"></a>

 Die folgenden Tutorials zeigen Ihnen, wie Sie allgemeine Aufgaben mit laufenden Amazon EC2 EC2-Instances ausführen AL2. Video-Tutorials finden Sie unter [AWS Lehrvideos und](https://www.aws.training/) Übungen. 

 AL2023 Anweisungen finden Sie unter [Tutorials](https://docs.aws.amazon.com/linux/al2023/ug/tutorials-al2023.html) im *Amazon Linux 2023 User Guide*.

**Topics**
+ [Tutorial: Installieren Sie einen LAMP-Server auf AL2](ec2-lamp-amazon-linux-2.md)
+ [Tutorial: Konfiguration SSL/TLS am AL2](SSL-on-amazon-linux-2.md)
+ [Tutorial: Hosten Sie einen WordPress Blog auf AL2](hosting-wordpress.md)

# Tutorial: Installieren Sie einen LAMP-Server auf AL2
<a name="ec2-lamp-amazon-linux-2"></a>

Die folgenden Verfahren helfen Ihnen bei der Installation eines Apache-Webservers mit PHP- und [MariaDB-Unterstützung](https://mariadb.org/about/) (ein von der Community entwickelter Fork von MySQL) auf Ihrer AL2 Instance (manchmal auch LAMP-Webserver oder LAMP-Stack genannt). Sie können diesen Server dazu verwenden, eine statische Website zu hosten oder eine dynamische PHP-Anwendung bereitzustellen, die Informationen aus einer Datenbank liest und in diese schreibt.

**Wichtig**  
Dieses Tutorial funktioniert nicht, wenn Sie versuchen, einen LAMP-Webserver auf einer anderen Verteilung, wie z. B. Ubuntu oder Red Hat Enterprise Linux, einzurichten. Weitere Informationen finden Sie AL2023 unter [Installieren eines](https://docs.aws.amazon.com//linux/al2023/ug/ec2-lamp-amazon-linux-2023.html) LAMP-Servers auf. AL2023 Informationen zu Ubuntu finden Sie in der folgenden Dokumentation der Ubuntu-Community: [ApacheMySQLPHP](https://help.ubuntu.com/community/ApacheMySQLPHP). Andere Verteilungen finden Sie in der jeweiligen Dokumentation.

**Option: Abschließen dieses Tutorials mit Automation**  
Um dieses Tutorial mit AWS Systems Manager Automatisierung anstelle der folgenden Aufgaben abzuschließen, führen Sie das [AWS Dokument Docs-Install ALAMPServer — AL2](https://console.aws.amazon.com/systems-manager/automation/execute/AWSDocs-InstallALAMPServer-AL2) Automation aus.

**Topics**
+ [Schritt 1: Vorbereiten des LAMP-Servers](#prepare-lamp-server)
+ [Schritt 2: Testen Ihres Lamp-Servers](#test-lamp-server)
+ [Schritt 3: Sichern des Datenbankservers](#secure-mariadb-lamp-server)
+ [Schritt 4: (Optional) Installieren phpMyAdmin](#install-phpmyadmin-lamp-server)
+ [Fehlerbehebung](#lamp-troubleshooting)
+ [Verwandte Themen](#lamp-more-info)

## Schritt 1: Vorbereiten des LAMP-Servers
<a name="prepare-lamp-server"></a>

**Voraussetzungen**
+ In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine neue Instanz mit einem öffentlichen DNS-Namen gestartet haben AL2, der über das Internet erreichbar ist. Weitere Informationen finden Sie unter [Launch an Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) im *Amazon EC2 EC2-Benutzerhandbuch*. Außerdem müssen Sie Ihre Sicherheitsgruppe so konfiguriert haben, dass Verbindungen über SSH (Port 22), HTTP (Port 80) und HTTPS (Port 443) erlaubt sind. Weitere Informationen zu diesen Voraussetzungen finden Sie unter [Sicherheitsgruppenregeln](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) im *Amazon EC2 EC2-Benutzerhandbuch*.
+ Mit dem folgenden Verfahren wird die neueste PHP-Version installiert AL2, die derzeit `php8.2` verfügbar ist. Falls Sie andere PHP-Anwendungen als die in diesem Tutorial beschriebenen verwenden möchten, prüfen Sie ihre Kompatibilität mit `php8.2`.<a name="install_apache-2"></a>

**Vorbereiten des LAMP-Servers**

1. [Verbinden Sie sich mit der Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html).

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus. Dieser Vorgang kann einige Minuten dauern. Es ist jedoch wichtig, sicherzustellen, dass Sie über die aktuellen Sicherheitsaktualisierungen und Fehlerbehebungen verfügen.

   Mit der Option `-y` werden die Updates installiert, ohne um Bestätigung zu bitten. Wenn Sie die Aktualisierungen vor der Installation überprüfen möchten, können Sie diese Option auslassen.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Installieren Sie die Amazon-Linux-Extras-Repositorys vom Typ `mariadb10.5`, um die aktuelle Version des MariaDB-Pakets zu erhalten.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install mariadb10.5
   ```

   Wenn die Fehlermeldung `sudo: amazon-linux-extras: command not found` angezeigt wird, wurde Ihre Instance nicht mit einem Amazon Linux 2-AMI; gestartet (möglicherweise verwenden Sie stattdessen das Amazon Linux AMI). Sie können Ihre Version von Amazon Linux mit dem folgenden Befehl anzeigen.

   ```
   cat /etc/system-release
   ```

1. Installieren Sie die `php8.2` Amazon Linux Extras-Repositorys, um die neueste Version des PHP Pakets für AL2 zu erhalten.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install php8.2
   ```

1. Nachdem Ihre Instance nur auf dem neuesten Stand ist, können Sie die Softwarepakete für Apache-Webserver, MariaDB und PHP installieren. Verwenden Sie den Befehl „yum install“, um mehrere Softwarepakete und alle zugehörigen Abhängigkeiten gleichzeitig zu installieren.

   ```
   [ec2-user ~]$ sudo yum install -y httpd
   ```

   Sie können die aktuellen Versionen dieser Pakete mit dem folgenden Befehl anzeigen:

   ```
   yum info package_name
   ```

1. Starten Sie den Apache-Webserver.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1.  Konfigurieren Sie den Apache-Webserver mit dem Befehl **systemctl** so, dass er bei jedem Systemstart startet. 

   ```
   [ec2-user ~]$ sudo systemctl enable httpd
   ```

   Mit folgendem Befehl können Sie prüfen, ob der Befehl **httpd** ausgeführt wird:

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

1. Fügen Sie eine Sicherheitsregel hinzu, um eingehende HTTP-Verbindungen (Port 80) auf Ihre Instance zuzulassen, wenn Sie dies nicht bereits getan haben. Standardmäßig wurde während der **Initialisierung eine *N* Launch-Wizard-Sicherheitsgruppe** für Ihre Instance eingerichtet. Diese Gruppe enthält eine einzige Regel, um SSH-Verbindungen zuzulassen. 

   1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Wählen Sie **Instances** und wählen Sie Ihre Instance aus.

   1. Zeigen Sie auf der Registerkarte **Sicherheit** die Regeln für eingehenden Datenverkehr an. Sie sollten die folgende Regel sehen:

      ```
      Port range   Protocol     Source
      22           tcp          0.0.0.0/0
      ```
**Warnung**  
Durch die Verwendung `0.0.0.0/0` können alle IPv4 Adressen über SSH auf Ihre Instance zugreifen. Dies ist zwar für kurze Zeit in einer Testumgebung akzeptabel, aber für Produktionsumgebungen sehr unsicher. Für die Produktion wird nur eine bestimmte IP-Adresse bzw. ein bestimmter Adressbereich für den Zugriff auf Ihre Instance autorisiert.

   1. Wählen Sie den Link für die Sicherheitsgruppe aus. [Fügen Sie mithilfe der Verfahren unter Regeln zu einer Sicherheitsgruppe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule) hinzufügen eine neue Sicherheitsregel für eingehenden Datenverkehr mit den folgenden Werten hinzu:
      + **Typ**: HTTP
      + **Protocol (Protokoll)**: TCP
      + **Portbereich**: 80
      + **Quelle**: Benutzerdefiniert

1. Testen Sie Ihren Webserver. Geben Sie in einen Web-Browser die öffentliche DNS-Adresse (oder die öffentliche IP-Adresse) Ihrer Instance ein. Wenn keine Inhalte in `/var/www/html` vorhanden sind, sollte die Testseite von Apache angezeigt werden. Sie können das öffentliche DNS für Ihre Instance mithilfe der Amazon EC2-Konsole abrufen (in der Spalte **Public DNS**; sollte diese Spalte verborgen sein, klicken Sie auf das Symbol **Show/Hide Columns (Spalten ein-/ausblenden)** (das getriebeförmige Symbol) und wählen Sie **Public DNS (Öffentliches DNS)** aus).

   Stellen Sie sicher, dass die Sicherheitsgruppe für die Instance eine Regel enthält, die HTTP-Datenverkehr auf Port 80 zulässt. Weitere Informationen finden [Sie unter Regeln zu einer Sicherheitsgruppe hinzufügen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).
**Wichtig**  
Wenn Sie nicht Amazon Linux verwenden, müssen Sie möglicherweise auch die Firewall auf Ihrer Instance konfigurieren, um diese Verbindungen zu erlauben. Weitere Informationen zum Konfigurieren der Firewall finden Sie in der Dokumentation für Ihre spezifische Verteilung.  
![\[Der Test des Servers zeigt die Apache-Testseite.\]](http://docs.aws.amazon.com/de_de/linux/al2/ug/images/apache_test_page_al2_2.4.png)

Der Apache-Befehl **httpd** gilt für Dateien, die in einem Verzeichnis gespeichert sind, das als Apache-Dokumenten-Stammverzeichnis bezeichnet wird. Das Amazon Linux-Apache-Dokumenten-Stammverzeichnis ist `/var/www/html`, das standardmäßig Eigentum des Stammverzeichnisses ist.

Damit das `ec2-user`-Konto Dateien in diesem Verzeichnis bearbeiten kann, müssen Sie die Eigentümerschaft und die Berechtigungen des Verzeichnisses ändern. Es gibt viele Möglichkeiten, um diese Aufgabe zu erfüllen. In diesem Tutorial fügen Sie `ec2-user` zur `apache`-Gruppe hinzu, geben der `apache`-Gruppe Eigentümerschaft über das Verzeichnis `/var/www` und weisen der Gruppe Schreibberechtigungen zu.<a name="setting-file-permissions-2"></a>

**So richten Sie Dateiberechtigungen ein**

1. Fügen Sie Ihren Benutzer (in diesem Fall `ec2-user`) zu der `apache`-Gruppe hinzu.

   ```
   [ec2-user ~]$ sudo usermod -a -G apache ec2-user
   ```

1. Melden Sie sich ab und anschließend wieder an, um die neue Gruppe auszuwählen, und verifizieren Sie dann Ihre Mitgliedschaft.

   1. Melden Sie sich ab (Sie können den Befehl **exit** verwenden oder das Terminal-Fenster schließen):

      ```
      [ec2-user ~]$ exit
      ```

   1. Ihre Mitgliedschaft in der `apache`-Gruppe zu verifizieren, stellen Sie erneut die Verbindung zu Ihrer Instance her und führen Sie anschließend den folgenden Befehl aus:

      ```
      [ec2-user ~]$ groups
      ec2-user adm wheel apache systemd-journal
      ```

1. Übertragen Sie die Eigentümerschaft der Datei `/var/www` und ihrer Inhalte auf die `apache`-Gruppe.

   ```
   [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
   ```

1. Um Schreibberechtigungen für die Gruppe hinzuzufügen und die Gruppen-ID für zukünftige Unterverzeichnisse einzurichten, ändern Sie die Verzeichnisberechtigungen von `/var/www` und deren Unterverzeichnisse.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Um Schreibberechtigungen für die Gruppe hinzuzufügen, ändern Sie die Dateiberechtigungen von `/var/www` und deren Unterverzeichnisse rekursiv.

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Jetzt kann `ec2-user` (und jedes zukünftige Mitglied der `apache`-Gruppe) im Dokumenten-Stammverzeichnis von Apache Dateien hinzufügen, löschen und bearbeiten. Auf diese Weise können Sie Inhalte hinzufügen, beispielsweise eine statische Website oder eine PHP-Anwendung.

**So sichern Sie Ihren Webserver (optional)**  
Ein Webserver, auf dem HTTP ausgeführt wird, bietet keine Transportsicherheit für die gesendeten oder empfangenen Daten. Wenn Sie über einen Webbrowser eine Verbindung zu einem HTTP-Server herstellen, sind URLs die von Ihnen besuchten Daten, der Inhalt der Webseiten, die Sie erhalten, und die Inhalte (einschließlich Kennwörter) aller HTML-Formulare, die Sie einreichen, für Lauscher überall im Netzwerkpfad sichtbar. Die beste Methode, Ihren Webserver abzusichern, besteht darin, Unterstützung für HTTPS (HTTP Secure) zu installieren, wodurch Ihre Daten mit der SSL/TLS-Verschlüsselung geschützt werden.

Informationen zur Aktivierung von HTTPS auf Ihrem Server finden Sie unter [Tutorial: Konfiguration SSL/TLS am AL2](SSL-on-amazon-linux-2.md).

## Schritt 2: Testen Ihres Lamp-Servers
<a name="test-lamp-server"></a>

Wenn Ihr Server installiert ist und läuft und Ihre Dateiberechtigungen korrekt eingestellt sind, müsste für Ihr `ec2-user`-Konto die Erstellung einer PHP-Datei im Verzeichnis `/var/www/html` möglich sein, auf die über das Internet zugegriffen werden kann.

**So testen Sie Ihren LAMP-Server**

1. Erstellen Sie eine PHP-Datei im Dokumenten-Stammverzeichnis von Apache.

   ```
   [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
   ```

   Wenn beim Ausführen dieses Befehls der Fehler „Permission denied“ angezeigt wird, melden Sie sich ab und anschließend wieder an, damit die richtigen Gruppenberechtigungen übernommen werden, die Sie in konfiguriert habe [So richten Sie Dateiberechtigungen ein](#setting-file-permissions-2).

1. Geben Sie in einem Webbrowser die URL der Datei ein, die Sie gerade erstellt haben. Diese URL ist die öffentliche DNS-Adresse Ihrer Instance, gefolgt von einem Schrägstrich und dem Dateinamen. Beispiel:

   ```
   http://my.public.dns.amazonaws.com/phpinfo.php
   ```

   Die PHP-Informationsseite wird angezeigt:  
![\[Beim Test des LAMP-Servers wird die PHP-Informationsseite angezeigt.\]](http://docs.aws.amazon.com/de_de/linux/al2/ug/images/phpinfo7.2.10.png)

   Wenn diese Seite nicht angezeigt wird, überprüfen Sie, ob die Datei `/var/www/html/phpinfo.php` im vorherigen Schritt ordnungsgemäß angelegt wurde. Mit dem folgenden Befehl können Sie auch überprüfen, ob alle erforderlichen Pakete installiert wurden.

   ```
   [ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd
   ```

   Wenn eines der erforderlichen Pakete in Ihrem Ergebnis nicht aufgelistet ist, installieren Sie es mit dem Befehl **sudo yum install *package***. Überprüfen Sie außerdem in der Ausgabe des Befehls **amazon-linux-extras**, ob die `php7.2`- und `lamp-mariadb10.2-php7.2`-Extras aktiviert sind.

1. Löschen Sie die Datei `phpinfo.php`. Obwohl sie nützliche Informationen enthalten könnte, sollte sie aus Sicherheitsgründen nicht über das Internet übertragen werden.

   ```
   [ec2-user ~]$ rm /var/www/html/phpinfo.php
   ```

Sie sollten nun über einen voll funktionsfähigen LAMP-Webserver verfügen. Wenn Sie zum Dokumenten-Stammverzeichnis von Apache unter `/var/www/html` Inhalte hinzufügen, können Sie diese unter der öffentlichen DNS-Adresse für Ihre Instance anzeigen. 

## Schritt 3: Sichern des Datenbankservers
<a name="secure-mariadb-lamp-server"></a>

Die Standardinstallation des MariaDB-Servers verfügt über mehrere Funktionen, die hervorragend zum Testen und für die Entwicklung geeignet sind, aber bei Produktionsservern sollten Sie deaktiviert oder entfernt werden. Mit dem Befehl **mysql\$1secure\$1installation** rufen Sie eine Anleitung dazu auf, wie Sie ein Stammpasswort einrichten und die unsicheren Funktionen aus Ihrer Installation entfernen. Auch wenn Sie nicht vorhaben, den MariaDB-Server zu verwenden, empfehlen wir Ihnen die Durchführung dieses Verfahrens.<a name="securing-maria-db"></a>

**Sichern des MariaDB-Servers**

1. Starten Sie den MariaDB-Server.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Führen Sie **mysql\$1secure\$1installation**.

   ```
   [ec2-user ~]$ sudo mysql_secure_installation
   ```

   1. Geben Sie das Passwort für das Stammkonto ein, wenn Sie dazu aufgefordert werden.

      1. Geben Sie das aktuelle Stammpasswort ein. Standardmäßig ist für das Stammkonto kein Passwort eingerichtet. Drücken Sie die Eingabetaste.

      1. Drücken Sie **Y**, um ein Passwort einzurichten, und geben Sie ein sicheres Passwort zweimal ein. Weitere Hinweise zur Erstellung eines sicheren Passworts finden Sie unter [https://identitysafe.norton.com/password-generator/](https://identitysafe.norton.com/password-generator/). Bewahren Sie dieses Passwort an einem sicheren Ort auf.

         Die Einrichtung eines Stammpassworts für MariaDB ist nur die grundlegendste Maßnahme, um Ihre Datenbank abzusichern. Wenn Sie eine datenbankgestützte Anwendung aufbauen oder installieren, legen Sie für diese Anwendung normalerweise einen Datenbank-Servicebenutzer an und nutzen das Stammkonto ausschließlich zur Datenbankverwaltung. 

   1. Geben Sie **Y** ein, um die anonymen Benutzerkonten zu entfernen.

   1. Geben Sie **Y** ein, um die Root-Anmeldung per Remote-Zugriff zu deaktivieren.

   1. Geben Sie **Y** ein, um die Testdatenbank zu entfernen.

   1. Geben Sie **Y** ein, um die Tabellen mit den Berechtigungen neu zu laden. Speichern Sie anschließend Ihre Änderungen.

1. (Optional) Wenn Sie nicht vorhaben, den MariaDB-Server weiter zu verwenden, stoppen Sie ihn. Sie können ihn erneut starten, wenn Sie ihn wieder brauchen.

   ```
   [ec2-user ~]$ sudo systemctl stop mariadb
   ```

1. (Optional) Wenn Sie wollen, dass der MariaDB-Server bei jedem Systemstart gestartet wird, geben Sie den folgenden Befehl ein.

   ```
   [ec2-user ~]$ sudo systemctl enable mariadb
   ```

## Schritt 4: (Optional) Installieren phpMyAdmin
<a name="install-phpmyadmin-lamp-server"></a>

[phpMyAdmin](https://www.phpmyadmin.net/)ist ein webbasiertes Datenbankverwaltungstool, mit dem Sie die MySQL-Datenbanken auf Ihrer EC2-Instance anzeigen und bearbeiten können. Führen Sie die unten genannten Schritte durch, um `phpMyAdmin` auf Ihrer Amazon Linux-Instance zu installieren und zu konfigurieren.

**Wichtig**  
Wir empfehlen nicht, es für `phpMyAdmin` den Zugriff auf einen LAMP-Server zu verwenden, es sei denn, Sie haben es SSL/TLS in Apache aktiviert. Andernfalls werden Ihr Datenbankadministratorkennwort und andere Daten unsicher über das Internet übertragen. Sicherheitsempfehlungen der Entwickler finden Sie unter [Sichern Ihrer phpMyAdmin Installation](https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation). Allgemeine Informationen zur Sicherung eines Webservers auf einer EC2-Instance finden Sie unter [Tutorial: Konfiguration SSL/TLS am AL2](SSL-on-amazon-linux-2.md).

**Um zu installieren phpMyAdmin**

1. Installieren Sie die erforderlichen Abhängigkeiten.

   ```
   [ec2-user ~]$ sudo yum install php-mbstring php-xml -y
   ```

1. Starten Sie Apache erneut.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Starten Sie `php-fpm` neu.

   ```
   [ec2-user ~]$ sudo systemctl restart php-fpm
   ```

1. Navigieren Sie zum Stammverzeichnis von Apache unter `/var/www/html`.

   ```
   [ec2-user ~]$ cd /var/www/html
   ```

1. Wählen Sie unter [https://www.phpmyadmin.net/downloads](https://www.phpmyadmin.net/downloads) ein Quellpaket für die neueste phpMyAdmin Version aus. Um die Datei direkt in Ihre Instance herunterzuladen, kopieren Sie den Link in einen **wget**-Befehl wie im folgenden Beispiel:

   ```
   [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
   ```

1. Erstellen Sie mit dem folgenden Befehl einen `phpMyAdmin`-Ordner und extrahieren Sie das Paket in diesen.

   ```
   [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
   ```

1. Löschen Sie den *phpMyAdmin-latest-all-languages.tar.gz* Tarball.

   ```
   [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
   ```

1.  (Optional) Wenn der MySQL-Server nicht ausgeführt wird, starten Sie ihn jetzt.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Geben Sie in einem Webbrowser die URL Ihrer phpMyAdmin Installation ein. Diese URL ist die öffentliche DNS-Adresse (oder die öffentliche IP-Adresse) Ihrer Instance gefolgt von einem Schrägstrich und dem Namen wie im folgenden Beispiel: Beispiel:

   ```
   http://my.public.dns.amazonaws.com/phpMyAdmin
   ```

   Sie sollten die phpMyAdmin Anmeldeseite sehen:  
![\[Das Ergebnis der Eingabe der URL Ihrer phpMyAdmin Installation ist der phpMyAdmin Anmeldebildschirm.\]](http://docs.aws.amazon.com/de_de/linux/al2/ug/images/phpmyadmin_login.png)

1. Melden Sie sich mit dem `root` Benutzernamen und dem MySQL-Root-Passwort, das Sie zuvor erstellt haben, bei Ihrer phpMyAdmin Installation an.

   Ihre Installation muss vor der Inbetriebnahme noch konfiguriert werden. Wir schlagen vor, dass Sie zunächst die Konfigurationsdatei wie folgt manuell erstellen:

   1. Um mit einer minimalen Konfigurationsdatei zu beginnen, erstellen Sie mit Ihrem bevorzugten Texteditor eine neue Datei und kopieren Sie dann den Inhalt von `config.sample.inc.php` hinein.

   1. Speichern Sie die Datei `config.inc.php` in dem phpMyAdmin Verzeichnis, das enthält`index.php`.

   1. Weitere Einstellungen finden Sie in den Anweisungen nach der Dateierstellung [im Abschnitt Verwenden des Setup-Skripts](https://docs.phpmyadmin.net/en/latest/setup.html#using-the-setup-script) der phpMyAdmin Installationsanweisungen.

    Informationen zur Verwendung phpMyAdmin finden Sie im [phpMyAdmin Benutzerhandbuch](http://docs.phpmyadmin.net/en/latest/user.html).

## Fehlerbehebung
<a name="lamp-troubleshooting"></a>

Dieser Abschnitt enthält Vorschläge zum Lösen häufiger Probleme, die bei der Einrichtung eines neuen LAMP-Servers auftreten können. 

### Ich kann zu meinem Server keine Verbindung über einen Webbrowser herstellen
<a name="is_apache_on"></a>

Führen Sie die folgende Prüfungen durch, um zu sehen, ob Ihr Apache-Webserver ausgeführt wird und auf ihn zugegriffen werden kann.
+ **Wird der Webserver ausgeführt?**

  Mit folgendem Befehl können Sie prüfen, ob der Befehl **httpd** ausgeführt wird:

  ```
  [ec2-user ~]$ sudo systemctl is-enabled httpd
  ```

  Wenn der **httpd**-Prozess nicht ausgeführt wird, wiederholen Sie die unter [Vorbereiten des LAMP-Servers](#install_apache-2) beschriebenen Schritte.
+ **Ist die Firewall richtig konfiguriert?**

  Stellen Sie sicher, dass die Sicherheitsgruppe für die Instance eine Regel enthält, die HTTP-Datenverkehr auf Port 80 zulässt. Weitere Informationen finden [Sie unter Regeln zur Sicherheitsgruppe hinzufügen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

### Ich kann über HTTPS keine Verbindung zu meinem Server herstellen
<a name="is-https-enabled"></a>

Führen Sie die folgende Prüfungen durch, um zu sehen, ob Ihr Apache-Webserver konfiguriert ist, HTTPS zu unterstützen.
+ **Ist der Webserver richtig konfiguriert? **

  Nach der Installation von Apache ist der Server für HTTP-Verkehr konfiguriert. Um HTTPS zu unterstützen, aktivieren Sie TLS auf dem Server und installieren Sie ein SSL-Zertifikat. Weitere Informationen finden Sie unter [Tutorial: Konfiguration SSL/TLS am AL2](SSL-on-amazon-linux-2.md).
+ **Ist die Firewall richtig konfiguriert?**

  Stellen Sie sicher, dass die Sicherheitsgruppe für die Instance eine Regel enthält, die HTTPS-Datenverkehr auf Port 443 zulässt. Weitere Informationen finden [Sie unter Regeln zu einer Sicherheitsgruppe hinzufügen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

## Verwandte Themen
<a name="lamp-more-info"></a>

Weitere Informationen zum Übertragen von Dateien auf Ihre Instance oder zum Installieren eines WordPress Blogs auf Ihrem Webserver finden Sie in der folgenden Dokumentation:
+ [Übertragen Sie Dateien auf Ihre Linux-Instance mit WinSCP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP).
+ [Übertragen Sie Dateien mithilfe eines SCP Clients auf Linux-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html#linux-file-transfer-scp).
+ [Tutorial: Hosten Sie einen WordPress Blog auf AL2](hosting-wordpress.md)

Weitere Informationen über die in diesem Tutorial verwendete(n) Befehle und Software finden Sie auf den folgenden Webseiten:
+ Apache-Webserver: [http://httpd.apache.org/](http://httpd.apache.org/)
+ MariaDB-Datenbankserver: [https://mariadb.org/](https://mariadb.org/)
+ PHP-Programmiersprache: [http://php.net/](http://php.net/)
+ Der `chmod` Befehl: [https://en.wikipedia. org/wiki/Chmod](https://en.wikipedia.org/wiki/Chmod)
+ Der `chown` Befehl: [https://en.wikipedia. org/wiki/Chown](https://en.wikipedia.org/wiki/Chown)

Weitere Informationen zum Registrieren eines Domain-Namens für Ihren Webserver oder zum Übertragen eines bestehenden Domain-Namens auf diesen Host finden Sie unter [Erstellen und Migrieren von Domains und Sub-Domains zu Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html) im *Entwicklerhandbuch für Amazon Route 53*.

# Tutorial: Konfiguration SSL/TLS am AL2
<a name="SSL-on-amazon-linux-2"></a>

Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel between a web server and web client that protects data in transit from being eavesdropped on. This tutorial explains how to add support manually for SSL/TLSauf einer EC2-Instance mit AL2 einem Apache-Webserver). In diesem Tutorial wird davon ausgegangen, dass Sie keinen Load Balancer verwenden. Wenn Sie Elastic Load Balancing verwenden, können Sie im Load Balancer SSL-Offload konfigurieren und stattdessen ein Zertifikat aus [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) verwenden.

Aus historischen Gründen wird die Webverschlüsselung häufig einfach als SSL bezeichnet. Auch wenn Webbrowser SSL weiterhin unterstützen, ist das Nachfolgeprotokoll TLS weniger anfällig für Angriffe. AL2 deaktiviert standardmäßig die serverseitige Unterstützung für alle Versionen von SSL. [Gremien für Sicherheitsstandards](https://www.ssl.com/article/deprecating-early-tls/) erachten TLS 1.0 als unsicher. TLS 1.0 und TLS 1.1 wurden im März 2021 formell [veraltet](https://datatracker.ietf.org/doc/rfc8996/). Dieses Tutorial enthält Empfehlungen, die ausschließlich auf der Aktivierung von TLS 1.2 basieren. TLS 1.3 wurde 2018 fertiggestellt und ist verfügbar, AL2 solange die zugrunde liegende TLS-Bibliothek (OpenSSL in diesem Tutorial) unterstützt und aktiviert ist. [Kunden müssen spätestens zum 28. Juni 2023 TLS 1.2 oder höher unterstützen](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/). Weitere Informationen zum aktualisierten Verschlüsselungsstandard finden Sie unter [RFC 7568](https://tools.ietf.org/html/rfc7568) und [RFC 8446](https://tools.ietf.org/html/rfc8446).

Dieses Tutorial bezieht sich auf TLS als moderne Web-Verschlüsselung.

**Wichtig**  
Diese Verfahren sind für die Verwendung mit AL2 vorgesehen. Es wird auch angenommen, dass Sie mit einer neuen Amazon EC2-Instance beginnen. Wenn Sie versuchen, eine EC2-Instance einzurichten, auf der eine andere Distribution ausgeführt wird, oder eine Instance, auf der eine alte Version von ausgeführt wird AL2, funktionieren einige Verfahren in diesem Tutorial möglicherweise nicht. Für Ubuntu lesen Sie bitte die folgende Community-Dokumentation: [Open SSL auf Ubuntu](https://help.ubuntu.com/community/OpenSSL). Informationen zu Red Hat Enterprise Linux finden Sie im Thema [Apache-HTTP-Webserver einrichten](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/setting-apache-http-server_deploying-different-types-of-servers). Andere Verteilungen finden Sie in der jeweiligen Dokumentation.

**Anmerkung**  
Alternativ können Sie AWS Certificate Manager (ACM) für AWS Nitro-Enklaven verwenden. Dabei handelt es sich um eine Enklave-Anwendung, mit der Sie öffentliche und private SSL/TLS Zertifikate für Ihre Webanwendungen und Server verwenden können, die auf Amazon EC2 EC2-Instances mit Nitro Enclaves ausgeführt werden. AWS Nitro Enclaves ist eine Amazon EC2 EC2-Funktion, die die Schaffung isolierter Computerumgebungen ermöglicht, um hochsensible Daten wie SSL/TLS Zertifikate und private Schlüssel zu schützen und sicher zu verarbeiten.  
ACM for Nitro Enclaves arbeitet mit **nginx** zusammen, das auf Ihrer Amazon-EC2-Linux-Instance ausgeführt wird, um private Schlüssel zu erstellen, Zertifikate und private Schlüssel zu verteilen und Zertifikatverlängerungen zu verwalten.  
Um ACM for Nitro Enclaves verwenden zu können, müssen Sie eine Enclave-fähige Linux-Instance nutzen.  
Weitere Informationen finden Sie unter [Was](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) ist Nitro Enclaves? AWS *und [AWS Certificate Manager für Nitro Enclaves im Nitro Enclaves-Benutzerhandbuch](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html).AWS *

**Topics**
+ [Voraussetzungen](#ssl_prereq)
+ [Schritt 1: Aktivieren von TLS auf dem Server](#ssl_enable)
+ [Schritt 2: Abrufen eines CA-signierten Zertifikats](#ssl_certificate)
+ [Schritt 3: Testen und Verstärken der Sicherheitskonfiguration](#ssl_test)
+ [Fehlerbehebung](#troubleshooting)

## Voraussetzungen
<a name="ssl_prereq"></a>

Bevor Sie mit diesem Tutorial beginnen, führen Sie die folgenden Schritte aus:
+ Starten Sie eine Amazon EBS-gestützte AL2 Instance. Weitere Informationen finden Sie unter [Launch an Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) im *Amazon EC2 EC2-Benutzerhandbuch*.
+ Konfigurieren Sie Ihre Sicherheitsgruppen so, dass Ihre Instance Verbindungen auf den folgenden TCP-Ports akzeptieren kann: 
  + SSH (Port 22)
  + HTTP (Port 80)
  + HTTPS (Port 443)

  Weitere Informationen finden Sie unter [Sicherheitsgruppenregeln](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) im *Benutzerhandbuch für Amazon EC2*.
+ Installieren Sie den Apache-Webserver. step-by-stepAnweisungen finden Sie unter [Tutorial: Installieren Sie einen LAMP-Webserver auf AL2](ec2-lamp-amazon-linux-2.md). Es werden nur das httpd-Paket und die zugehörigen Abhängigkeiten benötigt, sodass die Anleitungen mit PHP und MariaDB ignoriert werden können.
+ Zum Identifizieren und Authentifizieren von Websites verwendet die Public Key-Infrastruktur (PKI) TLS das Domain Name System (DNS). Wenn Sie Ihre EC2-Instance zum Hosten einer öffentlichen Website verwenden möchten, müssen Sie einen Domain-Namen für Ihren Webserver registrieren oder einen vorhandenen Domain-Namen an Ihren Amazon-EC2-Host übertragen. Dafür sind zahlreiche Drittanbieterservices für die Domain-Registrierung und das DNS-Hosting verfügbar. Oder Sie verwenden [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html). 

## Schritt 1: Aktivieren von TLS auf dem Server
<a name="ssl_enable"></a>

**Option: Abschließen dieses Tutorials mit Automation**  
Um dieses Tutorial mit AWS Systems Manager Automatisierung anstelle der folgenden Aufgaben abzuschließen, führen Sie das [Automatisierungsdokument](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-Configure-SSL-TLS-AL2/) aus.

Dieses Verfahren führt Sie durch den Prozess der Einrichtung von TLS AL2 mit einem selbstsignierten digitalen Zertifikat. 

**Anmerkung**  
Ein selbstsigniertes Zertifikat kann zu Testzwecken, jedoch nicht für die Produktion verwendet werden. Wenn Sie Ihr selbstsigniertes Zertifikat im Internet bereitstellen, werden den Besuchern Ihrer Website Sicherheitswarnungen angezeigt. 

**So aktivieren Sie TLS auf einem Server**

1. [Verbinden Sie sich mit der Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) und stellen Sie sicher, dass Apache ausgeführt wird.

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

   Wenn der zurückgegebene Wert nicht „enabled“ (aktiviert) ist, starten Sie Apache und richten es so ein, dass es bei jedem Neustart des Systems gestartet wird.

   ```
   [ec2-user ~]$ sudo systemctl start httpd && sudo systemctl enable httpd
   ```

1. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus. Dieser Vorgang kann einige Minuten dauern. Es ist jedoch wichtig, sicherzustellen, dass Sie über die aktuellen Sicherheitsaktualisierungen und Fehlerbehebungen verfügen.
**Anmerkung**  
Mit der Option `-y` werden die Updates installiert, ohne um Bestätigung zu bitten. Wenn Sie die Aktualisierungen vor der Installation überprüfen möchten, können Sie diese Option auslassen.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Wenn Ihre Instance jetzt aktuell ist, fügen Sie TLS-Unterstützung hinzu, indem Sie das Apache-Modul installiere `mod_ssl`.

   ```
   [ec2-user ~]$ sudo yum install -y mod_ssl
   ```

   Ihre Instance verfügt nun über die folgenden Dateien, mit denen Sie Ihren sicheren Server konfigurieren und ein Zertifikat zum Testen erstellen:
   +  `/etc/httpd/conf.d/ssl.conf` 

     Die Konfigurationsdatei für mod\$1ssl. Diese enthält *Richtlinien*, die Apache mitteilen, wo Verschlüsselungsschlüssel und Zertifikate, die zu genehmigenden TLS-Protokollversionen und die zu akzeptierenden Verschlüsselungschiffren gefunden werden können. 
   + `/etc/pki/tls/certs/make-dummy-cert`

     Ein Skript zum Generieren eines selbstsignierten X.509-Zertifikats und privaten Schlüssels für Ihren Server-Host. Dieses Zertifikat ist nützlich zum Testen, ob Apache ordnungsgemäß für die Verwendung von TLS eingerichtet ist. Da es keinen Identitätsnachweis liefert, sollte es in der Produktion nicht verwendet werden. Wenn es in der Produktion eingesetzt wird, löst es Warnungen in Web-Browsern aus.

1. Führen Sie das Skript aus, um ein selbstsigniertes Dummy-Zertifikat und einen Schlüssel für die Überprüfung zu generieren.

   ```
   [ec2-user ~]$ cd /etc/pki/tls/certs
   sudo ./make-dummy-cert localhost.crt
   ```

   Dadurch wird eine neue Datei `localhost.crt` im Verzeichnis `/etc/pki/tls/certs/` erstellt. Der angegebene Dateiname entspricht dem Standard, der in der **SSLCertificateFile**-Direktive in `/etc/httpd/conf.d/ssl.conf` zugewiesen ist. 

   Die Datei enthält sowohl ein selbstsigniertes Zertifikat als auch den privaten Schlüssel des Zertifikats. Für Apache müssen das Zertifikat und der Schlüssel im PEM-Format sein. Diese bestehen aus Base64-kodierten ASCII-Zeichen, die durch „BEGIN” und „END”-Zeilen eingerahmt werden, wie im folgendem, verkürzten Beispiel dargestellt.

   ```
   -----BEGIN PRIVATE KEY-----
   MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q
   3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo
   BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr
   GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT
   ...
   56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs
   27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS
   LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo
   4QQvAqOa8UheYeoXLdWcHaLP
   -----END PRIVATE KEY-----                    
   
   -----BEGIN CERTIFICATE-----
   MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t
   MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK
   DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV
   bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy
   ...
   z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0
   CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3
   WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak
   3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg==
   -----END CERTIFICATE-----
   ```

   Die Dateinamen und Erweiterungen dienen der Einfachheit und haben keinerlei Auswirkungen auf die Funktion. Sie können beispielsweise ein Zertifikat mit `cert.crt`, `cert.pem` oder einem beliebigen anderen Dateinamen benennen, solange die zugehörige Richtlinie in der Datei `ssl.conf` denselben Namen verwendet.
**Anmerkung**  
Wenn Sie die TLS-Standarddateien mit Ihren eigenen benutzerdefinierten Dateien ersetzen, müssen diese das PEM-Format aufweisen. 

1. Öffnen Sie die `/etc/httpd/conf.d/ssl.conf`-Datei mit ihrem bevorzugten Texteditor (z. B. **vim** oder **nano**) als Root-Benutzer und kommentieren Sie die folgende Zeile aus, da das selbstsignierte Dummy-Zertifikat auch den Schlüssel enthält. Wenn Sie diese Zeile nicht auskommentieren, bevor Sie den nächsten Schritt abschließen, kann der Apache-Service nicht gestartet werden.

   ```
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
   ```

1. Starten Sie Apache erneut.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```
**Anmerkung**  
Stellen Sie wie zuvor beschrieben sicher, dass auf den TCP-Port 443 über Ihre EC2-Instance zugegriffen werden kann.

1. Ihr Apache-Webserver sollte jetzt HTTPS (sicheres HTTP) über Port 443 unterstützen. Dies können Sie testen, indem Sie die IP-Adresse oder den vollständig qualifizierten Domain-Namen Ihrer EC2-Instance mit dem Präfix **https://** in einer Browser-URL-Leiste eingeben.

   Da Sie eine Verbindung mit einer Website mit einem selbstsignierten, nicht vertrauenswürdigen Host-Zertifikat herstellen, zeigt Ihr Browser möglicherweise eine Reihe von Sicherheitswarnungen an. Setzen Sie die Warnmeldungen außer Kraft und fahren Sie mit der Website fort. 

   Wenn die Apache-Standardtestseite geöffnet wird, bedeutet dies, dass Sie TLS erfolgreich auf Ihrem Server konfiguriert haben. Alle Daten, die zwischen dem Browser und dem Server übertragen werden, sind nun verschlüsselt.
**Anmerkung**  
Damit den Besuchern keine Warnbildschirme angezeigt werden, müssen Sie ein vertrauenswürdiges, CA-signiertes Zertifikat abrufen, das nicht nur verschlüsselt, sondern Sie auch öffentlich als den Besitzer der Website authentifiziert. 

## Schritt 2: Abrufen eines CA-signierten Zertifikats
<a name="ssl_certificate"></a>

Sie können das folgende Verfahren verwenden, um ein CA-signiertes Zertifikat zu erhalten:
+ Erzeugen Sie aus dem privaten Schlüssel eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR)
+ Senden Sie die CSR an eine Zertifizierungsstelle (CA)
+ Sie erhalten ein signiertes Host-Zertifikat
+ Konfigurieren Sie Apache, um das Zertifikat zu verwenden

Ein selbstsigniertes TLS-X.509-Host-Zertifikat ist kryptologisch mit einem CA-signierten Zertifikat identisch. Der Unterschied liegt im sozialen, nicht im mathematischen Bereich. Eine CA validiert zumindest den Besitzer einer Domain, bevor ein Zertifikat für einen Antragsteller ausgegeben wird. Jeder Webbrowser enthält eine Liste der vom Browserhersteller zu diesem Zweck CAs vertrauenswürdigen Websites. Ein X.509-Zertifikat besteht hauptsächlich aus einem öffentlichen Schlüssel, der Ihrem privaten Serverschlüssel entspricht, sowie einer Signatur durch die CA, die kryptografisch an den öffentlichen Schlüssel gebunden ist. Wenn ein Browser über HTTPS eine Verbindung zu einem Webserver herstellt, präsentiert der Server dem Browser ein Zertifikat, das er anhand seiner Liste vertrauenswürdiger Server überprüfen kann CAs. Wenn sich der Aussteller auf der Liste befindet oder über eine *Vertrauenskette* aus anderen vertrauenswürdigen Ausstellern zugänglich ist, handelt der Browser einen schnellen verschlüsselten Datenkanal mit dem Server aus und lädt die Seite. 

Im Allgemeinen sind Zertifikate aufgrund der Arbeit im Zusammenhang mit der Validierung der Anforderungen kostenpflichtig, deshalb lohnt es sich, die Angebote zu vergleichen. Einige CAs bieten kostenlose Basiszertifikate an. Das bemerkenswerteste davon CAs ist das [Let's Encrypt-Projekt](https://letsencrypt.org/), das auch die Automatisierung des Prozesses zur Erstellung und Verlängerung von Zertifikaten unterstützt. Weitere Informationen zur Verwendung eines Let's Encrypt-Zertifikats finden Sie unter [Get Certbot](https://eff-certbot.readthedocs.io/en/stable/install.html).

Wenn Sie beabsichtigen, kommerzielle Dienstleistungen anzubieten, ist [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) eine gute Option.

Dem Host-Zertifikat liegt der Schlüssel zugrunde. Seit 2019 empfehlen [Regierungs-](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf) und [Branchengruppen](https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.6.5.pdf) eine Schlüssel(-Modul)-Mindestgröße von 2048 Bits für RSA-Schlüssel, die Dokumente bis 2030 schützen sollen. Die von OpenSSL generierte Standardmodulgröße AL2 beträgt 2048 Bit, was für die Verwendung in einem CA-signierten Zertifikat geeignet ist. Im folgenden Verfahren ist ein optionaler Schritt für diejenigen vorgesehen, die einen benutzerdefinierten Schlüssel verwenden möchten, z.B. einen mit einem größeren Modul oder mit einem anderen Verschlüsselungsalgorithmus.

**Wichtig**  
Diese Anweisungen zum Erwerb eines CA-signierten Host-Zertifikats funktioniert nur, wenn Sie eine registrierte und gehostete DNS-Domain besitzen.

**So rufen Sie ein CA-signierten Zertifikat ab**

1.  [Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) zu Ihrer Instance her und navigieren Sie zu/etc/pki/tls/private/. Dies ist das Verzeichnis, in dem Sie den privaten Schlüssel des Servers für TLS speichern. Wenn Sie lieber Ihren vorhandenen Host-Schlüssel zum Generieren der CSR verwenden möchten, fahren Sie mit Schritt 3 fort.

1. (Optional) Generieren Sie einen neuen privaten Schlüssel. Hier sind einige Beispiele für Schlüsselkonfigurationen. Jeder der resultierenden Schlüssel funktioniert mit Ihrem Webserver, aber sie unterscheiden sich durch den Grad und die Art der Sicherheit, die sie implementieren.
   + **Beispiel 1:** Erstellen Sie einen Standard-RSA-Hostschlüssel. Bei der erstellten Datei, **custom.key**, handelt es sich um einen privaten 2048-Bit-RSA-Schlüssel.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key
     ```
   + **Beispiel 2:** Erstellen Sie einen stärkeren RSA-Schlüssel mit einem größeren Modul. Bei der erstellten Datei, **custom.key**, handelt es sich um einen privaten 4096-Bit-RSA-Schlüssel.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
     ```
   + **Beispiel 3:** Erstellen Sie einen 4096-Bit-verschlüsselten RSA-Schlüssel mit Passwortschutz. Die resultierende Datei, **custom.key**, ist ein privater 4096-Bit-RSA-Schlüssel, der mit der AES-128-Verschlüsselung verschlüsselt ist.
**Wichtig**  
Die Verschlüsselung des Schlüssels bietet höhere Sicherheit. Da für einen verschlüsselten Schlüssel ein Passwort erforderlich ist, können von diesem abhängige Services jedoch nicht automatisch gestartet werden. Jedes Mal, wenn Sie diesen Schlüssel verwenden, müssen Sie das Passwort (im vorhergehenden Beispiel „abcde12345“) über eine SSH-Verbindung bereitstellen.

     ```
     [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
     ```
   + **Beispiel 4:** Erstellen Sie einen Schlüssel mit einer Nicht-RSA-Verschlüsselung. Die RSA-Kryptografie kann aufgrund der Größe ihrer öffentlichen Schlüssel, die auf dem Produkt aus zwei großen Primzahlen basieren, relativ langsam sein. Es ist jedoch möglich, Schlüssel für TLS zu erstellen, die andere Verschlüsselungschiffren als RSA verwenden. Schlüssel, die auf der Mathematik von Ellipsenkurven basieren, sind kleiner und bieten eine schnellere Rechenleistung bei der Bereitstellung einer gleichwertigen Sicherheitsebene.

     ```
     [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey
     ```

     Das Ergebnis ist ein privater Ellipsenkurvenschlüssel mit 256-Bit, der prime256v1 verwendet, einer „benannten Kurve“, die OpenSSL unterstützt. Die kryptografische Stärke ist hierbei [laut NIST](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf) etwas höher als bei einem 2048-Bit-RSA-Schlüssel.
**Anmerkung**  
Nicht alle CAs bieten dieselbe Unterstützung für elliptic-curve-based Schlüssel wie für RSA-Schlüssel.

   Stellen Sie sicher, dass der neue private Schlüssel sehr restriktive Besitzrechte und Berechtigungen hat (owner = root, group=root, read/write nur für Besitzer). Führen Sie die Befehle wie im folgenden Beispiel veranschaulicht aus.

   ```
   [ec2-user ~]$ sudo chown root:root custom.key
   [ec2-user ~]$ sudo chmod 600 custom.key
   [ec2-user ~]$ ls -al custom.key
   ```

   Die vorhergehenden Befehle erzeugen das folgende Ergebnis.

   ```
   -rw------- root root custom.key
   ```

    Wenn Sie einen zufriedenstellenden Schlüssel erstellt und konfiguriert haben, können Sie eine CSR erstellen. 

1. Erstellen Sie eine CSR mit Ihrem bevorzugten Schlüssel. Im folgenden Beispiel wird verwende **custom.key**.

   ```
   [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem
   ```

   OpenSSL öffnet einen Dialog und fordert Sie auf, die in der folgenden Tabelle aufgeführten Informationen einzugeben. Alle Felder außer **Common Name** (Allgemeiner Name) sind bei einem grundlegenden, Domain-validierten Host-Zertifikat optional.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/linux/al2/ug/SSL-on-amazon-linux-2.html)

   Zuletzt fordert OpenSSL Sie zur Eingabe eines optionalen Challenge-Passworts auf. Dieses Passwort gilt nur für die CSR und für Transaktionen zwischen Ihnen und Ihrer CA. Befolgen Sie daher die Empfehlungen Ihrer CA diesbezüglich und in Bezug auf das andere optionale Feld, den optionalen Unternehmensnamen. Das CSR-Challenge-Passwort wirkt sich nicht auf den Serverbetrieb aus.

   Die erstellte Datei **csr.pem** enthält Ihren öffentlichen Schlüssel, die digitale Signatur Ihres öffentlichen Schlüssels und die von Ihnen eingegebenen Metadaten.

1. Übermitteln Sie die CSR an eine CA. Dies besteht in der Regel daraus, Ihre CSR-Datei in einem Texteditor zu öffnen und den Inhalt in ein Webformular zu kopieren. Zu diesem Zeitpunkt werden Sie möglicherweise aufgefordert, einen oder mehrere alternative Namen (SANs) für das Zertifikat anzugeben. Wenn **www.example.com** der allgemeine Name ist, wäre **example.com** ein guter SAN und umgekehrt. Ein Besucher Ihrer Website, der einen dieser Namen eingibt, wird eine fehlerfreie Verbindung sehen. Wenn Ihr CA-Webformular dies zulässt, nehmen Sie den allgemeinen Namen in die Liste der auf SANs. Manche CAs schließen ihn automatisch ein.

   Nachdem Ihre Anfrage genehmigt wurde, erhalten Sie ein neues, von der CA unterzeichnetes Host-Zertifikat. Möglicherweise werden Sie auch dazu aufgefordert, eine *Zwischenzertifikatsdatei* herunterzuladen, die zusätzliche Zertifikate enthält, welche zum Fertigstellen der Vertrauenskette der CA benötigt werden. 
**Anmerkung**  
Ihre CA kann Ihnen Dateien in verschiedenen Formaten für verschiedene Zwecke zusenden. Für dieses Tutorial sollten Sie nur eine Zertifikatsdatei im PEM-Format verwenden, die in der Regel (aber nicht immer) mit der Dateierweiterung `.pem` oder `.crt` gekennzeichnet ist. Wenn Sie sich nicht sicher sind, welche Datei Sie verwenden sollen, öffnen Sie die Dateien mit einem Texteditor und suchen Sie die Datei, die einen oder mehrere Blöcke enthält, die mit der folgenden Zeile beginnen.  

   ```
   - - - - -BEGIN CERTIFICATE - - - - - 
   ```
Die Datei sollte darüber hinaus mit der folgenden Zeile enden.  

   ```
   - - - -END CERTIFICATE - - - - -
   ```
Sie können die Datei auch in der Befehlszeile testen, wie im Folgenden gezeigt.  

   ```
   [ec2-user certs]$ openssl x509 -in certificate.crt -text
   ```
Vergewissern Sie sich, dass diese Zeilen in der Datei erscheinen. Verwenden Sie keine Dateien, die mit `.p7b`, `.p7c` oder ähnlichen Dateiendungen enden.

1. Platzieren Sie ein neues CA-signiertes Zertifikat und alle Zwischenzertifikate im `/etc/pki/tls/certs`-Verzeichnis.
**Anmerkung**  
Es gibt mehrere Möglichkeiten, für den Upload Ihres neuen Zertifikat in Ihre EC2-Instance. Der einfachste und informativste Weg ist jedoch, einen Texteditor (vi, nano oder notepad usw.) sowohl auf Ihrem lokalen Computer als auch auf Ihrer Instance zu öffnen, und dann den Dateiinhalt zwischen ihnen zu kopieren und einzufügen. Sie benötigen Root [sudo]-Berechtigungen, wenn Sie diese Operationen auf der EC2-Instance ausführen. Auf diese Weise können Sie sofort erkennen, ob es Probleme mit Berechtigungen oder mit dem Pfad gibt. Achten Sie jedoch darauf, beim Kopieren der Inhalte keine zusätzlichen Zeilen einzufügen und die Inhalte nicht zu ändern. 

   Überprüfen Sie innerhalb des `/etc/pki/tls/certs` Verzeichnisses, ob die Einstellungen für Dateibesitz, Gruppe und Berechtigungen den stark restriktiven AL2 Standardeinstellungen entsprechen (owner=root, group=root, read/write nur für Besitzer). Das folgende Beispiel zeigt die zu verwendenden Befehle. 

   ```
   [ec2-user certs]$ sudo chown root:root custom.crt
   [ec2-user certs]$ sudo chmod 600 custom.crt
   [ec2-user certs]$ ls -al custom.crt
   ```

   Diese Befehle sollten das folgende Ergebnis hervorrufen. 

   ```
   -rw------- root root custom.crt
   ```

   Die Berechtigungen für die Zwischenzertifikatsdatei sind weniger strikt (Eigentümer=root, Gruppe=root, Eigentümer kann schreiben, Gruppe kann lesen, die restliche Welt kann lesen). Das folgende Beispiel zeigt die zu verwendenden Befehle. 

   ```
   [ec2-user certs]$ sudo chown root:root intermediate.crt
   [ec2-user certs]$ sudo chmod 644 intermediate.crt
   [ec2-user certs]$ ls -al intermediate.crt
   ```

   Diese Befehle sollten das folgende Ergebnis hervorrufen.

   ```
   -rw-r--r-- root root intermediate.crt
   ```

1. Legen Sie den privaten Schlüssel, den Sie zum Erstellen der CSR verwendet haben, in das Verzeichnis `/etc/pki/tls/private/`. 
**Anmerkung**  
Es gibt mehrere Möglichkeiten für den Upload Ihrer benutzerdefinierten Schlüssel in Ihre EC2-Instance. Der einfachste und informativste Weg ist jedoch, einen Texteditor (vi, nano oder notepad usw.) sowohl auf Ihrem lokalen Computer als auch auf Ihrer Instance zu öffnen, und dann den Dateiinhalt zwischen ihnen zu kopieren und einzufügen. Sie benötigen Root [sudo]-Berechtigungen, wenn Sie diese Operationen auf der EC2-Instance ausführen. Auf diese Weise können Sie sofort erkennen, ob es Probleme mit Berechtigungen oder mit dem Pfad gibt. Achten Sie jedoch darauf, beim Kopieren der Inhalte keine zusätzlichen Zeilen einzufügen und die Inhalte nicht zu ändern.

   Verwenden Sie innerhalb des `/etc/pki/tls/private` Verzeichnisses die folgenden Befehle, um zu überprüfen, ob die Einstellungen für Dateibesitz, Gruppen und Berechtigungen den stark restriktiven AL2 Standardeinstellungen entsprechen (owner=root, group=root, nur für Eigentümer). read/write 

   ```
   [ec2-user private]$ sudo chown root:root custom.key
   [ec2-user private]$ sudo chmod 600 custom.key
   [ec2-user private]$ ls -al custom.key
   ```

   Diese Befehle sollten das folgende Ergebnis hervorrufen.

   ```
   -rw------- root root custom.key
   ```

1. Bearbeiten Sie die Datei `/etc/httpd/conf.d/ssl.conf` so, dass sie Ihr neues Zertifikat und Ihre Schlüsseldateien widerspiegelt.

   1. Geben Sie den Pfad und Dateinamen des CA-signierten Host-Zertifikats im `SSLCertificateFile`-Verzeichnis von Apache an.

      ```
      SSLCertificateFile /etc/pki/tls/certs/custom.crt
      ```

   1. Wenn Sie eine Zwischenzertifikatsdatei erhalten haben (`intermediate.crt` in diesem Beispiel), stellen Sie den entsprechenden Pfad und Dateinamen über das `SSLCACertificateFile`-Verzeichnis in Apache bereit:

      ```
      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      ```
**Anmerkung**  
Manche CAs kombinieren das Host-Zertifikat und die Zwischenzertifikate in einer einzigen Datei, sodass die Direktive überflüssig wird. `SSLCACertificateFile` Informieren Sie sich in den von Ihrer CA bereitgestellten Anweisungen.

   1. Geben Sie den Pfad und Dateinamen des privaten Schlüssels (in diesem Beispiel `custom.key`) in der `SSLCertificateKeyFile`-Direktive von Apache an:

      ```
      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
      ```

1. Speichern Sie `/etc/httpd/conf.d/ssl.conf` und starten Sie Apache erneut.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Testen Sie Ihren Server, indem Sie Ihren Domain-Namen in eine Browser-URL-Leiste mit dem Präfix `https://` eingeben. Ihr Browser sollte die Testseite über HTTPS laden, ohne Fehler zu erzeugen.

## Schritt 3: Testen und Verstärken der Sicherheitskonfiguration
<a name="ssl_test"></a>

Wenn Ihre TLS betriebsbereit und öffentlich zugänglich ist, sollten Sie testen, wie sicher sie wirklich ist. Dies ist ganz einfach möglich mithilfe von Online-Services wie beispielsweise [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), der eine kostenlose und gründliche Analyse Ihrer Sicherheitseinrichtung durchführt. Basierend auf den Ergebnissen entscheiden Sie sich möglicherweise dafür, die Standard-Sicherheitskonfiguration zu verstärken, indem Sie kontrollieren, welche Protokolle akzeptiert werden sollen, welche Chiffren Sie bevorzugen und welche ausgeschlossen werden soll. Um weitere Informationen zu erhalten, sehen Sie sich an, [wie Qualys seine Skalen gestaltet](https://github.com/ssllabs/research/wiki/SSL-Server-Rating-Guide).

**Wichtig**  
Reale Tests sind außerordentlich wichtig für die Sicherheit Ihres Servers. Kleine Konfigurationsfehler führen möglicherweise zu ernsten Sicherheitsverstößen und Datenverlusten. Da sich die empfohlenen Sicherheitsmaßnahmen aufgrund von Forschungen und neuartigen Bedrohungen ständig ändern, sind regelmäßige Sicherheitsprüfungen wichtig für eine gute Serveradministration. 

Geben Sie auf der Website von [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html) den vollständigen Domain-Namen Ihres Servers ein, in der Form **www.example.com**. Nach ungefähr zwei Minuten erhalten Sie eine Note (von A bis F) für Ihre Website sowie eine detaillierte Auflistung der Ergebnisse. In der folgenden Tabelle wird der Bericht für eine Domain zusammengefasst, deren Einstellungen mit der Standard-Apache-Konfiguration identisch sind AL2, und für die ein Certbot-Standardzertifikat vorhanden ist. 


|  |  | 
| --- |--- |
| Gesamtbewertung | B | 
| Zertifikat | 100 % | 
| Protokollunterstützung | 95 % | 
| Schlüsselaustausch | 70 % | 
| Chiffrestärke | 90 % | 

Obwohl die Übersicht zeigt, dass die Konfiguration größtenteils intakt ist, zeigt der detaillierte Bericht einige potenzielle Probleme, die hier nach Schweregrad geordnet aufgelistet werden:

✗ **Die RC4 Chiffre wird für die Verwendung durch bestimmte ältere Browser unterstützt**. Eine Chiffre ist der mathematische Kern eines Verschlüsselungsalgorithmus. RC4[, eine schnelle Chiffre, die zur Verschlüsselung von TLS-Datenströmen verwendet wird, weist bekanntermaßen mehrere schwerwiegende Schwächen auf.](http://www.imperva.com/docs/hii_attacking_ssl_when_using_rc4.pdf) Wenn Sie nicht sehr gute Gründe haben, veraltete Browser zu unterstützen, sollten Sie dies deaktivieren.

✗ **Alte TLS-Versionen werden unterstützt.** Die Konfiguration unterstützt TLS 1.0 (bereits veraltet) und TLS 1.1 (demnächst veraltet). Seit 2018 wurde nur TLS 1.2 empfohlen.

✗ **Forward Secrecy wird nicht vollständig unterstützt.** [Forward Secrecy](https://en.wikipedia.org/wiki/Forward_secrecy) ist ein Feature von Algorithmen zur Verschlüsselung mit temporären (flüchtigen) Sitzungsschlüsseln, die von dem privaten Schlüssel abgeleitet werden. In der Praxis bedeutet dies, dass Angreifen HTTPS-Daten nicht entschlüsseln können, selbst wenn sie den langfristigen privaten Schlüssel eines Webservers besitzen.

**So korrigieren Sie die TLS-Konfiguration und machen Sie zukunftssicher**

1. Öffnen Sie die Konfigurationsdatei `/etc/httpd/conf.d/ssl.conf` in einem Texteditor und kommentieren Sie die folgende Zeile aus, indem Sie „\$1“ am Anfang der Zeile eingeben.

   ```
   #SSLProtocol all -SSLv3
   ```

1. Fügen Sie die folgende Richtlinie hinzu:

   ```
   #SSLProtocol all -SSLv3
   SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
   ```

   Diese Richtlinie deaktiviert die SSL-Versionen 2 und 3 explizit sowie auch die TLS-Versionen 1.0 und 1.1. Der Server akzeptiert jetzt keine verschlüsselten Verbindungen mit Clients, die eine andere Version als TLS 1.2 verwenden. Der Verbose-Wortlaut in der Richtlinie teilt einem menschlichen Leser genauer mit, wofür der Server konfiguriert ist.
**Anmerkung**  
Durch eine solche Deaktivierung der TLS-Versionen 1.0 und 1.1 wird ein kleiner Prozentsatz von veralteten Webbrowsern daran gehindert, auf Ihre Website zuzugreifen.

**So ändern Sie die Liste der zulässigen Chiffren**

1. Suchen Sie in der Konfigurationsdatei `/etc/httpd/conf.d/ssl.conf` den Abschnitt mit der **SSLCipherSuite**-Richtlinie und kommentieren Sie die bestehende Zeile aus, indem Sie „\$1“ am Anfang der Zeile eingeben.

   ```
   #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
   ```

1. Geben Sie explizite Verschlüsselungssammlungen und eine Verschlüsselungsreihenfolge an, die Forward Secrecy unterstützt und unsichere Verschlüsselungen vermeidet. Die hier verwendete Richtlinie `SSLCipherSuite` basiert auf der Ausgabe aus dem [Mozilla SSL-Konfigurationsgenerator](https://mozilla.github.io/server-side-tls/ssl-config-generator/), der eine TLS-Konfiguration an die spezifische Software, die auf Ihrem Server ausgeführt wird, angepasst wird. Bestimmen Sie zunächst Ihre Apache- und OpenSSL-Versionen, indem Sie die Ausgabe der folgenden Befehle verwenden.

   ```
   [ec2-user ~]$ yum list installed | grep httpd
   
   [ec2-user ~]$ yum list installed | grep openssl
   ```

   Wenn die zurückgegebenen Informationen beispielsweise Apache 2.4.34 und OpenSSL 1.0.2 sind, geben wir diese in den Generator ein. Wenn Sie das „moderne“ Kompatibilitätsmodell auswählen, wird dadurch eine `SSLCipherSuite`-Richtlinie erstellt, die die Sicherheit aggressiv durchsetzt, aber dennoch für die meisten Browser funktioniert. Wenn die Modemkonfiguration von der Software nicht unterstützt wird, können Sie Ihre Software aktualisieren oder stattdessen die „fortgeschrittene“ Konfiguration wählen.

   ```
   SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:
   ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
   ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
   ```

   Die ausgewählten Chiffren weisen *ECDHE* im Namen auf, eine Abkürzung für *Elliptic Curve Diffie-Hellman Ephemeral*. Der Begriff *Ephemeralität* (Flüchtigkeit) gibt die "Forward Secrecy (Folgenlosigkeit)" an. Als Nebenprodukt werden diese Chiffren nicht unterstützt. RC4

   Wir empfehlen, eine explizite Liste von Chiffren zu verwenden, anstatt sich auf Standardeinstellungen oder knappe Richtlinien zu verlassen, deren Inhalt nicht sichtbar ist.

   Kopieren Sie die erzeugte Richtlinie in `/etc/httpd/conf.d/ssl.conf`.
**Anmerkung**  
Obwohl dies hier zur besseren Lesbarkeit auf mehrere Zeilen verteilt ist, muss die Richtlinie in einer einzelnen Zeile mit nur einem Doppelpunkt (ohne Leerstellen) aufgeführt werden, wenn sie nach `/etc/httpd/conf.d/ssl.conf` kopiert wird.

1. Entfernen Sie schließlich die Kommentarzeichen in der folgende Zeile, indem Sie das „\$1“ am Anfang der Zeile löschen.

   ```
   #SSLHonorCipherOrder on
   ```

   Diese Richtlinie zwingt den Server, hochrangige Chiffren zu bevorzugen, einschließlich derjenigen (in diesem Fall), die Forward Secrecy unterstützen. Wenn diese Richtlinie aktiviert ist, versucht der Server, eine hochgradig sichere Verbindung herzustellen, bevor er auf Chiffren mit geringerer Sicherheit zurückgreift.

Nach Abschluss dieser beiden Verfahren speichern Sie die Änderungen in `/etc/httpd/conf.d/ssl.conf` und starten Sie Apache neu.

Wenn Sie die Domain erneut auf [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html) testen, sollten Sie feststellen, dass die RC4 Sicherheitslücke und andere Warnungen behoben sind und die Zusammenfassung etwa wie folgt aussieht.


|  |  | 
| --- |--- |
| Gesamtbewertung | A | 
| Zertifikat | 100 % | 
| Protokollunterstützung | 100 % | 
| Schlüsselaustausch | 90 % | 
| Chiffrestärke | 90 % | 

Mit jeder Aktualisierung von OpenSSL werden neue Chiffren eingeführt und die Unterstützung für ältere entfernt. Behalten Sie Ihre AL2 EC2-Instance up-to-date, achten Sie auf Sicherheitsankündigungen von [OpenSSL](https://www.openssl.org/) und achten Sie auf Berichte über neue Sicherheitslücken in der Fachpresse.

## Fehlerbehebung
<a name="troubleshooting"></a>
+ **Mein Apache-Webserver startet erst, wenn ich ein Passwort eingebe**

  Dieses Verhalten wird erwartet, wenn Sie einen verschlüsselten, passwortgeschützten privaten Serverschlüssel installiert haben.

  Sie können die Verschlüsselungs- und Passwortanforderung vom Schlüssel entfernen. Angenommen, Sie haben einen privaten verschlüsselten RSA-Schlüssel namens `custom.key` im Standardverzeichnis und das Passwort darauf ist **abcde12345**, dann führen Sie die folgenden Befehle auf Ihrer EC2-Instance aus, um eine unverschlüsselte Version des Schlüssels zu erzeugen.

  ```
  [ec2-user ~]$ cd /etc/pki/tls/private/
  [ec2-user private]$ sudo cp custom.key custom.key.bak
  [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt 
  [ec2-user private]$ sudo mv custom.key.nocrypt custom.key
  [ec2-user private]$ sudo chown root:root custom.key
  [ec2-user private]$ sudo chmod 600 custom.key
  [ec2-user private]$ sudo systemctl restart httpd
  ```

  Apache sollte jetzt starten, ohne Sie zur Eingabe eines Passworts aufzufordern.
+  **Ich erhalten Fehlermeldungen, wenn ich sudo yum install -y mod\$1ssl ausführe.**

  Wenn Sie die für SSL erforderlichen Pakete installieren, treten möglicherweise Fehler wie die folgenden auf.

  ```
  Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64
  Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64
  ```

  Dies bedeutet in der Regel, dass Ihre EC2-Instance nicht läuft. AL2 Dieses Tutorial unterstützt nur von einer offiziellen AL2-AMI neu erstellte Instances.

# Tutorial: Hosten Sie einen WordPress Blog auf AL2
<a name="hosting-wordpress"></a>

Die folgenden Verfahren helfen Ihnen bei der Installation, Konfiguration und Sicherung eines WordPress Blogs auf Ihrer AL2-Instance. Dieses Tutorial ist eine gute Einführung in die Verwendung von Amazon EC2, da Sie die volle Kontrolle über einen Webserver haben, auf dem Ihr WordPress Blog gehostet wird, was bei einem herkömmlichen Hosting-Service nicht typisch ist.

Sie sind für das Aktualisieren der Softwarepakete und das Warten der Sicherheitspatches für Ihren Server verantwortlich. Für eine stärker automatisierte WordPress Installation, die keine direkte Interaktion mit der Webserver-Konfiguration erfordert, bietet der CloudFormation Service eine WordPress Vorlage, mit der Sie auch schnell loslegen können. Weitere Informationen finden Sie unter [Erste Schritte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) im *AWS CloudFormation -Benutzerhandbuch*. *Wenn Sie eine Hochverfügbarkeitslösung mit einer entkoppelten Datenbank benötigen, finden Sie weitere Informationen unter [Deployment a High Availability WordPress Website](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html) im Developer Guide.AWS Elastic Beanstalk *

**Wichtig**  
Diese Verfahren sind für die Verwendung mit vorgesehen. AL2 Weitere Informationen zu anderen Verteilungen finden Sie in der jeweiligen Dokumentation. Zahlreiche Schritte in diesem Tutorial funktionieren auf Ubuntu-Instances nicht. Hilfe zur Installation WordPress auf einer Ubuntu-Instanz finden Sie [WordPress](https://help.ubuntu.com/community/WordPress)in der Ubuntu-Dokumentation. Sie können diese Aufgabe auch auf Amazon Linux-, macOS- oder Unix-Systemen ausführen. [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-launch-instance.html)

**Topics**
+ [Voraussetzungen](#hosting-wordpress-prereqs)
+ [Installieren WordPress](#install-wordpress)
+ [Nächste Schritte](#wordpress-next-steps)
+ [Hilfe\$1 Mein öffentlicher DNS-Name hat sich geändert und jetzt funktioniert mein Blog nicht mehr.](#wordpress-troubleshooting)

## Voraussetzungen
<a name="hosting-wordpress-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie eine AL2 Instanz mit einem funktionierenden Webserver mit PHP- und Datenbankunterstützung (entweder MySQL oder MariaDB) gestartet haben, indem Sie alle Schritte unter ausgeführt haben. [Tutorial: Installieren Sie einen LAMP-Server auf AL2](ec2-lamp-amazon-linux-2.md) Dieses Tutorial enthält auch Schritte zum Konfigurieren einer Sicherheitsgruppe, um `HTTP`- und `HTTPS`-Datenverkehr zuzulassen, sowie mehrere Schritte zum Sicherstellen, dass die Dateiberechtigungen für Ihren Webserver richtig festgelegt sind. Informationen zum Hinzufügen von Regeln zu Ihrer Sicherheitsgruppe finden [Sie unter Regeln zu einer Sicherheitsgruppe hinzufügen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

Wir empfehlen dringend, dass Sie der Instance, die Sie zum Hosten eines WordPress Blogs verwenden, eine Elastic IP-Adresse (EIP) zuordnen. Dies verhindert, dass die öffentliche DNS-Adresse für Ihre Instance geändert und Ihre Installation beschädigt wird. Wenn Sie einen Domain-Namen besitzen und für Ihren Blog verwenden möchten, können Sie den DNS-Eintrag für den Domain-Namen so aktualisieren, dass er auf Ihre EIP-Adresse verweist (wenden Sie sich an Ihre Domain-Namen-Registrierungsstelle, wenn Sie dabei Hilfe benötigen). Sie können eine EIP-Adresse kostenlos mit einer aktiven Instance verknüpfen. Weitere Informationen finden Sie unter [Elastische IP-Adressen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) im *Benutzerhandbuch für Amazon EC2*.

Wenn Sie noch keinen Domain-Namen für Ihren Blog haben, können Sie einen Domain-Namen bei Route 53 registrieren und die EIP-Adresse Ihrer Instance mit Ihrem Domain-Namen verknüpfen. Weitere Informationen finden Sie unter [Registrieren von Domain-Namen mithilfe von Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) im *Entwicklerhandbuch für Amazon Route 53*.

## Installieren WordPress
<a name="install-wordpress"></a>

**Option: Abschließen dieses Tutorials mit Automation**  
Um dieses Tutorial mit AWS Systems Manager Automatisierung anstelle der folgenden Aufgaben abzuschließen, führen Sie das [Automatisierungsdokument](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-HostingAWordPressBlog/) aus.

Connect zu Ihrer Instance her und laden Sie das WordPress Installationspaket herunter.

**Um das WordPress Installationspaket herunterzuladen und zu entpacken**

1. Laden Sie das neueste WordPress Installationspaket mit dem **wget** Befehl herunter. Mit dem folgenden Befehl sollte immer die aktuelle Version heruntergeladen werden.

   ```
   [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
   ```

1. Extrahieren Sie das Installationspaket. Der Installationsordner wird in einem Ordner namens extrahier `wordpress`.

   ```
   [ec2-user ~]$ tar -xzf latest.tar.gz
   ```<a name="create_user_and_database"></a>

**Um einen Datenbankbenutzer und eine Datenbank für Ihre WordPress Installation zu erstellen**

Ihre WordPress Installation muss Informationen wie Blogbeiträge und Benutzerkommentare in einer Datenbank speichern. Mit diesem Verfahren können Sie eine Datenbank für Ihren Blog und einen Benutzer mit der Berechtigung zum Lesen und Speichern von Informationen in dieser Datenbank erstellen. 

1. Starten des Datenbankservers.
   + 

     ```
     [ec2-user ~]$ sudo systemctl start mariadb
     ```

1. Melden Sie sich auf dem Datenbankserver als `root`-Benutzer an. Geben Sie Ihr Datenbank-`root`-Passwort ein, wenn Sie dazu aufgefordert werden; dieses kann sich von Ihrem `root`-Systempasswort unterscheiden oder sogar leer bleiben, wenn Sie Ihren Datenbankserver nicht gesichert haben.

   Wenn Sie Ihren Datenbankserver noch nicht gesichert haben, ist es wichtig, dass Sie diesen Schritt durchführen. Weitere Informationen finden Sie unter [Sichern des MariaDB-Servers](ec2-lamp-amazon-linux-2.md#securing-maria-db) (AL2).

   ```
   [ec2-user ~]$ mysql -u root -p
   ```

1. <a name="create_database_user"></a>Erstellen Sie einen Benutzer und ein Passwort für Ihre MySQL-Datenbank. Ihre WordPress Installation verwendet diese Werte, um mit Ihrer MySQL-Datenbank zu kommunizieren. 

   Achten Sie darauf, ein sicheres Passwort für Ihren Benutzer zu erstellen. Verwenden Sie keine einfachen Anführungszeichen ( ' ) in Ihrem Passwort, da diese den vorhergehenden Befehl beschädigen. Verwenden Sie kein bereits vorhandenes Passwort und speichern Sie das Passwort an einem sicheren Ort.

   Geben Sie den folgenden Befehl ein, wobei Sie einen eindeutigen Benutzernamen und ein eindeutiges Passwort einsetzen.

   ```
   CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
   ```

1. <a name="create_database"></a>Erstellen Sie Ihre Datenbank. Geben Sie Ihrer Datenbank einen aussagekräftigen Namen wie `wordpress-db`.
**Anmerkung**  
Die Satzzeichen um den Datenbanknamen im folgenden Befehl heißen „einfache umgekehrte Anführungszeichen“. Die Taste für das einfache umgekehrte Anführungszeichen (```) befindet sich auf einer Standardtastatur in der Regel oberhalb der `Tab`-Taste. Einfache umgekehrte Anführungszeichen sind nicht immer erforderlich, sie ermöglichen Ihnen jedoch die Verwendung von Zeichen in Datenbanknamen, die andernfalls nicht zulässig wären, z. B. Bindestriche.

   ```
   CREATE DATABASE `wordpress-db`;
   ```

1. Gewähren Sie dem WordPress Benutzer, den Sie zuvor erstellt haben, die vollen Rechte für Ihre Datenbank.

   ```
   GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
   ```

1. Löschen Sie die Datenbankrechte, damit alle Ihre Änderungen übernommen werden.

   ```
   FLUSH PRIVILEGES;
   ```

1. Beenden Sie den `mysql`-Client.

   ```
   exit
   ```

**So erstellen und bearbeiten Sie die Datei „wp-config.php“**

Der WordPress Installationsordner enthält eine Beispielkonfigurationsdatei mit dem Namen`wp-config-sample.php`. In diesem Verfahren kopieren und bearbeiten Sie diese Datei, um sie an Ihre individuelle Konfiguration anzupassen.

1. Kopieren Sie die Datei `wp-config-sample.php` in eine Datei namens `wp-config.php`. Dadurch wird eine neue Konfigurationsdatei erstellt und die Originalversion der Beispieldatei als Sicherung aufbewahrt.

   ```
   [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
   ```

1. Bearbeiten Sie die Datei `wp-config.php` mit Ihrem bevorzugten Texteditor (z. B. **nano**oder **vim**) und geben Sie Werte für Ihre Installation ein. Falls Sie keinen bevorzugten Texteditor haben, ist `nano` für den Einstieg geeignet.

   ```
   [ec2-user ~]$ nano wordpress/wp-config.php
   ```

   1. Suchen Sie die Zeile, die `DB_NAME` definiert und ändern Sie `database_name_here` in den Namen der Datenbank, die Sie in [Step 4](#create_database) von [Um einen Datenbankbenutzer und eine Datenbank für Ihre WordPress Installation zu erstellen](#create_user_and_database) erstellt haben.

      ```
      define('DB_NAME', 'wordpress-db');
      ```

   1. Suchen Sie die Zeile, die `DB_USER` definiert und ändern Sie `username_here` in den Namen des Datenbankbenutzers, den Sie in [Step 3](#create_database_user) von [Um einen Datenbankbenutzer und eine Datenbank für Ihre WordPress Installation zu erstellen](#create_user_and_database) erstellt haben.

      ```
      define('DB_USER', 'wordpress-user');
      ```

   1. Suchen Sie die Zeile, die `DB_PASSWORD` definiert und ändern Sie `password_here` in das sichere Passwort, das Sie in [Step 3](#create_database_user) von [Um einen Datenbankbenutzer und eine Datenbank für Ihre WordPress Installation zu erstellen](#create_user_and_database) erstellt haben.

      ```
      define('DB_PASSWORD', 'your_strong_password');
      ```

   1. Suchen Sie den Abschnitt `Authentication Unique Keys and Salts`. Diese `KEY` und `SALT` Werte bieten eine Verschlüsselungsebene für die Browser-Cookies, die WordPress Benutzer auf ihren lokalen Computern speichern. Grundsätzlich wird Ihre Website durch das Hinzufügen langer, zufälliger Werte sicherer. Besuchen Sie [https://api.wordpress. org/secret-key/1.1/salt](https://api.wordpress.org/secret-key/1.1/salt/)/, um nach dem Zufallsprinzip eine Reihe von Schlüsselwerten zu generieren, die Sie kopieren und in Ihre `wp-config.php` Datei einfügen können. Zum Einfügen von Text in ein PuTTY-Terminal platzieren Sie den Mauszeiger dort, wo der Text eingefügt werden soll, und klicken mit der rechten Maustaste innerhalb des PuTTY-Terminals.

      Weitere Informationen zu Sicherheitsschlüsseln finden Sie [unter https://wordpress. org/support/article/editing-wp-config-php/\$1security -keys](https://wordpress.org/support/article/editing-wp-config-php/#security-keys).
**Anmerkung**  
Die folgenden Werte dienen nur als Beispiel; verwenden Sie diese Werte nicht für Ihre Installation.

      ```
      define('AUTH_KEY',         ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-');
      define('SECURE_AUTH_KEY',  'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg');
      define('LOGGED_IN_KEY',    'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3');
      define('NONCE_KEY',        'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj');
      define('AUTH_SALT',        'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h');
      define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv');
      define('LOGGED_IN_SALT',   ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/');
      define('NONCE_SALT',       '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
      ```

   1. Speichern Sie die Datei und beenden Sie den Texteditor.

**Um Ihre WordPress Dateien im Apache Document Root zu installieren**
+ Nachdem Sie den Installationsordner entpackt, eine MySQL-Datenbank und einen MySQL-Benutzer erstellt und die WordPress Konfigurationsdatei angepasst haben, können Sie Ihre Installationsdateien in den Dokumentenstamm Ihres Webservers kopieren, damit Sie das Installationsskript ausführen können, das Ihre Installation abschließt. Der Speicherort dieser Dateien hängt davon ab, ob Ihr WordPress Blog im eigentlichen Stammverzeichnis Ihres Webservers (z. B.`my.public.dns.amazonaws.com`) oder in einem Unterverzeichnis oder Ordner unter dem Stammverzeichnis (z. B.) verfügbar sein soll. `my.public.dns.amazonaws.com/blog`
  + Wenn Sie es im Stammverzeichnis Ihres Dokuments ausführen WordPress möchten, kopieren Sie den Inhalt des WordPress-Installationsverzeichnisses (aber nicht das Verzeichnis selbst) wie folgt: 

    ```
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
    ```
  + Wenn Sie in einem alternativen Verzeichnis unter dem Dokumentenstamm ausführen möchten WordPress , erstellen Sie zuerst dieses Verzeichnis und kopieren Sie dann die Dateien in dieses Verzeichnis. In diesem Beispiel WordPress wird aus dem Verzeichnis ausgeführt`blog`:

    ```
    [ec2-user ~]$ mkdir /var/www/html/blog
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/
    ```

**Wichtig**  
Wenn Sie nicht umgehend mit dem nächsten Verfahren fortfahren, beenden Sie aus Sicherheitsgründen den Apache-Webserver (`httpd`) jetzt. Nachdem Sie Ihre Installation in das Apache Document Root verschoben haben, ist das WordPress Installationsskript ungeschützt und ein Angreifer könnte sich Zugriff auf Ihr Blog verschaffen, wenn der Apache-Webserver läuft. Zum Beenden des Apache-Webservers geben Sie den Befehl **sudo systemctl stop httpd**. Wenn Sie mit dem nächsten Verfahren fortfahren, müssen Sie den Apache-Webserver nicht beenden.

**Um die Verwendung von WordPress Permalinks zu ermöglichen**

WordPress Permalinks müssen `.htaccess` Apache-Dateien verwenden, um ordnungsgemäß zu funktionieren. Dies ist jedoch unter Amazon Linux standardmäßig nicht aktiviert. Verwenden Sie dieses Verfahren, um alle Überschreibungen im Dokumenten-Stammverzeichnis von Apache zuzulassen.

1. Öffnen Sie die Datei `httpd.conf` mit einem Texteditor Ihrer Wahl (z. B. **nano** oder **vim**). Falls Sie keinen bevorzugten Texteditor haben, ist `nano` für den Einstieg geeignet.

   ```
   [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
   ```

1. Suchen Sie den Abschnitt, der mit beginn `<Directory "/var/www/html">`.

   ```
   <Directory "/var/www/html">
       #
       # Possible values for the Options directive are "None", "All",
       # or any combination of:
       #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
       #
       # Note that "MultiViews" must be named *explicitly* --- "Options All"
       # doesn't give it to you.
       #
       # The Options directive is both complicated and important.  Please see
       # http://httpd.apache.org/docs/2.4/mod/core.html#options
       # for more information.
       #
       Options Indexes FollowSymLinks
   
       #
       # AllowOverride controls what directives may be placed in .htaccess files.
       # It can be "All", "None", or any combination of the keywords:
       #   Options FileInfo AuthConfig Limit
       #
       AllowOverride None
   
       #
       # Controls who can get stuff from this server.
       #
       Require all granted
   </Directory>
   ```

1. Ändern Sie die Zeile `AllowOverride None` im Abschnitt oben in `AllowOverride All`.
**Anmerkung**  
Diese Datei enthält mehrere `AllowOverride`-Zeilen; achten Sie unbedingt darauf, die Zeile im Abschnitt `<Directory "/var/www/html">` zu ändern.

   ```
   AllowOverride All
   ```

1. Speichern Sie die Datei und beenden Sie den Text-Editor.

**Um die PHP-Grafikbibliothek zu installieren auf AL2**  
Mit der GD-Bibliothek für PHP können Sie Bilder bearbeiten. Installieren Sie diese Bibliothek wie folgt, wenn Sie das Header-Image für Ihren Blog zuschneiden müssen. Für die Version phpMyAdmin , die Sie installieren, ist möglicherweise eine bestimmte Mindestversion dieser Bibliothek erforderlich (z. B. Version 7.2).

Verwenden Sie den folgenden Befehl, um die PHP-Grafikzeichnungsbibliothek auf zu installieren AL2. Wenn Sie beispielsweise php7.2 im amazon-linux-extras Rahmen der Installation des LAMP-Stacks installiert haben, installiert dieser Befehl Version 7.2 der PHP-Grafikzeichnungsbibliothek.

```
[ec2-user ~]$ sudo yum install php-gd
```

Verwenden Sie den folgenden Befehl, um die installierte Version zu überprüfen:

```
[ec2-user ~]$ sudo yum list installed php-gd
```

Das Folgende ist eine Beispielausgabe:

```
php-gd.x86_64                     7.2.30-1.amzn2             @amzn2extra-php7.2
```

**So beheben Sie Probleme mit den Dateizugriffsberechtigungen für den Apache-Webserver**

Für einige der verfügbaren Funktionen ist Schreibzugriff auf das Apache Document Root WordPress erforderlich (z. B. das Hochladen von Medien über die Administrationsbildschirme). Falls Sie dies noch nicht getan haben, wenden Sie die folgenden Gruppenmitgliedschaften und -berechtigungen an (wie in der [Tutorial: Installieren Sie einen LAMP-Server auf AL2](ec2-lamp-amazon-linux-2.md) ausführlicher beschrieben).

1. Machen Sie den `/var/www`-Benutzer zum Eigentümer der Datei `apache` und ihrer Inhalte.

   ```
   [ec2-user ~]$ sudo chown -R apache /var/www
   ```

1. Machen Sie die `/var/www`-Gruppe zum Eigentümer der Datei `apache` und ihrer Inhalte.

   ```
   [ec2-user ~]$ sudo chgrp -R apache /var/www
   ```

1. Ändern Sie die Verzeichnisberechtigungen von `/var/www` und deren Unterverzeichnissen, indem Sie Schreibberechtigungen für die Gruppe hinzufügen und die Gruppen-ID für zukünftige Unterverzeichnisse einrichten.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www
   [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Ändern Sie die Dateiberechtigungen von `/var/www` und deren Unterverzeichnissen rekursiv.

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0644 {} \;
   ```
**Anmerkung**  
 Wenn Sie beabsichtigen, ihn auch WordPress als FTP-Server zu verwenden, benötigen Sie hier großzügigere Gruppeneinstellungen. Bitte lesen Sie die empfohlenen [Schritte und Sicherheitseinstellungen unter](https://wordpress.org/support/article/changing-file-permissions/), WordPress um dies zu erreichen. 

1. Starten Sie den Apache-Webserver neu, damit die neue Gruppe und die neuen Berechtigungen übernommen werden.
   + 

     ```
     [ec2-user ~]$ sudo systemctl restart httpd
     ```

**Führen Sie das WordPress Installationsskript mit aus AL2**

Sie sind bereit zur Installation WordPress. Welche Befehle zu verwenden sind, ist vom Betriebssystem abhängig. Die Befehle in diesem Verfahren sind für die Verwendung mit bestimmt AL2.

1. Stellen Sie mit dem Befehl **systemctl** sicher, dass die `httpd`- und Datenbankdienste bei jedem Systemstart gestartet werden.

   ```
   [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
   ```

1. Überprüfen Sie, ob der Datenbankserver ausgeführt wird.

   ```
   [ec2-user ~]$ sudo systemctl status mariadb
   ```

   Wenn der Datenbankdienst nicht ausgeführt wird, starten Sie ihn.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Überprüfen Sie, ob Ihr Apache-Webserver (`httpd`) ausgeführt wird.

   ```
   [ec2-user ~]$ sudo systemctl status httpd
   ```

   Wenn der `httpd`-Dienst nicht ausgeführt wird, starten Sie ihn.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1. Geben Sie in einem Webbrowser die URL Ihres WordPress Blogs ein (entweder die öffentliche DNS-Adresse für Ihre Instanz oder die Adresse, gefolgt vom `blog` Ordner). Sie sollten das WordPress Installationsskript sehen. Geben Sie die für die WordPress Installation erforderlichen Informationen ein. Klicken Sie auf **Installieren WordPress**, um die Installation abzuschließen. Weitere Informationen finden Sie unter [Schritt 5: Ausführen des Installationsskripts](https://wordpress.org/support/article/how-to-install-wordpress/#step-5-run-the-install-script) auf der WordPress Website.

## Nächste Schritte
<a name="wordpress-next-steps"></a>

Nachdem Sie Ihren WordPress Blog getestet haben, sollten Sie erwägen, seine Konfiguration zu aktualisieren.

**Verwenden eines benutzerdefinierten Domain-Namens**  
Wenn ein Domain-Name mit der EIP-Adresse Ihrer EC2 Instance verknüpft ist, können Sie Ihren Blog für die Verwendung dieses Namens anstatt der öffentlichen DNS-Adresse von EC2 konfigurieren. Weitere Informationen finden Sie unter [Ändern der Site-URL](https://wordpress.org/support/article/changing-the-site-url/) auf der WordPress Website.

**Konfigurieren Ihres Blogs**  
Sie können Ihren Blog für die Verwendung verschiedener [Designs](https://wordpress.org/themes/) und [Plugins](https://wordpress.org/plugins/) konfigurieren, um Ihren Lesern eine persönlich angepasste Umgebung zu bieten. Bisweilen kann der Installationsprozess jedoch fehlschlagen und zum Verlust des gesamten Blogs führen. Wir empfehlen dringend, eine Amazon Machine Image (AMI)-Sicherung Ihrer Instance zu erstellen, bevor Sie versuchen, Designs oder Plug-Ins zu installieren, damit Sie Ihren Blog wiederherstellen können, falls bei der Installation ein Fehler auftritt. Weitere Informationen finden Sie unter [Erstellen Sie Ihr eigenes AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami).

**Erhöhen der Kapazität**  
Wenn Ihr WordPress Blog immer beliebter wird und Sie mehr Rechenleistung oder Speicherplatz benötigen, sollten Sie die folgenden Schritte in Betracht ziehen:
+ Erweitern Sie den Speicherplatz auf Ihrer Instance. Weitere Informationen finden Sie unter [Amazon EBS Elastic Volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modify-volume.html) im *Amazon-EBS-Benutzerhandbuch*.
+ Verschieben Sie Ihre MySQL-Datenbank zu [Amazon RDS](https://aws.amazon.com/rds), um die Möglichkeit zur einfachen Skalierung dieses Services zu nutzen.

**Verbesserung der Netzwerkleistung Ihres Internetverkehrs**  
Wenn Sie erwarten, dass Ihr Blog den Traffic von Nutzern auf der ganzen Welt steigern wird, sollten Sie [AWS Global Accelerator](https://aws.amazon.com/global-accelerator) in Betracht ziehen. Global Accelerator hilft Ihnen dabei, die Latenz zu senken, indem es die Leistung des Internetverkehrs zwischen den Client-Geräten Ihrer Benutzer und Ihrer WordPress Anwendung, auf der ausgeführt wird, verbessert AWS. Global Accelerator nutzt das [AWS globale Netzwerk](https://aws.amazon.com/about-aws/global-infrastructure/global_network/), um den Datenverkehr an einen funktionierenden Anwendungsendpunkt in der AWS Region weiterzuleiten, die dem Client am nächsten ist.

**Erfahren Sie mehr über WordPress**  
Informationen dazu WordPress finden Sie in der WordPress Codex-Hilfedokumentation unter [http://codex.wordpress.org/](http://codex.wordpress.org/).

Weitere Informationen zur Problembehandlung bei Ihrer Installation finden Sie unter [Häufige Installationsprobleme](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems).

Informationen dazu, wie Sie Ihr WordPress Blog sicherer machen können, finden Sie unter [Hardening WordPress](https://wordpress.org/support/article/hardening-wordpress/).

Informationen dazu, wie Sie Ihr WordPress Blog behalten up-to-date, finden Sie unter [Aktualisieren WordPress](https://wordpress.org/support/article/updating-wordpress/).

## Hilfe\$1 Mein öffentlicher DNS-Name hat sich geändert und jetzt funktioniert mein Blog nicht mehr.
<a name="wordpress-troubleshooting"></a>

Ihre WordPress Installation wird automatisch mit der öffentlichen DNS-Adresse für Ihre EC2-Instance konfiguriert. Wenn Sie die Instance anhalten und neu starten ändert sich die öffentliche DNS-Adresse (es sei denn, sie ist mit einer Elastic IP-Adresse) und Ihr Blog funktioniert nicht mehr, da er auf Ressourcen an einer Adresse verweist, die nicht mehr vorhanden (oder einer anderen EC2 Instance zugewiesen) ist. Eine detailliertere Beschreibung des Problems und mehrere mögliche Lösungen finden Sie unter [Ändern der Site-URL.](https://wordpress.org/support/article/changing-the-site-url/)

Wenn dies bei Ihrer WordPress Installation passiert ist, können Sie Ihr Blog möglicherweise mit dem folgenden Verfahren wiederherstellen, bei dem die **wp-cli** Befehlszeilenschnittstelle für verwendet wird WordPress.

**Um die URL Ihrer WordPress Website mit dem zu ändern **wp-cli****

1. Stellen Sie eine Verbindung mit Ihrer EC2 Instance über SSH her. 

1. Notieren Sie die alte und die neue Website-URL für Ihre Instance. Die alte Site-URL ist wahrscheinlich der öffentliche DNS-Name für Ihre EC2-Instance bei der Installation WordPress. Die neue Website-URL ist der aktuelle öffentliche DNS-Name für Ihre EC2 Instance. Wenn Sie nicht sicher sind, was Ihre alte Website-URL ist, können Sie sie mit dem folgenden Befehl mithilfe von **curl** ermitteln.

   ```
   [ec2-user ~]$ curl localhost | grep wp-content
   ```

   In der Ausgabe, die folgendermaßen aussieht (alte Website-URL in rot) sollten Referenzen auf Ihren alten öffentlichen DNS-Namen enthalten sein:

   ```
   <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
   ```

1. Laden Sie das **wp-cli** mit dem folgenden Befehl herunter.

   ```
   [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
   ```

1. Suchen und ersetzen Sie die alte Site-URL in Ihrer WordPress Installation durch den folgenden Befehl. Ersetzen Sie die alten und neuen Site-URLs für Ihre EC2-Instance und den Pfad zu Ihrer WordPress Installation (normalerweise `/var/www/html` oder`/var/www/html/blog`).

   ```
   [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
   ```

1. Geben Sie in einem Webbrowser die neue Site-URL Ihres WordPress Blogs ein, um zu überprüfen, ob die Website wieder ordnungsgemäß funktioniert. Ist dies nicht der Fall, finden Sie weitere Informationen unter [Ändern der Site-URL](https://wordpress.org/support/article/changing-the-site-url/) und [Häufige Installationsprobleme](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems).