Об этой серии
Следите за тем, как я лучше знакомлюсь с управлением своими собственными серверами. В этой серии я буду использовать DigitalOcean в качестве игровой площадки и научусь настраивать Nginx, MySQL, NodeJS, брандмауэры и т. д.
Почему администратор сервера?
Мой интерес к управлению собственными серверами вырос во время работы над большим продуктом SaaS.
Я потратил много времени на внешний интерфейс, а также на внутренний API, работая с Angular и Laravel, но я из первых рук увидел, насколько важно, чтобы разработчики были знакомы с администрированием сервера.
У нас была небольшая команда, и компания не могла нанять администратора сервера на полную ставку. Вместо этого эту роль исполняли несколько старших разработчиков бэкэнда. Они проделали фантастическую работу, и их навыки были чрезвычайно важны для здоровья нашего стартапа.
Что касается меня, я хотел бы иметь возможность самостоятельно перейти от планирования к производству приложения.
До сих пор путешествие по изучению серверов было сложным, но не таким трудным, как другие вещи, о которых мне приходилось узнавать (например, алгоритмы). Так что поощряйте это.
Следите, пожалуйста. Я думаю, вы найдете это путешествие столь же полезным, как и я.
Ресурсы
Два из лучших ресурсов, которые я нашел до сих пор:
- Серверы для хакеров — Бесплатный ускоренный курс
- Документация DigitalOcean
Ускоренный курс SFH обязателен к просмотру. Действительно. Смотрите и возвращайтесь сюда, чтобы поблагодарить меня. Ах да, спасибо и @fideloper.
Я также купил его SFH Book + Video package. Я еще не прошел весь путь, но уже многому научился.
Материал действительно хорошо сделан.
Начиная
Бесплатный ускоренный курс по серверам для хакеров — отличное место для начала.
Крис объясняет различные типы доступных серверов и знакомит вас с основами настройки сервера в DigitalOcean.
Вы можете открыть свою собственную учетную запись DO, чтобы следовать инструкциям, или вы также можете использовать бесплатный инструмент, такой как Vagrant и VirtualBox, для настройки сервера на вашем компьютере.
Если вы полный новичок, вам может быть проще просто следовать DO. 5 долларов помогут вам начать.
Некоторые фонды, которые помогли мне
Понимание ключей SSH и того, как они работают, было пробелом, который мне нужно было заполнить.
Вот приличное видео, которое я нашел, которое довольно хорошо их объясняет.
В общем, у вас есть закрытый ключ и открытый ключ на вашем компьютере. Открытый ключ — это то, чем вы можете поделиться публично. Закрытый ключ остается на вашем компьютере и никогда не должен передаваться. При подключении к чему-то, с чем вы поделились своим открытым ключом, происходит своего рода рукопожатие между вашим закрытым ключом и открытым ключом. Авторизация происходит, когда это рукопожатие успешно.
До этого путешествия мой единственный опыт работы с ключами SSH заключался в отправке/вытягивании кода из Github. Теперь я знаю немного больше о том, как/почему они работают.
SSH-ключи
Когда вы создаете свой дроплет DigitalOcean, вы можете настроить его для аутентификации с использованием имеющегося у вас ключа SSH. Если вы сделаете это, вы не получите электронное письмо с паролем для входа; вместо этого вы будете идентифицировать себя, используя закрытый ключ, который у вас есть на вашем собственном компьютере, при использовании SSH для входа в систему через ваш терминал.
Вот как вы можете начать:
- Создайте новый ключ 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
- Добавьте свой новый ключ (публичный, .pub, версию) при создании нового дроплета.
Вы увидите эту опцию при создании дроплета.
Кстати, я рекомендую создать дроплет с версией Ubuntu, которую Крис использует в видеороликах SFH Crash Course. Это просто упростит задачу.
- Оттуда вы можете войти через 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 и зарегистрируйтесь, если хотите быть в курсе новых руководств и выпусков курсов.