Для запуска своих проектов на 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