Инсталация на WordPress върху VPS сървър

Здравей!

Това е един от първите ни постове на тема WordPress. В нея ще опишем как лесно можеш да инсталираш WordPress върху VPS сървър.

За разработка и тестове избрахме платформата на Digital Ocean с Ubuntu за операционна система. Предпочитаме Digital Ocean, защото услугите им са евтини и интерфейсът им е интиутивен.

Добре дошъл в света на WordPress!

Според нас WordPress е чудесен софтуер. С негова помощ всеки може да си направи уебсайт, без нуждата от кой знае какви технически познания. Нищо чудно, че към този момент WordPress захранва над 30% от сайтовете в Интернет пространството.

Какво можеш да очакваш от тази статия?

След като я прочетеш, ще получиш минимална инсталация на WordPress, която да използваш за база, над която да надграждаш.

  • много бърз и лек уеб стак (nginx уеб сървър с php-fpm бекенд и mariadb за сървър за база данни)
  • без кеширане
  • без CDN
  • без SSL сертификат

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

Опитваме се да спазваме KISS принципа. Няма нужда от допълнителни функционалности, които да усложнят проекта.

Какво ти е нужно?

  • Домейн име
  • Хостинг. Малък Digital Ocean VPS за $5 на месец е повече от достатъчен.

Избор на домейн име

Няма да влизаме в подробности. Накратко домейн името е адресът, който посетителите трябва да напишат в браузъра си, за да достъпят сайта ти. Логично е, че колкото по-кратък и запомнящ се е този домейн, толкова е по-добре. Кое домейн разширение ще избереш няма значение, но сме забелязали, че повечето хора все още са свикнали на .com. Търсачките не ги интересува какво ще избереш за име или разширение на сайта си.

Купуваме домейните от GoDaddy. Доволени сме. Голяма компания е. Цените са достъпни, често имат отстъпки.

След като закупиш домейн, съветваме те да го прехвъриш в CloudFlare. Наскоро пуснаха нова услуга, която позволява да прехвърляш и да подновяваш домейни на по-ниски цени, без комисионна.

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

HTTP/2 200
date: Fri, 23 Aug 2019 11:23:38 GMT
content-type: text/html; charset=UTF-8
set-cookie: __cfduid=d58793ff57217fae4fd39f5d50ea037461566559418; expires=Sat, 22-Aug-20 11:23:38 GMT; path=/; domain=.wordpressko.bg; HttpOnly
vary: Accept-Encoding
x-ua-compatible: IE=edge
link: <https://wordpressko.bg/wp-json/>; rel="https://api.w.org/"
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 50acb72de8bfe013-FRA

Т.е. – ако хостинга е в София, когато посетител отвори сайта ти, заявката минава по една идея по-дълъг път. София -> Франкфурт -> София. При определени ситуации води до забавяне.

Кой хостинг е подходящ за WordPress?

Защо винаги препоръчваме VPS хостинг? Чисто от сисадминска гледна точка, всеки споделен хостинг ще свърши работа за стартиращ WordPress проект.

Но има уловка! Компаниите за споделен хостинг имат какви ли не лимити на плановете си, защото искат да сложат възможно най-много клиенти на един сървър.

Започнеш ли да имаш трафик, проблемите сами те откриват. Хостинга ще пита за минаване на по-висок план, като обоснованието обикновено е непълно. Изпращат мейли от този вид:

Сайтът ти използва много процесорно време. Трябва да минеш на по-висок план!

Имаш нужда от по-скъп план, защото мястото не ти стига (прекалено много inodes си заел)!

По-скъпият план е по-добър и по-бърз!

Не се връзвай! Почти винаги по-скъпият план е на същия сървър, с абсолютно същите параметри и същите проблеми. Само ще отложиш следващото писмо, защото ограниченията са една идея по-високи.

Попадали сме на нискобюджетни фирми, които стигат до там, че прекъсват работата на сайтовете, ако преценят, че използват прекалено много ресурси. Без да предупредят дори. Разбира се, всичко е описано с малък шрифт в условията за ползване.

Държим много на скоростта на зареждане. Не търпим да чакаме по 5-10 секунди за промяна от типа на обновяване на добавка или инсталация на тема. Хостингът, който ще избереш, е от много голямо значение.

Тук се включват VPS сървърите.

Разлика между споделен хостинг и VPS хостинг

При споделен хостинг сайтът споделя ресурсите на сървъра с всички останали сайтове на този сървър. От там и името. Понякога хиляди други сайтове са на една и съща машина. Ако някой сайт бъде наказан за нещо (например IP блеклист), има много голяма вероятност всички съседи да пострадат.

Голяма част от хостинг компаниите все още конфигурират сървърите си по такъв начин, че уеб сървърът на cPanel има достъп до файловете на всички сайтове. Ако един сайт бъде хакнат, е много лесно роботът или човекът, който прави атаката, да достъпи данните за всички сайтове.

Когато използваш VPS, получаваш малка част от голямата машина, която е само за теб. Това води до по-добра производителност, сигурност и стабилност.

Някои хора ще кажат, че VPS сървърите са по-скъпи и трудни за управление. Донякъде това е така. Моето мнение е, че ако човек умее да мисли, ще се справи с управлението на VPS сървър. Все пак цялата нужна информация я има в Интернет.

дали VPS хостингът е за теб?

Зависи от нуждите на проекта и колко време/пари човек желае да инвестира.

  • Съгласен ли си да отделиш някакво време за да научуш как работи WordPress с всичките му зависимости? VPS хостингът е за теб, защото ще ти даде много полезни знания. В процеса ще спестиш пари от наемането на технически лица, които да се грижат са сървъра.
  • Не ти се занимава с технически задачи? В такъв случай е по-добре да платиш на някой като нас, който да свърши работата и да управлява WordPress инсталацията ти. Повярвай ми, ако нямаш намерение да ставаш разработчик, в дългосрочен план ще си спестиш много време и нерви. Ще можеш да се съсредоточиш върху важните неща – а именно да развиваш бизнеса си.

Хостването на WordPress върху VPS може да бъде евтино – $5 на месец. Толкова струва най-малкият дроплет в Digital Ocean. С подходяща конфигурация, $5 е повече от достатъчно за проект със стотици посещения на ден.

Други възможности за хостинг, които препоръчваме, са Амазон и Google Cloud. По-скъпи са, но имат по-богат набор от услуги и доста по-добра производителност. А и IP репутацията на Digital Ocean не е особено добра. За тестове и прототипи е чудесна платформа.

Как се инсталира WordPress върху Digital Ocean VPS сървър?

Та, по същество.

Създай акаунт в Digital Ocean, ако все още не си. Това е нашият рефърал линк, ако се регистрираш с него ще получиш $100 безплатен кредит. След като похарчиш тези $100, ако заредиш с $25, ние също ще получим $25.

Сега е добър момент да разгледаш документацията на Digital Ocean. Има много полезна информация и ще ти даде идеи какви да бъдат следващите ти стъпки.

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

Малка бележка. Ние сме маниаци на тема сигурност. Винаги, когато управляваш сървъри, използвай SSH ключове за достъп. Не пароли. Няма значение дали е за тестове. Научи се да използваш SSH ключове и добий навика да забраняваш достъпа с пароли. Всеки нов сървър конфигурирай по този начин, преди да правиш каквото и да е било друго…

Използвай SSH ключ

С ключа, който създадеш, ще управляваш сървъра.

Създай първия си droplet!

Препоръчваме Ubuntu 18.04 LTS (или по-нова) за Линукс дистрибуция. Вече 10+ години това е нашата операционна система. LTS версиите на Ubuntu са много надеждни.


Инсталация на WordPress за VPS сървър – избор на Линукс дистрибуция
Инсталация на WordPress за VPS сървър – избор на Линукс дистрибуция

Избери най-евтиния стартов план. Няма нужда от нещо по-скъпо.


Инсталация на WordPress за VPS сървър – избери стандартния план. Повече от достатъчен е.
Инсталация на WordPress за VPS сървър – избери стандартния план. Повече от достатъчен е.

Най-малкият дроплет е достатъчен за нов проект. Освен ако нямаш някаква основателна причина да не го правиш, избери 1 процесор, 25GB SSD дисково пространство и 1GB RAM памет за ресурсите. Използвам същите ресурси за тестовата версия на този сайт.


Инсталация на WordPress за VPS сървър – $5 на месец, 1 процесор, 1GB RAM, 25GB SSD диск с включен трафик от 1TB.
Инсталация на WordPress за VPS сървър – $5 на месец, 1 процесор, 1GB RAM, 25GB SSD диск с включен трафик от 1TB.

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


Инсталация на WordPress за VPS сървър  – автоматичен бекъп, допълнителен сторидж.
Инсталация на WordPress за VPS сървър – автоматичен бекъп, допълнителен сторидж.

Следва да избереш локация на сървъра си. В зависимост от това къде ще са посетителите, избери най-близката точка. Ние избирахме Франкфурт, защото е най-близо до България.


Инсталация на WordPress за VPS сървър – дейта център локация.
Инсталация на WordPress за VPS сървър – дейта център локация.

Пропусни следващите настройки. Нямаш нужда от тях за тестов сървър.

Инсталация на WordPress за VPS сървър – допълнителни настройки.
Инсталация на WordPress за VPS сървър – допълнителни настройки.

Добави SSH ключа, който създаде по-рано. Имаш опция да използваш парола, вече обсъдихме защо не препоръчваме пароли.


Инсталация на WordPress за VPS сървър – добавяне на SSH ключ.
Инсталация на WordPress за VPS сървър – добавяне на SSH ключ.

Дай име на дроплета, таг и име на проекта. След това създай дроплета. Мета таговете не са задължителни, но могат да бъдат полезни, когато сървърите станат повече от един.


Инсталация на WordPress за VPS сървър – създаване на дроплет.
Инсталация на WordPress за VPS сървър – създаване на дроплет.

Готово! Дроплета ще се стартира до 1-2 минути.


Инсталация на WordPress за VPS сървър – детайли за сървър.
Инсталация на WordPress за VPS сървър – детайли за сървър.

Би трябвало да можеш да се логнеш през SSH в дроплета, използвайки IP адреса от менюто с дроплети.

rstefanov$ ssh root@165.22.89.53
The authenticity of host '165.22.89.53 (165.22.89.53)' can't be established.
ECDSA key fingerprint is SHA256:qFV+uaGR13wqMnF8Po7raz9NDVywPO2t3ggr5cMemOY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '165.22.89.53' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Thu May 30 13:19:30 UTC 2019

  System load:  0.04              Processes:           84
  Usage of /:   4.0% of 24.06GB   Users logged in:     0
  Memory usage: 11%               IP address for eth0: 165.22.89.53
  Swap usage:   0%

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@vm-wordpress:~#

Инсталация на WordPress

Време е за самата инсталация на WordPress.

Имаме скрипт, който помага за лесна и бърза инсталация. Изтегли го от gitlab.com.

root@vm-wordpress:~# git clone https://gitlab.com/rstefanov/wordpress-management.git
Cloning into 'wordpress-management'...
remote: Enumerating objects: 77, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 77 (delta 38), reused 36 (delta 24)
Unpacking objects: 100% (77/77), done.
root@vm-wordpress:~#

Пусни скрипта за подготовка. Ще инсталира всички зависимости. Също така ще обнови Ubuntu до последната версия, заедно с всички инсталирани пакети.

root@vm-wordpress:~# cd wordpress-management/
root@vm-wordpress:~/wordpress-management# bash preparation.sh

==========  Apply_all_available_updates  ==========
Total 21 of packages can be upgraded. Doing so now.
Apply all available updates. - ✔ OK
Install software-properties-common package... - ✔ OK
Add certbot repository... - ✔ OK

==========  Check_for_required_packages  ==========
nginx - ✔ OK
php-fpm - ✔ OK
mariadb-server - ✔ OK
htop - ✔ OK
curl - ✔ OK
php-mysql - ✔ OK
postfix - ✔ OK
python-certbot-nginx - ✔ OK
php-gd - ✔ OK
php-curl - ✔ OK
php-dom - ✔ OK
php-imagick - ✔ OK
php-mbstring - ✔ OK
apache2-utils - ✔ OK
Download WP-CLI... - ✔ OK
Add executable flag... - ✔ OK
Move wp-cli.phar to /usr/local/bin/wp - ✔ OK
root@vm-wordpress:~/wordpress-management#

Инсталирай и WordPress.

Скриптът очаква да му подадеш като параметри поне домейн име, име на базата данни и потребител за базата данни.

Предполагам се досещаш, че трябва да замениш dev.wordpressko.bg с твоя домейн. За име на базата данни и потребителското име за нея можеш да сложиш каквото ти хрумне (внимавай да не е нещо лесно за отгатване). Паролата на потребителя на WordPress ще се генерира от скрипта, а потребителското име е admin. Хубаво е да ги смениш, след като приключи инсталацията.

root@vm-wordpress:~/wordpress-management# bash deploy_wp.sh --wpdomain=dev.wordpressko.bg --dbuser=dev_radoslav_stefanov_com --database=dev_radoslav_stefanov_com_db
Make sure /var/www/dev.wordpressko.bg doesn't already exist... - ✔ OK
Create WordPress directory /var/www/dev.wordpressko.bg... - ✔ OK
Enable aux configuration... - ✔ OK
Go to /var/www/dev.wordpressko.bg directory... - ✔ OK
Prepare Nginx virtual host... - ✔ OK
Test Nginx virtual host configuration file... - ✔ OK
Enable Nginx virtual host... - ✔ OK
Apply Nginx configuration... - ✔ OK
Download latest WordPress... - ✔ OK
Fix permissions for WordPress files... - ✔ OK
Create mySQL database and user... - ✔ OK
Generate WordPress configuration wp-config.php file... - ✔ OK
Install WordPress... - ✔ OK
Add WordPress plugins... - ✔ OK

✔ WordPress installation and configuration completed!
################################################################

 >> Database host    : localhost
 >> Database name    : dev_radoslav_stefanov_com_db
 >> Database user    : dev_radoslav_stefanov_com
 >> Database pwd     : JKZ9CfCR6GvF5AZk
 >> WordPress domain : dev.wordpressko.bg
 >> WordPress pwd    : j7FoHw4reVflmjmk
 >> WordPress admin  : admin

################################################################
root@vm-wordpress:~/wordpress-management#

Ако всичко е минало добре и скриптът не върне грешка, насочи домейна си към IP адреса на дроплета. В моя пример сайтът се намира на 165.22.89.53

Няма нужда да чакаш DNS промените да станат активни. Можеш да насочиш домейна към дроплета чрез хостс файла на операционната си система.

В Линукс и MacOS файлът се намира на /etc/hosts

Ще се радваме да споделиш какво е мнението ти за тази статия, за да можем да я подобрим.

Благодаря!

Вашият коментар