Uvod
Uvijek postoje trenuci kada trebamo konfigurirati nove poslužitelje. To može biti radi raspodjele radnog opterećenja ili ako jednostavno trebamo više poslužitelja. Prilikom postavljanja novih poslužitelja, korisnici moraju koristiti automatizaciju poslužitelja kako bi ih konfigurirali. To se radi kako bi se ručna intervencija svela na minimum. Ansible je jedan od alata za upravljanje konfiguracijom koji se može koristiti za automatsko konfiguriranje novog poslužitelja, smanjujući šanse za ljudsku pogrešku pri ručnom postavljanju poslužitelja.
Ansible je alat bogat značajkama, a istovremeno jednostavne arhitekture. Olakšava konfiguraciju poslužitelja putem skripti. Zbog svoje sažete arhitekture, Ansible ne zahtijeva instalaciju bilo kojeg drugog softvera na čvorovima.
U ovom vodiču, pokazat ćemo vam kako koristiti Ansible za automatizaciju instalacije WordPressa s LAMP stogom koji se izvodi na Ubuntu poslužitelju. WordPress je CMS koji se koristi za izradu blogova i web stranica koristeći PHP kao programski jezik i MySQL bazu podataka za pohranu podataka. Nakon što instaliramo WordPress, korisnici mogu upravljati web stranicom pomoću web sučelja.
Preduvjeti
- Budući da se ovaj vodič temelji na Ubuntu, morat ćete imati instaliranu najnoviju verziju Ubuntua s sudo dozvolama. Ako nemate instaliran Ubuntu, možete pratiti naš Kako postaviti svoj Ubuntu poslužitelj.
- Također ćemo morati imati Ansible kontrolni čvor. Mora imati kontrolni čvor sa sudo dozvolama i omogućenim vatrozidom. Instalacija i konfiguracija Ansiblea na Ubuntu 20.04 sadrži detaljan vodič o tome kako konfigurirati Ansible.
- Također trebamo udaljene Ansible hostove koji pokreću najnoviji Ubuntu. Hostovi su u biti upravljani čvorovi u Ansibleu.
Sažetak radnji Ansible Playbooka
U ovom odjeljku vidjet ćemo što naš Ansible Playbook radi kada ga izvršimo. Ovaj postupak je alternativa ručnom postavljanju opisanom ovdje: Kako instalirati WordPress s LAMP-om na Ubuntu 20.04.
Kada pokrenemo Playbook, Ansible će:
- Instalirati aptitude što je preferirani upravitelj paketa za Ansible.
- Instalirati i konfigurirati PHP proširenja i LAMP pakete.
- Stvoriti novi Apache VirtualHost za WordPress web stranicu.
- Omogućiti mod_rewrite modul i onemogućiti zadani web-mjesto koje nudi Apache.
- Postaviti lozinku za MySQL root korisnika.
- Ukloniti anonimne MySQL račune i testnu bazu podataka.
- Stvoriti novog korisnika i novu bazu podataka. Njih će koristiti WordPress web stranica.
- Postaviti UFW kako bi se omogućio HTTP promet na konfiguriranom portu ( 80 prema zadanim postavkama).
- Preuzeti i raspakirati WordPress.
- Postaviti dozvole i vlasništva nad direktorijima.
- Konfigurirati novu wp-config.php datoteku pomoću njezinog predloška.
Vodič za WordPress na LAMP Ansible Playbooku
Prvo ćemo morati nabaviti WordPress na LAMP playbooku i njegove ovisnosti iz do-community/ansible-playbooks repozitorija. Klonirat ćemo ovaj repozitorij unutar Ansible kontrolnog čvora.
Možete pokrenuti git pull naredbu kako je navedeno u nastavku:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Provjerite imate li ažuriranu verziju gore navedenog repozitorija. To je u slučaju da ste već prije klonirali repozitorij. U nastavku je opisano kako možete preuzeti ažuriranje:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Sada moramo locirati datoteke unutar wordpress-lamp_ubuntu mape. Naziv ove mape može se razlikovati ovisno o verziji Ubuntua koju koristite. Na prvi pogled vidjet ćete sljedeću strukturu u ovom direktoriju:

U nastavku ćemo ukratko opisati svrhu ovih datoteka:
- files/apache.conf.j2: Apache koristi VirtualHost. Ova se datoteka koristi za određivanje postavki za VirtualHost.
- files/wp-config.php.j2: Ova datoteka sadrži postavke za konfiguriranje WordPressa.
- vars/default.yml: Konfigurira postavke playbooka.
- playbook.yml: Ako postoje zadaci koje treba izvršiti na udaljenom poslužitelju, ova se datoteka koristi za njihovu konfiguraciju.
- readme.md: Vodič za korištenje playbooka.
Moramo urediti datoteku varijabli playbooka kako bismo prilagodili instalaciju. Prvo otvorite vars/default.yaml datoteku koja se nalazi unutar gore spomenutog direktorija:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Ova datoteka je prilično dugačka. Sadrži niz konfiguracija koje nam pomažu pri instalaciji:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Postavke sustava php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL postavke mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP postavke http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Ovdje nas zanimaju sljedeće varijable:
- php_modules: Niz koji sadrži PHP proširenja koja bi trebala biti instalirana kako bi podržala vašu WordPress instalaciju. Ako želite instalirati više modula, to možete navesti ovdje.
- mysql_root_password: Lozinka za root MySQL račun.
- mysql_db: Ovo određuje naziv MySQL baze podataka koju će WordPress koristiti.
- mysql_user: Naziv MySQL korisnika kojeg treba kreirati za WordPress.
- mysql_password: Lozinka za novog MySQL korisnika.
- http_host: Naziv domene ili IP adresa poslužitelja.
- http_conf: Naziv konfiguracijske datoteke koja će se kreirati unutar Apachea.
- http_port: HTTP port za ovaj virtualni poslužitelj. Ovaj port se koristi za pristup web stranici. Zadana vrijednost je 80.
Zatim unesite vrijednosti u gornju datoteku, spremite je i zatvorite. Za korisnike koji koriste uređivač nano, pritisnite CTRL+X, Y, i pritisnite ENTER.
Sada ste spremni za pokretanje ovog playbooka. Ovaj playbook možete pokrenuti na jednom ili više poslužitelja. Ako želite pokrenuti ovaj playbook na određenom poslužitelju, možete koristiti -l zastavicu. Nadalje, ako trebate navesti korisnika za povezivanje s udaljenim poslužiteljem, navedite korisnika pomoću -u zastavice.
Pretpostavimo da želimo izvršiti naš playbook na bilo kojem poslužitelju, srvr1 koristeći korisnika u1, možemo pokrenuti naredbu u nastavku:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
Nakon što pokrenete gornju naredbu, dobit ćete izlaz poput ovog u nastavku:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Prikupljanje činjenica] ******************************************************************************** ok: [server1] TASK [Instalacija preduvjeta] ******************************************************************************** ok: [server1] |
Pričekajte dok se izvršavanje playbooka ne završi. Zatim idite na server_name u svom web pregledniku:
|
1 |
http://server_host_or_ip/ |
Vidjet ćete zaslon:

Zatim odaberite jezik po svom izboru i pritisnite Nastavi. Dobit ćete sljedeći zaslon koji traži neke pojedinosti za dovršetak instalacije:

Nakon toga unesite podatke i pritisnite Instaliraj WordPress. To će potrajati neko vrijeme, a zatim ćete vidjeti zaslon poput ovog u nastavku:

Odaberite Prijava za prijavu na svoju web stranicu i konfiguraciju postavki:

Sadržaj Ansible Playbooka
Zapamtite mapu wordpress-lamp_ubuntu . Ona sadrži nekoliko datoteka u sebi. Pa prođimo kroz njih jednu po jednu:
● vars/default.yml
Ova datoteka sadrži vrijednosti koje se koriste za konfiguraciju postavki za vašu WordPress web stranicu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Postavke sustava php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL postavke mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP postavke http_host: "vaša_domena" http_conf: "vaša_domena.conf" http_port: "80" |
● files/apache.conf.j2
Ova se datoteka koristi za konfiguriranje Apache VirtualHosta:
|
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
Ova se datoteka koristi za konfiguriranje WordPressa. Sadrži jedinstvene ključeve i soli generirane hash funkcijama:
|
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 /** * Osnovna konfiguracija za WordPress * * Skripta za stvaranje wp-config.php koristi ovu datoteku tijekom * instalacije. Ne morate koristiti web stranicu, možete * kopirati ovu datoteku u "wp-config.php" i popuniti vrijednosti. * * Ova datoteka sadrži sljedeće konfiguracije: * * * MySQL postavke * * Tajni ključevi * * Prefiks tablica baze podataka * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL postavke - Ove informacije možete dobiti od svog web poslužitelja ** // /** Naziv baze podataka za WordPress */ define( 'DB_NAME', '{{ mysql_db }}' ); /** Korisničko ime MySQL baze podataka */ define( 'DB_USER', '{{ mysql_user }}' ); /** Lozinka MySQL baze podataka */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** Naziv MySQL poslužitelja */ define( 'DB_HOST', 'localhost' ); /** Skup znakova baze podataka koji se koristi pri kreiranju tablica baze podataka. */ define( 'DB_CHARSET', 'utf8' ); /** Vrsta uspoređivanja baze podataka. Nemojte ovo mijenjati ako niste sigurni. */ define( 'DB_COLLATE', '' ); /** Pristup datotečnom sustavu **/ define('FS_METHOD', 'direct'); /**#@+ * Jedinstveni ključevi i soli za autentifikaciju. * * Promijenite ih u različite jedinstvene fraze! * Možete ih generirati pomoću {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org usluge tajnih ključeva} * Možete ih promijeniti u bilo kojem trenutku kako biste poništili sve postojeće kolačiće. To će prisiliti sve korisnike na ponovnu prijavu. * * @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') }}' ); /**#@-*/ /** * Prefiks tablica WordPress baze podataka. * * Možete imati više instalacija u jednoj bazi podataka ako svakoj dodijelite * jedinstveni prefiks. Molimo samo brojeve, slova i podvlake! */ $table_prefix = 'wp_'; /** * Za programere: WordPress način rada za ispravljanje pogrešaka. * * Promijenite ovo u true kako biste omogućili prikaz obavijesti tijekom razvoja. * Preporučuje se da programeri dodataka i tema koriste WP_DEBUG * u svojim razvojnim okruženjima. * * Za informacije o drugim konstantama koje se mogu koristiti za ispravljanje pogrešaka, * posjetite Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* To je sve, prestanite s uređivanjem! Ugodno objavljivanje. */ /** Apsolutna putanja do WordPress direktorija. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** Postavlja WordPress varijable i uključene datoteke. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Ova datoteka sadrži sve zadatke definirane ovom postavkom. Započinje popisom grupe poslužitelja koji su ciljani ovom postavkom. Uključuje vars/default.yml datoteku varijabli za učitavanje konfiguracijskih opcija:
|
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: Instaliraj preduvjete apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Instaliraj LAMP pakete apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Instaliraj PHP proširenja apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache konfiguracija - name: Kreiraj korijenski direktorij file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Postavi up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Ponovno učitaj Apache tags: [ apache ] - name: Omogući rewrite modul shell: /usr/sbin/a2enmod rewrite notify: Ponovno učitaj Apache tags: [ apache ] - name: Omogući novu stranicu shell: /usr/sbin/a2ensite {{ http_conf }} notify: Ponovno učitaj Apache tags: [ apache ] - name: Onemogući zadanu Apache stranicu shell: /usr/sbin/a2dissite 000-default.conf notify: Ponovno pokreni Apache tags: [ apache ] # MySQL konfiguracija - name: Postavi the root lozinku mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Ukloni sve anonimne korisničke račune mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Ukloni the MySQL testnu bazu podataka mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Kreira bazu podataka za WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Kreiraj MySQL korisnika za 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 konfiguracija - name: "UFW - Dopusti HTTP na portu {{ http_port }}" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress konfiguracija - name: Preuzmi i raspakiraj najnoviji 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: Postavi vlasništvo file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Postavi dozvole za direktorije shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Postavi dozvole za datoteke shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: Postavi up wp-konfiguraciju template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Ponovno učitaj Apache service: name: apache2 state: reloaded - name: Ponovno pokreni Apache service: name: apache2 state: restarted |
Možete izmijeniti ove datoteke prema potrebi kako bi odgovarale vašim specifičnim potrebama za web stranicu koju gradite.
Zaključak
U ovom vodiču smo pokazali kako možete automatizirati instalaciju i postavljanje WordPress web stranice koja se izvodi na LAMP stogu na najnovijem operacijskom sustavu Ubuntu pomoću Ansiblea.
Za više vodiča o radu s Ansibleom, možete pogledati sljedeće vodiče na našem blogu:
- Korištenje Ansiblea s CloudSigma
- Automatizacija postavljanja poslužitelja pomoću Ansiblea i Ubuntua 20.04
- Instalacija i konfiguracija LAMP-a na Ubuntu 20.04 s Ansibleom
Sretno računanje!
Komentari
Još nema komentara. Budite prvi.