После приобретения виртуального сервера у вас появится абсолютная свобода в использовании программного обеспечения для реализации необходимого вам функционала.
Самая распространенная причина покупки VPS – это развертывание сайта, или нескольких сайтов на одной виртуальной машине и в этой статье мы разберемся, как подготовить быстрый сервер для размещения нескольких сайтов WordPress.
Для себя я выбрал поставщика услуг ihc и это не реклама, вы можете выбрать любого хостера, на свое усмотрение.
Для себя я выбрал виртуальный сервер VDS на процессорах последнего поколения Intel Scalable Gold 2 Gen и SSD дисках NVMe
С двумя ядрами, 4 ГБ оперативной памяти и 45 Гигабайтами дискового пространства.
В качестве операционной системы я выбрал ubuntu 20.04.
В личном кабинете меняете пароль на root чтобы подключиться по протоколу ssh к терминалу сервера, еще нам потребуется IP-адрес сервера, который тоже можно получить в админке.
Для подключения к терминалу будем использовать утилиту putty
После входа в терминал сервера первым делом производим обновление пакетов.
sudo apt update
Эта команда скачает последние данные о пакетах находящихся в репозиториях и можно будет ввести следующую комаду:
sudo apt upgrade
Сервер сверит версии установленных пакетов с информацией из репозиториев и предложит обновления. Чтобы продолжить обновление нужно нажать Y и Enter.
По завершении обновлений установим Midnight Commander для удобства работы с файлами.
sudo apt install mc
В моем случае он уже установлен.
Настройка безопасного SSH-доступа
Запускаем в терминале Midnight Commander:
sudo mc
Первым делом, сменим порт ssh для доступа к серверу отредактировав файл sshdconfig
в директории /etc/ssh/
Нажав F4 на выбранном файле впервые, MC спросит, в каком редакторе мы хотим работать с текстовыми файлами, тут я выбираю 3 (mcedit)
Заменяем цифру 22 и убираем # в строке #Port 22 так
Port 22022
Клавиша F2 сохранит изменения, для выхода нажмем F10.
Порт мы меняем для того, чтобы усложнить автоматическое сканирование и подбор пароля.
Для того, чтобы дополнительно защитить сервер настроим вход по ключам.
Для генерации ключей, пишем на сервере в терминале:
ssh-keygen
Оставляем имя по умолчанию нажав Enter, и еще два раза, чтобы входить без пароля.
После этого в папке ~/.ssh
появятся два файла id_rsa
и id_rsa.pub
, приватный и публичный ключ соответственно.
Теперь вставляем в терминал эту строку, все подтверждаем вводом «yes»
cat ~/.ssh/id_rsa.pub | ssh root@localhost"mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat » ~/.ssh/authorized_keys"
Файл id_rsa
скачиваем на локальный компьютер. Для этого можно использовать утилиту WinSCP
Для того чтобы работать с приватным ключом при помощи putty необходимо конвертировать id_rsa
в формат .ppk
В этом поможет утилита PuttyGen входящая в состав pytty, просто откройте файл id_rsa
и сохраните его нажав на кнопку Save private key
Для завершения настройки ssh нужно вернуться к редактированию файла
/etc/ssh/sshd_config
пишем
PasswordAuthentication no
и перезагружаем службу ssh
sudo systemctl restart ssh
Теперь следует изменить настройки подключения к серверу в putty и WinScp, изменить порт на 22022, и добавить ссылку на файл ключа.
Установка Веб-сервера nginx
Для передачи клиенту страниц сайта в большинстве случаев служат программы называемые web-сервером. Одним из наиболее быстрых Web-серверов является nginx, поэтому установим именно его.
В терминале вводим команду
sudo apt install nginx
После установки можем ввести http://IP-СЕРВЕРА и увидим приветственную страницу nginx.
Установка базы данных MariaDB
В качестве системы управления базами данных будем использовать MariaDB – это более производительный аналог MySQL.
Установим:
sudo apt install mariadb-server
И изменим настройки безопасности:
sudo mysql_secure_installation
Это позволит установить пароль на доступ к базе данных, на все остальные вопросы можно отвечать Y.
Теперь войдем в MariaDB
sudo mariadb
Создаем базу данных wordpress_db
:
CREATE DATABASE wordpress_db;
Создаем пользователя wordpress_us
с паролем password
и полными правами на базу wordpress_db
GRANT ALL ON wordpress_db.* TO ‘wordpress_us@‘localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Чтобы сервер перезагрузил все таблицы привилегий используем инструкцию:
FLUSH PRIVILEGES;
Выходим из базы данных
exit
Пробуем авторизироваться в базе данных из под нового пользователя wordpress_us
с паролем password
mariadb -u wordpress_us -p
Устанавливаем PHP
Для того, чтобы сервер мог динамически управлять контентом при генерации страниц мы установим PHP
sudo apt install php-fpm php-mysql
Настройка виртуального домена
По умолчанию nginx выводит пользователю содержимое папки /var/www/html
Но у нас есть возможность настроить сервер таким образом, чтобы на одном сервере работало несколько сайтов, которые бы ни как не пересекались между собой и находились каждый в своей папке.
Для начала создадим директорию и установим привелегии(site-1 нужно заменить на ваш домен):
sudo mkdir /var/www/site-1
sudo chmod -R 755 /var/www/site-1
sudo chown -R www-data:www-data /var/www/site-1
Создадим файл конфигурации для этого сайта (site-1 нужно заменить на ваш домен)
#/etc/nginx/sites-available/site-1.conf
server {
listen 80;
listen [::]:80;
root /var/www/site-1;
index index.php index.html index.htm;
server_name site-1 www.site-1;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
Описав конфигурацию виртуального домена, необходимо его активировать создав символическую ссылку (site-1 нужно заменить на ваш домен)
sudo ln -s /etc/nginx/sites-available/site-1.conf /etc/nginx/sites-enabled/
Перезапускаем nginx чтобы применить изменения
sudo systemctl reload nginx
Осталось создать файл /var/www/site-1/index.php и добавить туда следующее содержимое
<?php
phpinfo();
?>
Если при входе на домен мы видим такую страницу, значит все настроено верно:
Что может пойти не так
Если вы меняете сервер, то после изменений записей домена может пройти неопределенное количество времени, прежде чем вы сможете перейти на новый сервер. Чтобы сократить время обновления доменных записей на вашем компьютере:
- пропишите в настройках сети DNS сервера Google 8.8.8.8 и 8.8.4.4 , они обновляются на много чаще, чем DNS сервера вашего провайдера.
- сбросьте кэш днс windows в командной строке:
ipconfig /flushdns
- откройте сайт во вкладке инкогнито, либо сбросьте кэш днс в своем браузере
chrome://net-internals/#dns — для Google Chrome
browser://net-internals/#dns — для Яндекс Браузера
opera://net-internals/#dns — для Оперы
Настраиваем бесплатный SSL сертификат для сайта
Сейчас мы установим Certbot – это программа, которая автоматизирует работу с центром сертификации Let’s Encrypt , что позволяет достаточно просто получать и обновлять бесплатные сертификаты TLS/SSL.
sudo apt install certbot python3-certbot-nginx
Запускаем certbot (site-1 нужно заменить на ваш домен)
sudo certbot —nginx -d site-1 -d www.site-1
После этого вам нужно будет ответить на несколько вопросов, оставить email, решить интересны ли вам новости сервиса, нужен ли обязательный редирект на https.
Установка системы управления сайтом WordPress
Для начала установим все утилиты, которые будет использовать сайт на wordpress и скачаем последнюю версию самого wordpress
sudo apt install curl php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
Теперь извлекаем содержимое архива latest.tar.gz
tar xzvf latest.tar.gz
И создаем папку, чтобы wordpress мог автоматически обновляться
mkdir /tmp/wordpress/wp-content/upgrade
Перемещаем новые файлы в директорию нашего сайта, не забываем заменить site-1 на свой домен
sudo cp -a /tmp/wordpress/. /var/www/site-1
Повторно обновим принадлежность директории сайта
sudo chown -R www-data:www-data /var/www/site-1
И установим конкретные разрешения для директорий и файлов нашего сайта(site-1 меняем на домен)
sudo find /var/www/site-1/ -type d -exec chmod 750 {} \;
sudo find /var/www/site-1/ -type f -exec chmod 640 {} \;
Если все сделано правильно, при входе на сайт появится меню настройки wordpress
Выбираем язык и заполняем форму доступа к базе данных, которую мы уже настроили до этого
На следующем этапе вводим название сайта и логин, пароль и электронную почту.
После этого вордпресс установлен и готов к работе.