Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Er verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, Mandanten und Compartments. Ersetzen Sie diese Werte beim Durchführen Ihrer Übung durch spezifische Werte für Ihre Cloud-Umgebung.
Nextcloud auf Ampere A1 auf Oracle Cloud Infrastructure bereitstellen
In diesem Tutorial installieren Sie Nextcloud, die gängige Open-Source-Zusammenarbeitsplattform auf Oracle Cloud Infrastructure (OCI). Sie verwenden eine einzelne Ampere-A1-Compute-Instanz für den Nextcloud-Server. Außerdem führen Sie Nextcloud als eine Gruppe von Containern mit Podman aus. Podman ist eine Container-Engine zur Verwaltung und Ausführung von Containern anhand der Open Container Initiative-Standards. Er bietet vollständige API-Kompatibilität mit Docker und dient als Ersatz für den Befehl docker
. Sie bietet jedoch einige Vorteile im Vergleich zu Docker, zu denen eine Daemonless-Architektur, Support für rootless-Container und cgroupsv2-Support gehören.
Nextcloud bietet Docker-Containerimages an, die die Arm-Architektur unterstützen. Nextcloud erfordert auch eine Datenbank, für die wir MySQL oder MariaDB verwenden können. Für skalierbarere Deployments können Sie den MySQL-Datenbankservice auf OCI in Erwägung ziehen, um Ihre MySQL-Datenbank einfach zu skalieren, zu sichern und zu verwalten.
In einem Container erstellte Daten werden nicht persistiert, und Nextcloud erfordert persistenten Speicher, um die hochgeladenen Dateien und den internen Status zu speichern. Um Daten dauerhaft zu speichern, können wir Volumes mit dem OCI Block Storage-Service verwenden. Ein Volume ist ein Speichergerät, das von Podman erstellt und verwaltet wird. Volumes werden direkt mit dem Befehl podman volume
oder während der Containererstellung erstellt.
Um die webbasierte Nextcloud-UI und die Services zu aktivieren, müssen wir die erforderlichen Änderungen an der OCI-Netzwerksicherheitsliste vornehmen, um Traffic zuzulassen.
Mit diesen Komponenten steht eine grundlegende Topologie für unser Deployment zur Verfügung.
Beschreibung der Abbildung arch.png
Einführung
Ziele
In diesem Tutorial führen Sie die folgenden Aktionen aus:
- Ampere A1 Compute-Instanz erstellen
- Compute-Instanz für das Deployment containerisierter Anwendungen vorbereiten
- Stellen Sie Nextcloud als eine Gruppe von Containern bereit.
- Verbinden Sie die Anwendungs- und Setupdateisynchronisierung.
- Deployments bereinigen
Voraussetzungen
- Ein Oracle Free Tier (Testversion), kostenpflichtig oder LiveLabs Cloud-Account
- Vertrautheit mit der OCI-Konsole
- Networking - Überblick
- Vertrautheit mit Compartments
- Grundlegende konzeptionelle Kenntnisse in Containern und Podman
Umgebung einrichten
Initiieren Sie zunächst die Oracle-Cloud-Umgebung, mit der Sie Ihre Java EE-Anwendung erstellen und bereitstellen können. Diese Umgebung wird in einem Cloud-Compartment enthalten sein, und die Kommunikation im Compartment erfolgt über ein virtuelles Cloud-Netzwerk (VCN). Compartment und VCN isolieren und sichern die Gesamtumgebung. Sie stellen die Ampere A1 Compute-Instanz bereit, um den Nextcloud-Server zu hosten. Nachdem die Compute-Instanz erstellt wurde, richten Sie Zugriffs-Policys ein, um die Anwendung verfügbar zu machen und Nextcloud auf Ihrer Instanz zu installieren.
Grundlegendes OCI-Infrastruktur-Setup
-
Öffnen Sie das Navigationsmenü. Gehen Sie unter "Governance und Administration" zu Identität, und klicken Sie auf Compartments. In diesem Bildschirm wird eine Liste der Compartments angezeigt, und klicken Sie auf Compartment erstellen.
-
Geben Sie Folgendes ein:
- Name: Geben Sie "AppDev" ein.
- Beschreibung: Geben Sie eine Beschreibung ein (erforderlich). Beispiel: "AppDev compartment für das Tutorial für die ersten Schritte". Geben Sie dabei keine vertraulichen Informationen ein.
- Übergeordnetes Compartment: Wählen Sie das Compartment aus, in dem dieses Compartment gespeichert werden soll. Wird standardmäßig auf das Root-Compartment (oder den Mandanten) gesetzt.
- Klicken Sie auf Compartment erstellen.
- Das Compartment wird in der Liste angezeigt.
Ampere A1 Compute-Instanz erstellen
-
Um eine Ampere-A1-Compute-Instanz zu erstellen, verwenden Sie das Navigationsmenü oben links in der Konsole, und gehen Sie zu Compute > Instanzen.
-
Öffnen Sie den Ablauf zum Erstellen der Instanz.
- Stellen Sie sicher, dass Sie sich im Compartment AppDev befinden
- Klicken Sie auf Instanz erstellen.
-
Auf der Seite "Instanz erstellen" erstellen Sie die neue Instanz zusammen mit den neuen Netzwerkressourcen, wie virtuelle Cloud-Netzwerke (VCN), Internetgateway (IG) und mehr.
- Benennen Sie die Instanz Nextcloud.
- Bildauswahl aktualisieren, um Oracle Linux 8 oder höher zu verwenden
- Klicken Sie auf die Schaltfläche Ausprägung ändern, um die verfügbaren Compute-Ausprägungen anzuzeigen.
-
Konfigurieren Sie das Image für die Instanz.
- Klicken Sie auf die Schaltfläche Image ändern, um verfügbare BS-Images anzuzeigen.
- Wählen Sie Oracle Linux 8 oder höher.
-
Konfigurieren Sie die Ressourcen für Ihre Instanz.
- Wählen Sie den auf Ampere Arm basierenden Prozessor in der Wahl für Shape Series.
- Wählen Sie die Ausprägung
VM.Standard.A1.Flex
aus der Liste der Ausprägungen mit Ampere Arm-basierten Prozessoren aus. Ampere A1-Ausprägungen sind flexibel, und Sie können die Anzahl der Cores und den Arbeitsspeicher ändern. Wählen Sie 1 Core- und 6 GB Arbeitsspeicher für die VM.
-
Wählen Sie Ihre Netzwerkoptionen aus. Erstellen Sie ein neues VCN und Subnetz für das nächste Cloud-Deployment. Stellen Sie sicher, dass Sie eine öffentliche IP-Adresse für Ihre Instanz zuweisen.
-
Generieren Sie das SSH-Schlüsselpaar, und laden Sie es herunter. Dieser Schritt ist optional, wird aber für spätere Wartungs- und Upgrades unbedingt empfohlen. Sie können Ihren Public Key auch verwenden, wenn Sie bereits ein Schlüsselpaar verwenden möchten. Wenn Sie wissen möchten, wie SSH-Schlüssel generiert werden sollen, befolgen Sie die Anweisungen im Tutorial "SSH-Schlüssel generieren".
-
Klicken Sie auf Erstellen, um die Netzwerkressourcen zu erstellen und die Compute-Instanz zu starten.
Anwendungsports für Benutzer bereitstellen
Damit Anwendungen über das Internet zugänglich sind, müssen Sie die Ports öffnen, die unsere Anwendung verwenden wird. In diesem Abschnitt konfigurieren Sie Sicherheitslisten in Ihrem Cloud-Netzwerk und Firewallregeln in Ihrer Compute-Instanz, damit Ihre Anwendungen Traffic senden und empfangen können.
Virtuelles Cloud-Netzwerk (VCN) konfigurieren
Eine Sicherheitsliste dient als virtuelle Firewall für eine Instanz. Mithilfe von Ingress- und Egress-Regeln wird angegeben, welche Traffictypen gesendet und empfangen werden sollen. Sicherheitslisten, wie auf Subnetzebene konfiguriert, wodurch die Sicherheitsregeln auf alle Netzwerkelemente in diesem Subnetz angewendet werden. Im Netzwerk ist eine Standardsicherheitsliste enthalten, die ein anfängliches Regelset enthält. Mit der Standardsicherheitsliste können Sie eine SSH-Verbindung zur Instanz herstellen, und Ihre Instanz kann ausgehende Netzwerkaufrufe an jedes Ziel ausführen.
- Navigieren Sie auf der Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz
-
Navigieren Sie zu dem Subnetz, dem Ihre Instanz zugeordnet ist, indem Sie auf das Subnetz klicken
- Wählen Sie im Subnetz die Standardsicherheitsliste aus
- Klicken Sie auf "Ingress-Regel hinzufügen", um eine neue Regel hinzuzufügen, die eingehenden Traffic zulässt, der mit den Regeln übereinstimmt.
- Ingress-Regel hinzufügen, um eingehenden Traffic auf Port 8080 zuzulassen
- Setzen Sie das Quell-CIDR auf
0.0.0.0/0
. Dies ermöglicht eingehenden Traffic von allen Quellen. - Setzen Sie den Zielportbereich auf
8080
. Dadurch wird das Ziel nur auf Port8080
gesetzt. Die Regel lässt jetzt zu, dass Traffic von allen Quellen Port8080
verwendet. Das brauchen wir, damit unsere Anwendung von überall aus erreicht werden kann. -
Geben Sie eine Beschreibung an.
- Setzen Sie das Quell-CIDR auf
Ihre Instanz konfigurieren
Firewallregeln steuern den Verkehr auf Paketebene in oder aus einer Instanz. Sie konfigurieren Firewallregeln direkt in der Instanz selbst und stellen eine zusätzliche Sicherheitsebene bereit.
- Navigieren Sie auf der Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz
- Kopieren Sie die öffentliche IP-Adresse Ihrer Instanz.
- Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den Schlüssel, den Sie beim Erstellen der Instanz generiert oder angegeben haben. Der Standardbenutzername für Instanzen, die das Oracle Linux-Betriebssystem verwenden, lautet
opc
. -
Führen Sie die Firewallkonfigurationsbefehle aus. Dadurch wird die Firewall in der Instanz selbst geändert, um Port
8080
verfügbar zu machen und eingehenden Traffic zu akzeptieren.sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Nextcloud auf Ampere A1 bereitstellen
Jetzt können Sie Nextcloud auf der Ampere A1 Compute-Plattform als Container-Deployment ausführen. Außerdem verwenden Sie die neuen Containertools wie Podman, die in Oracle Linux 8 enthalten sind. Podman stellt ein einfaches Utility zur Ausführung und Verwaltung von mit Open Container Initiative (OCI) kompatiblen Containern bereit. Ein Podman-Deployment kann vorhandene Containerimages wiederverwenden. Podman benötigt keinen laufenden Daemon und ermöglicht das Starten und Ausführen von Containern ohne Root-Berechtigungen. Weitere Informationen zu Podman unter Oracle Linux finden Sie in der offiziellen Dokumentation
Container-Tools installieren
Nachdem die Instanz mit Oracle Linux 8.x erstellt wurde, können wir das Package container-tools
installieren, um die Instanz mit den erforderlichen Tools für das Deployment containerisierter Workloads vorzubereiten.
-
Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den Schlüssel, den Sie beim Erstellen der Instanz generiert oder angegeben haben. Der Standardbenutzername für Instanzen, die auf dem Oracle Linux-Betriebssystem ausgeführt werden, lautet
opc
. -
Installieren Sie das
container-tools
-Modul, das alle Tools bereitstellt, die für die Arbeit mit Containern erforderlich sind.sudo dnf module install container-tools:ol8
sudo dnf install git
Poddefinition erstellen
Podman kann Containergruppen verwalten, die als Pods bezeichnet werden. Pods sind formell eine Gruppe aus einem oder mehreren Containern, die dieselben Netzwerk-, PID- und IPC-Namespaces verwenden. Dieses Konzept wurde ursprünglich vom Kubernetes-Projekt eingeführt, und Podman-Pods ähneln Kubernetes-Pods.
Ein Pod verhält sich in vielerlei Hinsicht wie ein virtueller Host, auf dem die Services in den einzelnen Containern ausgeführt werden. Das bedeutet, dass jeder Container auf die Services in jedem anderen Container zugreifen kann, als ob er auf demselben Host ausgeführt würde. Die Ausführung von Containern auf diese Weise kann große Komplexität in Bezug auf Netzwerke beseitigen und die öffentliche Belastung von Ports einfacher einschränken, die nur für die Verwendung durch Services innerhalb der Anwendung selbst vorgesehen sind.
Pods bieten eine hervorragende Möglichkeit, verwandte Container zu verwalten, beispielsweise wenn eine Anwendung aus mehreren Containern besteht. In diesem Tutorial stellen Sie Nextcloud als Pod bereit. Die für NextCloud erforderlichen Container sind in unserem Pod enthalten und werden gemeinsam gestartet und gestoppt. Der erste Schritt beim Verwalten unserer Anwendung als Pod ist das Erstellen einer leeren Poddefinition.
Pod mit dem folgenden Befehl erstellen
podman pod create --hostname nextcloud --name nextcloud --publish 8080:80 --infra-image k8s.gcr.io/pause:3.1
podman pod create
: Erstellt einen Pod.--hostname nextcloud
: Legt den Hostnamen für den Pod alsnextcloud
fest--name nextcloud
: Legt den Namen des Pods alsnextcloud
fest--publish 8080:80
: Veröffentlichen Sie Port80
auf dem Pod in Port8080
auf dem Host.
Speicherdatenträger definieren
Nachdem der Pod definiert wurde, sollten wir auch einige Speicheroptionen definieren, bevor wir den Pod mit unseren Containern füllen. Container verwenden schreibbare Container-Ebenen standardmäßig für alle Dateien, die in einem Container erstellt wurden. Das bedeutet, dass die von den Prozessen in einem Container erstellten Dateien und Daten nicht dauerhaft gespeichert werden und verloren gehen, wenn der Container entfernt oder beendet wird. Außerdem wird die gemeinsame Nutzung der Daten über Container erschwert. Mit Volumes werden Daten, die von Containern erstellt wurden, bevorzugt persistiert. Sie können sich als Speicherabstraktionen für Speicherorte auf dem Hostrechner vorstellen, werden aber unabhängig vom Lebenszyklus des Containers verwaltet. Außerdem wird die gemeinsame Nutzung von Daten zwischen Containern vereinfacht, indem sie gleichzeitig in mehreren Containern gemountet werden.
Basierend auf Nextcloud-Empfehlungen verwenden wir 3 Volumes zur Datenverwaltung.
-
Das Volume mit dem Namen
nextcloud-appdata
speichert den Hauptanwendungsstatus für die nächste Cloud -
Das Volume mit dem Namen
nextcloud-files
speichert die von Verwendungen hochgeladenen und erstellten Dateien. -
Das Volume mit dem Namen
nextcloud-db
speichert die Datenbankdateien für die MySQL-Datenbank.podman volume create nextcloud-appdata podman volume create nextcloud-files podman volume create nextcloud-db
MySQL Database ausführen
Jetzt können Sie die Datenbank für Nextcloud mit dem angehängten Volume starten. Der Datenbankcontainer wird im bereits erstellten Pod gestartet. Die von Nextcloud verwendete Datenbank ist MySQL, und hier wird sie als Container im Pod ausgeführt. Für ein robusteres und vollständig verwaltetes Deployment können Sie diesen Container durch den OCI MySQL-Datenbankservice ersetzen.
Der Befehl zum Starten der Datenbank wird im Folgenden gezeigt, und jede der Optionen wird erläutert.
Hinweis: Stellen Sie sicher, dass Sie sichere Kennwörter für die Variablen
MYSQL_PASSWORD
undMYSQL_ROOT_PASSWORD
unten angeben.
podman run --detach --pod=nextcloud \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env MYSQL_ROOT_PASSWORD=MYSQL_ROOT_PASSWORD \
--volume nextcloud-db:/var/lib/mysql:Z \
--restart on-failure \
--name nextcloud-db \
mysql/mysql-server:8.0
podman run
: Der Ausführungsbefehl weist podman an, einen Befehl in einem Container mit den angegebenen Parametern auszuführen. Der auszuführende Befehl wird in der Regel im Image selbst definiert.--detach
: Getrennter Modus: Führen Sie den Container im Hintergrund aus, und drucken Sie die neue Container-ID.--pod=nextcloud
: Führen Sie den Container in einem vorhandenen Pod aus. Hier haben wir uns für die Ausführung des Container-Intents entschieden, den wir zuvor für Nextcloud erstellt haben.--env
: Legt beliebige Umgebungsvariablen fest. Auf diese Umgebungsvariablen können die Prozesse zugreifen, die im Container ausgeführt werden.--volume nextcloud-db:/var/lib/mysql:Z
: Hängt das Volume mit dem Namennextcloud-db
an dem Speicherort/var/lib/mysql
, dem Standardspeicherort für MySQL-Datendateien, ein. Die OptionZ
weist Podman an, den Inhalt mit einem privaten, nicht gemeinsam verwendeten Label zu beschriften.--restart on-failure
: Starten Sie die Policy neu, wenn Container beendet werden. Hier wird der Container bei einem Ausfall neu gestartet. Ein Fehler tritt auf, wenn der Prozess im Container mit einem Status ungleich Null vorhanden ist.--name nextcloud-db
: Weist dem Container den Namennextcloud-db
zu.mysql/mysql-server:8.0
: Das Image, das zum Erstellen des Containers ausgeführt werden soll
Da Sie den Container im getrennten Modus ausführen, startet Podman ihn im Hintergrund und wird beendet. Um den Status des Startvorgangs und der Logs anzuzeigen, können Sie den folgenden Befehl ausführen. Drücken Sie Ctrl+C
, um die Befolgung der Logs zu stoppen.
podman logs -f nextcloud-db
Nextcloud bereitstellen
Jetzt können Sie Nextcloud selbst als einen anderen Container in demselben Pod bereitstellen. Die Parameter ähneln dem vorherigen Befehl, und hier übergeben Sie die Datenbankkonnektivitätsdetails zur Datenbank, die Nextcloud verwenden soll.
Hinweis: Stellen Sie sicher, dass die Werte für die Variablen
MYSQL_DATABASE
,MYSQL_USER
undMYSQL_PASSWORD
identisch sind, die Sie beim Starten der Datenbank angegeben haben. Stellen Sie sicher, dass Sie die Werte fürNEXTCLOUD_ADMIN_USER
undNEXTCLOUD_ADMIN_PASSWORD
nach Ihrer Wahl aktualisieren.
podman run --detach --pod=nextcloud \
--env MYSQL_HOST=127.0.0.1 \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env NEXTCLOUD_ADMIN_USER=NC_ADMIN \
--env NEXTCLOUD_ADMIN_PASSWORD=NC_PASSWORD \
--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP> \
--volume nextcloud-appdata:/var/www/html:Z \
--volume nextcloud-files:/var/www/html/data:Z \
--restart on-failure \
--name nextcloud-app \
docker.io/library/nextcloud:21
--env MYSQL_HOST=127.0.0.1
: Da sich sowohl die Datenbank als auch die Anwendung im selben Pod befinden, kann die Anwendung mit127.0.0.1
auf den Datenbankcontainer zugreifen, als würden sie beide auf demselben Host ausgeführt.--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP>
: Vertrauenswürdige Domains sind ein Sicherheitsfeature, das von Nextcloud verwendet wird. Sie müssen die Liste jeder Domain angeben, auf der auf Ihre Nextcloud zugegriffen werden kann. In diesem Fall handelt es sich um die öffentliche IP-Adresse der Instanz. Hier erwarten wir die Ausführung von Nextcloud.
Sie können die Startup-Logs wie folgt anzeigen:
podman logs -f nextcloud-app
Wenn der Start abgeschlossen ist, können Sie zu http://<your_public_ip>:8080
navigieren, um zu Ihrem Nextcloud-Server zu gelangen. Verwenden Sie die Werte, die Sie für NEXTCLOUD_ADMIN_USER
und NEXTCLOUD_ADMIN_PASSWORD
angegeben haben, um sich anzumelden.
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Deploy Nextcloud on Ampere A1 on Oracle Cloud Infrastructure
F50343-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.