Начало работы с DigitalOcean
DigitalOcean - американский провайдер облачных инфраструктур. Вот что пишет Википедия. Предоставляет так называемые дроплеты, которые являются обычными VPS. Почему решил написать этот пост? Дело в том, что постоянно приходится работать с разными системами и изучать что-то новое. И я заметил новые знания полностью стирают старые, если ты время от времени не пользуешься ими. Поэтому решил написать инструкцию для быстрого вхождения в будущем.
Небольшая предыстория. Полтора года назад для небольшого проекта мне нужно было выбрать хостинг. Обычные хостинги нам не подходили и я начал искать VPS. Присматривался к украинским, знакомые админы советовали Hetzner. Довольно часто я читал статьи DigitalOcean и отзывы довольно хорошие были, поэтому решил попробовать. Взяли самый минимальный вариант: 5$ в месяц - 1 ядро, 512Мб памяти, 20Гб SSD диска. Изначально проект не должен был быть нагруженным :) В базе было 40 млн записей и весил 14 Гб, обновляться база будет крайне редко и основное чтение. Часто запрашиваемые данные собрал в отдельную таблицу, чтобы не приходилось джойнить кучу таблиц при запросе. Запустили. Через 2 недели в сутки начало посещать 100-120 тыс. Сервер уже еле тужился, но 1500 посетителей одновременно мог держать, конечно людей было наверное и больше и процент отказов при 1500 было больше. Решили перейти на 20$ в месяц. У DigitalOcean это очень удобно сделано. Даунтайм был 1-2 минуты и у нас был уже сервак с двумы процами и 2 Gb памятю, но без увеличения диска. Потому-что если увеличить диск, то потом обратно откатиться на предыдущий тариф не получится и при увеличении диска даунтайм будет больше. Такое удобство мне очень понравилось. Поэтому и в этот раз решил поднять проект на этом сервисе, а в голове оказалось уже ничего не осталось и приходится заново читать все.
Так непосредственно шаги создания Дроплета и ссылки на подробные инструкции:
1. Нужно зарегистрироваться на сайте DigitalOcean.
2. Включите двухвакторную авторизацияю, мало ли. Это опционально!
3. Чтобы уже можно было создавать дроплеты нужно оплатить. Есть вариант карточкой или через PayPal. Я на первый раз попробовал через PayPal. При такой оплате со счета у меня сняли 5.36$ вместо 5.00$, может это комиссия какая-то или потери при конвертации курса. Но у меня была долларовая карточка. Пока не понятно почему так, сумма не большая и особо не хочется этим заморачиваться.
4. Создание дроплета.
4.1. Нажимаем на большую синюю кнопку Create Droplet
4.1. Выбираем снимок. Я выбрал себе Ubuntu 16.04 x64. Тут нужно напомнить, что если у вас оперативка меньше 3 Гб, то советуют выбирать 32-х битную систему, потому-что для 64-х битная система накладывает на память дополнительные расходы. Таким образом оптимально будет брать 64-х битную систему если у вас оперативка 3 и больше, а если меньше то 32-битную систему. Но вам нужно учесть и ваш будущий рост. Если в будущем у вас планируется переход на другой тариф с большим ресурсами, то скорее всего будет выгодныее все таки ставить 64-х битную, чтобы в будущем не мучиться с миргацией с 32-х битной на 64-х битную. Дополнительно почтитайте об этом тут и тут.
4.2. Выбрать размер. Тут все понятно. Выбираете то, что для вас подходит.
4.3. Можете включить бекапы, а можете включить его позже. Стоимость бекапа будет составлять 20% от стоимости основного тарифа.
4.4. Дополнительные блоки вам не нужны пока. Идем дальше.
4.5. Выбираем регион датацентра. Нужно выбрать наиболее близкий к вашему региону. Я выбрал Германию.
4.6. Дальше можете поставить галочки напротив пунктов (Private Networking, IPv6, Monitoring). Все эти дополнительные услуги бесплатные.
4.7. Добавьте SSH-ключ.
Узнайте создан ли у вас SSH ключ:
ls -al ~/.ssh
Если в списке есть ключи (файлы с окончанием .pub), то скопируйте и вставье в текстовое поле на DigitalOcean. О том как скопировать читайте ниже. Если у вас еще не создан SSH ключи, то создайте командой:
ssh-keygen -t rsa
На все приглашения вы можете нажать на Enter.
Для того чтобы скопировать выполните следующее:
cat ~/.ssh/id_rsa.pub
Эта команда выведет ключ на экран, вам нужно скопировать его и вставить в текстовое поле DigitalOcean. Подробнее тут.
4.8. Нажмите на кнопку создания дроплета.
5. После того как дроплет успешно создался вы можете залогиниться используя:
ssh root@your_server_ip
Подробнее обо всем этом можно прочитать тут.
6. Дальше вам нужно будет провести начальную настройку сервера: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04
Ошибка: perl: warning: Setting locale failed
В новосозданном дроплете Ubuntu 16.04 полчему-то возникает такая ошибка при выполнении команд:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_PAPER = "uk_UA.UTF-8", LC_ADDRESS = "uk_UA.UTF-8", LC_MONETARY = "uk_UA.UTF-8", LC_NUMERIC = "uk_UA.UTF-8", LC_TELEPHONE = "uk_UA.UTF-8", LC_IDENTIFICATION = "uk_UA.UTF-8", LC_MEASUREMENT = "uk_UA.UTF-8", LC_TIME = "uk_UA.UTF-8", LC_NAME = "uk_UA.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). locale: Cannot set LC_ALL to default locale: No such file or directory
Открываем файл конфигурации:
sudo nano /etc/default/locale
Надо чтобы содержимое файла выглядела так:
LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LC_TYPE=en_US.UTF-8
Сохраняем. Выходим и выполняем следующие команды:
locale-gen en_US.UTF-8 dpkg-reconfigure locales
При выполнении последней команды нужно будет выбрать "все" и как дефолтный выбрать "en_US.UTF-8" (обычно он и будет выбран)
Детальнее об этой ошибке можете прочтитать тут и тут.
Работа с DNS.
Это NS сервера, которые нужно указать в настройках домена.
ns1.digitalocean.com ns2.digitalocean.com ns3.digitalocean.com
Кроме этого вам нужно сделать следующее:
1. Добавить домен как указано тут : https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/
2. Добавляем А/АААА записи по инструкции