Korak 1 - Instaliranje Ansiblea na vašem lokalnom računalu
Korak 2 - Generirajte SSH ključeve i implementirajte poslužitelj
Korak 3 - Napravite osnovnu Ansible konfiguraciju
Korak 4 - Stvorite Ansible zadatke za osnovno postavljanje poslužitelja
Korak 5 - Dodajte Ansible zadatak za postavljanje virtualmin
Korak 6 - Izvedite instalaciju s Ansibleom
Korak 7 - Virtualmin čarobnjak nakon instalacije
Korak 8 - Napravite poslužitelj i instalirajte WordPress
Uobičajena upotreba Vultr virtualnog poslužitelja je hostiranje Wordpress web stranica. Ovaj vam vodič pokazuje kako automatizirati konfiguraciju virtualnog poslužitelja od nule (pomoću Ansiblea) i implementirati više neovisnih Wordpress web stranica (pomoću Webmin/Virtualmin). Virtualmin/Webmin je grafičko korisničko sučelje koje vam omogućuje upravljanje implementacijom više računa virtualnog poslužitelja na istom stroju (zajedno sa LAMP/LEMP stogom). Virtualmin je vrlo sličan cPanelu i Plesku, a u ovom vodiču koristit ćemo besplatno GPL izdanje. Nakon početnog postavljanja Vultr poslužitelja i instalacije Virtualmina, možete vrlo brzo postaviti više virtualnih poslužitelja unutar Virtualmin sučelja i izravno instalirati Wordpress na taj virtualni poslužitelj zajedno s vlastitim imenom domene.
U ovom vodiču, umjesto ručnog unosa dugačkog popisa naredbi, koristit ćemo Ansible. Ansible je alat za automatizaciju baziran na pythonu koji vam omogućuje pouzdanu i opetovanu automatizaciju zadataka poslužitelja. To znači da ćete nakon što slijedite ovaj vodič moći implementirati drugi poslužitelj na isti način sa samo nekoliko naredbi.
Preduvjeti
- Najmanje jedan potpuno kvalificirani naziv domene i pristup DNS zapisima
- Vultr račun
Korak 1 - Instaliranje Ansiblea na vašem lokalnom računalu
Instalirajte Ansible na vašem lokalnom računalu ili drugom poslužitelju.
mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible
Korak 2 - Generirajte SSH ključeve i implementirajte poslužitelj
Ansible radi prijavom na vaš poslužitelj putem SSH-a. SSH pristup je najsigurniji ako koristimo ključeve umjesto lozinke. Prvo generirajmo javni i privatni par ključeva.
mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys
U ssh_keysdirektoriju će sada biti dvije datoteke ssh_keysi ssh_keys.pub. ssh_keysje vaša datoteka privatnog ključa i treba je čuvati na sigurnom. Sada možete otvoriti ssh_keys.pub, koji sadrži javni ključ.
Prijavite se na Vultr web nadzornu ploču i kliknite Deploy New Server.
Odaberite regiju, vrstu poslužitelja (Ubuntu 16.04), veličinu poslužitelja, a zatim u dijelu 6 ( SSH keys), kliknite Add New. Na sljedećoj stranici zalijepite svoj javni ključ i dajte mu ime te kliknite Add SSH key. Na kraju provjerite je li ključ odabran i kliknite Deploy now.
Nakon što poslužitelj završi s implementacijom, bit će vam prikazana njegova IP adresa. Morat ćete se prijaviti na DNS poslužitelj imena svoje domene i usmjeriti ga na ovu adresu.
Korak 3 - Napravite osnovnu Ansible konfiguraciju
Ansibleove automatizacijske datoteke nazivaju se roles. Prvo ćemo postaviti strukturu direktorija (unutar ansibledirektorija koji ste upravo stvorili u koraku 1) i osnovne datoteke.
mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml
Uredite hostsdatoteku tako da sadrži sljedeće, zamjenjujući ip addressposlužitelj koji ste upravo stvorili. Ansible koristi python 2, koji Ubuntu 16.04 nema instaliran prema zadanim postavkama. U hostsdatoteci kažemo Ansibleu da koristi python 3.
[common]
192.0.2.1 ansible_python_interpreter=/usr/bin/python3
Uredite deploy.ymldatoteku tako da sadrži sljedeće. Koristit ćemo rootkorisnika.
- name: apply common configuration to server
hosts: all
user: root
roles:
- common
Uredite /group_vars/alldatoteku tako da sadrži sljedeće. Ove varijable govore Ansibleu lokaciju vaših SSH ključeva, parametre swap datoteke, vaš potpuno kvalificirani naziv domene i root lozinku. Ne zaboravite da ne uključujete datoteku u izvornu kontrolu jer sadrži vašu lozinku u čistom tekstu.
ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE
Uredite common/handlers/main.ymldatoteku tako da sadrži sljedeće.
- name: restart sshd
service: name=ssh state=restarted
Korak 4 - Stvorite Ansible zadatke za osnovno postavljanje poslužitelja
Ansible automatizaciju je lakše razumjeti ako je podijelimo na zadatke. Stvorimo datoteke za svaki naš zadatak u tom procesu.
cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml
main.yml treba pokazivati na svaku datoteku koja sadrži Ansible naredbe, stoga je uredite tako da sadrži sljedeće.
- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml
Prvi korak u postavljanju novog poslužitelja je ažuriranje repo predmemorije i postavljanje vremenske zone. Uredite common/handlers/setup.ymldatoteku tako da sadrži sljedeće.
- apt: update_cache=yes
sudo: yes
- name: set timezone to Europe/London
timezone:
name: Europe/London
Sada ćemo root korisniku dati lozinku (koja će nam trebati za pristup web sučelju virtualmin), ali onemogućiti prijavu lozinkom preko SSH-a (budući da koristimo metodu provjere autentičnosti sa sigurnijim ključevima). Uredite tako users.ymlda sadrži sljedeće.
- name: Change passwd
user: name=root password={{ new_password | password_hash('sha512') }} update_password=always
- name: Disable SSH password login
lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
notify: restart sshd
Za sigurnost nam je potreban vatrozid. Koristit ćemo Nekomplicirani vatrozid da omogućimo SSH pristup na portu 22, pristup webu na portu 80i siguran web pristup na portu 443. Uredite ufw.ymldatoteku tako da sadrži sljedeće.
- name: Set default firewall policy to deny all
become: True
ufw: state=enabled direction=incoming policy=deny
tags: firewall
- name: enable SSH in firewall
ufw: rule=allow port=22
sudo: yes
- name: enable HTTP connections for web server
ufw: rule=allow port=80
sudo: yes
- name: enable HTTPS connections for web server
ufw: rule=allow port=443
sudo: yes
- name: enable firewall
ufw: state=enabled
sudo: yes
Po želji možete uključiti swap datoteku. Ovo je bitno ako vaš poslužitelj ima manje od 2 GB RAM-a kako bi se izbjegla rušenja bez memorije. Uredite tako swap.ymlda sadrži sljedeće.
- name: Set swap_file variable
set_fact:
swap_file: "{{swap_file_path}}"
tags:
- swap.set.file.path
- name: Check if swap file exists
stat:
path: "{{swap_file}}"
register: swap_file_check
tags:
- swap.file.check
- name: Create swap file
command: fallocate -l {{swap_file_size}} {{swap_file}}
when: not swap_file_check.stat.exists
tags:
- swap.file.create
- name: Change swap file permissions
file: path="{{swap_file}}"
owner=root
group=root
mode=0600
tags:
- swap.file.permissions
- name: Format swap file
sudo: yes
command: "mkswap {{swap_file}}"
when: not swap_file_check.stat.exists
tags:
- swap.file.mkswap
- name: Write swap entry in fstab
mount: name=none
src={{swap_file}}
fstype=swap
opts=sw
passno=0
dump=0
state=present
tags:
- swap.fstab
- name: Turn on swap
sudo: yes
command: swapon -a
when: not swap_file_check.stat.exists
tags:
- swap.turn.on
- name: Set swappiness
sudo: yes
sysctl:
name: vm.swappiness
value: "{{swappiness}}"
tags:
- swap.set.swappiness
Korak 5 - Dodajte Ansible zadatak za postavljanje virtualmin
Virtualmin ima svoju datoteku za instalaciju koju Ansible može preuzeti i pokrenuti. Ovdje koristimo minimalnu instalaciju ( LINK). Dodatne stavke su konfiguriranje lozinke MySQL poslužitelja koja nije postavljena kada je Virtualmin instalira. Moramo privremeno zaustaviti MySQL i dodati direktorij za provjeru autentičnosti prije promjene lozinke. Uredite tako virtualmin.ymlda sadrži sljedeće.
- name: download virtualmin install script
get_url: >
url=http://software.virtualmin.com/gpl/scripts/install.sh
dest=/root/install.sh
mode=0755
- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
tags: non-idem
shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
args:
chdir: /root
- name: temp stop mysql
service:
name: mysql
state: stopped
- name: change owner (and group) of mysqld dir
file:
path: "/var/run/mysqld"
state: directory
owner: mysql
group: mysql
- name: virtualmin set mysql password
shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}
- name: restart mysql
service:
name: mysql
state: started
Ansible uloga je sada gotova i spremni smo za implementaciju.
Iz mape ansible sada jednostavno možemo pokrenuti sljedeću naredbu i Ansible će automatski izvršiti sve zadatke koje smo kreirali. Kada se prvi put povežete, dobit ćete upozorenje o SSH ključu, samo upišite " yes" na upit.
ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts
Ako želimo koristiti drugi poslužitelj, možemo jednostavno promijeniti IP adresu u datoteci hosts i ponovno pokrenuti tu naredbu kako bismo dovršili potpuno isto postavljanje.
Korak 7 - Virtualmin čarobnjak nakon instalacije
Instalacija je završena i sada možemo ići na https://192.0.2.1:10000(koristite ip adresu vašeg poslužitelja). Vaš preglednik će izdati sigurnosno upozorenje jer je certifikat samopotpisan, stoga kliknite advancedi dodajte iznimku. Bit će vam prikazana stranica za prijavu. Korisničko ime je root, a lozinka je ona koju ste unijeli u group_vars/alldatoteku u koraku 3. Kada prvi put uđete u Virtualmin, prikazat će vam se čarobnjak nakon instalacije. Možete proći kroz ove postavke ručno ili kliknuti cancelda prihvatite zadane postavke.
Korak 8 - Napravite poslužitelj i instalirajte WordPress
Da biste pokrenuli svoj prvi Wordpress poslužitelj, na nadzornoj ploči Virtualmin kliknite Create Virtual Server. Morat ćete unijeti naziv domene, opis i lozinku administratora. Naziv domene trebao bi se razlikovati od potpuno kvalificiranog naziva domene Virtualmin i morat ćete usmjeriti DNS zapis na IP adresu vašeg poslužitelja.
Kliknite Create Server. Nakon što Virtualmin završi kreiranje vašeg poslužitelja, kliknite Install Scriptsna izbornik s lijeve strane. Odaberite Wordpress, kliknite Show install optionsi na sljedećoj stranici odaberite mjesto instalacije Wordpressa. Samo odaberite At top leveli kliknite Install Now.
To je sve što trebate učiniti - možete dovršiti instalaciju Wordpressa tako što ćete posjetiti svoju http://example.net/wp-admin/install.php(gdje example.netje naziv domene ovog virtualnog poslužitelja). Ako se vaši DNS zapisi još nisu proširili, možete ići na Services > Preview Websites izbornika Virtualmin.
Ovaj korak možete ponoviti više puta kako biste stvorili više Wordpress stranica na istom Vultr poslužitelju.