Для проектов среднего и небольшого размера не всегда оправданно использовать AWS/Kubernetes подобную технологию. Для проектов нуждающихся в нескольких серверах отлично подходит Digital ocean. Который к тому же предоставляет средства вертикального скейлинга(увеличение производительной мощности уже существующих серверов).
Создаем сертификат под которым будем логинится на сервера нашего проекта (на локальной машине)
ssh-keygen -t rsa -b 4096 -f /Users/alex/.ssh/myproject_test -C "myproject comment"
Не забываем сделать его бекап
- Создаем новый Droplet (one-time password)
- Логинимся под рутом
- Создаем пользователя(
superuser
) под которым мы в дальнейшем будем ходить по ssh
adduser superuser
Добавляем его в рутовую группу
usermod -aG sudo superuser
Добавляем публичный SSH ключ для superuser
на удаленный сервер. И если в проекте несколько серверов, дабы не создавать сертификат для каждого, можем переиспользовать его на каждом из серверов. То есть проделываем данную процедуру для каждого сервера.
ssh-copy-id -i /Users/alex/.ssh/myproject_test.pub [email protected]
Теперь публичный ключ размещен на сервере в файле /home/superuser/.ssh/authorized_keys
. Можем логинится через сертификат.
Обрати внимание логинимся через СЕКРЕТНЫЙ ключ, не публичный!
ssh -i /Users/alex/.ssh/myproject_test [email protected]
Заходим под рутом и в бой...
su
Задать FQDN серверу
nano /etc/hostname
mysuperdomain
nano /etc/hosts
127.0.1.1 mysuperdomain.com mysuperdomain
127.0.0.1 localhost
Время
date --set hh:mm
nano /etc/ssh/sshd_config
- Запрещаем логинится по паролю
- Запрещаем руту ходить по ssh
- Меняем дефолтный ssh порт
PasswordAuthentication no
PermitRootLogin no
Port 2222
sudo service ssh restart
Загрузить и установить последние обновления системы
apt update && apt upgrade
reboot
or systemctl reboot
Настраиваем локаль
Правим конфиг локалей
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
Реконфигурируем локали (из списка выбираем en_US.utf8
и ru_RU.utf8
, далее по умолчанию ставим en_US.utf8
)
sudo dpkg-reconfigure locales
sudo reboot
Ставим необходимые утилиты
sudo apt install -y zsh htop git curl wget unzip zip mc iftop psmisc screen
Oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Zsh custom config
autoload -U +X bashcompinit && bashcompinit
alias ls='ls -FGA'
alias ll='ls -FGAhl'
alias x='clear'
alias rm='rm -i'
alias rmdir='rm -rfi'
alias cp='cp -i'
alias mv='mv -i'
PROMPT='${ret_status} %{$fg[cyan]%}%n::%m[%d]%{$reset_color%} $(git_prompt_info)'
RPROMPT='[%T]'
%m
- hostname