Як розгорнути кілька сайтів 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 ГБ оперативної пам’яті, щоб уникнути збоїв у пам’яті. Відредагуйте, 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) корпоративного рівня з відкритим кодом.

Створення блогу Jekyll на CentOS 7

Створення блогу Jekyll на CentOS 7

Використання іншої системи? Jekyll — хороша альтернатива WordPress. Він не вимагає жодних баз даних і працює з мовою, знайомою багатьом

Як встановити MODX Revolution на VPS CentOS 7 LAMP

Як встановити MODX Revolution на VPS CentOS 7 LAMP

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Встановлення 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 року.

Як розгорнути 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 на OpenBSD 6

Налаштування платформи професійної публікації Ghost на OpenBSD 6

Ghost — найновіша і найкраща вискочка, яка конкурує з WordPress. Розробка теми швидка та проста в освоєнні, тому що розробники Ghost вирішили використовувати обидва

Встановіть та налаштуйте блог Ghost v1.0.0 в Ubuntu 16.04

Встановіть та налаштуйте блог Ghost v1.0.0 в Ubuntu 16.04

Ghost — це сучасна видавнича платформа з відкритим вихідним кодом, побудована на Node.js з клієнтом адміністратора Ember.js, API JSON та API тем, що працює на основі Handlebars.js. Ghos

Як встановити MODX Revolution на Fedora 26 LAMP VPS

Як встановити MODX Revolution на Fedora 26 LAMP VPS

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Встановлення 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 і зберіганням плоских файлів. У цій статті ми будемо встановлювати

Налаштування WordPress за допомогою WooCommerce на CentOS 6

Налаштування WordPress за допомогою WooCommerce на CentOS 6

Примірники Vultr – це чудовий спосіб вести свій блог WordPress, але більш помітним розширенням WordPress є WooCommerce, плагін електронної комерції, який розширює

Встановлення Fork CMS на Fedora 28

Встановлення Fork CMS на Fedora 28

Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM

Як встановити MODX Revolution на Debian 9 LAMP VPS

Як встановити MODX Revolution на Debian 9 LAMP VPS

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована, безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом.

Як встановити SilverStripe CMS на Ubuntu 16.04 LAMP VPS

Як встановити SilverStripe CMS на Ubuntu 16.04 LAMP VPS

Використання іншої системи? SilverStripe — це гнучка та розширювана безкоштовна система керування вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. я

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

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. Прочитайте цю статтю, щоб дізнатися більше