Вы находитесь на странице: 1из 5

14.11.2021, 15:25 alexey-goloburdin/debian-set-up-for-django: Set up clean Django server for Django projects.

Nginx, Gunico…

Алексей-Голобурдин / debian-set-up-для-django Общественные

Set up clean Django server for Django projects. Nginx, Gunicorn, Django, Python 3.7,
PostgreSQL, Supervisor


204
stars

133
forks


Star
Watch

Код Проблемы Запросы на вытягивание 3 Действия Проекты Вики Безопас


master

alexey-goloburdin … 12 июн 2020

View code

README.md

Настройка сервера Debian для работы с


Django Инструкция
В этом руководстве мы настроим чистый сервер Debian для проектов Python и Django.
Мы настроим безопасное соединение SSH, установим из репозиториев Debian и из
исходников все необходимые пакеты и подготовим их вместе для рабочего сервера
Debian Django.

Видеогид на Youtube (на русском языке)

Создать пользователя, настроить SSH


Подключитесь через SSH к удаленному серверу Debian, обновите репозитории и
установите несколько начальных необходимых пакетов:

sudo apt-get update ; \

sudo apt-get install -y vim mosh tmux htop git curl wget unzip zip gcc
build-essential make

Настроить SSH:

https://github.com/alexey-goloburdin/debian-set-up-for-django 1/5
14.11.2021, 15:25 alexey-goloburdin/debian-set-up-for-django: Set up clean Django server for Django projects. Nginx, Gunico…

sudo vim /etc/ssh/sshd_config

AllowUsers www

PermitRootLogin no

PasswordAuthentication no

Перезагрузите SSH-сервер, смените www пароль пользователя:

sudo service ssh restart

sudo passwd www

Init - обязательные пакеты и ZSH

sudo apt-get install -y zsh tree redis-server nginx zlib1g-dev libbz2-dev


libreadline-dev llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
liblzma-dev python3-dev python-imaging python3-lxml libxslt-dev python-
libxml2 python-libxslt1 libffi-dev libssl-dev python-dev gnumeric
libsqlite3-dev libpq-dev libxml2-dev libxslt1-dev libjpeg-dev libfreetype6-
dev libcurl4-openssl-dev supervisor

Установите oh-my-zsh :

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-


zsh/master/tools/install.sh)"

Настройте некоторые необходимые псевдонимы:

vim ~/.zshrc

alias cls="clear"

Установите python 3.7

mkdir ~ / код

Соберите из исходного кода python 3.7, установите с префиксом в папку ~ / .python:

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz ; \

tar xvf Python-3.7.* ; \

cd Python-3.7.3 ; \

mkdir ~/.python ; \

./configure --enable-optimizations --prefix=/home/www/.python ; \

https://github.com/alexey-goloburdin/debian-set-up-for-django 2/5
14.11.2021, 15:25 alexey-goloburdin/debian-set-up-for-django: Set up clean Django server for Django projects. Nginx, Gunico…

make -j8 ; \

sudo make altinstall

Теперь python3.7 в /home/www/.python/bin/python3.7 . Обновить пункт:

sudo /home/www/.python/bin/python3.7 -m pip install -U pip

Хорошо, теперь мы можем вытащить наш проект из репозитория Git (или создать
собственный), создать и активировать виртуальную среду Python:

cd code

git pull project_git

cd project_dir

python3.7 -m venv env

. ./env/bin/activate

Установить и настроить PostgreSQL

Установите PostgreSQL 11 и настройте локали.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo


apt-key add - ; \

RELEASE=$(lsb_release -cs) ; \

echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main |


sudo tee /etc/apt/sources.list.d/pgdg.list ; \

sudo apt update ; \

sudo apt -y install postgresql-11 ; \

sudo localedef ru_RU.UTF-8 -i ru_RU -fUTF-8 ; \

export LANGUAGE=ru_RU.UTF-8 ; \

export LANG=ru_RU.UTF-8 ; \

export LC_ALL=ru_RU.UTF-8 ; \

sudo locale-gen ru_RU.UTF-8 ; \

sudo dpkg-reconfigure locales

Добавить локали в /etc/profile :

sudo vim /etc/profile

export LANGUAGE=ru_RU.UTF-8

export LANG=ru_RU.UTF-8

export LC_ALL=ru_RU.UTF-8

Измените postges пароль, создайте чистую базу данных с именем dbms_db :

https://github.com/alexey-goloburdin/debian-set-up-for-django 3/5
14.11.2021, 15:25 alexey-goloburdin/debian-set-up-for-django: Set up clean Django server for Django projects. Nginx, Gunico…

sudo passwd postgres

su - postgres

export PATH=$PATH:/usr/lib/postgresql/11/bin

createdb --encoding UNICODE dbms_db --username postgres

exit

Создайте dbms пользователя db и предоставьте ему большие привилегии:

sudo -u postgres psql

postgres=# ...

create user dbms with password 'some_password';

ALTER USER dbms CREATEDB;

grant all privileges on database dbms_db to dbms;

\c dbms_db

GRANT ALL ON ALL TABLES IN SCHEMA public to dbms;

GRANT ALL ON ALL SEQUENCES IN SCHEMA public to dbms;

GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to dbms;

CREATE EXTENSION pg_trgm;

ALTER EXTENSION pg_trgm SET SCHEMA public;

UPDATE pg_opclass SET opcdefault = true WHERE opcname='gin_trgm_ops';

\q

exit

Теперь мы можем проверить соединение. Создайте ~/.pgpass с логином и паролем к


db для быстрого подключения:

vim ~/.pgpass

localhost:5432:dbms_db:dbms:some_password

chmod 600 ~/.pgpass

psql -h localhost -U dbms dbms_db

Запустите дамп SQL, если у вас есть:

psql -h localhost dbms_db dbms < dump.sql

Установить и настроить супервизор

Теперь рекомендуемый способ - использовать Systemd вместо супервизора. Если вам


нужен супервайзер - добро пожаловать:

sudo apt install supervisor

vim /home/www/code/project/bin/start_gunicorn.sh

#!/bin/bash

source /home/www/code/project/env/bin/activate

https://github.com/alexey-goloburdin/debian-set-up-for-django 4/5
14.11.2021, 15:25 alexey-goloburdin/debian-set-up-for-django: Set up clean Django server for Django projects. Nginx, Gunico…

source /home/www/code/project/env/bin/postactivate

exec gunicorn -c "/home/www/code/project/gunicorn_config.py"


project.wsgi

chmod +x /home/www/code/project/bin/start_gunicorn.sh

vim project/supervisor.salesbeat.conf

[program:www_gunicorn]

command=/home/www/code/project/bin/start_gunicorn.sh

user=www

process_name=%(program_name)s

numprocs=1

autostart=true

autorestart=true

redirect_stderr=true

Если вам нужен пример конфига Gunicorn - добро пожаловать:

command = '/home/www/code/project/env/bin/gunicorn'

pythonpath = '/home/www/code/project/project'

bind = '127.0.0.1:8001'

workers = 3

user = 'www'

limit_request_fields = 32000

limit_request_field_size = 0

raw_env = 'DJANGO_SETTINGS_MODULE=project.settings'

Релизы

Релизов не опубликовано

Пакеты

Пакеты не опубликованы

https://github.com/alexey-goloburdin/debian-set-up-for-django 5/5