В кінці минулого року мені прийшло нагадування від BlueHost, що термін дії мого блогу в них на платформі доходить до кінця і що перші “дешеві” три роки закінчилися. Нові ціни мене чесно кажучи здивували, за наступні три роки вони виставили рахунок в 400$, що мене мягко кажучи здивувало. Можна подумати, що це вже й не такі великі гроші, але враховуючи малу кількість читачів (в цьому швидше за все винна мала кількість публікацій) я вирішив, що мені це не підходить. Після невеличкого пошуку, я знайшов можливість хоститися на Google Cloud Platform (в подальшому GCP) практично за безплатно. В цій публікції я пройдуся через основні кроки які необхідні для налаштування і міграції сайту з одного хостингу на інший.
Важлива ремарка. В цій статті я не буду описувати процес створення GCP проекту і налаштування оплат (для цього необхідно надати кредитну карту). Також спосіб описаний нижче працює лише для одного блогу. Якщо ви захочете створити ще один халявний блок, то тут доведеться вже платити або створювати другий аккаунт з новими даними для оплати.
Покупка домену
На жаль тут у мене погані новини. Домен не є безплатним! Якщо ви його вже маєте, то можете сміливо пропускати цей крок, а нижче я опишу процес покупки домену з допомого Google Domains.
Перш за все відкриваємо Google Console, а потім переходимо Network Services -> Cloud Domains:

Після переходу на відповідну сторінку, необхідно натиснути кнопку Register Domain. На наступній сторінці здійснюємо процес покупки. В поле пошуку можна ввести бажаний домен, система автоматично покаже чи він доступний чи ні, а також його ціну. Також буде відображено декілька інших альтернатив, якщо ваш домен зайнятий вже або ціна занадто висока. Добавляємо вибраний домен в кошик і проходимось через налаштування DNS (я залишив без змін), Privacy Details (зазначив Privacy Protection On) і заповнюємо ваші контактні дані. До речі кілька слів про Privacy Details. Ця функція дозволяє сховати від всіх, кому належить доменне ім’я, на BlueHost така функція коштувала додаткових 15$ в рік.
Встановлюємо WordPress
В GCP для клієнтів доступне швидке встановлення різних популярних аплікацій і звичайно WordPress також є в списку, тому ми цим зкористаємося. Переходимо в меню, вибираємо Deployment Manager -> Deployments.

Далі натискаємо Deploy MarketPlace Solution, а в полі пошуку вписуємо WordPress. В моєму випадку було відображено кілька десятків опцій. Моя рекомендація – використати рішення з приміткою Google Click to Deploy – Virtual Machines. Після цього ми перейдемо на сторінку з рішенням в якомуу буде показанийй приблизний кошт рішення. На разі не переживаємо, ми зможемо звести його майже до нуля. Натискаємо Launch і нам необхідно змінити кілька полей:
- Deployment name: змінюємо на щось більш осмисленіше.
- Zone: us-central1-f
- Machine Family -> Series: E2
- Machine Family -> Machine Type: e2-micro
- Administrator e-mail address: тут вкажіть ваш емейл, він буде використовуватися для входу на сайт.
- Можна додатково зазначити: Enable Stackdriver Monitoring та Enable Stackdriver Logging. Додаткові логи та метрики, ще нікому не мішали.
Більше я нічого не змінював. Ось як виглядає конфігурація в моєму випадку:

Як бачимо ціна і досі не нульова. Звичайно вона на порядок нижча ніж пропонували в BlueHost, але все рівно близько 2$ в місяць треба платити. А ось тут і найцікавіше. В GCP діє безплатний тариф на деякі речі. В нашому випадку, при створенні однієї e2-micro машини з диском до 30GB безплатно. Тільки зверніть увагу, що таку машину не можна створювати в усіз регіонах, на момент написання статті, тариф діє тільки в:
- us-west1
- us-central1
- us-east1
Я надіюся, що колись цей список розшириться на регіони з Європи, а на сьогоднішній день на жаль тільки ці є доступними.
Після конфігурації натискаємо кнопку Deploy і кілька хвилин необхідно почекати на конфігурацію. В кінці процесу ви побачите щось подібне до цього:

Тепер можна по Admin URL і спробувати залогінитися за допомого WordPress Admin user та WordPress Admin password.
Прив’язуємо домен до WordPress
Отже домен ми тепер маємо, працюючий WordPress теж. Проблема, що відкрити наш блог можна тільки знаючи його IP адрес, що само собою дуже незручно. Переходимо Network service -> Cloud DNS, далі вибираємо відповідний домен.

Нам необхідно додати два записи (кнопка Add Record Set):
- Прив’язка нашого домена до конкретної IP адреси:
- DNS Name – залишаємо без змін.
- Resource Record Type: A
- TTL: 5 minutes
- Routing Policy: Default record type
- IPv4 Address: вписуємо IP адрес нашого WordPress.
- Перекерування www.<ваш домен> на <ваш домен>:
- DNS Name – дописуємо www.
- Resource Record Type: CNAME
- TTL: 5 minutes
- Routing Policy: Default record type
- Canonical Name: вписуємо ваш домен (без www).
Після цього залишається почекати кілька хвилин для того щоб зміни увійшли в силу і спробуйте перейти на ваш домен в браузері. Якщо все було зроблено правильно, то повинен відкритися ваш сайт.
Налаштовуємо HTTPS
Всі ми повинні дбати про нашу безпеку та безпеку наших користувачів. На разі наш сайт не працює через https, коли ви спробуєте вписати https://<ваш домен>, Chrome швидше за все повідомить вас, що це з’єднання не надійне. Для цього в нас мусить бути створений сертифікат на нашій віртуальній машині і більше того він повинен постійно оновлюватися. На превелике щастя як і більшість проблем, цю давно вже вирішили і майже повністю автоматизували за допомогою програми CertBot. Для її встановлення і конфігурації необхідно ввійти на нашу віртуальну машину: Compute Engine -> VM instances, вибираємо необхідну VM і натискаємо SSH. Я не буду в себе описувати процес встановлення CertBot на машині, оскільки автори цієї утиліти створили просто неперевершений сайт на якому необхідно вибрати тільки тип серверу і операційну систему і він автоматично перекерує вас на сторінку з детальною інструкцією. В моєму випадку необхідно було вибрати Apache і Debian 10.
При запуску CertBot, вам буде задано кілька питань (ваш емейл адрес, чи погоджуєтеся на умови, тощо) з яких важливі лише два:
- Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter ‘c’ to cancel): <ваш домен> - Which virtual host would you like to choose? Виберіть той що починається з wordpress.
Після цього можна знову спробувати знову відкрити ваш сайт через https і тепер ви не отримаєте жодних попереджень від браузера, але швидше за все вся розмітка на сайті злетить. Проблема в тому, що у ресурсах на вашому сайті не всі посилання мають правильну IP адресу. Знову ж таки, ми не перші з цією проблемою і для нас підготували спеціальний плагін, який вміє фіксити цю проблему. Заходимо на наш сайт, переходимо в адмін панель (дописати /wp_admin до URL) та вводимо логін і пароль. Далі Plugins -> Add new, шукаємо плагін SSL Insecure Content Fixer. Після цього переходимо до списку Плагінів, переходимо в налаштування щойно встановленого. Я поміняв лише два поля:
- Fix insecure content: Simple
- HTTPS detection: HTTP_X_FORWARDED_PROTO (e.g. load balancer, reverse proxy, NginX)
Зберігаємо зміни і переходимо в Settings -> General та змінюємо поля WordPress Address та Site Address на ваш домен. Також на цій сторонці можна змінити мову інтерфейсу.
Ось і все. Після цього кроку все повинно працювати. У випадку яких небудь проблем залишайте коментарі, буду пробувати допомогти.
Залишити відповідь