Об этой серии

Следите за тем, как я лучше знакомлюсь с управлением своими собственными серверами. В этой серии я буду использовать DigitalOcean в качестве игровой площадки и научусь настраивать Nginx, MySQL, NodeJS, брандмауэры и т. д.

Почему администратор сервера?

Мой интерес к управлению собственными серверами вырос во время работы над большим продуктом SaaS.

Я потратил много времени на внешний интерфейс, а также на внутренний API, работая с Angular и Laravel, но я из первых рук увидел, насколько важно, чтобы разработчики были знакомы с администрированием сервера.

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

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

До сих пор путешествие по изучению серверов было сложным, но не таким трудным, как другие вещи, о которых мне приходилось узнавать (например, алгоритмы). Так что поощряйте это.

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

Ресурсы

Два из лучших ресурсов, которые я нашел до сих пор:

Ускоренный курс SFH обязателен к просмотру. Действительно. Смотрите и возвращайтесь сюда, чтобы поблагодарить меня. Ах да, спасибо и @fideloper.

Я также купил его SFH Book + Video package. Я еще не прошел весь путь, но уже многому научился.

Материал действительно хорошо сделан.

Начиная

Бесплатный ускоренный курс по серверам для хакеров — отличное место для начала.

Крис объясняет различные типы доступных серверов и знакомит вас с основами настройки сервера в DigitalOcean.

Вы можете открыть свою собственную учетную запись DO, чтобы следовать инструкциям, или вы также можете использовать бесплатный инструмент, такой как Vagrant и VirtualBox, для настройки сервера на вашем компьютере.

Если вы полный новичок, вам может быть проще просто следовать DO. 5 долларов помогут вам начать.

Некоторые фонды, которые помогли мне

Понимание ключей SSH и того, как они работают, было пробелом, который мне нужно было заполнить.

Вот приличное видео, которое я нашел, которое довольно хорошо их объясняет.

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

До этого путешествия мой единственный опыт работы с ключами SSH заключался в отправке/вытягивании кода из Github. Теперь я знаю немного больше о том, как/почему они работают.

SSH-ключи

Когда вы создаете свой дроплет DigitalOcean, вы можете настроить его для аутентификации с использованием имеющегося у вас ключа SSH. Если вы сделаете это, вы не получите электронное письмо с паролем для входа; вместо этого вы будете идентифицировать себя, используя закрытый ключ, который у вас есть на вашем собственном компьютере, при использовании SSH для входа в систему через ваш терминал.

Вот как вы можете начать:

  1. Создайте новый ключ SSH на своем компьютере.

Использование нового ключа является хорошей идеей. У вас могут быть другие ключи от работы с Github и т. д., и вам, вероятно, будет проще управлять своими ключами, если они предназначены для одной цели.

Не забудьте также правильно назвать свой ключ, чтобы вы легко запомнили, где вы используете этот ключ. Подойдет что-то вроде «my_test_do_droplet».

После создания вы получите два ключа в каталоге .ssh: «my_test_do_droplet» и «my_test_do_droplet.pub».

Откройте терминал и введите следующее:

ssh-keygen -o -a 100 -t ed25519 -f my_test_do_droplet

Подробнее о том, что вы на самом деле с этим делаете, смотрите здесь. Если эта статья выглядит пугающей, вот важные моменты, как я их понимаю:

«Создайте ключ, используя параметр (-o) или новый формат ключа RFC4716 и используя современную функцию получения ключа на базе bcrypt. Используйте параметр -a для количества раундов».

… не совсем уверен, что все это значит, но звучит неплохо.

Далее, если вы посмотрите на страницу «man» для ssh-keygen, вы увидите, что использование ed25519 с параметром -f позволяет вам установить имя выходного файла ключа, например: my_test_do_droplet

ssh-keygen man

Теперь, после всего этого, ваш ключ будет находиться в вашем домашнем каталоге в подкаталоге с именем «.ssh».

Я на Ubuntu, поэтому мои ключи находятся в ~/.ssh

  1. Добавьте свой новый ключ (публичный, .pub, версию) при создании нового дроплета.

Вы увидите эту опцию при создании дроплета.

Кстати, я рекомендую создать дроплет с версией Ubuntu, которую Крис использует в видеороликах SFH Crash Course. Это просто упростит задачу.

  1. Оттуда вы можете войти через SSH на IP-адрес, видимый в вашем списке капель.
ssh -i <path to your private key> root@DROPLET_IP_ADDRESS

Если вы находитесь в каталоге .ssh, просто введите:

ssh -i my_test_do_droplet root@DROPLET_IP_ADDRESS

Когда вы впервые входите в систему, ваш домашний компьютер не распознает удаленный компьютер. Вам будет предложено добавить удаленную машину в список «известных хостов».

Это важная защита; это способ для вашей машины убедиться, что она разговаривает с правильным удаленным сервером. Если вы когда-нибудь снова увидите это сообщение и не ожидаете его, не входите в систему, пока не убедитесь, что вы входите на правильный компьютер.

Конец

Если вы следите за мной, я настоятельно рекомендую вам открыть новый текстовый документ и отслеживать некоторые из этих вещей. Обязательно продолжайте обновлять его, добавляя свои собственные комментарии по мере продвижения. Я гарантирую, что создание подобных шпаргалок поможет вам в будущем.

BuildtoLearn.io

Растущим разработчикам нужна возможность попрактиковаться в создании полноценного приложения с нуля до производства, а предпринимателям нужны недорогие способы проверить свои идеи приложений.

В Build to Learn я разрабатываю учебные пособия и полные курсы, в которых вы можете испытать себя и получить ценную информацию о том, что значит создавать полные приложения с использованием Vue.JS и Node.JS.

Посетите Build to Learn и зарегистрируйтесь, если хотите быть в курсе новых руководств и выпусков курсов.