Developer Advocate
Server-Automatisierung spielt aufgrund der Löschbarkeit von modernen Anwendungsumgebungen eine wesentliche Rolle bei der Systemverwaltung. Konfigurationsverwaltungs-Tools wie Ansible werden üblicherweise verwendet, um den Prozess der automatischen Servereinrichtung zu optimieren, indem Standardverfahren für neue Server festgelegt und menschliche Fehler in Zusammenhang mit manueller Einrichtung reduziert werden.
Ansible bietet eine einfache Architektur, die keiner speziellen Software für die Installation auf Knoten bedarf. Des Weiteren bietet es eine Reihe stabiler Funktionen und integrierter Module, die das Schreiben von Automatisierungsskripts erleichtern.
Dieser Leitfaden erklärt, wie Sie die Schritte in unserem Leitfaden So installieren Sie Linux, Apache, MySQL und PHP (LAMP) auf Ubuntu 18.04 mit Ansible automatisieren können. Ein „LAMP“-Stack ist eine aus Open-Source-Software bestehende Gruppe, die normalerweise zusammen installiert wird, damit ein Server dynamische Websites und Web-Apps hosten kann. Dieser Begriff ist ein Acronym, das für das Linux Betriebssystem mit dem Apache Webserver steht. Die Daten dieser Site werden in einer MySQL-Datenbank gespeichert, und der dynamische Inhalt wird von PHP verarbeitet.
Für die automatisierte Einrichtung anhand des Playbooks, das wir in diesem Leitfaden besprechen, benötigen Sie Folgendes:
Gehen Sie zunächst sicher, dass Ihr Ansible-Steuerknoten sich verbinden und Befehle auf Ihrem/Ihren Ansible-Host(s) ausführen kann. Infos zu einem Verbindungstest finden Sie in Schritt 3 unter So installieren und konfigurieren Sie Ansible auf Ubuntu 18.04.
Dieses Ansible-Playbook bietet eine Alternative zur manuellen Ausführung des Verfahrens, das in unserem Leitfaden So installieren Sie Linux, Apache, MySQL und PHP (LAMP) auf Ubuntu 18.04 beschrieben ist.
Eine Ausführung dieses Playbooks führt die folgenden Aktionen auf Ihren Ansible-Hosts durch:
aptitude
, das von Ansible als Alternative zum Paketmanager apt
bevorzugt wird.VirtualHost
und richten Sie einen dedizierten Dokumentstamm dafür ein.VirtualHost
.true
gesetzt ist.80
) zuzulassen.Wenn die Ausführung des Playbooks abgeschlossen ist, wird eine Web-PHP-Umgebung basierend auf den Optionen, die Sie in Ihren Konfigurationsvariablen definiert haben, auf Apache ausgeführt.
Als Erstes müssen Sie das LAMP-Playbook und seine Abhängigkeiten aus dem Repository do-community/ansible-playbooks abrufen. Klonen Sie dieses Repository in einen lokalen Ordner im Ansible-Steuerknoten.
Falls Sie dieses Repository bereits anhand eines anderen Leitfadens geklont haben, greifen Sie auf Ihre bestehende Kopie von ansible-playbooks
zu und führen Sie den Befehl git pull
aus, um sicherzustellen, dass Sie aktualisierten Inhalt haben:
Wenn Sie das Repository do-community/ansible-playbooks
zum ersten Mal verwenden, klonen Sie zuerst das Repository in Ihren Basisordner mit:
Die Dateien, die wir brauchen, befinden sich im Ordner lamp_ubuntu1804
, der die folgende Struktur hat:
lamp_ubuntu1804
├── files
│ ├── apache.conf.j2
│ └── info.php.j2
├── vars
│ └── default.yml
├── playbook.yml
└── readme.md
Hier ist eine Beschreibung jeder dieser Dateien:
files/info.php.j2
: Vorlagendatei zur Einrichtung einer PHP-Testseite auf dem Stamm des Webserversfiles/apache.conf.j2
: Vorlagendatei zur Einrichtung des Apache VirtualHost.vars/default.yml
: Variablendatei zur Anpassung der Playbook-Einstellungen.playbook.yml
: Die Playbook-Datei mit Aufgaben zur Ausführung auf dem/den Remoteserver(n).readme.md
: Eine Textdatei mit Informationen über dieses Playbook.Bearbeiten Sie die Variablendatei des Playbooks zur Anpassung der Konfigurationen sowohl von MySQL als auch von Apache. Greifen Sie auf das Verzeichnis lamp_ubuntu1804
zu und öffnen Sie die Datei vars/default.yml
mit dem Befehlszeilen-Editor Ihrer Wahl:
Diese Datei enthält einige Variablen, die Ihrer Aufmerksamkeit bedürfen:
Die folgende Liste enthält eine kurze Erklärung jeder dieser Variablen und wie Sie diese ändern könnten:
mysql_root_password
: Das gewünschte Passwort für das MySQL-Konto root.app_user
: Ein Remotebenutzer ohne Rootberechtigung auf dem Ansible-Host, der als Besitzer der Anwendungsdateien festgelegt wird.http_host
: Ihr Domänenname.http_conf
: Der Name der Konfigurationsdatei, die in Apache erstellt wird.http://_port
: HTTP-Port für diesen virtuellen Host, bei dem 80
die Standardeinstellung ist.disable_default
: Ob die Standard-Website von Apache deaktiviert werden soll oder nicht.Sobald Sie mit der Aktualisierung der Variablen in vars/default.yml
fertig sind, speichern und schließen Sie diese Datei. Wenn Sie nano
verwendet haben, drücken Sie STRG+X
, Y
, dann die EINGABETASTE
.
Sie können dieses Playbook jetzt auf einem oder mehreren Servern ausführen. Die meisten Playbooks werden standardmäßig auf jedem Server in Ihrem Inventar ausgeführt. Sie können die Markierung -l
verwenden, um sicherzustellen, dass nur eine Teilmenge von Servern oder ein einzelner Server von dem Playbook betroffen ist. Sie können auch die Markierung -u
verwenden, um anzugeben, welchen Benutzer Sie auf dem Remoteserver für die Verbindung und Ausführung der Playbook-Befehle auf den Remote-Hosts verwenden.
Um das Playbook nur auf server1
mit Verbindung als sammy
auszuführen, können Sie folgenden Befehl verwenden:
Sie erhalten eine Ausgabe, die der folgenden ähnelt:
Output
PLAY [all] *********************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************ok: [server1]
TASK [Install prerequisites] *********************************************************************************************************ok: [server1] => (item=aptitude)
...
TASK [UFW - Allow HTTP on port 80] *********************************************************************************************************
changed: [server1]
TASK [Sets Up PHP Info Page] *********************************************************************************************************
changed: [server1]
RUNNING HANDLER [Reload Apache] *********************************************************************************************************
changed: [server1]
RUNNING HANDLER [Restart Apache] *********************************************************************************************************
changed: [server1]
PLAY RECAP *********************************************************************************************************
server1 : ok=15 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Anmerkung: Weitere Informationen zur Ausführung von Ansible-Playbooks finden Sie in unserem Leitfaden Ansible-Schummelzettel.
Wenn die Ausführung des Playbooks abgeschlossen ist, gehen Sie zu Ihrem Webbrowser und greifen Sie auf die Host- oder IP-Adresse des Servers zu, die in den Playbook-Variablen konfiguriert ist, gefolgt von /info.php
:
http://server_host_or_IP/info.php
Sie sehen eine Seite wie diese:
Da diese Seite sensible Informationen über Ihre PHP-Umgebung enthält, wird empfohlen, diese vom Server zu entfernen, indem Sie den Befehl rm -f /var/www/info.php
ausführen, sobald Sie mit der Einrichtung fertig sind.
Sie finden die LAMP-Server-Einrichtung in diesem Tutorial im Ordner lamp_ubuntu1804
im Repository DigitalOcean Community Playbooks. Klicken Sie zum direkten Kopieren oder Herunterladen des Skript-Inhalts auf die Schaltfläche Raw im oberen Bereich jedes Skripts.
Der vollständige Inhalt des Playbooks sowie seine zugehörigen Dateien finden Sie ebenfalls hier.
Die Variablendatei default.yml
enthält Werte, die in den Playbook-Aufgaben verwendet werden, wie z. B. das Passwort für das MySQL-Konto root und den Domänennamen für die Konfiguration mit Apache.
Die Datei apache.conf.j2
ist eine Jinja 2-Vorlagendatei, die einen neuen Apache VirtualHost konfiguriert. Die in dieser Vorlage verwendeten Variablen sind in der Variablendatei vars/default.yml
definiert.
<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/{{ http_host }}>
Options -Indexes
</Directory>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
</VirtualHost>
Die Datei info.php.j2
ist eine weitere Jinja-Vorlage, die für die Einrichtung eines Test-PHP-Skripts im Dokumentstamm des neu konfigurierten LAMP-Servers verwendet wird.
<?php
phpinfo();
Alle Aufgaben dieser Einrichtung sind in der Datei playbook.yml
definiert. Am Anfang werden die Gruppen von Servern definiert, die das Ziel dieser Einrichtung (all
) sein sollen. Anschließend wird mit become: true
definiert, dass Aufgaben standardmäßig mit Rechteausweitung (sudo
) ausgeführt werden sollen. Dann enthält es die Variablendatei vars/default.yml
, um Konfigurationsoptionen zu laden.
Sie können diese Dateien an Ihre individuellen Bedürfnisse in Ihrem Workflow anpassen.
In diesem Leitfaden haben wir den Prozess der Installation und Einrichtung einer LAMP-Umgebung auf einem Remoteserver mithilfe von Ansible automatisiert. Da jeder bei der Arbeit mit MySQL-Datenbanken und -benutzern in der Regel unterschiedliche Bedürfnisse hat, raten wir Ihnen, sich die offizielle Ansible-Dokumentation für weitere Informationen und Anwendungsfälle des Ansible-Moduls mysql_user
anzusehen.
Wenn Sie weitere Aufgaben in dieses Playbook aufnehmen möchten, um Ihre Servereinrichtung weiter anzupassen, finden Sie diesbezügliche Informationen in unserer Ansible-Einführung Grundlagen des Konfigurationsmanagements: Ansible-Playbooks schreiben.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!