Inleiding
Er zijn altijd momenten waarop we nieuwe servers moeten configureren. Dit kan zijn om de werklast te verdelen of omdat we simpelweg meer servers nodig hebben. Bij het opzetten van nieuwe servers moeten gebruikers serverautomatisering gebruiken om ze te configureren. Dit wordt gedaan om handmatige tussenkomst te minimaliseren.Ansible is een van de tools voor configuratiebeheer die kunnen worden gebruikt om automatisch een nieuwe server te configureren, waardoor de kans op menselijke fouten bij het handmatig instellen van de server wordt verkleind.
Ansible is een functierijke tool die tegelijkertijd eenvoudig van architectuur is. Het vergemakkelijkt de configuratie van servers via scripts. Dankzij de beknopte architectuur vereist Ansible geen andere software die op de nodes moet worden geïnstalleerd.
In deze handleiding laten we u zien hoe u Ansible kunt gebruiken om de installatie van WordPress met de LAMP-stack op een Ubuntu-server te automatiseren. WordPress is een CMS dat wordt gebruikt om blogs en websites te maken met PHP als programmeertaal en een MySQL-database om gegevens op te slaan. Zodra WordPress is geïnstalleerd, kunnen gebruikers de site beheren via de web-frontend.
Vereisten
- Aangezien deze handleiding is gebaseerd op Ubuntu, moet u de nieuwste Ubuntu-versie hebben geïnstalleerd met sudo-rechten. Als u Ubuntu niet hebt geïnstalleerd, kunt u onze Hoe u uw Ubuntu-server instelt.
- We hebben ook een Ansible-controlenode nodig. Deze moet sudo-rechten hebben en de firewall moet zijn ingeschakeld.Ansible installeren en configureren op Ubuntu 20.04 bevat een gedetailleerde handleiding over het configureren van Ansible.
- We hebben ook externe Ansible-hosts nodig die de nieuwste versie van Ubuntu draaien. De hosts zijn in feite de beheerde nodes in Ansible.
Samenvatting van Ansible Playbook-acties
In deze sectie zullen we zien wat ons Ansible Playbook doet wanneer we het uitvoeren. Deze procedure is een alternatief voor de handmatige installatie die hier wordt beschreven: WordPress installeren met LAMP op Ubuntu 20.04.
Wanneer we het Playbook uitvoeren, zal Ansible:
- Installeer aptitude wat een geprefereerde Ansible-pakketbeheerder is.
- PHP-extensies en LAMP-pakketten installeren en configureren.
- Maak een nieuwe Apache VirtualHost voor de WordPress-website.
- Schakel de mod_rewrite module in en schakel de standaardwebsite van Apache uit.
- Stel het wachtwoord in voor de MySQL root-gebruiker.
- Verwijder de anonieme MySQL-accounts en de testdatabase.
- Maak een nieuwe gebruiker en een nieuwe database aan. Deze zullen worden gebruikt door de WordPress-website.
- Stel UFW in om HTTP-verkeer toe te staan op de geconfigureerde poort ( 80 standaard).
- Download en pak WordPress uit.
- Stel de maprechten en eigendomsrechten in.
- Configureer een nieuw wp-config.php bestand met behulp van het sjabloon.
Handleiding voor WordPress op LAMP Ansible Playbook
Eerst moeten we het WordPress op LAMP-playbook en de bijbehorende afhankelijkheden ophalen uit de do-community/ansible-playbooks repository. We zullen deze repository klonen binnen de Ansible Control Node.
U kunt het git pull commando uitvoeren zoals hieronder vermeld:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Zorg ervoor dat u de bijgewerkte pull van de bovengenoemde repository hebt. Dit is van toepassing als u de repository al eerder hebt gekloond. Hieronder ziet u hoe u de update kunt ophalen:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Nu moeten we de bestanden zoeken in de map wordpress-lamp_ubuntu . De naam van deze map kan verschillen afhankelijk van de Ubuntu-versie die u gebruikt. In één oogopslag ziet u de volgende structuur in deze map:

Laten we het doel van deze bestanden hieronder samenvatten:
- files/apache.conf.j2: Apache gebruikt VirtualHost. Dit bestand wordt gebruikt om de instellingen op te geven voor VirtualHost.
- files/wp-config.php.j2: Dit bestand bevat instellingen voor het configureren van WordPress.
- vars/default.yml: Dit configureert de playbook-instellingen.
- playbook.yml: Als er taken zijn die op een externe server moeten worden uitgevoerd, wordt dit bestand gebruikt om deze te configureren.
- readme.md: Handleiding voor het gebruik van het playbook.
We moeten het variabelenbestand van het playbook bewerken om de installatie aan te passen. Open eerst de vars/default.yaml bestand dat zich in de hierboven genoemde map bevindt:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Dit bestand is vrij lang. Het bevat een aantal configuraties om ons te helpen met onze installatie:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Systeeminstellingen php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL-instellingen mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP-instellingen http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Hier houden we ons bezig met de volgende variabelen:
- php_modules: Een array met PHP-extensies die moeten worden geïnstalleerd om uw WordPress-installatie te ondersteunen. Als u meer modules wilt installeren, kunt u dit hier opgeven.
- mysql_root_password: Het wachtwoord voor het root MySQL-account.
- mysql_db: Dit specificeert de naam van de MySQL-database die WordPress zal gebruiken.
- mysql_user: De naam van de MySQL-gebruiker die voor WordPress moet worden aangemaakt.
- mysql_password: Het wachtwoord voor de nieuwe MySQL-gebruiker.
- http_host: Domeinnaam of het IP-adres van de server.
- http_conf: De naam van het configuratiebestand dat in Apache zal worden aangemaakt.
- http_port: HTTP-poort voor deze virtuele host. Deze poort wordt gebruikt om toegang te krijgen tot de website. De standaardwaarde is 80.
Next, enter the values in the above file and save and close. For the users using the nano editor, press CTRL+X, Y, and press ENTER.
Nu bent u klaar om dit playbook uit te voeren. U kunt dit playbook op een of meer servers uitvoeren. Als u dit playbook op een specifieke server wilt uitvoeren, kunt u de -l-vlag gebruiken. Als u bovendien de gebruiker moet opgeven om verbinding te maken met de externe server, geef de gebruiker dan op met de -u vlag.
Stel dat we ons playbook willen uitvoeren op een specifieke server, srvr1 met de gebruiker u1, dan kunnen we het onderstaande commando uitvoeren:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
Zodra u het bovenstaande commando uitvoert, krijgt u een uitvoer zoals hieronder:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [server1] TASK [Install prerequisites] ******************************************************************************** ok: [server1] |
Wacht tot de uitvoering van het playbook is voltooid. Navigeer vervolgens naar de server_name in uw webbrowser:
|
1 |
http://server_host_or_ip/ |
U krijgt het volgende scherm te zien:

Selecteer vervolgens de taal van uw keuze en druk op Doorgaan. U krijgt het volgende scherm te zien waarin om enkele details wordt gevraagd om de installatie te voltooien:

Voer daarna de informatie in en druk op WordPress installeren. Dit zal even duren en daarna ziet u een scherm zoals hieronder:

Selecteer Inloggen om in te loggen op uw website en de instellingen te configureren:

Inhoud van het Ansible Playbook
Onthoud de wordpress-lamp_ubuntu -map. Deze bevat een paar bestanden. Laten we ze een voor een doornemen:
● vars/default.yml
Dit bestand bevat waarden die worden gebruikt om instellingen voor uw WordPress-website te configureren:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Systeeminstellingen php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL-instellingen mysql_root_password: "mysql_root_wachtwoord" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "wachtwoord" #HTTP-instellingen http_host: "jouw_domein" http_conf: "jouw_domein.conf" http_port: "80" |
● files/apache.conf.j2
Dit bestand wordt gebruikt om de Apache VirtualHost te configureren:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<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> |
● files/wp-config.php.j2
Dit bestand wordt gebruikt om WordPress te configureren. Het bevat unieke sleutels en salts gegenereerd door hash-functies:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
<?php /** * De basisconfiguratie voor WordPress * * Het wp-config.php aanmaakscript gebruikt dit bestand tijdens de * installatie. Je hoeft de website niet te gebruiken, je kunt * dit bestand kopiëren naar "wp-config.php" en de waarden invullen. * * Dit bestand bevat de volgende configuraties: * * * MySQL-instellingen * * Geheime sleutels * * Databasetabel-prefix * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL-instellingen - Je kunt deze informatie krijgen van je webhost ** // /** De naam van de database voor WordPress */ define( 'DB_NAME', '{{ mysql_db }}' ); /** MySQL-databasegebruikersnaam */ define( 'DB_USER', '{{ mysql_user }}' ); /** MySQL-database-wachtwoord */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** MySQL-hostnaam */ define( 'DB_HOST', 'localhost' ); /** Database-tekenset die gebruikt wordt bij het aanmaken van databasetabellen. */ define( 'DB_CHARSET', 'utf8' ); /** Het type database-collatie. Wijzig dit niet bij twijfel. */ define( 'DB_COLLATE', '' ); /** Toegang tot bestandssysteem **/ define('FS_METHOD', 'direct'); /**#@+ * Unieke sleutels en salts voor authenticatie. * * Wijzig deze in unieke zinnen! * Je kunt deze genereren met de {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * Je kunt deze op elk moment wijzigen om alle bestaande cookies ongeldig te maken. Dit dwingt alle gebruikers om opnieuw in te loggen. * * @since 2.6.0 */ define( 'AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); /**#@-*/ /** * WordPress databasetabel-prefix. * * Je kunt meerdere installaties in één database hebben als je elke * een uniek prefix geeft. Alleen cijfers, letters en underscores a.u.b.! */ $table_prefix = 'wp_'; /** * Voor ontwikkelaars: WordPress debugging-modus. * * Wijzig dit in true om de weergave van meldingen tijdens de ontwikkeling in te schakelen. * Het wordt ten zeerste aanbevolen dat plugin- en thema-ontwikkelaars WP_DEBUG gebruiken * in hun ontwikkelomgevingen. * * Voor informatie over andere constanten die gebruikt kunnen worden voor debugging, * bezoek de Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* Dat is alles, stop met bewerken! Veel plezier met publiceren. */ /** Absoluut pad naar de WordPress-map. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Stelt WordPress-variabelen en ingesloten bestanden in. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Dit bestand bevat alle taken die in deze setup zijn gedefinieerd. Het begint met een lijst van servers waarop deze setup is gericht. Het bevat het vars/default.yml variabelenbestand om configuratieopties te laden:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
--- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Installeer vereisten apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Installeer LAMP-pakketten apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Installeer PHP-extensies apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache-configuratie - name: Maak document-root file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Stel Apache-VirtualHost in template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Herlaad Apache tags: [ apache ] - name: Schakel rewrite-module in shell: /usr/sbin/a2enmod rewrite notify: Herlaad Apache tags: [ apache ] - name: Schakel nieuwe site in shell: /usr/sbin/a2ensite {{ http_conf }} notify: Herlaad Apache tags: [ apache ] - name: Schakel standaard Apache-site uit shell: /usr/sbin/a2dissite 000-default.conf notify: Herstart Apache tags: [ apache ] # MySQL-configuratie - name: Stel het root-wachtwoord in mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Verwijder alle anonieme gebruikersaccounts mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Verwijder de MySQL-testdatabase mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Maakt database voor WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Maak MySQL gebruiker voor WordPress mysql_user: name: "{{ mysql_user }}" password: "{{ mysql_password }}" priv: "{{ mysql_db }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] # UFW-configuratie - name: "UFW - HTTP toestaan op poort {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress-configuratie - name: Download en ontpak de nieuwste WordPress unarchive: src: https://wordpress.org/latest.tar.gz dest: "/var/www/{{ http_host }}" remote_src: yes creates: "/var/www/{{ http_host }}/wordpress" tags: [ wordpress ] - name: Stel eigenaarschap in file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Stel rechten in voor mappen shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Stel rechten in voor bestanden shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: Stel wp-config -in template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Herlaad Apache service: name: apache2 state: reloaded - name: Herstart Apache service: name: apache2 state: restarted |
U kunt deze bestanden naar wens aanpassen aan de specifieke behoeften van de website die u bouwt.
Conclusie
In deze handleiding hebben we gedemonstreerd hoe u de installatie en configuratie van een WordPress-website op de LAMP-stack op het nieuwste Ubuntu-besturingssysteem kunt automatiseren met Ansible.
Voor meer handleidingen over het werken met Ansible kunt u de volgende tutorials bekijken op onze blog:
- Ansible gebruiken met CloudSigma
- Serverconfiguratie automatiseren met Ansible en Ubuntu 20.04
- LAMP installeren en configureren op Ubuntu 20.04 met Ansible
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.