Настройка сервера для FastAPI и Django

сервер на Debian 10. Для Ubuntu шаги те же самые за минимальными исключениями.

Вот у вас есть сервер и вы - пользователь root. Вы подключились к серверу по ssh:
ssh root@<ip сервера>
Настройка свежего сервера начинается с создания пользователя, от имени которого будут производиться все дальнейшие действия. Этот пользователь должен быть включен в группу sudo, чтобы иметь возможность определенных операций. Обычно такого пользователя именуют www, не будем отступать от этой традиции:
adduser www
adduser www sudo
на Debian может не оказаться команды sudo, необходимо её установить
apt-get update
apt-get install sudo
Теперь необходимо выйти из системы и войти под новым пользователем www.
exit
затем
ssh www@<ip сервера>
Чтобы не вводить каждый раз пароли на сервер, можно настроить вход по ssh-ключу, см. здесь, как это сделать. Кстати, это более безопасно.
Ок, решили: для безопасности запретим вход по паролю, оставим вход только по ssh-ключу, а также запретим вход пользователю root, ибо нефиг.
Открывает настройки сервиса ssh:
sudo nano /etc/ssh/sshd_config
и меняем/добавляем там вот эти строчки:
AllowUsers www
PermitRootLogin no
PasswordAuthentication no
смысл понятен: по ssh доступ только пользователю www, руту нельзя логиниться, вход по паролю недоступен (остается только ssh-ключ). Всё во имя безопасности.
Перезапускаем сервис ssh, чтобы настройки вступили в силу:
sudo service ssh restart
Устанавливаем nginx:
sudo apt install nginx
Устанавливаем Python. Есть отличная инструкция, следуем ей:
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
Далее необходимо загрузить свежую версию Питона. Чтобы узнать, какая версия на данный момент самая свежая, посети сайт Питона и подставь соответствующие значения в команды ниже. Я устанавливал Питон 3.9.6:
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
tar -xzvf Python-3.9.6.tgz
cd Python-3.9.6
./configure --enable-optimizations --prefix=/home/www/.python3.9
Последняя опция - необязательна. Она размещает исполняемые файлы Питона в указанной папке (вместо стандартной /usr/bin/python) и позволяет запускать Питон командой python3.9. Это иногда бывает удобно, чтобы разделить Питонов разных версий.
Далее, непринципиально, но для оптимизации процесса узнаем количество ядер у твоего сервера:
nproc
и это число подставляем в следующее команду вместо 1 (я запускал на 1-ядерном сервере):
make -j 1
Примечание. С удивлением узнал, что у меня на ноуте 8 ядер.
После довольно длительной сборки вводим
sudo make altinstall
и Питон у нас установлен. Проверяем на всякий пожарный:
python3.9 --version
Если пожарный сработал, и ОС говорит вам, что такая команда не найдена, то прописываем путь к исполняемому файлу Питона. Открываем файл ~/.bashrc, например, vim-ом:
vim ~/.bashrc
и там в конце добавляем строчку
export PATH=$PATH:/home/www/.python3.9/bin/
сохраняем, выходим, перезапускаем конфигурацию
source ~/.bashrc
и снова проверяем наличие Питона:
python3.9 --version
Вот теперь точно всё должно работать.

Устанаваливаем и настраиваем git:
sudo apt install git
git config --global user.name "твоё имя"
git config --global user.email "твой@почтовый.ящик"