Как да разположите множество сайтове на Wordpress с помощта на Virtualmin и Ansible в Ubuntu 16.04

Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата (с помощта на Ansible) и да разположите множество независими уебсайтове на Wordpress (с помощта на Webmin/Virtualmin). Virtualmin/Webmin е графичен потребителски интерфейс, който ви позволява да управлявате внедряването на множество акаунти за виртуален сървър на една и съща машина (в комплект със стек LAMP/LEMP). Virtualmin е много подобен на cPanel и Plesk и в този урок ще използваме безплатното издание на GPL. След първоначалната настройка на сървъра Vultr и инсталирането на Virtualmin, можете много бързо да настроите множество виртуални сървъри от интерфейса на Virtualmin и директно да инсталирате Wordpress на този виртуален сървър заедно със собственото име на домейн.

В този урок, вместо ръчно да въвеждаме дълъг списък от команди, вместо това ще използваме Ansible. Ansible е инструмент за автоматизация, базиран на python, който ви позволява надеждно и многократно да автоматизирате сървърни задачи. Това означава, че след като следвате този урок, ще можете да разположите друг сървър по същия начин само с няколко команди.

Предпоставки

  • Поне едно напълно квалифицирано име на домейн и достъп до DNS записите
  • Vultr акаунт

Стъпка 1 - Инсталиране на Ansible на вашата локална машина

Инсталирайте Ansible на вашата локална машина или друг сървър.

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

Стъпка 2 - Генерирайте SSH ключове и разгръщайте сървъра

Ansible работи, като влезе във вашия сървър чрез SSH. SSH достъпът е най-сигурен, ако използваме ключове, а не парола. Нека първо генерираме двойка публичен и частен ключ.

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

В ssh_keysдиректорията вече ще има два файла ssh_keysи ssh_keys.pub. ssh_keysе вашият файл с частен ключ и трябва да се съхранява в безопасност. Вече можете да отворите ssh_keys.pub, който съдържа публичния ключ.

Влезте в уеб таблото за управление на Vultr и щракнете върху Deploy New Server.

Изберете регион, тип сървър (Ubuntu 16.04), размер на сървъра и след това в част 6 ( SSH keys), щракнете върху Add New. На следващата страница поставете своя публичен ключ и му дайте име и щракнете върху Add SSH key. Накрая се уверете, че ключът е избран и щракнете върху Deploy now.
След като сървърът приключи с разгръщането, ще ви бъде показан неговият IP адрес. Ще трябва да влезете в DNS сървъра на името на вашия домейн и да го насочите към този адрес.

Стъпка 3 - Създайте основна конфигурация на Ansible

Файловете за автоматизация на Ansible се наричат roles. Първо ще настроим структурата на директорията (вътре в ansibleдиректорията, която току-що създадохте в стъпка 1) и основните файлове.

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

Редактирайте hostsфайла, за да съдържа следното, като замените ip addressсървъра, който току-що създадохте. Ansible използва python 2, който Ubuntu 16.04 не е инсталиран по подразбиране. Във hostsфайла казваме на Ansible да използва python 3.

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

Редактирайте deploy.ymlфайла, за да съдържа следното. Ще използваме rootпотребителя.

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

Редактирайте /group_vars/allфайла, за да съдържа следното. Тези променливи казват на Ansible местоположението на вашите SSH ключове, параметрите на суап файла, вашето напълно квалифицирано име на домейн и root паролата. Моля, не забравяйте да не включвате файла в контрола на източника, тъй като съдържа вашата парола в ясен текст.

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

Редактирайте common/handlers/main.ymlфайла, за да съдържа следното.

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

Стъпка 4 - Създайте Ansible задачи за основна настройка на сървъра

Ansible автоматизацията е по-лесна за разбиране, ако я разделим на задачи. Нека създадем файлове за всяка наша задача в процеса.

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

main.yml трябва да сочи към всеки файл, съдържащ командите Ansible, така че го редактирайте, за да съдържа следното.

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

Първата стъпка при настройката на нов сървър е да актуализирате кеша на репо и да зададете часовата зона. Редактирайте common/handlers/setup.ymlфайла, за да съдържа следното.

- apt: update_cache=yes
  sudo: yes

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

Сега ще дадем на root потребител парола (която ще ни е необходима за достъп до уеб интерфейса на virtualmin), но ще деактивираме влизането с парола през SSH (тъй като използваме метода с по-сигурни ключове за удостоверяване). Редактирайте, за users.ymlда съдържа следното.

- 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

За сигурност имаме нужда от защитна стена. Ще използваме неусложнената защитна стена, за да разрешим SSH достъп на порт 22, уеб достъп на порт 80и защитен уеб достъп на порт 443. Редактирайте ufw.ymlфайла, за да съдържа следното.

- 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

По желание можете да включите суап файл. Това е от съществено значение, ако вашият сървър има по-малко от 2 GB RAM, за да избегнете сривове при липса на памет. Редактирайте, за swap.ymlда съдържа следното.

- 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

Стъпка 5 - Добавете задача Ansible за настройка на virtualmin

Virtualmin има собствен инсталационен файл, който може да бъде изтеглен и стартиран от Ansible. Тук използваме минималната инсталация ( LINK). Допълнителните елементи са да конфигурирате паролата на MySQL сървъра, която не е зададена при инсталиране от Virtualmin. Трябва временно да спрем MySQL и да добавим директорията за удостоверяване, преди да променим паролата. Редактирайте, за virtualmin.ymlда съдържа следното.

- 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 вече е завършена и сме готови за внедряване.

Стъпка 6 - Извършете инсталиране с Ansible

От папката ansible вече можем просто да изпълним следната команда и Ansible ще изпълни всички задачи, които сме създали автоматично. Първият път, когато се свържете, ще получите предупреждение за SSH ключ, просто въведете " yes" при подкана.

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

Ако искаме да използваме друг сървър, можем просто да променим ip адреса във файла hosts и да изпълним тази команда отново, за да завършим точно същата настройка.

Стъпка 7 - Съветник за след инсталиране на Virtualmin

Инсталацията е завършена и вече можем да отидем https://192.0.2.1:10000(използвайте ip адреса на вашия сървър). Вашият браузър ще издаде предупреждение за сигурност, тъй като сертификатът е самоподписан, така че щракнете advancedи добавете изключение. Ще ви бъде представена страница за вход. Потребителското име е root, а паролата е тази, която сте въвели във group_vars/allфайла в стъпка 3. Първият път, когато влезете във Virtualmin, ще ви бъде представен съветника след инсталиране. Можете да преминете през тези настройки ръчно или да щракнете, за cancelда приемете настройките по подразбиране.

Стъпка 8 - Създайте сървър и инсталирайте WordPress

За да стартирате и стартирате първия си сървър на Wordpress, от таблото за управление на Virtualmin щракнете върху Create Virtual Server. Ще трябва да въведете име на домейн, описание и администраторска парола. Името на домейна трябва да е различно от пълното име на домейн Virtualmin и ще трябва да насочите DNS записа към ip адреса на вашия сървър.

Щракнете върху Create Server. След като Virtualmin приключи създаването на вашия сървър, щракнете Install Scriptsвърху менюто отляво. Изберете Wordpress, щракнете Show install optionsи на следващата страница изберете местоположението на инсталацията на Wordpress. Просто изберете At top levelи кликнете Install Now.

Това е всичко, което трябва да направите - можете да завършите инсталирането на Wordpress, като посетите вашия http://example.net/wp-admin/install.php(къде example.netе името на този домейн на виртуални сървъри). Ако вашите DNS записи все още не са разпространени, можете да отидете Services > Preview Websiteот менюто Virtualmin.

Можете да повторите тази стъпка няколко пъти, за да създадете множество сайтове на Wordpress, всички на един и същ сървър Vultr.


Създаване на блог на Jekyll в Ubuntu 16.04

Създаване на блог на Jekyll в Ubuntu 16.04

Използване на различна система? Jekyll е чудесна алтернатива на WordPress за блогове или споделяне на съдържание. Не изисква никакви бази данни и е много лесно i

Как да инсталирате MODX Revolution на Ubuntu 16.04 LAMP VPS

Как да инсталирате MODX Revolution на Ubuntu 16.04 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема система за управление на съдържанието (CMS) от корпоративен клас, написана на PHP. То и

Инсталирайте WordPress на OpenBSD 6.2

Инсталирайте WordPress на OpenBSD 6.2

Въведение WordPress е доминиращата система за управление на съдържанието в интернет. Той захранва всичко от блогове до сложни уебсайтове с динамично съдържание

Създаване на блог на Jekyll на CentOS 7

Създаване на блог на Jekyll на CentOS 7

Използване на различна система? Jekyll е добра алтернатива на WordPress. Не изисква никакви бази данни и работи с език, който мнозина познават

Как да инсталирате MODX Revolution на CentOS 7 LAMP VPS

Как да инсталирате MODX Revolution на CentOS 7 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Инсталиране на Fork CMS на CentOS 7

Инсталиране на Fork CMS на CentOS 7

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да инсталирате Neos CMS на CentOS 7

Как да инсталирате Neos CMS на CentOS 7

Neos е иновативна система за управление на съдържанието с отворен код, която е чудесна за създаване и редактиране на онлайн съдържание. Имайки предвид авторите и редакторите, Neo

Как да разположите Ghost v0.11 LTS на CentOS 7.3

Как да разположите Ghost v0.11 LTS на CentOS 7.3

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.

Как да инсталирате SilverStripe CMS на FreeBSD 11 FAMP VPS

Как да инсталирате SilverStripe CMS на FreeBSD 11 FAMP VPS

Използване на различна система? SilverStripe е гъвкава и разширяема система за управление на съдържанието (CMS) с отворен код, написана на PHP. Това е лесно

Как да разположите Ghost v0.11 LTS на Fedora 25

Как да разположите Ghost v0.11 LTS на Fedora 25

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.

Как да разположите множество сайтове на Wordpress с помощта на Virtualmin и Ansible в Ubuntu 16.04

Как да разположите множество сайтове на Wordpress с помощта на Virtualmin и Ansible в Ubuntu 16.04

Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата

Настройване на Ghost Professional Publishing Platform на OpenBSD 6

Настройване на Ghost Professional Publishing Platform на OpenBSD 6

Ghost е най-новата и най-добрата нова, която да съперничи на WordPress. Разработването на теми е бързо и лесно за научаване, защото разработчиците на Ghost решиха да използват и двете

Инсталирайте и конфигурирайте блог Ghost v1.0.0 в Ubuntu 16.04

Инсталирайте и конфигурирайте блог Ghost v1.0.0 в Ubuntu 16.04

Ghost е модерна платформа за публикуване с отворен код, изградена на Node.js с администраторски клиент Ember.js, JSON API и API за тема, задвижван от Handlebars.js. Ghos

Как да инсталирате MODX Revolution на Fedora 26 LAMP VPS

Как да инсталирате MODX Revolution на Fedora 26 LAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i

Как да инсталирате Dotclear на Debian 9 (разтягане)

Как да инсталирате Dotclear на Debian 9 (разтягане)

Използване на различна система? Dotclear е много прост двигател за блогове. Той е с отворен код и лесен за използване. Този урок ще премине през инсталацията

Инсталиране на Fork CMS на Ubuntu 16.04 LTS

Инсталиране на Fork CMS на Ubuntu 16.04 LTS

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да разположите Ghost на Debian 8.7

Как да разположите Ghost на Debian 8.7

Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. аз

Инсталиране на Fork CMS на Debian 9

Инсталиране на Fork CMS на Debian 9

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да инсталирате Typesetter CMS на CentOS 7

Как да инсталирате Typesetter CMS на CentOS 7

Typesetter е CMS с отворен код, написан на PHP, фокусиран върху лекотата на използване с True WYSIWYG редактиране и съхранение на плосък файл. В тази статия ще инсталираме

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече