Slik distribuerer du flere Wordpress-nettsteder ved å bruke Virtualmin og Ansible på Ubuntu 16.04

En vanlig bruk av en Vultr virtuell server er å være vert for Wordpress-nettsteder. Denne veiledningen viser deg hvordan du automatiserer konfigurasjonen av en virtuell server fra bunnen av (ved hjelp av Ansible) og distribuerer flere uavhengige Wordpress-nettsteder (ved hjelp av Webmin/Virtualmin). Virtualmin/Webmin er et grafisk brukergrensesnitt som lar deg administrere distribusjon av flere virtuelle serverkontoer på samme maskin (komplett med LAMP/LEMP-stack). Virtualmin ligner veldig på cPanel og Plesk, og i denne opplæringen skal vi bruke den gratis GPL-utgaven. Etter første oppsett av Vultr-serveren og installasjon av Virtualmin, kan du veldig raskt sette opp flere virtuelle servere fra Virtualmin-grensesnittet og installere Wordpress direkte på den virtuelle serveren komplett med sitt eget domenenavn.

I denne opplæringen, i stedet for å legge inn en lang liste med kommandoer manuelt, bruker vi i stedet Ansible. Ansible er et pythonbasert automatiseringsverktøy som lar deg pålitelig og gjentatte ganger automatisere serveroppgaver. Dette betyr at når du har fulgt denne opplæringen, vil du kunne distribuere en annen server på samme måte med bare et par kommandoer.

Forutsetninger

  • Minst ett fullt kvalifisert domenenavn og tilgang til DNS-postene
  • En Vultr-konto

Trinn 1 - Installere Ansible på din lokale maskin

Installer Ansible på din lokale maskin eller en annen server.

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

Trinn 2 - Generer SSH-nøkler og distribuer server

Ansible fungerer ved å logge på serveren din via SSH. SSH-tilgang er sikrest hvis vi bruker nøkler i stedet for et passord. La oss først generere et offentlig og privat nøkkelpar.

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

I ssh_keyskatalogen vil det nå være to filer, ssh_keysog ssh_keys.pub. ssh_keyser din private nøkkelfil og bør oppbevares trygt. Du kan nå åpne ssh_keys.pub, som inneholder den offentlige nøkkelen.

Logg på Vultrs nettdashbord og klikk på Deploy New Server.

Velg en region, Servertype (Ubuntu 16.04), Serverstørrelse, og klikk deretter i del 6 ( SSH keys) Add New. På neste side limer du inn den offentlige nøkkelen og gir den et navn, og klikker Add SSH key. Kontroller til slutt at nøkkelen er valgt, og klikk på Deploy now.
Når serveren er ferdig distribuert, vil du bli vist IP-adressen. Du må logge på domenenavnets DNS-server og peke den til denne adressen.

Trinn 3 - Lag en grunnleggende Ansible-konfigurasjon

Ansibles automatiseringsfiler kalles roles. Vi vil først sette opp katalogstrukturen (inne i ansiblekatalogen du nettopp opprettet i trinn 1), og de grunnleggende filene.

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

Rediger hostsfilen slik at den inneholder følgende, og erstatter ip addressserveren du nettopp opprettet. Ansible bruker python 2, som Ubuntu 16.04 ikke har installert som standard. I hostsfilen forteller vi Ansible å bruke python 3.

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

Rediger deploy.ymlfilen slik at den inneholder følgende. Vi kommer til å bruke rootbrukeren.

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

Rediger /group_vars/allfilen slik at den inneholder følgende. Disse variablene forteller Ansible plasseringen av SSH-nøklene dine, swap-filparametere, ditt fullt kvalifiserte domenenavn og root-passordet. Husk å ikke inkludere filen i kildekontrollen da den inneholder passordet ditt i klartekst.

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

Rediger common/handlers/main.ymlfilen slik at den inneholder følgende.

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

Trinn 4 - Lag Ansible oppgaver for grunnleggende serveroppsett

Ansible automatisering er lettere å forstå hvis vi deler den ned i oppgaver. La oss lage filer for hver av oppgavene våre i prosessen.

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

main.yml skal peke til hver fil som inneholder Ansible-kommandoene, så rediger den slik at den inneholder følgende.

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

Det første trinnet i å sette opp en ny server er å oppdatere repo-cachen og angi tidssonen. Rediger common/handlers/setup.ymlfilen slik at den inneholder følgende.

- apt: update_cache=yes
  sudo: yes

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

Nå gir vi root-brukeren et passord (som vi trenger for å få tilgang til virtualmin-nettgrensesnittet), men deaktiverer passordpålogginger over SSH (siden vi bruker den sikrere nøklermetoden for autentisering). Rediger for users.ymlå inneholde følgende.

- 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

For sikkerheten trenger vi en brannmur. Vi vil bruke den ukompliserte brannmuren for å tillate SSH-tilgang på port 22, nettilgang på port 80og sikker nettilgang på port 443. Rediger ufw.ymlfilen slik at den inneholder følgende.

- 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

Eventuelt kan du inkludere en byttefil. Dette er viktig hvis serveren din har mindre enn 2 GB RAM for å unngå at det er tomt for minne. Rediger for swap.ymlå inneholde følgende.

- 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

Trinn 5 - Legg til Ansible-oppgave for virtualmin-oppsett

Virtualmin har sin egen installasjonsfil som kan lastes ned og kjøres av Ansible. Her bruker vi minimal installasjon ( LINK). De ekstra elementene er å konfigurere MySQL-serverpassordet som ikke er satt når det installeres av Virtualmin. Vi må midlertidig stoppe MySQL og legge til autentiseringskatalogen før vi endrer passordet. Rediger for virtualmin.ymlå inneholde følgende.

- 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-rollen er nå fullført, og vi er klare til å distribuere.

Trinn 6 - Utfør installasjonen med Ansible

Fra ansible-mappen kan vi nå ganske enkelt kjøre følgende kommando, og Ansible vil utføre alle oppgavene vi har opprettet automatisk. Første gang du kobler til vil du få en SSH-nøkkeladvarsel, bare skriv " yes" ved ledeteksten.

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

Hvis vi ønsker å bruke en annen server, kan vi ganske enkelt endre ip-adressen i vertsfilen og kjøre den kommandoen på nytt for å fullføre nøyaktig samme oppsett.

Trinn 7 - Virtualmin etterinstallasjonsveiviser

Installasjonen er fullført og vi kan nå gå til https://192.0.2.1:10000(bruk ip-adressen til serveren din). Nettleseren din vil utstede en sikkerhetsadvarsel fordi sertifikatet er selvsignert, så klikk advancedog legg til et unntak. Du vil bli presentert med en påloggingsside. Brukernavnet er root, og passordet er det du skrev inn i group_vars/allfilen i trinn 3. Første gang du går inn i Virtualmin vil du bli presentert med etterinstallasjonsveiviseren. Du kan enten gå gjennom disse innstillingene manuelt eller klikke for cancelå godta standardinnstillingene.

Trinn 8 - Lag en server og installer WordPress

For å få din første Wordpress-server i gang, klikk på fra Virtualmin-dashbordet Create Virtual Server. Du må angi et domenenavn, en beskrivelse og et administratorpassord. Domenenavnet bør være forskjellig fra det fullstendige Virtualmin-domenenavnet, og du må peke DNS-posten til ip-adressen til serveren din.

Klikk på Create Server. Når Virtualmin er ferdig med å lage serveren din, klikk Install Scriptspå menyen til venstre. Velg Wordpress, klikk Show install optionsog på den neste siden velg plasseringen av Wordpress-installasjonen. Bare velg At top levelog klikk Install Now.

Det er alt du trenger å gjøre - du kan fullføre Wordpress-installasjonen ved å besøke ditt http://example.net/wp-admin/install.php(hvor example.neter dette virtuelle serverens domenenavn). Hvis DNS-postene dine ikke har spredt seg ennå, kan du gå til Services > Preview Websitefra Virtualmin-menyen.

Du kan gjenta dette trinnet flere ganger for å lage flere Wordpress-sider alle på samme Vultr-server.


Opprette en Jekyll-blogg på Ubuntu 16.04

Opprette en Jekyll-blogg på Ubuntu 16.04

Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

Hvordan installere MODX Revolution på en FreeBSD 11 FAMP VPS

Hvordan installere MODX Revolution på en FreeBSD 11 FAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i PHP. Det jeg

Installer WordPress på OpenBSD 6.2

Installer WordPress på OpenBSD 6.2

Introduksjon WordPress er det dominerende innholdsstyringssystemet på internett. Den driver alt fra blogger til komplekse nettsteder med dynamisk innhold

Opprette en Jekyll-blogg på CentOS 7

Opprette en Jekyll-blogg på CentOS 7

Bruker du et annet system? Jekyll er et godt alternativ til WordPress. Det krever ingen databaser, og det fungerer med et språk mange er kjent med

Hvordan installere MODX Revolution på en CentOS 7 LAMP VPS

Hvordan installere MODX Revolution på en CentOS 7 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

Installere Fork CMS på CentOS 7

Installere Fork CMS på CentOS 7

Bruker du et annet system? Fork er et åpen kildekode CMS skrevet i PHP. Forks kildekode er vert på GitHub. Denne guiden viser deg hvordan du installerer Fork CM

Slik installerer du Neos CMS på CentOS 7

Slik installerer du Neos CMS på CentOS 7

Neos er et innovativt innholdsstyringssystem med åpen kildekode som er flott for å lage og redigere innhold på nettet. Med forfattere og redaktører i tankene, Neo

Hvordan distribuere Ghost v0.11 LTS på CentOS 7.3

Hvordan distribuere Ghost v0.11 LTS på CentOS 7.3

Bruker du et annet system? Ghost er en bloggplattform med åpen kildekode som har blitt populær blant utviklere og vanlige brukere siden 201

Hvordan installere SilverStripe CMS på en FreeBSD 11 FAMP VPS

Hvordan installere SilverStripe CMS på en FreeBSD 11 FAMP VPS

Bruker du et annet system? SilverStripe er et fleksibelt og utvidbart, åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i PHP. Det er lett

Hvordan distribuere Ghost v0.11 LTS på Fedora 25

Hvordan distribuere Ghost v0.11 LTS på Fedora 25

Bruker du et annet system? Ghost er en bloggplattform med åpen kildekode som har blitt populær blant utviklere og vanlige brukere siden 201

Slik distribuerer du flere Wordpress-nettsteder ved å bruke Virtualmin og Ansible på Ubuntu 16.04

Slik distribuerer du flere Wordpress-nettsteder ved å bruke Virtualmin og Ansible på Ubuntu 16.04

En vanlig bruk av en Vultr virtuell server er å være vert for Wordpress-nettsteder. Denne guiden viser deg hvordan du automatiserer konfigurasjonen av en virtuell server fra bunnen av

Sette opp Ghost Professional Publishing Platform på OpenBSD 6

Sette opp Ghost Professional Publishing Platform på OpenBSD 6

Ghost er den nyeste og beste oppkomlingen til å konkurrere med WordPress. Temautvikling er rask og enkel å lære fordi Ghost-utviklerne bestemte seg for å bruke både th

Installer og konfigurer en Ghost v1.0.0-blogg på Ubuntu 16.04

Installer og konfigurer en Ghost v1.0.0-blogg på Ubuntu 16.04

Ghost er en moderne, åpen kildekode-publiseringsplattform bygget på Node.js med en Ember.js admin-klient, en JSON API og en tema-API drevet av Handlebars.js. Ghos

Hvordan installere MODX Revolution på en Fedora 26 LAMP VPS

Hvordan installere MODX Revolution på en Fedora 26 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

Hvordan installere Dotclear på Debian 9 (Stretch)

Hvordan installere Dotclear på Debian 9 (Stretch)

Bruker du et annet system? Dotclear er en veldig enkel bloggingmotor. Den er åpen kildekode og enkel å bruke. Denne opplæringen vil gå gjennom installasjonen på

Hvordan installere SilverStripe CMS på en Fedora 26 LAMP VPS

Hvordan installere SilverStripe CMS på en Fedora 26 LAMP VPS

Bruker du et annet system? SilverStripe er et fleksibelt og utvidbart gratis og åpen kildekode for enterprise-grade Content Management System (CMS) skrevet i PHP. Jeg

Installere Fork CMS på Ubuntu 16.04 LTS

Installere Fork CMS på Ubuntu 16.04 LTS

Bruker du et annet system? Fork er et åpen kildekode CMS skrevet i PHP. Forks kildekode er vert på GitHub. Denne guiden viser deg hvordan du installerer Fork CM

Hvordan distribuere Ghost på Debian 8.7

Hvordan distribuere Ghost på Debian 8.7

Bruker du et annet system? Ghost er en bloggplattform med åpen kildekode som har blitt mer populær blant utviklere og vanlige brukere siden utgivelsen i 2013. Jeg

Installere Fork CMS på Debian 9

Installere Fork CMS på Debian 9

Bruker du et annet system? Fork er et åpen kildekode CMS skrevet i PHP. Forks kildekode er vert på GitHub. Denne guiden viser deg hvordan du installerer Fork CM

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer