Bevezetés
Mindig vannak olyan időszakok, amikor új szervereket kell konfigurálnunk. Ez történhet a munkaterhelés elosztása érdekében, vagy ha egyszerűen több szerverre van szükségünk. Új szerverek beállításakor a felhasználóknak szerverautomatizálást kell alkalmazniuk a konfiguráláshoz. Ez a kézi beavatkozás minimalizálása érdekében történik. Ansible az egyik olyan konfigurációkezelő eszköz, amellyel automatikusan konfigurálható egy új szerver, csökkentve az emberi hibák esélyét a szerver manuális beállítása során.
Az Ansible egy funkciókban gazdag eszköz, miközben az architektúrája egyszerű. Lehetővé teszi a szerverek konfigurálását szkripteken keresztül. Tömör architektúrájának köszönhetően az Ansible nem igényel semmilyen más szoftver telepítését a csomópontokon.
Ebben az útmutatóban megmutatjuk, hogyan használhatja az Ansible-t a WordPress telepítésének automatizálására egy Ubuntu szerveren futó LAMP stack segítségével. WordPress egy olyan CMS, amelyet blogok és weboldalak létrehozására használnak, PHP-t használva kódolási nyelvként és MySQL adatbázist az adatok tárolására. Miután telepítettük a WordPress-t, a felhasználók a webes felületen keresztül kezelhetik az oldalt.
Előfeltételek
- Mivel ez az útmutató az Ubuntu rendszerre épül, a legújabb Ubuntu verzióra lesz szüksége, amelyen be van állítva a sudo permissions jogosultság. Ha nincs telepítve az Ubuntu, kövesse a Hogyan állítsa be Ubuntu szerverét.
- útmutatónkat. Szükségünk lesz egy Ansible vezérlőcsomópontra (control node) is. Ennek sudo jogosultságokkal és engedélyezett tűzfallal kell rendelkeznie. Az Ansible telepítése és konfigurálása Ubuntu 20.04-en részletes útmutatót tartalmaz az Ansible konfigurálásához.
- Szükségünk van továbbá remote Ansible hosts távoli Ansible gazdagépekre is, amelyeken a legújabb Ubuntu fut. A gazdagépek lényegében a felügyelt csomópontok (managed nodes) az Ansible-ben.
Az Ansible Playbook műveleteinek összefoglalása
Ebben a szakaszban megnézzük, mit csinál az Ansible Playbookunk, amikor végrehajtjuk. Ez az eljárás alternatívája az itt leírt manuális beállításnak: Hogyan telepítsük a WordPress-t LAMP-pal Ubuntu 20.04-en.
A Playbook futtatásakor az Ansible a következőket fogja tenni:
- Telepíti a aptitude csomagot, amely az Ansible által preferált csomagkezelő.
- Telepíti és konfigurálja a PHP kiterjesztéseket és a LAMP csomagokat.
- Létrehoz egy új Apache VirtualHost bejegyzést a WordPress weboldalhoz.
- Engedélyezi a mod_rewrite modult, és letiltja az Apache által kínált alapértelmezett weboldalt.
- Beállítja a MySQL root felhasználó jelszavát.
- Eltávolítja az anonim MySQL fiókokat és a tesztadatbázist.
- Létrehoz egy új felhasználót és egy új adatbázist. Ezeket a WordPress weboldal fogja használni.
- Beállítja az UFW tűzfalat, hogy engedélyezze a HTTP forgalmat a konfigurált porton ( 80 alapértelmezés szerint).
- Letölti és kicsomagolja a WordPress-t.
- Beállítja a könyvtárjogosultságokat és a tulajdonosokat.
- Konfigurál egy új wp-config.php fájlt a sablonja alapján.
WordPress LAMP-on Ansible Playbook útmutató
Először be kell szereznünk a WordPress LAMP-on playbookot és annak függőségeit a do-community/ansible-playbooks tárolóból. Ezt a tárolót az Ansible vezérlőcsomóponton (Control Node) belül fogjuk klónozni.
Futtathatja a git pull parancsot az alábbiak szerint:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Győződjön meg róla, hogy a fent említett tároló legfrissebb verzióját töltötte le. Ez arra az esetre vonatkozik, ha korábban már klónozta a tárolót. Az alábbiakban látható, hogyan frissítheti:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Most meg kell keresnünk a fájlokat a wordpress-lamp_ubuntu mappában. Ennek a mappának a neve eltérő lehet az Ön által használt Ubuntu verziójától függően. Ránézésre a következő struktúrát fogja látni ebben a könyvtárban:

Az alábbiakban összefoglaljuk ezeknek a fájloknak a célját:
- files/apache.conf.j2: Az Apache a VirtualHost beállítást használja. Ez a fájl a VirtualHost.
- files/wp-config.php.j2: Ez a fájl tartalmazza a WordPress konfigurálásához szükséges beállításokat.
- vars/default.yml: Ez konfigurálja a playbook beállításait.
- playbook.yml: Ha vannak olyan feladatok, amelyeket egy távoli szerveren kell végrehajtani, ez a fájl szolgál azok konfigurálására.
- readme.md: Útmutató a playbook használatához.
A telepítés testreszabásához szerkesztenünk kell a playbook változófájlját. Először nyissa meg a vars/default.yaml fájlt, amely a fent említett könyvtárban található:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Ez a fájl meglehetősen hosszú. Számos konfigurációt tartalmaz, amelyek segítenek a telepítésben:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Rendszerbeállítások php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL beállítások mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP beállítások http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Itt a következő változókkal foglalkozunk:
- php_modules: Egy tömb, amely a WordPress telepítés támogatásához szükséges PHP kiterjesztéseket tartalmazza. Ha további modulokat szeretne telepíteni, itt megadhatja őket.
- mysql_root_password: A jelszó a root MySQL fiókhoz.
- mysql_db: Ez határozza meg annak a MySQL adatbázisnak a nevét, amelyet a WordPress használni fog.
- mysql_user: A WordPress számára létrehozandó MySQL felhasználó neve.
- mysql_password: Az új MySQL felhasználó jelszava.
- http_host: A szerver domain neve vagy IP-címe.
- http_conf: Az Apache-on belül létrehozandó konfigurációs fájl neve.
- http_port: HTTP port ehhez a virtuális gazdagéphez. Ez a port a webhely elérésére szolgál. Az alapértelmezett érték 80.
Ezután adja meg az értékeket a fenti fájlban, majd mentse és zárja be. A nano szerkesztőt használó felhasználók nyomják meg a CTRL+X, Y gombokat, majd nyomják meg az ENTER.
Most már készen áll a playbook futtatására. Ezt a playbookot egy vagy több szerveren is futtathatja. Ha egy konkrét szerveren szeretné futtatni, használhatja a -l jelzőt. Továbbá, ha meg kell adnia a távoli szerverhez való csatlakozáshoz használt felhasználót, adja meg azt az -u jelzővel.
Tegyük fel, hogy a playbookot egy bizonyos szerveren szeretnénk futtatni, srvr1 az alábbi felhasználóval: u1, ekkor a következő parancsot futtathatjuk:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
A fenti parancs futtatása után az alábbihoz hasonló kimenetet fog kapni:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [server1] TASK [Install prerequisites] ******************************************************************************** ok: [server1] |
Várjon, amíg a playbook végrehajtása befejeződik. Ezután lépjen a server_name címre a webböngészőjében:
|
1 |
http://server_host_or_ip/ |
A következő képernyőt fogja látni:

Ezután válassza ki a kívánt nyelvet, majd nyomja meg a Continue gombot. Megjelenik a következő képernyő, amely néhány adatot kér a telepítés befejezéséhez:

Ezt követően adja meg az információkat, majd nyomja meg az Install WordPress. gombot. Ez igénybe vesz némi időt, majd az alábbihoz hasonló képernyőt fog látni:

Válassza a Login lehetőséget a webhelyére történő bejelentkezéshez és a beállítások konfigurálásához:

Ansible Playbook tartalom
Emlékezzen a wordpress-lamp_ubuntu mappára. Ez tartalmaz néhány fájlt. Vegyük végig őket egyenként:
● vars/default.yml
Ez a fájl azokat az értékeket tartalmazza, amelyek a WordPress webhely beállításainak konfigurálására szolgálnak:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Rendszerbeállítások php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL beállítások mysql_root_password: "mysql_root_jelszo" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "jelszo" #HTTP beállítások http_host: "sajat_domain" http_conf: "sajat_domain.conf" http_port: "80" |
● files/apache.conf.j2
Ez a fájl az Apache VirtualHost konfigurálására szolgál:
|
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
Ez a fájl a WordPress konfigurálására szolgál. Hash-függvények által generált egyedi kulcsokat és sókat tartalmaz:
|
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 /** * A WordPress alapvető beállításai * * A wp-config.php fájlt létrehozó szkript ezt a fájlt használja a * telepítés során. Nem szükséges a webhelyet használnia, * átmásolhatja ezt a fájlt "wp-config.php" néven, és kitöltheti az értékeket. * * Ez a fájl a következő beállításokat tartalmazza: * * * MySQL beállítások * * Titkos kulcsok * * Adatbázis tábla előtag * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL beállítások - Ezeket az információkat a tárhelyszolgáltatójától kaphatja meg ** // /** A WordPress adatbázisának neve */ define( 'DB_NAME', '{{ mysql_db }}' ); /** MySQL adatbázis felhasználónév */ define( 'DB_USER', '{{ mysql_user }}' ); /** MySQL adatbázis jelszó */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** MySQL kiszolgáló név */ define( 'DB_HOST', 'localhost' ); /** Az adatbázis karakterkódolása az adatbázis-táblák létrehozásakor. */ define( 'DB_CHARSET', 'utf8' ); /** Az adatbázis egybevetése (collate). Kétség esetén ne változtassa meg. */ define( 'DB_COLLATE', '' ); /** Fájlrendszer-hozzáférés **/ define('FS_METHOD', 'direct'); /**#@+ * Egyedi hitelesítési kulcsok és sók (salts). * * Változtassa meg ezeket egyedi kifejezésekre! * Generálhat újakat a {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org titkoskulcs-generáló szolgáltatásával} * Ezeket bármikor megváltoztathatja az összes meglévő süti érvénytelenítéséhez. Ez minden felhasználót újbóli bejelentkezésre fog kényszeríteni. * * @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 adatbázis-tábla előtag. * * Több telepítés is lehet egy adatbázisban, ha mindegyiknek * egyedi előtagot ad. Kérjük, csak számokat, betűket és aláhúzásokat használjon! */ $table_prefix = 'wp_'; /** * Fejlesztőknek: WordPress hibakereső mód. * * Állítsa true értékre a figyelmeztetések megjelenítéséhez a fejlesztés során. * Kifejezetten ajánlott, hogy a bővítmény- és sablonfejlesztők használják a WP_DEBUG-ot * a fejlesztői környezetükben. * * A hibakereséshez használható egyéb konstansokról szóló információkért * látogasson el a Codex oldalára. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* Ez minden, ne szerkessze tovább! Kellemes publikálást. */ /** Abszolút útvonal a WordPress könyvtárhoz. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Beállítja a WordPress változókat és a beágyazott fájlokat. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Ez a fájl tartalmazza az összes, ebből a telepítésből meghatározott feladatot. Azzal kezdődik, hogy felsorolja a telepítés által megcélzott szerverek egy csoportját. Tartalmazza a vars/default.yml változófájlt a konfigurációs beállítások betöltéséhez:
|
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: Telepítés: előfeltételek apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Telepítés: LAMP csomagok apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Telepítés: PHP bővítmények apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache konfiguráció - name: Létrehozás: dokumentum gyökérkönyvtár file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Beállítás: up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Újratöltés: Apache tags: [ apache ] - name: Engedélyezés: rewrite modul shell: /usr/sbin/a2enmod rewrite notify: Újratöltés: Apache tags: [ apache ] - name: Engedélyezés: új webhely shell: /usr/sbin/a2ensite {{ http_conf }} notify: Újratöltés: Apache tags: [ apache ] - name: Letiltás: alapértelmezett Apache webhely shell: /usr/sbin/a2dissite 000-default.conf notify: Újraindítás: Apache tags: [ apache ] # MySQL konfiguráció - name: Beállítás: a root jelszó mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Eltávolítás: összes névtelen felhasználói fiók mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Eltávolítás: a MySQL teszt adatbázis mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Létrehozás: adatbázis a következőhöz: WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Létrehozás: MySQL felhasználó a WordPress-hez 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 konfiguráció - name: "UFW - HTTP engedélyezése a(z) {{ http_port }} porton" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress konfiguráció - name: Letöltés és kicsomagolás: legfrissebb 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: Beállítás: tulajdonos file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Beállítás: jogosultságok a könyvtárakhoz shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Beállítás: jogosultságok a fájlokhoz shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: wp-config be-állítása template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Újratöltés: Apache service: name: apache2 state: reloaded - name: Újraindítás: Apache service: name: apache2 state: restarted |
Ezeket a fájlokat szükség szerint módosíthatja, hogy megfeleljenek az épített webhely egyedi igényeinek.
Összegzés
Ebben az útmutatóban bemutattuk, hogyan automatizálhatja az Ansible segítségével a legújabb Ubuntu operációs rendszeren, LAMP szoftvercsomagon futó WordPress webhely telepítését és beállítását.
Az Ansible használatával kapcsolatos további útmutatókért tekintse meg a következő oktatóanyagokat a blogunkon:
- Az Ansible használata a CloudSigma-val
- Szerverbeállítás automatizálása Ansible és Ubuntu 20.04 használatával
- A LAMP telepítése és konfigurálása Ubuntu 20.04-en Ansible segítségével
Kellemes számítástechnikát!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.