Настройка VPS/VDS для хостига WordPress сайта. Ubuntu 20.04 / 16.04 / 14.04

Всем здравствовать в любое время суток!

Возникла необходимость настроить клиенту VPS сервер на котором в дальнейшем будет хоститься его сайт на WordPress. Почему не обычный хостинг? — Дело в том, что нашел VDS по цене хостинга или даже дешевле (если платить за два года сразу — 16 евро), а ещё — в том, что места под сайт хостеры дают до гигабайта за такие деньги, а на сервачке — 20 гиг, да и количество сайтов не ограничено, гибкость настройки, максимальный уровень контроля, опять же. Словом — одни плюсы, минус только в немного большей трудоёмкости задачи, но меня этим не испугать, я ж трудяга 🙂 Так что решил я по ходу дела написать и статейку в блог, для себя на будущее, да и для людей, может кому пригожусь. Вот по ходу дела и пишу свои действия (за вычетом тупняков всеразличных):

Стартуем мы с того, что есть свежекупленный серевер с Ubuntu и root доступом по ssh по паролю. Доступ к серверу по паролю, ещё и от пользователя ROOT = минус в безопасности, так что нужно создать sudo пользователя, сделать ему логин по ключу и отключить возможность подключаться по ssh root пользователю и логина по паролю другим пользователям. Чтоб осталась только возможность залогинитсья нашим sudo юзером по ключу.

Для начала создаём sudo пользователя. Для этого нужно создать группу admin, для которой у Ubuntu уже есть все преднастройки sudo юзера (то есть, никаких дополнительных настроек делать не нужно, просто создать пользователя и включить его в группу и он получит привилегии sudo) и потом создать пользователя и сразу его в эту группу включить (всё от рута естественно, других нет пока):

groupadd admin
adduser IMYA_NASHEGO_USERA --ingroup admin

Воодим пароль, а остальные данные при нежелании не вводим.

Прекрасно! Теперь можно смело разлогиниваться root’ом и логиниться от IMYA_NASHEGO_USERA по SSH. Как это сделать вы знаете, раз дошли до этого момента.

Теперь на домашнем ПК с линуксом генерируем пару ключей:

cd ~/.ssh

ssh-keygen -t rsa -C Мыло@Рыба.Сом

Нужно будет ввести название ключа (что-то, что ассоциируется с вашим VPS), а пароль я оставил пустым, чтобы его потом не вводить, это достаточно безопасно для меня.

Далее, нужно зайти в скрытую папку .ssh в домашней папке и открыть текстовым редактором файл с расширением .pub, в нём содержится публичный ключ, копируем ВСЁ оттудова и вставляем в файл на сервере, но его сначала нужно создать (файл, конечно, а не сервер). Для этого, на сервере делаем нижеследующее.

Создаём директорию настроек SSH:

mkdir /home/IMYA_NASHEGO_USERA/.ssh

Создаём файл в который позже вставим открытый ключ:

touch /home/IMYA_NASHEGO_USERA/.ssh/authorized_keys

Устанавливаем текстовый редактор nano, если нету:

sudo apt-get install nano

Открываем текстовым редактором nano созданный файл и вставляем в него данные с домашнего компа из файла .pub о котором говорилось ранее:

nano /home/IMYA_NASHEGO_USERA/.ssh/authorized_keys

Сохраняемся Ctrl+O, жмём ввод.

Далее, для удобства у себя на компе создаем в папке .ssh файл под названием «config» в который вписываем:

Host ОБЗЫВАЕМ_СЕРВАК_КАК-ТО
  HostName АЙПИ_ВАШЕГО_СЕРВЕРА
  Port 22
  User IMYA_NASHEGO_USERA
  IdentityFile /home/ЮЗВЕРЬ_У_ВАС_НА_КОМПЕ_ДОМА/.ssh/НАЗВАНИЕ_КЛЮЧА_КОТОРОЕ_ВВЕЛИ_ПРИ_СОЗДАНИИ

Сохраняем файл. Проверяем получится ли без пароля подключиться к серверу по команде:

ssh ОБЗЫВАЕМ_СЕРВАК_КАК-ТО

Если да, — отлично, — можно отключать доступ по паролю, для этого редактируем конфиг:

sudo nano /etc/ssh/sshd_config

Находим эти строки и выставляем значение «no» (поиск в nano по CTRL+W):

PermitRootLogin no
PasswordAuthentication no
UsePAM no

Сохраним файл (если nano, то CTRL+O и потом ENTER)

Перезагрузка SSH:

sudo service ssh restart

Вуаля! Огороженный со всех сторон сервак готов, осталось настроить хост и установить WordPress.

Пришло время удалить Apache полностью

Обнаружил, что на сервачке предустановлен сервер Apache, как жестокий колонист, решаю его удалить и заменить на Nginx, поскольку им сами разрабы WordPress пользуются, да и более шустрый он.

sudo apt-get purge apache2*

sudo apt-get autoremove

Проверяем какие остались после него директории, как истинные перфекционисты:

whereis apache2

Я получил такой вывод (это было в Ubuntu 14.04, в 16.04 которую я ставил позже, уже было пусто):

apache2: /usr/sbin/apache2 /etc/apache2 /usr/lib/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz

Всё, что после apache2:  — это пути к директорям, которые я удаляю командой (если было пусто, ничего не делаем):

sudo rm -rf /usr/sbin/apache2 /etc/apache2 /usr/lib/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz

Устанавливаем Nginx

sudo apt-get update
sudo apt-get -y install nginx

После чего, если в браузере перейти по айпишнику, должна показаться его стандартная страница такого вида:

Screenshot from 2016-07-07 23-25-24

если же Ngnix устанавливается с ошибкой и при заходе по айпи показывается страница ошибки, как случилось у меня, возможно вам поможет эта статья, её я решил выделить в отдельный пост. Дело в том, что по умолчанию он настроен поддерживать 6 версию айпи протокола, которой нету у провайдера, которого я упомянул в начале статьи.

У кого всё норм, двигаемся дальше.

Установка PHP и базы данных MariaDB

Для Ubuntu 14.04:

sudo apt-get install -y php5-fpm php5-cli

А для 16.04 я уже ставлю PHP 7.0, т.к. он быстрее (да и нет уже в репозиториях старой версии):

sudo apt-get install -y php7.0-fpm php7.0-cli

Для 20.04 сейчас актуальна версия PHP 7.4 (если версия поменялась, подправьте аналогично, если я раньше этого не сделаю):

sudo apt-get install -y php7.4-fpm php7.4-cli

Конечно же мой выбор — это MariaDB, а не MySQL, поскольку она не принадлежит никаким компаниям и свободно развивается, более того, лучше работает, если верить сравнительным статьям, что я читал когда-то:

sudo apt-get install -y mariadb-server mariadb-client

Подключаемся к базе MariaDB:

 mysql -u root -p

Создаем базу данных:

 CREATE DATABASE ИМЯ_БАЗЫ;

Создаем пользователя базы данных(возможно кавычки закодируются, не копируйте их, введите вручную):

 CREATE USER ИМЯ_ПОЛЬЗОВАТЕЛЯ_БАЗЫ@localhost IDENTIFIED BY 'ПАРОЛЬ_В_КАВЫЧКАХ';

Даем пользователю права на запись в базу данных:

GRANT ALL PRIVILEGES ON ИМЯ_БАЗЫ.* TO ИМЯ_ПОЛЬЗОВАТЕЛЯ_БАЗЫ@localhost;

Сбросим полномочия:

FLUSH PRIVILEGES;

Выйдем из консоли БД:

exit

Установим пакет, необходимый php для подключения к MySQL и библиотеку GD, которая будет нужна для изменения размера изображений

Для Ubuntu 14.04:

 sudo apt-get install php5-mysql php5-gd

Для Ubuntu 16.04:

sudo apt-get install php7.0-mysql php7.0-gd

Для Ubuntu 20.04:

 sudo apt-get install php7.4-mysql php7.4-gd

Создадим в домашней директории папку, где будут лежать сайты и перейдем в неё:

cd && mkdir www && cd www

Установка WordPress (загрузка и распаковка)

Скачаем WordPress, русский или английский на выбор:

wget https://ru.wordpress.org/latest-ru_RU.tar.gz

или английский:

wget http://wordpress.org/latest.tar.gz

Распакуем скачанный архив:

tar -zxf latest*
 

Переименуем директорию wordpress если есть желание:

mv wordpress ПАПКАССАЙТОМ
 

Делаем веб сервер владельцем директории с сайтом, чтобы вордпресс мог нормально обновляться, мы могли устанавливать из консоли WordPress темы и плагины и не знали горя:

sudo chown -R www-data: ПАПКАССАЙТОМ

Привязка домена:

У регистратора нужно направить домен на айпи сервера, если это еще не сделано. Как это делается описывать не буду.

Далее нужно указать серверу в какой директории находится сайт для этого домена:

sudo nano /etc/nginx/sites-available/www.ВАШ_ДОМЕН.com

Откроется редактор, куда нужно вставить (для Ubuntu 14.04):

server {
  server_name ВАШДОМЕНБЕЗWWW.com;
  rewrite ^(.+)$ http://www.ВАШДОМЕН.com/$1 permanent;
}
server {
  server_name www.ВАШ_ДОМЕН.com; 
  listen 80;
  root /home/ВАШ_ЮЗЕР/www/ВАША_ПАПКАССАЙТОМ; 
  index index.php index.html;
  location / { 
  try_files $uri $uri/ /index.php?$args;
}

location ~ .php$ { 
  try_files $uri /index.php; 
  include fastcgi_params; 
  fastcgi_pass unix:/var/run/php5-fpm.sock; 
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
  fastcgi_index index.php;
  } 
}

Сохраняем файл и выходим.

************ (для Ubuntu 16.04):

server {
  server_name ВАШДОМЕНБЕЗWWW.com;
  rewrite ^(.+)$ http://www.ВАШДОМЕН.com/$1 permanent;
}
server {
  server_name www.ВАШ_ДОМЕН.com; 
  listen 80;
  root /home/ВАШ_ЮЗЕР/www/ВАША_ПАПКАССАЙТОМ; 
  index index.php index.html;
  location / { 
  try_files $uri $uri/ /index.php?$args;
}

location ~ .php$ { 
  try_files $uri /index.php; 
  include fastcgi_params; 
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;  
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
  fastcgi_index index.php;
  } 
}

Сохраняем файл и выходим.

************ (для Ubuntu 20.04):

server {
  server_name ВАШДОМЕНБЕЗWWW.com;
  rewrite ^(.+)$ http://www.ВАШДОМЕН.com/$1 permanent;
}
server {
  server_name www.ВАШ_ДОМЕН.com; 
  listen 80;
  root /home/ВАШ_ЮЗЕР/www/ВАША_ПАПКАССАЙТОМ; 
  index index.php index.html;
  location / { 
  try_files $uri $uri/ /index.php?$args;
}

location ~ .php$ { 
  try_files $uri /index.php; 
  include fastcgi_params; 
  fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
  fastcgi_index index.php;
  } 
}

Если прошло много времени и сейчас актуальна версия PHP новее, чем php7.4, измените конфиг, что выше, а именно строку php7.4-fpm.sock на вашу версию.

Далее сохраняем файл и выходим.

Чтобы активировать данный конфиг, нужно в соседней директории сделать на него симлинк:

cd /etc/nginx/sites-enabled 
sudo ln -s ../sites-available/www.ВАШДОМЕН.com

Перезагрузка веб сервера:

sudo service nginx restart

Далее переходим по адресу www.вашдомен.ком и следуем инструкциям установщика WordPress.

Вводим логин и пасс пользвателя БД, которого мы создали и т.п.

Конец.

З.Ы.

Статья постоянно дорабатывается. 
Советы и указания на ошибки пишите в комментариях, пожалуйста.

Для благодарных:

  • Если я вам помог, подпишитесь на мой канал на YouTube, пожалуйста!
  • Отключите блокировщик рекламы на моем блоге (просить кликать по рекламе я не имею права, так что это на ваше усмотрение, если заинтересует).
  • Нажмите, пожалуйста, на звезды-оценки.
  • Оставивьте, пожалуйста, комментарий.
  • Оставьте ссылку на мой блог на другом сайте.
  • Купите, если нужен  VPS по моей реф. ссылке . Сам пользуюсь несколько лет, доволен. Недорого и качественно.

Спасибо!

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5Звёзд: 6Звёзд: 7Звёзд: 8Звёзд: 9Звёзд: 10 (11 оценок, среднее: 9,82 из 10)
Загрузка...

43 thoughts on “Настройка VPS/VDS для хостига WordPress сайта. Ubuntu 20.04 / 16.04 / 14.04

  1. чувак, я купил впс и нихуя не понимаю что с ним делать
    ты можешь сказать вот эта статья https://habrahabr.ru/post/186362/ она про настройку самого ВПС-а а твоя статья уже именно по настройке сервера под хостинг
    ТО ЕСТЬ БЛЯТЬ:
    сначала следует выполнить рекомендации из статьи на хабре а потом следовать твоей статье?

    • Всё зависит от того, что вы хотите на этом VPS делать. У меня здесь описано пошагово как я настраивал сервер с нуля. Т.е. с момента покупки. Т.е. ничего до этого, в общем случае, настраивать не нужно. Но, поскольку я собирался ставить WordPress, то при настройке я выбрал именно Nginx, т.к. им пользуются сами разрабы WordPress’а. Для других движков может это и не лучший выбор веб сервера, хотя, как мне кажется, большинство из них должны на нем работать тоже. Если вы совсем новичок, то можеть попробовать использоывать вместо Nginx Apache, последний использует больше ресурсов, зато там практически все работает сразу из коробки. К тому же, он уже заботливо предустановлен, достаточно его просто не удалять.

      • ну джиникс мне тож импонирует больше.
        второе — буду хостить в большинстве ВП сайты, ну накрайняк друпалы, но друпал тоже любит джиникс.
        третье — я переживаю что бы всякий китайский шлак не сканировал мой впс и тем более не мог залезть ко мне. то есть за секьюрити сервака.- об этом и пишет хабр и это я хотел обсудить с тобой бро.
        секьрность впс-а после установки ОСи — вот что меня волнует.

        • Ну, я не особенный специалист в этом вопросе, но в начале статьи как раз о ней речь и идет. Настраивается возможность управлять сервером только тем, у кого есть ключ, который нереально подобрать брутфорсом.

    • Ну, я смотрю у вас проблема с зависимостями. Как она могла возникнуть, сложно сказать. Мало информации. Скажите версию операционной системы, а также откуда пытаетесь установить nginx — из репозиториев дистрибутива или из сторонних. Словом, опишите подробнее, что делали и как.

      P.S.
      Информацию из терминала проще выкладывать в виде текста, а не скриншота. Например можно большие куски текста выкладывать на этом сайте: http://pastebin.com/
      ****************************************
      Недосмотрел, похоже проблема решается в этой статье http://kiman.odesa.in/2016/07/07/ne-zapuskaetsya-nginx-emerg-socket-80-failed-97-address-family-not-supported-by-protocol/

        • снес оську, переставил, дебиан8. шел снова теми же шагами из этого мануала и снова та же ошибка.
          НО
          если зайти на айпишку сервера — страница отображается. чудасия короч…

  2. короче если бы не та проблема с джиниксом -то все было бы супер.
    еще проблема так как я юзер виндовса ипришлось разбираться с путти и путтигеном. если б ты написал про это — было бы фул статья.а так пришлось еще на хабру лезть и еще на дижитал ошен форум за помощью с путти и ключами

  3. с адсенсом тебя! добавь 1 вертикальный блок под Архивы (колонка справа) туда легче кликать!

    • Да, было дело, когда-то давно накопил на адсенсе пару десятков баксов, так теперь жаба давит, решил донабрать до сотки. А насчет вертикального баннера — подумаю, может и поставлю.

    • Здравствуйте!
      Слишком общий вопрос. Обычно CMS создают его сами. Если же сайт самописный, то создаете в директории с сайтом этот файл с именем .htaccess и пишете в него те правила, которые необходимо. Возможно он у вас уже создан, но FTP клиент не показывает его, т.к. это скрытый файл. В таком случае, нужно менять настройки FTP клиента, чтобы он показывал файлы, имя которых начинается с точки. Поскольку вопрос слишком общий, больше сказать ничего не могу.

    • Ну, у NGINX есть свои способы конфигурирования, описанные выше. Кроме того, можете воспользоваться этим сервисом https://winginx.com/ru/htaccess Ну или, на крайний случай, не настраивать NGINX, если нужен Apache)))

  4. у меня на 16.04 вот такая ошибка возникает и ничего не получается с ней сделать

    dpkg: error processing package mariadb-server-10.0 (—configure):
    subprocess installed post-installation script returned error exit status 1
    Setting up mariadb-client (10.0.31-0ubuntu0.16.04.2) …
    dpkg: dependency problems prevent configuration of mariadb-server:
    mariadb-server depends on mariadb-server-10.0 (>= 10.0.31-0ubuntu0.16.04.2); however:
    Package mariadb-server-10.0 is not configured yet.

    dpkg: error processing package mariadb-server (—configure):
    dependency problems — leaving unconfigured
    Processing triggers for libc-bin (2.23-0ubuntu5) …
    No apport report written because the error message indicates its a followup error from a previous failure.
    Processing triggers for systemd (229-4ubuntu16) …
    Processing triggers for ureadahead (0.100.0-19) …
    Errors were encountered while processing:
    mariadb-server-10.0
    mariadb-server
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    • Здравствуйте, Андрюха!
      Вы пробуете на сервере от той компании, что указана в начале, что и я настраивал?
      Попробуйте ввести команду:
      sudo apt-get install mariadb-server mariadb-client
      И полный вывод скопировать сюда.

  5. настраивал себе впс 2 года назад.
    и вот я снова здесь… купил еще один впс. надо бы настроить 🙂
    как дела вообще?

  6. вот конфиг энжиникса тем кто хочет домен без ввв
    так же лишний слеш в примере конфига перед знаком долара
    rewrite ^(.+)$ http://www.ВАШДОМЕН.com/$1 permanent;

    конфиг без ввв:
    server {
    server_name www.setsailsusa.info;
    rewrite ^(.*) http://setsailsusa.info$1 permanent;
    }
    server {
    listen 80;
    server_name setsailsusa.info;
    root /home/medium/www/setsailsusa.info;
    index index.php index.html;
    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
    try_files $uri /index.php;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    }
    }

    • Спасибо за полезный комментарий! Что касается без www — вопросов нет. А по поводу слеша, заглянул к себе на сервер, там так, как в статье и слеш не дублируется. Я не сильно шарю в синтаксесе конфиг файлов nginx, так что для меня вопрос открыт, почему так происходит.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *