Úvod
Vždy nastanou chvíle, kdy potřebujeme nakonfigurovat nové servery. Může to být kvůli rozložení zátěže, nebo pokud prostě potřebujeme více serverů. Při nastavování nových serverů musí uživatelé k jejich konfiguraci využít automatizaci serverů. Děje se tak za účelem minimalizace manuálních zásahů. Ansible je jedním z nástrojů pro správu konfigurace, které lze použít k automatické konfiguraci nového serveru, což snižuje pravděpodobnost lidské chyby při ručním nastavování serveru.
Ansible je nástroj bohatý na funkce a zároveň má jednoduchou architekturu. Usnadňuje konfiguraci serverů pomocí skriptů. Díky své stručné architektuře Ansible nevyžaduje instalaci žádného jiného softwaru na uzlech.
V tomto návodu vám ukážeme, jak pomocí nástroje Ansible automatizovat instalaci WordPressu se sadou LAMP běžící na serveru Ubuntu. WordPress je CMS, který se používá k vytváření blogů a webových stránek s využitím PHP jako programovacího jazyka a databáze MySQL pro ukládání dat. Jakmile máme WordPress nainstalovaný, uživatelé mohou web spravovat pomocí webového rozhraní.
Požadavky
- Vzhledem k tomu, že tento návod je založen na systému Ubuntu, budete muset mít nainstalovanou nejnovější verzi Ubuntu s oprávněními sudo. Pokud nemáte Ubuntu nainstalované, můžete postupovat podle našeho návodu Jak nastavit server Ubuntu.
- Budeme také potřebovat řídicí uzel Ansible. Ten musí mít oprávnění sudo a povolený firewall. Instalace a konfigurace Ansible na Ubuntu 20.04 obsahuje podrobný návod, jak nakonfigurovat Ansible.
- Potřebujeme také vzdálené hostitele Ansible běžící na nejnovějším Ubuntu. Tito hostitelé jsou v podstatě spravovanými uzly v Ansible.
Přehled akcí Ansible Playbooku
V této části se podíváme na to, co náš Ansible Playbook dělá, když jej spustíme. Tento postup je alternativou k ručnímu nastavení popsanému zde: Jak nainstalovat WordPress s LAMP na Ubuntu 20.04.
Při spuštění Playbooku Ansible provede následující:
- Nainstaluje aptitude což je preferovaný správce balíčků pro Ansible.
- Nainstaluje a nakonfiguruje rozšíření PHP a balíčky LAMP.
- Vytvoří nový Apache VirtualHost pro webové stránky WordPress.
- Povolí modul mod_rewrite a zakáže výchozí web nabízený serverem Apache.
- Nastaví heslo pro uživatele root v MySQL.
- Odstraní anonymní účty MySQL a testovací databázi.
- Vytvoří nového uživatele a novou databázi. Ty budou použity webem WordPress.
- Nastaví UFW tak, aby povoloval provoz HTTP na nakonfigurovaném portu ( 80 ve výchozím nastavení).
- Stáhne a rozbalí WordPress.
- Nastaví oprávnění a vlastnictví adresářů.
- Nakonfiguruje nový soubor wp-config.php pomocí jeho šablony.
Průvodce Ansible Playbookem pro WordPress na LAMP
Nejprve budeme muset získat playbook WordPress na LAMP a jeho závislosti z repozitáře do-community/ansible-playbooks. Tento repozitář naklonujeme uvnitř řídicího uzlu Ansible.
Můžete spustit příkaz git pull jak je uvedeno níže:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Ujistěte se, že máte aktualizovaný stav výše uvedeného repozitáře. To platí v případě, že jste repozitář klonovali již dříve. Níže je uvedeno, jak můžete provést aktualizaci:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Nyní musíme najít soubory uvnitř složky wordpress-lamp_ubuntu . Název této složky se může lišit v závislosti na verzi Ubuntu, kterou používáte. Na první pohled uvidíte v tomto adresáři následující strukturu:

Níže si shrňme účel těchto souborů:
- files/apache.conf.j2: Apache používá VirtualHost. Tento soubor slouží k určení nastavení pro VirtualHost.
- files/wp-config.php.j2: Tento soubor obsahuje nastavení pro konfiguraci WordPressu.
- vars/default.yml: Konfiguruje nastavení playbooku.
- playbook.yml: Pokud existují úkoly, které je třeba provést na vzdáleném serveru, tento soubor se používá k jejich konfiguraci.
- readme.md: Průvodce použitím playbooku.
Musíme upravit soubor s proměnnými playbooku, abychom přizpůsobili instalaci. Nejprve otevřete vars/default.yaml soubor, který se nachází ve výše zmíněném adresáři:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Tento soubor je poměrně dlouhý. Obsahuje řadu konfigurací, které nám pomohou s instalací:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Systémová nastavení php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #Nastavení MySQL mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #Nastavení HTTP http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Zde se zabýváme následujícími proměnnými:
- php_modules: Pole obsahující PHP rozšíření, která by měla být nainstalována pro podporu vašeho nastavení WordPressu. Pokud chcete nainstalovat více modulů, můžete je specifikovat zde.
- mysql_root_password: Heslo pro root účet MySQL.
- mysql_db: Toto určuje název databáze MySQL, kterou bude WordPress používat.
- mysql_user: Název uživatele MySQL, který by měl být vytvořen pro WordPress.
- mysql_password: Heslo pro nového uživatele MySQL.
- http_host: Doménové jméno nebo IP adresa serveru.
- http_conf: Název konfiguračního souboru, který bude vytvořen v rámci Apache.
- http_port: HTTP port pro tento virtuální hostitel. Tento port se používá pro přístup k webu. Výchozí hodnota je 80.
Dále zadejte hodnoty do výše uvedeného souboru, uložte jej a zavřete. Pro uživatele, kteří používají editor nano, stiskněte CTRL+X, Y, a stiskněte ENTER.
Nyní jste připraveni spustit tento playbook. Tento playbook můžete spustit na jednom nebo více serverech. Pokud chcete tento playbook spustit na konkrétním serveru, můžete použít -l příznak. Dále, pokud potřebujete specifikovat uživatele pro připojení ke vzdálenému serveru, specifikujte uživatele pomocí -u příznaku.
Předpokládejme, že chceme spustit náš playbook na jednom serveru, srvr1 pomocí uživatele u1, můžeme spustit níže uvedený příkaz:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
Jakmile spustíte výše uvedený příkaz, získáte výstup podobný tomuto:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [server1] TASK [Install prerequisites] ******************************************************************************** ok: [server1] |
Počkejte, dokud se spuštění playbooku nedokončí. Poté přejděte na server_name ve vašem webovém prohlížeči:
|
1 |
http://server_host_or_ip/ |
Uvidíte obrazovku:

Dále vyberte jazyk podle svého výběru a stiskněte Pokračovat. Zobrazí se další obrazovka s výzvou k zadání některých podrobností pro dokončení instalace:

Poté zadejte informace a stiskněte Instalovat WordPress. Bude to chvíli trvat a poté uvidíte obrazovku jako níže:

Vyberte Přihlásit se pro přihlášení na váš web a konfiguraci nastavení:

Obsah Ansible Playbooku
Nezapomeňte na složku wordpress-lamp_ubuntu . Obsahuje několik souborů. Pojďme si je tedy projít jeden po druhém:
● vars/default.yml
Tento soubor obsahuje hodnoty, které se používají ke konfiguraci nastavení pro váš web WordPress:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Nastavení systému php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #Nastavení MySQL mysql_root_password: "mysql_root_heslo" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "heslo" #Nastavení HTTP http_host: "vase_domena" http_conf: "vase_domena.conf" http_port: "80" |
● files/apache.conf.j2
Tento soubor slouží ke konfiguraci Apache VirtualHost:
|
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
Tento soubor slouží ke konfiguraci WordPressu. Obsahuje jedinečné klíče a soli generované hashovacími funkcemi:
|
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 /** * Základní konfigurace pro WordPress * * Skript pro vytvoření wp-config.php používá tento soubor během * instalace. Nemusíte používat webovou stránku, můžete * zkopírovat tento soubor do "wp-config.php" and vyplnit hodnoty. * * Tento soubor obsahuje následující konfigurace: * * * Nastavení MySQL * * Tajné klíče * * Prefix tabulek databáze * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** Nastavení MySQL - Tyto informace můžete získat od svého poskytovatele webhostingu ** // /** Název databáze pro WordPress */ define( 'DB_NAME', '{{ mysql_db }}' ); /** Uživatelské jméno k databázi MySQL */ define( 'DB_USER', '{{ mysql_user }}' ); /** Heslo k databázi MySQL */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** Hostitel MySQL */ define( 'DB_HOST', 'localhost' ); /** Znaková sada databáze, která se použije při vytváření databázových tabulek. */ define( 'DB_CHARSET', 'utf8' ); /** Typ porovnávání databáze. Pokud si nejste jisti, neměňte jej. */ define( 'DB_COLLATE', '' ); /** Přístup k souborovému systému **/ define('FS_METHOD', 'direct'); /**#@+ * Unikátní klíče a soli pro ověřování. * * Změňte je na jiné unikátní fráze! * Můžete je vygenerovat pomocí {@link https://api.wordpress.org/secret-key/1.1/salt/ služby pro generování tajných klíčů na WordPress.org} * Tyto klíče můžete kdykoli změnit, čímž zneplatníte všechny stávající soubory cookie. To donutí všechny uživatele se znovu přihlásit. * * @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') }}' ); /**#@-*/ /** * Předpona tabulek databáze WordPress. * * V jedné databázi můžete mít více instalací, pokud každé z nich * přidělíte unikátní předponu. Používejte prosím pouze čísla, písmena a podtržítka! */ $table_prefix = 'wp_'; /** * Pro vývojáře: Ladicí režim WordPress. * * Změňte na true pro povolení zobrazování upozornění během vývoje. * Důrazně doporučujeme, aby vývojáři pluginů a šablon používali WP_DEBUG * ve svých vývojových prostředích. * * Informace o dalších konstantách, které lze použít pro ladění, * naleznete v Codexu. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* To je vše, ukončete úpravy! Příjemné publikování. */ /** Absolutní cesta k adresáři WordPress. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Nastavuje proměnné WordPressu a načítá připojené soubory. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Tento soubor obsahuje všechny úlohy definované v tomto nastavení. Začíná výpisem skupiny serverů, na které je toto nastavení cíleno. Obsahuje vars/default.yml soubor s proměnnými pro načtení možností konfigurace:
|
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: Nainstalovat prerekvizity apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Nainstalovat LAMP balíčky apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Nainstalovat PHP rozšíření apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Konfigurace Apache - name: Vytvořit dokumentový root file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Nastavit up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Znovu načíst Apache tags: [ apache ] - name: Povolit rewrite modul shell: /usr/sbin/a2enmod rewrite notify: Znovu načíst Apache tags: [ apache ] - name: Povolit nový web shell: /usr/sbin/a2ensite {{ http_conf }} notify: Znovu načíst Apache tags: [ apache ] - name: Zakázat výchozí Apache web shell: /usr/sbin/a2dissite 000-default.conf notify: Restartovat Apache tags: [ apache ] # Konfigurace MySQL - name: Nastavit the root heslo mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Odebrat všechny anonymní uživatelské účty mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Odebrat the MySQL testovací databázi mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Vytvoří databázi pro WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Vytvořit MySQL uživatele pro 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 ] # Konfigurace UFW - name: "UFW - Povolit HTTP na portu {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # Konfigurace WordPressu - name: Stáhnout a rozbalit nejnovější 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: Nastavit vlastnictví file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Nastavit oprávnění pro adresáře shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Nastavit oprávnění pro soubory shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: Nastavit up wp -konfiguraci template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Znovu načíst Apache service: name: apache2 state: reloaded - name: Restartovat Apache service: name: apache2 state: restarted |
Tyto soubory můžete upravit podle potřeby, aby vyhovovaly vašim konkrétním požadavkům na web, který vytváříte.
Závěr
V tomto návodu jsme si ukázali, jak můžete pomocí nástroje Ansible automatizovat instalaci a nastavení webu WordPress běžícího na LAMP stacku na nejnovějším operačním systému Ubuntu.
Další návody na práci s nástrojem Ansible najdete v následujících tutoriálech na našem blogu:
- Použití Ansible s CloudSigma
- Automatizace nastavení serveru pomocí Ansible a Ubuntu 20.04
- Instalace a konfigurace LAMP na Ubuntu 20.04 pomocí Ansible
Příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.