Django 5 для начинающих

Прогресс по курсу:  9/1004

9.4 Установка и настройка NGINX
2 из 2 шагов пройдено

Установка и настройка NGINX

 

В этом шаге мы настроим NGINX для работы в качестве обратного прокси-сервера для сервера приложений Gunicorn и в качестве веб-сервера для выдачи статичного контента. Это повысит безопасность и снизит нагрузку на виртуальный сервер.

Приступим к установке NGINX, для начала обновим списки пакетов:

apt update -y


А затем установим сам NGINX, выполняем:

apt install nginx -y


Проверяем статус службы NGINX:

systemctl status nginx

NGINX запустился и работает, завершаем просмотр нажатием клавиши Q.


Проверяем работоспособность NGINX, откроем наш сайт в браузере: http://<имя вашего домена>:

Видим страницу приветствия NGINX, веб-сервер работает нормально.


Теперь можно настроить веб-сервер для работы с нашим проектом.
Для начала переходим в директорию конфигов для сайтов /etc/nginx/sites-available:

cd /etc/nginx/sites-available

Примечание: директория sites-available является только хранилищем всех доступных конфигов сайтов,
и при загрузке или перезагрузке NGINX конфиги из данной директории не учитываются.
Чтобы конфиг загрузился, необходимо поместить символическую ссылку на него в директорию sites-enabled.
Таким образом(созданием или удалением ссылок в директории sites-enabled) "включаются" или "выключаются" конфиги в директории sites-available.


А затем создадим конфиг, с именем mysite_03.conf, для нашего сайта:

vi mysite_03.conf


Со следующим содержимым:

server {
        listen 80;
        server_name django-blog.my-domain.ru;
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
                alias /var/www/mysite_03/static/;
        }
        location /media/ {
                alias /var/www/mysite_03/media/;
        }
        location / {
                include proxy_params;
                proxy_pass http://127.0.0.1:8001;
        }
}

Примечание: django-blog.my-domain.ru необходимо заменить на ваше доменное имя.


Теперь "включим" этот конфиг, создадим символическую ссылку на него в директории sites-enabled:

ln -s /etc/nginx/sites-available/mysite_03.conf /etc/nginx/sites-enabled/


Затем переходим в директорию /etc/nginx/sites-enabled и удаляем ссылку на конфиг default:

cd ../sites-enabled
ls -la
rm default
ls -la

В этой директории осталась только ссылка на конфиг нашего сайта, "включен" только он.


Проверим корректность конфига веб-сервера:

nginx -t


Теперь можно перезапустить NGINX, выполняем:

systemctl restart nginx


Проверяем результат, снова откроем наш сайт в браузере: http://<имя вашего домена>:

Теперь, вместо страницы приветствия NGINX, отображается наш блог.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

Правильно я понимаю, что наш сайт может работать и без NGINX? Просто с ним удобнее и быстрее?

@Георгий_Тимофеев, без него не будет работать статический контент, после того как будет выключен режим отладки.

nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-enabled/mysite_03.conf:1

@Андрей_Калабин, какая операционная система? И случайно фаст панель не установлена?

@Андрей_Калабин, проверьте так ли написано server_name(обязательно с нижним подчёркиванием) в конфиге mysite_03.conf.

@Дмитрий_Селезнев, Проблема решена!

# this file was autogenerated, please do not edit
user www-data;
worker_processes  auto;

include /etc/nginx/modules-enabled/*.conf;


error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/sites-enabled/*.conf;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format fastpanel '[timelocal]time_local] host serveraddrserver_addr remote_addr statusstatus body_bytes_sent requesttimerequest_time request httprefererhttp_referer http_user_agent';
    access_log  /var/log/nginx/access.log fastpanel;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 100m;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/fastpanel2-sites/*/*.conf;
    include /etc/nginx/sites-enabled/*.conf;

    server_names_hash_bucket_size 128;
}
 

Не появляется страничку Welcome to NGINX! Выводится надпись FAST PANEL. http://gregblog.ru

root@26418:~# systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-10-14 19:48:24 BST; 12min ago
       Docs: https://nginx.org/en/docs/
    Process: 492 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 512 (nginx)
      Tasks: 2 (limit: 1063)
     Memory: 4.1M
        CPU: 19ms
     CGroup: /system.slice/nginx.service
             ├─512 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             └─513 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Oct 14 19:48:24 26418.com systemd[1]: Starting nginx - high performance web server...
Oct 14 19:48:24 26418.com systemd[1]: nginx.service: Can't open PID file /run/nginx.pid (yet?) after start: Operation not permitted
Oct 14 19:48:24 26418.com systemd[1]: Started nginx - high performance web server.
root@26418:~# ls -la /etc/nginx
total 64
drwxr-xr-x   9 root root 4096 Jun 26 12:27 .
drwxr-xr-x 105 root root 4096 Oct 14 12:55 ..
drwxr-xr-x   2 root root 4096 Jun 30 12:04 conf.d
-rw-r--r--   1 root root 1007 May 24  2022 fastcgi_params
drwxr-x---   2 root root 4096 Jul 14 13:44 fastpanel2-available
drwxr-xr-x   2 root root 4096 Jun 27  2022 fastpanel2-includes
drwxr-x---   2 root root 4096 Jun 27  2022 fastpanel2-settings
drwxr-x---   2 root root 4096 Jul 14 13:45 fastpanel2-sites
-rw-r--r--   1 root root 5349 May 24  2022 mime.types
lrwxrwxrwx   1 root root   22 May 24  2022 modules -> /usr/lib/nginx/modules
drwxr-x---   2 root root 4096 Jun 27  2022 modules-enabled
-rw-r--r--   1 root root  808 Oct 12 01:38 nginx.conf
-rw-r--r--   1 root root  224 Oct 12 01:38 proxy_params
-rw-r--r--   1 root root  636 May 24  2022 scgi_params
drwxr-xr-x   2 root root 4096 Jun 27  2022 ssl-certs
-rw-r--r--   1 root root  664 May 24  2022 uwsgi_params
root@26418:~#
 

Изменен Григорий Кожанов

@Григорий_Кожанов, не нужно было устанавливать на вдс операционку с фастпанелью. Загрузите файл с данными для доступа на сервер, на мегу( https://mega.nz/filerequest/rANtUqzWHQ4 ), посмотрю что можно сделать.

@Дмитрий_Селезнев, Загрузил

@Григорий_Кожанов, сейчас посмотрю.

@Григорий_Кожанов, можете продолжать со строки "Теперь можно настроить веб-сервер для работы с нашим проектом.".

Ещё обратил внимание на то, что установка Gunicorn и остальных зависимостей была не в виртуальное окружение, причина этого - не нужно было переименовывать директорию проекта mysite_03 в mysite после установки установки виртуального окружения.

При установке виртуального окружения, в скрипты прописываются абсолютные пути расположения директории виртуального окружения, и после переименования директории проекта, эти пути будут некорректные.

Если будет необходимость переименовать директорию проекта уже после установки виртуального окружения, то после переименования необходимо будет удалить директорию виртуального окружения env, установить виртуальное окружение и список зависимостей заново. Я исправил этот момент на вашем сервере.

@Дмитрий_Селезнев, Спасибо. Но у меня все равно выводится FAST PANEL. Конфиг настроил успешно. Можно как нибудь удалить эту Fast Panel?

@Григорий_Кожанов, не надо её удалять, пусть будет, её страница будет только по адресу сервера, на сайт не будет влиять никак.

@Дмитрий_Селезнев, Так у меня Блог не выводится, когда я пробую перейти по адресу http://gregblog.ru , а выводится логотип Fast Panel. Это так и должно быть?

@Григорий_Кожанов, забыли свой домен прописать в конфиге (в server_name). Пропишите и перезагрузите nginx.

@Дмитрий_Селезнев

server {
        listen 80;
        server_name gregblog.ru;
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
                alias /var/www/mysite/static/;
        }
        location /media/ {
                alias /var/www/mysite/media/;
        }
        location / {
                include proxy_params;
                proxy_pass http://127.0.0.1:8001;
        }
 

Да, забыл. Исправил, но теперь просто выводит, что домен зарегистрирован и припаркован на рег.ру.

@Григорий_Кожанов, у меня ваш блог работает нормально:

@Дмитрий_Селезнев, Да. Заработало. Спасибо за помощь:)