Базовые настройки сервера на Debian

Deploy проекта на сервере

learninglogs_user

  • Обновить пакеты: apt-get update; apt-get upgrade;
  • Поставить русскую локаль: dpkg-reconfigure locales
    выбрать en_US.UTF-8 и ru_RU.UTF-8
  • Создаем пользователя: adduser admin
  • Авторизуемся под новым пользователем: su admin
  • Настраиваем подключение по SSH
    mkdir .ssh
    cd .ssh
    nano authorized_keys -
    сюда сохраняем публичный ключ машины с которой будем авторизоваться
    nano /etc/hostname - прописываем имя хоста (имя которое будет отображаться при подключении)
    Прописываем настройки в sshd_config:
    nano /etc/ssh/sshd_config
     
    ​​​​​​​ClientAliveInterval 60
    TCPKeepAlive yes
    ClientAliveCountMax 10000
    PermitRootLogin no
    MaxAuthTries 3
    PubkeyAuthentication yes
    AuthorizedKeysFile    .ssh/authorized_keys
    # PasswordAuthentication no в зависимости задавался ли пароль пользователя
    ChallengeResponseAuthentication no
    UsePAM yes
    X11Forwarding yes
    PrintMotd no
    AcceptEnv LANG LC_*
    Subsystem    sftp    /usr/lib/openssh/sftp-server

     рестартуем /etc/init.d/ssh restart

  • По желанию/необходимости ставим версию Python отличную от поставленой из "коробки" в Debian

  • Получение сертификата HTTPS (A+ SSL)
    Устанавливаем Certbot:
    apt-get install certbot
    certbot certonly --standalone

  • Настраиваем Nginx, дока тут
    Устанавливаем необходимые пакеты:
    apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
    Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов. Скачайте ключ:
    gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
    Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:
    echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

    Обновляем пакеты и устанавливаем Nginx:
    apt-get update
    apt-get install nginx
    ​​​​​​​systemctl start nginx

    При изменениях в конфигурации делать systemctl reload nginx

  • Настройка Gunicorn
    ​​​​​​​Устанавливаем - pip install gunicorn
    Прописываем настройки daemon gunicorn.service:
    nano /etc/systemd/system/gunicorn.service
     

    Description=gunicorn daemon
    After=network.target
    
    [Service]
    # имя под которым подключались к серверу
    User=your_username
    
    # адрес к директории, где лежит manage.py
    WorkingDirectory=/home/your_username/<>/<>/
    
    # адрес к директории где находится gunicorn в виртуальном окружении
    ExecStart=/home/your_username/<>/venv/bin/gunicorn --bind 127.0.0.1:8000 your_project_name.wsgi:application
    
    [Install]
    WantedBy=multi-user.target

    Запускаем daemon gunicorn: systemctl start gunicorn
    Активация службы (автоматически запускается при запуске сервера):
    systemctl enable gunicorn.service
    При изменениях в проекте необходимо делать systemctl reastart gunicorn.service