Для запуска своих проектов на PHP и Node.js я использую серверы на VPS.
На них устанавливаю Linux и Docker, вместе получается очень мощная конфигурация которая достаточно проста и надёжна для любых проектов.
В этой статье я подробно опишу все шаги, как настроить сервер с нуля.
Возможно, кому-то из вас пригодится.
Версия OS
Используем серверную Ubuntu последней доступной версии LTS.
Номера доступных LTS версий по состоянию на 19.01.2023: 20.04, 22.04.
Выбираю 22.04 как более свежую.
Срок жизни версии — пять лет. Основная поддержка заканчивается в апреле 2027 года.
Почему Ubuntu — она наиболее популярна среди Linux. Под неё уже есть куча заготовок, рецептов. Легко нагуглить решения всяческих проблем.
Формат сервера
Для типичного приложения на первом этапе достаточно одного VPS на надёжном хостере.
В одном сервере будет и БД и приложение.
В последующее время, если нагрузка на БД сильно вырастет и мощностей станет нехватать, можно разделить на несколько серверов: на одном приложение, на другом БД.
Хостер
Для большинства проектов я пользуюсь российскими хостерами.
SimpleCloud для самых маленьких серверов и IHC для серверов помощнее.
Инструкция по настройке сервера
Первым делом, получаем от хостера логин, пароль и IP сервера для входа по SSH.
Далее логинимся по SSH и выполняем действия по инструкции.
Результатом выполнения всех действий будет полностью настроенный сервер, готовый к установке приложения.
Входим под рутом, так как других пользователей ещё нет.
ssh root@1.2.3.4
В качестве SSH клиента я использую встроенный SSH клиент в моём WSL (Ubuntu) + Windows Terminal.
Если у вас Windows без WSL, вы можете воспользоваться Putty.
1. Обновляем систему
apt update
apt upgrade
2. Переключаем систему на русский язык
echo $LANG
apt -y install language-pack-ru-base language-pack-ru
update-locale LANG=ru_RU.UTF-8 LANGUAGE="ru_RU:ru"
source /etc/default/locale
echo $LANG
3. Ставим синхронизацию даты и времени сервера по интернет
Дата и время должны быть всегда точны и актуальны.
apt install ntp
4. Устанавливаем временную зону Москвы
dpkg-reconfigure tzdata
5. Устанавливаем Midnight Commander
Файловый менеджер для терминала.
apt install mc
6. Добавляем пользователя
Имя пользователя сами выбираем для себя.
У каждого разработчика должен быть свой пользователь, в целях прозрачности и безопасности.
adduser nex
adduser nex sudo
Не забудьте перелогинить пользователя, иначе он не сможет пользоваться sudo.
7. Настраиваем выполнение sudo без пароля
Открываем на редактирование файл настроек для команды sudo
.
mcedit /etc/sudoers
Ищем строку с %sudo
и заменяем на следующее:
# Все члены группы sudo могут выполнять sudo без пароля
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
8. Вход по ключу
Настраиваем автозаход с помощью ключа ssh.
http://xgu.ru/wiki/ssh-copy-id
9. Заходим под своим пользователем
Далее логинимся под своим пользователем и выполняем команды от его имени, прибегая к sudo
по необходимости.
ssh nex@1.2.3.4
10. Ставим Git
sudo apt install git
11. Настраиваем Git
Отключаем проверку разрешений для файлов репозитория.
Если этого не сделать, то смена разрешений на любой из файлов в репозитории заблокирует вытягивание новых версий файла.
sudo git config --system core.filemode false
12. Устанавливаем Docker
Используем инструкцию
https://www.cloudbooklet.com/how-to-install-docker-on-ubuntu-22-04/
13. Устанавливаем Docker Compose
sudo apt-get install docker-compose-plugin
docker compose version