Terug naar blog

Installeren en configureren van LAMP op Ubuntu 20.04 met Ansible

Installeren en configureren van LAMP op Ubuntu 20.04 met Ansible

Serverautomatisering is een veilig en betrouwbaar proces voor het beheren en monitoren van servers op een effectieve en technisch onderlegde manier. In tegenstelling tot de traditionele stijl van het beheren van servers in datacenters die worden beheerd door een toegewijd team van experts, worden alle servers beheerd met behulp van automatisering. Hierdoor worden menselijke fouten geminimaliseerd.

Configuratiebeheertools zoals Ansible, Puppet, Terraform, om er maar een paar te noemen, worden doorgaans gebruikt om servers te automatiseren. Deze tools richten servers in met behulp van automatisering door standaardprocedures voor nieuwe servers vast te leggen, terwijl potentiële fouten bij handmatige uitvoering worden geëlimineerd.

Ansible is een robuust open-source project. Het is flexibel, eenvoudig te gebruiken en heeft een uiterst vereenvoudigde architectuur. Er is geen programmeerachtergrond vereist om Ansible playbooks te gebruiken en het vereist geen installatie van software op de nodes. Bovenal zit het boordevol uitstekende mogelijkheden om scripts te schrijven en automatisering te stroomlijnen.

In deze handleiding zullen we u door de stappen leiden voor het installeren en configureren van LAMP op Ubuntu 20.04 met Ansible.

Vereisten

Om deze handleiding te volgen, heeft u het volgende nodig:

Wat is het doel van het Ansible Playbook?

Dit Ansible-playbook is een alternatieve manier om de procedure te doorlopen die wordt beschreven in onze handleiding LAMP Stack Setup Linux Apache MySQL PHP.

Het uitvoeren van het Ansible-playbook zal leiden tot de volgende acties op uw Ansible-hosts:

  • Installeer aptitude, een alternatief voor de apt pakketbeheerder, zoals de voorkeur heeft van Ansible.

  • Installeer alle benodigde LAMP-pakketten.

  • Maak een nieuwe Apache VirtualHost en configureer een specifieke document root.

  • Schakel AAN de nieuwe VirtualHost.

  • Schakel UIT de standaard Apache-website uit, d.w.z. stel de disable_default variabele in op true.

  • Kies een wachtwoord voor de MySQL root-gebruiker.

  • Verwijder anonieme MySQL-accounts en de testdatabase.

  • Stel UFW in om HTTP-verkeer toe te staan op de geconfigureerde poort, waarbij de standaardwaarde is80.

  • Stel een PHP-testscript in.

Nadat het Ansible-playbook is uitgevoerd, ziet u een web-PHP-omgeving draaien op Apache volgens de configuraties die we hebben ingesteld.

Het Ansible-playbook gebruiken

Haal eerst het LAMP-playbook en de bijbehorende afhankelijkheden op uit de do-community/ansible-playbooks repository. Kloon vervolgens de repository met het LAMP-playbook naar een lokale map binnen de Ansible-controlenode.

Voer het git pull-commando uit om er zeker van te zijn dat u toegang heeft tot de juiste inhoud die we in deze handleiding gaan gebruiken:

Als u de do-community/ansible-playbooks repository voor de eerste keer gebruikt, overweeg dan om de repository naar uw thuismap te klonen:

Ga naar de map lamp_ubuntu2004 en u zult de structuur zien:

Hier is een overzicht van wat deze bestanden betekenen:

  • files/info.php.j2: Dit is een sjabloonbestand waarmee u een PHP-testpagina kunt instellen in de hoofdmap (root) van de webserver.

  • files/apache.conf.j2: Een ander sjabloonbestand dat wordt gebruikt om de Apache VirtualHost in te stellen.

  • vars/default.yml: Het is een variabelenbestand om de instellingen van het playbook aan te passen.

  • playbook.yml: Dit bestand bevat de volledige inhoud van de taken die op de externe server(s) moeten worden uitgevoerd.

  • readme.md: Een bestand dat de informatie over dit playbook bevat.

Laten we de MySQL- en Apache-configuraties aanpassen door wijzigingen aan te brengen in het variabelenbestand van het playbook. Navigeer naar de lamp_ubuntu2004 map en open het vars/default.yml bestand met de nano editor:

Bij het openen van het vars/default.yml bestand verschijnt er een lijst met variabelen die moeten worden aangepast:

Laten we elk van de variabelen in detail bekijken:

  • mysql_root_password: Slaat het wachtwoord op voor het root MySQL-account.

  • app_user: Dit is een externe niet-rootgebruiker op de Ansible-host die fungeert als de eigenaar van de applicatiebestanden.

  • http_host: Toont uw domeinnaam.

  • http_conf: Toont de naam van het configuratiebestand dat in Apache is gemaakt.

  • http_port: Dit is de HTTP-poort voor deze virtuele host, en 80 is de standaardwaarde.

  • disable_default: Wordt gebruikt om standaardopties die bij Apache horen ongedaan te maken.

Sla vervolgens het vars/default.yml bestand op en sluit het.

Zodra de installatie is voltooid, zijn we klaar om dit playbook op de servers uit te voeren. Standaard zijn de meeste servers in de playbooks geconfigureerd om op elke server in de inventarissen te worden uitgevoerd. Laten we de -l vlag gebruiken om slechts invloed te hebben op een enkele server of een geselecteerde subset van een groep die door het playbook wordt beïnvloed. Als alternatief kunnen we de -u vlag gebruiken om een gedetailleerd overzicht te krijgen van welke externe server verbinding maakt en wordt uitgevoerd op de externe hosts.

Laten we het playbook uitvoeren op één server server1 en er verbinding mee maken met één gebruiker als justin:

U krijgt een uitvoer die vergelijkbaar is met deze:

Zodra u ziet dat het playbook klaar is met uitvoeren, navigeert u naar uw webbrowser en opent u de host van de server. Vergeet niet om /info.php aan het einde van het IP-adres toe te voegen:

Als u op deze URL klikt, ziet u een pagina zoals deze:

Waarschuwing: De weergegeven pagina bevat gevoelige informatie over uw PHP-omgeving. Daarom wordt aanbevolen om uw persoonlijke gegevens van de server te verwijderen met de volgende opdracht:

rm -f /var/www/info.php

Wat zit er in het Playbook?

Laten we vervolgens de betekenis en het belang begrijpen van de bestanden die worden gebruikt in de ansible-playbook inhoud:

  • vars/default.yml

Het default.yml variabelenbestand bevat de domeinnaam en het wachtwoord van de MySQL root account. Dit zijn standaardwaarden die worden gebruikt in de ansible-playbook taken:

  • files/apache.conf.j2

Het apache.conf.j2 bestand is een Jinja 2 sjabloonbestand dat wordt gebruikt om een nieuwe Apache VirtualHost te configureren. De variabelen die in deze sjabloon worden gebruikt, moeten worden gedefinieerd in het vars/default.yml variabelenbestand:

  • files/info.php.j2

Vergelijkbaar met files/apache.conf.j2, is het info.php.j2 bestand ook een Jinja-sjabloon. We gebruiken dit bestand om een test-PHP-script in te stellen in de document root van een nieuw geconfigureerde LAMP-server:

  • playbook.yml

Het playbook.yml bestand worden alle taken van deze installatie gedefinieerd. In dit bestand worden alle LAMP-stacks geconfigureerd. Het begint met het definiëren van de groep doelservers en is ingesteld op all. Bovendien neemt het de become waarde aan als true ( become: true), en definieert het alle taken die moeten worden uitgevoerd. Vervolgens bevat het yaml bestand het standaardbestand, namelijk het vars/default.yml variabelenbestand, om de configuratieopties te laden:

Je kunt deze bestanden aanpassen op basis van de behoeften en vereisten van je project.

Conclusie

In deze handleiding hebben we de stappen doorlopen voor het installeren en configureren van LAMP op een externe server met Ansible. Er zijn tal van andere aanpassingsopties waarmee je kunt experimenteren. Bijvoorbeeld door gebruik te maken van de officiële documentatie van Ansible en het gebruik van de cases van de mysql_user uit de Ansible-module is een uitstekende manier om je vaardigheden te verbeteren. Volg ook de stappen die in deze gids worden besproken om automatisering te oefenen met andere configuratiebeheertools en besturingssystemen om de moeilijkheidsgraad te verhogen.

Ben je nieuw met de LAMP-stack en wil je dieper op dit onderwerp ingaan? Ontdek de volgende handleidingen op onze blog:

Veel computerplezier!

author

Hark Labs

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.