Hapi 1 - Instalimi i Ansible në kompjuterin tuaj lokal
Hapi 2 - Gjeneroni çelësat SSH dhe vendosni serverin
Hapi 3 - Krijo një konfigurim bazë Ansible
Hapi 4 - Krijoni detyra Ansible për konfigurimin bazë të serverit
Hapi 5 - Shtoni detyrën Ansible për konfigurimin e virtualmin
Hapi 6 - Kryeni instalimin me Ansible
Hapi 7 - Magjistari Virtualmin pas instalimit
Hapi 8 - Krijoni një server dhe instaloni WordPress
Një përdorim i zakonshëm i një serveri virtual Vultr është të presë faqet e internetit të Wordpress. Ky udhëzues ju tregon se si të automatizoni konfigurimin e një serveri virtual nga e para (duke përdorur Ansible) dhe të vendosni shumë uebfaqe të pavarura Wordpress (duke përdorur Webmin/Virtualmin). Virtualmin/Webmin është një ndërfaqe grafike e përdoruesit që ju lejon të menaxhoni vendosjen e llogarive të shumëfishta të serverëve virtualë në të njëjtën makinë (e kompletuar me stack LAMP/LEMP). Virtualmin është shumë i ngjashëm me cPanel dhe Plesk, dhe në këtë tutorial ne do të përdorim edicionin falas të GPL. Pas konfigurimit fillestar të serverit Vultr dhe instalimit të Virtualmin, mund të konfiguroni shumë shpejt serverë virtualë nga brenda ndërfaqes Virtualmin dhe të instaloni drejtpërdrejt Wordpress në atë server virtual të plotë me emrin e tij të domenit.
Në këtë tutorial, në vend që të futim manualisht një listë të gjatë komandash, në vend të kësaj do të përdorim Ansible. Ansible është një mjet automatizimi i bazuar në python, i cili ju lejon të automatizoni në mënyrë të besueshme dhe të përsëritur detyrat e serverit. Kjo do të thotë që pasi të keni ndjekur këtë tutorial, do të jeni në gjendje të vendosni një server tjetër në të njëjtën mënyrë me vetëm disa komanda.
Parakushtet
- Të paktën një emër domeni plotësisht i kualifikuar dhe qasje në të dhënat DNS
- Një llogari Vultr
Hapi 1 - Instalimi i Ansible në kompjuterin tuaj lokal
Instaloni Ansible në kompjuterin tuaj lokal ose në një server tjetër.
mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible
Hapi 2 - Gjeneroni çelësat SSH dhe vendosni serverin
Ansible funksionon duke u identifikuar në serverin tuaj nëpërmjet SSH. Aksesi në SSH është më i sigurti nëse përdorim çelësat dhe jo fjalëkalimin. Le të gjenerojmë fillimisht një çift çelësash publik dhe privat.
mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys
Në ssh_keys
drejtori do të ketë tani dy skedarë, ssh_keys
dhe ssh_keys.pub
. ssh_keys
është skedari juaj i çelësit privat dhe duhet të mbahet i sigurt. Tani mund të hapni ssh_keys.pub
, e cila përmban çelësin publik.
Hyni në pultin e internetit të Vultr dhe klikoni Deploy New Server
.
Zgjidhni një rajon, llojin e serverit (Ubuntu 16.04), madhësinë e serverit dhe më pas në pjesën 6 ( SSH keys
), klikoni Add New
. Në faqen tjetër ngjisni çelësin tuaj publik dhe jepni një emër dhe klikoni Add SSH key
. Më në fund sigurohuni që tasti është zgjedhur dhe klikoni Deploy now
.
Pasi serveri të ketë mbaruar vendosjen, do t'ju shfaqet adresa e tij IP. Do t'ju duhet të identifikoheni në serverin DNS të emrit të domenit tuaj dhe ta drejtoni atë në këtë adresë.
Hapi 3 - Krijo një konfigurim bazë Ansible
Skedarët e automatizimit të Ansible quhen roles
. Fillimisht do të konfigurojmë strukturën e drejtorisë (brenda ansible
drejtorisë që sapo krijuat në hapin 1) dhe skedarët bazë.
mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml
Redaktoni hosts
skedarin që të përmbajë sa vijon, duke zëvendësuar ip address
serverin që sapo keni krijuar. Ansible përdor python 2, të cilin Ubuntu 16.04 nuk e ka të instaluar si parazgjedhje. Në hosts
skedar i themi Ansible të përdorë python 3.
[common]
192.0.2.1 ansible_python_interpreter=/usr/bin/python3
Redaktoni deploy.yml
skedarin që të përmbajë sa vijon. Ne do të përdorim root
përdoruesin.
- name: apply common configuration to server
hosts: all
user: root
roles:
- common
Redaktoni /group_vars/all
skedarin që të përmbajë sa vijon. Këto variabla i tregojnë Ansible vendndodhjen e çelësave tuaj SSH, parametrat e skedarit të shkëmbimit, Emrin tuaj të Domenit plotësisht të Kualifikuar dhe fjalëkalimin rrënjë. Mos harroni të mos e përfshini skedarin në kontrollin e burimit pasi ai përmban fjalëkalimin tuaj në tekst të qartë.
ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE
Redaktoni common/handlers/main.yml
skedarin që të përmbajë sa vijon.
- name: restart sshd
service: name=ssh state=restarted
Hapi 4 - Krijoni detyra Ansible për konfigurimin bazë të serverit
Automatizimi ansible është më i lehtë për t'u kuptuar nëse e ndajmë atë në detyra. Le të krijojmë skedarë për secilën nga detyrat tona në proces.
cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml
main.yml
duhet të tregojë për çdo skedar që përmban komandat Ansible, kështu që modifikojeni që të përmbajë sa vijon.
- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml
Hapi i parë në konfigurimin e një serveri të ri është përditësimi i cache-it të repos dhe vendosja e zonës kohore. Redaktoni common/handlers/setup.yml
skedarin që të përmbajë sa vijon.
- apt: update_cache=yes
sudo: yes
- name: set timezone to Europe/London
timezone:
name: Europe/London
Tani, ne do t'i japim përdoruesit rrënjë një fjalëkalim (i cili do të na duhet për të hyrë në ndërfaqen e internetit virtualmin), por do të çaktivizojmë hyrjet me fjalëkalim përmes SSH (pasi po përdorim metodën e vërtetimit të çelësave më të sigurt). Redakto users.yml
që të përmbajë sa vijon.
- 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
Për siguri, na duhet një mur zjarri. Ne do të përdorim "Firewall-in e pakomplikuar" për të lejuar aksesin SSH në portë 22
, hyrjen në ueb në port 80
dhe aksesin e sigurt në ueb në port 443
. Redaktoni ufw.yml
skedarin që të përmbajë sa vijon.
- 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
Opsionale, mund të përfshini një skedar shkëmbimi. Kjo është thelbësore nëse serveri juaj ka më pak se 2 GB RAM për të shmangur ndërprerjet e kujtesës. Redakto swap.yml
që të përmbajë sa vijon.
- 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
Hapi 5 - Shtoni detyrën Ansible për konfigurimin e virtualmin
Virtualmin ka skedarin e vet të instaluesit i cili mund të shkarkohet dhe ekzekutohet nga Ansible. Këtu po përdorim instalimin minimal ( LINK
). Artikujt shtesë janë për të konfiguruar fjalëkalimin e serverit MySQL i cili nuk vendoset kur instalohet nga Virtualmin. Duhet të ndalojmë përkohësisht MySQL dhe të shtojmë drejtorinë e vërtetimit përpara se të ndryshojmë fjalëkalimin. Redakto virtualmin.yml
që të përmbajë sa vijon.
- 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
Roli i Ansible tani ka përfunduar dhe ne jemi gati të vendosemi.
Nga dosja ansible, tani thjesht mund të ekzekutojmë komandën e mëposhtme dhe Ansible do të kryejë të gjitha detyrat që kemi krijuar automatikisht. Herën e parë që lidheni do të merrni një paralajmërim të çelësit SSH, thjesht shkruani " yes
" në kërkesë.
ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts
Nëse dëshirojmë të përdorim një server tjetër, thjesht mund të ndryshojmë adresën ip në skedarin e hosteve dhe ta ekzekutojmë përsëri atë komandë për të përfunduar saktësisht të njëjtin konfigurim.
Hapi 7 - Magjistari Virtualmin pas instalimit
Instalimi ka përfunduar dhe tani mund të shkojmë te https://192.0.2.1:10000
(përdorni adresën IP të serverit tuaj). Shfletuesi juaj do të lëshojë një paralajmërim sigurie sepse certifikata është e nënshkruar vetë, kështu që klikoni advanced
dhe shtoni një përjashtim. Do t'ju paraqitet një faqe identifikimi. Emri i përdoruesit është root
dhe fjalëkalimi është ai që keni futur në group_vars/all
skedar në hapin 3. Herën e parë që hyni në Virtualmin do t'ju paraqitet magjistari pas instalimit. Mund t'i kaloni këto cilësime manualisht ose të klikoni cancel
për të pranuar parazgjedhjet.
Hapi 8 - Krijoni një server dhe instaloni WordPress
Për të aktivizuar dhe funksionuar serverin tuaj të parë Wordpress, nga paneli i kontrollit Virtualmin klikoni Create Virtual Server
. Do t'ju duhet të vendosni një emër domeni, përshkrim dhe një fjalëkalim administratori. Emri i domenit duhet të jetë i ndryshëm nga emri i domain-it plotësisht i kualifikuar Virtualmin dhe do t'ju duhet të drejtoni rekordin DNS në adresën IP të serverit tuaj.
Klikoni Create Server
. Pasi Virtualmin të ketë mbaruar krijimin e serverit tuaj, klikoni Install Scripts
në menunë e majtë. Zgjidhni Wordpress
, klikoni Show install options
dhe në faqen e mëposhtme zgjidhni vendndodhjen e instalimit të Wordpress. Thjesht zgjidhni At top level
dhe klikoni Install Now
.
Kjo është gjithçka që duhet të bëni - mund të përfundoni instalimin e Wordpress duke vizituar http://example.net/wp-admin/install.php
(ku example.net
është ky emër domaini i serverit virtual). Nëse të dhënat tuaja DNS nuk janë përhapur ende, mund të shkoni te Services > Preview Website
menyja Virtualmin.
Ju mund ta përsërisni këtë hap disa herë për të krijuar faqe të shumta Wordpress të gjitha në të njëjtin server Vultr.