Эта инструкция нужна тем, кому не хватает мощностей для одновременной разработки и поддержания локальной работы сайта или кто не хочет скачивать себе репозиторий и докер-образы на ПК.

Здесь мы научимся запускать сайт на сервере, а также подключатсья к нему со своего ПК, что позволит нам уменьшить нагрузку на используемвый компьютер


Требования:

  1. Свой или арендованный физический или виртуальный сервер с белым ip (потому что мы планируем подключаться к нему с нашего устройства)
  2. Аккаунт на gitlab.com и доступ к репозиторию https://gitlab.com/fpmi/stfpmi-master (если ссылка открывается и не ведёт на 404 - то доступ есть. Иначе - обращайся к Ivan Arkhipov  )
  3. Установленная и готовая к работе VSCode

Шаг 1. Настройка подключения к серверу

Шаг 1.1. Генерация ssh-ключа

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

https://workshop.samcs.ru/confluence/pages/viewpage.action?pageId=26706472#id-2.%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BA%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8E%D0%B8%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2-%D0%A8%D0%B0%D0%B31:%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8Fssh-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%BD%D0%B0Gitlab.com

Шаг 1.2. Добавление ssh-ключа в ~/.ssh/config

Воспользуйтесь третьим пунктом данного гайда, но в качестве Host укажите что-нибудь вроде mipt.tech-remote, в качестве HostName — IP-адрес вашего сервера, в качестве User — имя пользователя, возможно просто root, ну и наконец IdentityFile — путь к непубличному ssh-ключу

https://workshop.samcs.ru/confluence/pages/viewpage.action?pageId=26706472#id-2.%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BA%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8E%D0%B8%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2-%D0%A8%D0%B0%D0%B33:%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5ssh-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B2~/.ssh/config

В итоге config-файл будет выглядеть примерно так

Definition of done: Попробуй выполнить у себя команду (вместо mipt.tech-remote поставьте то, что написали в Host)

ssh mipt.tech-remote

В случае успеха вам откроется терминал на вашем сервере:

P.S. Когда вы используете существующий сервер: нужно добавить ПУБЛИЧНУЮ часть ssh-ключа в файл authorized_keys на сервере (public_key_string — содержимое *.pub файла вашего ключа)

echo "public_key_string" » ~/.ssh/authorized_keys

Файл autorized_keys нам нужен в силу того, что процесс подключения по ssh выглядит следующим образом:

  • /usr/bin/ssh соединяется с сервером на порт SSH
  • Клиент и сервер обмениваются ключами, определяется алгорит м шифрования
  • Клиент ищет файлы, по умолчанию испрользуемые Pubkey/Identity
  • Если один из таких файлов был найден, то посылается публичный ключ на сервер и запрашивается аутентификация по этому ключу
  • Сервер проверяет файл authorized_keys пользователя на наличие публичного ключа и посылает клиенту последовательность, зашифрованную открытым ключом . Если приватный ключ защищен кодовым словом, то /usr/bin/ssh просит его ввести для дешифровки приватного ключа.
  • Клиент расшифровывает посланную последовательность для подтверждения правильности публичного и приватного ключей
  • Если расшифровка удалась, то сервер пускает клиента без запроса пароля Unix
  • Если клиент не может доказать, что это имеет ключ, то он может предложить другие ключи
  • При отсутствии корректных ключей пользователю будет предложено авторизоваться с помощью авторизации Unix

Шаг 2. Запуск сайта на сервере

Шаг 2.1. Установка докера

Установите докер на сервере:

https://workshop.samcs.ru/confluence/pages/viewpage.action?pageId=35324146#id-1.[Linux]%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D1%81%D1%80%D0%B5%D0%B4%D1%8B%D0%B4%D0%BB%D1%8F%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8-%D0%A8%D0%B0%D0%B31.%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0Docker

Шаг 2.2. Настройка гитлаба и скачивание исходников

Воспользуйтесь https://workshop.samcs.ru/confluence/x/KIKXAQ и склонируйте исходники сайта на сервер попутно создав (или скопировав) ssh-ключ для гитлаба

Шаг 2.3. Запуск сайта на сервере

Как бы очевидно это не звучало, но теперь нам нужно лишь сделать в директории сайта

docker compose up

И сайт запустится (вы великолепны)

Шаг 2.4. Вход на сайт

Теперь, чтобы на этот самый сайт зайти, нужно всего лишь ввести в адресную строку ip:3000, где ip — ip-адрес вашего сервера,а 3000 — порт (3001 для next-js фронтенда)

Шаг 3. Интеграция с VS Code

Для начала установите расширение под названием Remote - SSH

Затем выберите нажмите на кнопку открытия удалённого окна (1) и подключение к узлу Remote - SSH (2)

Выберите нужный Host (его вы указывали в config-файле, в моём случае это mipt.tech-remote)(3)

(При открытии окна, а также при открытии папок от вас могут потребовать ввестипароль, который вы указывали при создании ssh-ключа, если вы его указывали)

Теперь вы подключены к своему серверу через VS Code и соответственно можете выполнять команды из терминалы, открывать папки и писать код

P.S. Если вы вдруг захотите установить какие-то расширения, то делать это нужно уже после открытия удалённого окна через SSH