Cum să implementați mai multe site-uri Wordpress folosind Virtualmin și Ansible pe Ubuntu 16.04

O utilizare obișnuită a unui server virtual Vultr este să găzduiască site-uri web Wordpress. Acest ghid vă arată cum să automatizați configurația unui server virtual de la zero (utilizând Ansible) și să implementați mai multe site-uri web independente Wordpress (utilizând Webmin / Virtualmin). Virtualmin / Webmin este o interfață grafică de utilizator care vă permite să gestionați implementarea mai multor conturi de server virtual pe aceeași mașină (completă cu stiva LAMP / LEMP). Virtualmin este foarte asemănător cu cPanel și Plesk, iar în acest tutorial vom folosi ediția GPL gratuită. După instalarea inițială a serverului Vultr și instalarea Virtualmin, puteți configura foarte repede mai multe servere virtuale din interiorul interfeței Virtualmin și instalați direct Wordpress pe acel server virtual complet cu propriul nume de domeniu.

În acest tutorial, în loc să introducem manual o listă lungă de comenzi, vom folosi în schimb Ansible. Ansible este un instrument de automatizare bazat pe python care vă permite să automatizați în mod sigur și repetat sarcinile serverului. Aceasta înseamnă că, după ce ați urmat acest tutorial, veți putea să implementați un alt server în același mod cu doar câteva comenzi.

Cerințe preliminare

  • Cel puțin un nume de domeniu complet calificat și acces la înregistrările DNS
  • Un cont Vultr

Pasul 1 - Instalarea Ansible pe aparatul local

Instalați Ansible pe mașina locală sau pe un alt server.

mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible

Pasul 2 - Generați chei SSH și implementați serverul

Funcțiile sensibile funcționează conectându-vă la serverul dvs. prin SSH. Accesul SSH este cel mai sigur dacă folosim chei și nu o parolă. Să generăm mai întâi o pereche de chei publice și private.

mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys

În ssh_keysdirector vor fi acum două fișiere ssh_keysși ssh_keys.pub. ssh_keyseste fișierul dvs. cu cheie privată și trebuie păstrat în siguranță. Acum puteți deschide ssh_keys.pub, care conține cheia publică.

Conectați-vă la tabloul de bord Vultr și dați clic Deploy New Server.

Selectați o regiune, tipul serverului (Ubuntu 16.04), dimensiunea serverului, apoi SSH keysfaceți clic pe partea 6 ( ) Add New. Pe pagina următoare inserați cheia publică și să dea un nume și faceți clic Add SSH key. În sfârșit, asigurați-vă că este selectată tasta și faceți clic pe Deploy now.
După ce serverul a terminat de implementat, vi se va afișa adresa IP. Va trebui să vă conectați la serverul DNS al numelui dvs. de domeniu și să îl indicați către această adresă.

Pasul 3 - Creați o configurație Ansible de bază

Fișierele de automatizare ale Ansible sunt apelate roles. Mai întâi vom configura structura directorului (în interiorul ansibledirectorului pe care tocmai l-ați creat la pasul 1) și fișierele de bază.

mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml

Editați hostsfișierul pentru a conține următoarele, înlocuind ip addressserverul pe care tocmai l-ați creat. Ansible folosește python 2, pe care Ubuntu 16.04 nu l-a instalat implicit. În hostsfișier îi spunem lui Ansible să utilizeze python 3.

[common]  
192.0.2.1 ansible_python_interpreter=/usr/bin/python3

Editați deploy.ymlfișierul pentru a conține următoarele. Vom folosi rootutilizatorul.

- name: apply common configuration to server
  hosts: all
  user: root
  roles:
    - common

Editați /group_vars/allfișierul pentru a conține următoarele. Aceste variabile spun Ansible locația cheilor dvs. SSH, parametrii fișierului swap, numele dvs. de domeniu complet calificat și parola rădăcină. Vă rugăm să vă amintiți să nu includeți fișierul în controlul sursă, deoarece conține parola într-un text clar.

ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE

Editați common/handlers/main.ymlfișierul pentru a conține următoarele.

- name: restart sshd
  service: name=ssh state=restarted

Pasul 4 - Creați activități responsabile pentru configurarea serverului de bază

Automatizarea sensibilă este mai ușor de înțeles dacă o descompunem în sarcini. Să creăm fișiere pentru fiecare dintre sarcinile noastre din proces.

cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml

main.yml ar trebui să indice fiecare fișier care conține comenzile Ansible, așa că editați-l pentru a conține următoarele.

- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml

Primul pas în configurarea unui nou server este să actualizați memoria cache și să setați fusul orar. Editați common/handlers/setup.ymlfișierul pentru a conține următoarele.

- apt: update_cache=yes
  sudo: yes

- name: set timezone to Europe/London
  timezone:
    name: Europe/London

Acum, vom oferi utilizatorului rădăcină o parolă (pe care va trebui să o accesăm la interfața web virtualmin), dar dezactivăm autentificările de parolă prin SSH (deoarece folosim metoda de autentificare a tastelor mai sigure). Editați users.ymlpentru a conține următoarele.

- 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

Pentru securitate, avem nevoie de un firewall. Vom folosi firewall-ul necomplicat pentru a permite accesul SSH în port 22, accesul web în port 80și acces securizat web în port 443. Editați ufw.ymlfișierul pentru a conține următoarele.

- 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

Opțional, puteți include un fișier swap. Acest lucru este esențial dacă serverul dvs. are mai puțin de 2 GB RAM pentru a evita blocarea memoriei. Editați swap.ymlpentru a conține următoarele.

- 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

Pasul 5 - Adăugați o sarcină sensibilă pentru configurarea virtualmin

Virtualmin are propriul fișier de instalare care poate fi descărcat și rulat de Ansible. Aici folosim instalarea minimă ( LINK). Elementele suplimentare sunt pentru a configura parola serverului MySQL care nu este setată atunci când este instalată de Virtualmin. Trebuie să oprim temporar MySQL și să adăugăm directorul de autentificare înainte de a schimba parola. Editați virtualmin.ymlpentru a conține următoarele.

- 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

Rolul Ansible este acum terminat și suntem gata să le implementăm.

Pasul 6 - Efectuați instalarea cu Ansible

Din folderul ansible, acum putem executa pur și simplu următoarea comandă, iar Ansible va efectua toate sarcinile pe care le-am creat automat. Prima dată când vă conectați, veți primi un avertisment cu cheie SSH, trebuie doar să tastați yesla prompt.

ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts

Dacă dorim să utilizăm un alt server, putem schimba pur și simplu adresa IP din fișierul gazdelor și rula această comandă pentru a finaliza exact aceeași configurare.

Pasul 7 - Expertul post-instalare Virtualmin

Instalarea este completă și acum putem merge la https://192.0.2.1:10000(folosiți adresa IP a serverului dvs.). Browserul dvs. va emite un avertisment de securitate deoarece certificatul este semnat automat, deci faceți clic advancedși adăugați o excepție. Vi se va prezenta o pagină de conectare. Numele de utilizator este root, iar parola este cea introdusă în group_vars/allfișier la pasul 3. Prima dată când introduceți Virtualmin, vi se va prezenta asistentul post-instalare. Puteți parcurge aceste setări manual sau faceți clic cancelpentru a accepta valorile implicite.

Pasul 8 - Creați un server și instalați WordPress

Pentru a începe să funcționeze primul server Wordpress, faceți clic pe tabloul de bord Virtualmin Create Virtual Server. Va trebui să introduceți un nume de domeniu, o descriere și o parolă a administratorilor. Numele de domeniu ar trebui să fie diferit de numele de domeniu complet calificat Virtualmin și va trebui să indicați înregistrarea DNS către adresa IP a serverului dvs.

Dați clic Create Server. După ce Virtualmin a terminat de creat serverul dvs., faceți clic Install Scriptspe meniul din stânga. Selectați Wordpress, faceți clic Show install options, iar în pagina următoare alegeți locația instalării Wordpress. Trebuie doar să alegeți At top levelși să faceți clic Install Now.

Aceasta este tot ce trebuie să faceți - puteți finaliza instalarea Wordpress vizitând dvs. http://example.net/wp-admin/install.php(unde example.neteste acest nume de domeniu al serverelor virtuale). Dacă înregistrările DNS nu s-au propagat încă, puteți accesa Services > Preview Websitemeniul Virtualmin.

Puteți repeta acest pas de mai multe ori pentru a crea mai multe site-uri Wordpress toate pe același server Vultr.

Lasă un comentariu

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe