Как да настроите Django с Postgres, Nginx и Gunicorn на Debian 11
Въведение
Django е мощен фреймуърк за уеб приложения на Python, който прави разработването на сложни уеб приложения бързо и лесно. Postgres е една от най-популярните релационни бази данни с отворен код, която предлага надеждност, мащабируемост и множество функции. Nginx е високопроизводителен уеб сървър, който може да се използва за обработка на голям обем трафик, докато Gunicorn е уеб сървър на Python, който е оптимизиран за работа с Django приложения.
В това ръководство ще ви преведем през стъпките за инсталиране и конфигуриране на Django с Postgres, Nginx и Gunicorn на сървър Debian 11. Това е идеална конфигурация за мащабируеми и надеждни Django приложения.
Съдържание
Инсталиране на Postgres
1. Импортирайте официалния ключ на хранилището.
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
2. Добавете хранилището в източниците на списъка.
echo "deb http://apt.postgresql.org/pub/repos/apt stretch-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
3. Обновете списъка с пакети.
apt update
4. Инсталирайте Postgres.
apt install postgresql-12
5. Стартирайте Postgres и го активирайте за автоматично стартиране.
systemctl start postgresql
systemctl enable postgresql
6. Създайте база данни за Django приложението.
sudo -u postgres createdb mydjangoproject
Инсталиране на Django
1. Инсталирайте Python 3 и pip.
apt install python3 python3-pip
2. Създайте виртуална среда за Django.
python3 -m venv djangoenv
source djangoenv/bin/activate
3. Инсталирайте Django.
pip install django
Конфигуриране на Django
1. Създайте Django проект.
django-admin startproject mydjangoproject
2. Създайте приложение в Django проекта.
cd mydjangoproject
python3 manage.py startapp myapp
3. Редактирайте settings.py файла, за да добавите базата данни на Postgres.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydjangoproject',
'USER': 'postgres',
'PASSWORD': 'паролата ви',
'HOST': 'localhost',
'PORT': '5432',
}
}
4. Синхронизирайте миграциите на базата данни.
python3 manage.py migrate
Инсталиране на Nginx
1. Инсталирайте Nginx.
apt install nginx
2. Стартирайте Nginx и го активирайте за автоматично стартиране.
systemctl start nginx
systemctl enable nginx
Конфигуриране на Nginx
1. Създайте конфигурационен файл на Nginx за Django приложението.
sudo nano /etc/nginx/sites-available/mydjangoproject
2. Поставете следното съдържание във файла:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. Активирайте конфигурационния файл.
ln -s /etc/nginx/sites-available/mydjangoproject /etc/nginx/sites-enabled/
systemctl restart nginx
Инсталиране на Gunicorn
1. Инсталирайте Gunicorn.
pip install gunicorn
Конфигуриране на Gunicorn
1. Създайте конфигурационен файл на Gunicorn за Django приложението.
sudo nano /etc/systemd/system/gunicorn.service
2. Поставете следното съдържание във файла:
[Unit]
Description=Gunicorn daemon
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/your_username/mydjangoproject
ExecStart=/home/your_username/djangoenv/bin/gunicorn --bind unix:/run/gunicorn.sock --workers 3 --timeout 600 mydjangoproject.wsgi:application
[Install]
WantedBy=multi-user.target
3. Заредете и стартирайте услугата Gunicorn.
systemctl daemon-reload
systemctl start gunicorn
systemctl enable gunicorn
Заключение
Честито! Успешно инсталирахте и конфигурирахте Django с Postgres, Nginx и Gunicorn на Debian 11. Сега имате стабилна и мащабируема среда за разработка и хостване на вашите Django приложения. Не забравяйте да следвате най-добрите практики за сигурност и да наблюдавате внимателно производителността на приложението си, за да осигурите най-доброто потребителско изживяване.
Често задавани въпроси (ЧЗВ)
1. Как да променя потребителското име и паролата за базата данни на Postgres?
– Редактирайте файла /etc/postgresql/12/main/postgresql.conf* и променете параметрите **user** и *password.
2. Как да създам друг администраторски потребител в Postgres?
– Влезте в Postgres като потребител postgres и изпълнете:
CREATE USER new_user WITH PASSWORD 'нова_парола';
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO new_user;
3. Как да променя порта по подразбиране за Django приложението?
– Редактирайте файла settings.py* на Django и променете параметъра *ALLOWED_HOSTS на списък със разрешени хостове.
4. Как да добавя повече работници към Gunicorn?
– Редактирайте конфигурационния файл на Gunicorn /etc/systemd/system/gunicorn.service* и увеличете параметъра *workers.
5. Как да активирам SSL/TLS в Nginx?
– Получете SSL сертификат и го поставете в директорията /etc/nginx/ssl и конфигурирайте го в конфигурационния файл на Nginx.
6. Как да наблюдавам производителността на Django приложението?
– Инсталирайте Django Debug Toolbar или използвайте инструменти за наблюдение като Datadog или Sentry.
7. Как да архивирам базата данни на Postgres?
– Използвайте командата pg_dump за създаване на архив на базата данни.
8. Как да актуализирам Django и свързаните му зависимости?
– Използвайте pip за актуализиране на Django и други пакети.