{"id":5716,"date":"2025-11-26T17:00:52","date_gmt":"2025-11-26T13:30:52","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=5716"},"modified":"2025-11-26T17:00:52","modified_gmt":"2025-11-26T13:30:52","slug":"%da%86%da%af%d9%88%d9%86%d9%87-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%d9%94-django-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-asgi-%d8%b1%d8%a7-%d9%87%d9%85%d8%b1%d8%a7%d9%87-%d8%a8%d8%a7","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%da%86%da%af%d9%88%d9%86%d9%87-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%d9%94-django-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-asgi-%d8%b1%d8%a7-%d9%87%d9%85%d8%b1%d8%a7%d9%87-%d8%a8%d8%a7\/","title":{"rendered":"\u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647\u0654 Django \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 ASGI \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 Postgres\u060c Nginx \u0648 Uvicorn \u062f\u0631 Ubuntu 20.04 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645\u061f"},"content":{"rendered":"<div>\n<p><a href=\"https:\/\/www.djangoproject.com\/\">Django\u00a0<\/a>\u06cc\u06a9 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. Django \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u062f\u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc production \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0627\u0645\u0646\u200c\u062a\u0631 \u0648 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u062a\u0631 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0631\u0648\u0634 \u0633\u0646\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Web Server Gateway Interface (WSGI) \u0627\u0633\u062a. \u0627\u0645\u0627 \u0628\u0627 \u0638\u0647\u0648\u0631 Python 3 \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc asynchronous\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 asynchronous callables \u0628\u0627 \u06cc\u06a9 Asynchronous Server Gateway Interface\u00a0(<a href=\"https:\/\/asgi.readthedocs.io\/en\/latest\/#\">ASGI<\/a>) \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. ASGI \u06a9\u0647 \u062c\u0627\u0646\u0634\u06cc\u0646 WSGI \u0627\u0633\u062a\u060c \u06cc\u06a9 \u0633\u0648\u067e\u0631\u0633\u062a \u0627\u0632 WSGI \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0622\u0646 \u0628\u0627\u0634\u062f.<\/p>\n<p>Django \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062d\u0627\u0644\u062a \u201casync outside, sync inside\u201d\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u0627 \u06a9\u0647 \u06a9\u062f \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0647\u0645\u0632\u0645\u0627\u0646 (synchronous) \u062f\u0631\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0633\u0631\u0648\u0631 ASGI \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u063a\u06cc\u0631\u0647\u0645\u0632\u0645\u0627\u0646 (asynchronously) \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0647 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648\u0631\u0648\u062f\u06cc \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0647\u0645\u0632\u0645\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0627\u062e\u0644\u06cc \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u060c \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u06a9\u062f\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u062d\u0641\u0638 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0632 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0632 WSGI \u0628\u0647 ASGI \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u06a9\u062f\u0647\u0627\u06cc Django \u062e\u0648\u062f \u0646\u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0634\u0645\u0627 \u0628\u0631\u062e\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627 \u0631\u0627 \u0631\u0648\u06cc Ubuntu 20.04 \u0646\u0635\u0628 \u0648 \u06a9\u0627\u0646\u0641\u06cc\u06af \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Django \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0634\u0645\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 SQLite\u060c \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL\u00a0\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f. \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Gunicorn \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 Uvicorn \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc ASGI \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u063a\u06cc\u0631\u0647\u0645\u0632\u0645\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u062e\u0648\u0627\u0647\u062f \u0634\u062f. \u0633\u067e\u0633 Nginx \u0631\u0627 \u0628\u0631\u0627\u06cc reverse proxy \u0628\u0647 \u0633\u0645\u062a Gunicorn \u06a9\u0627\u0646\u0641\u06cc\u06af \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0645\u0648\u0627\u0631\u062f \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0627\u0632 \u0645\u062e\u0627\u0632\u0646 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u062e\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627 \u0628\u0639\u062f\u0627\u064b \u062a\u0648\u0633\u0637 pip \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0634\u0627\u062e\u0635 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc apt \u0631\u0627 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0646\u0633\u062e\u0647 Python \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f (\u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0647\u06cc\u062f):<\/p>\n<pre><code>sudo apt update\r\nsudo apt install python3-venv python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc Python \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f virtual environment\u060c \u0633\u06cc\u0633\u062a\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 Postgres \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0622\u0646 \u0648 \u0633\u0631\u0648\u0631 \u0648\u0628 Nginx \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0639\u062f \u0627\u0632 \u0622\u0646\u060c \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06cc\u0648\u0632\u0631 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 Django \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c Postgres \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u200c\u0647\u0627\u06cc \u0644\u0648\u06a9\u0627\u0644 \u0627\u0632 \u0631\u0648\u0634 authentication \u0628\u0647 \u0646\u0627\u0645 \u201cpeer authentication\u201d \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0634\u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u0639\u062a\u0628\u0631 \u062f\u0631 Postgres \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u062c\u062f\u062f \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0637\u0648\u0644 \u0646\u0635\u0628 Postgres\u060c \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0646\u0627\u0645 postgres \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u06a9\u0647 \u0645\u0639\u0627\u062f\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 Postgres \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 sudo \u0648 \u06af\u0632\u06cc\u0646\u0647 -u \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u062d\u06cc\u0637 \u062a\u0639\u0627\u0645\u0644\u06cc Postgres \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo -u postgres psql<\/code><\/pre>\n<p>\u062f\u0631 \u067e\u0631\u0627\u0645\u067e\u062a PostgreSQL \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<pre><code>CREATE DATABASE myproject;<\/code><\/pre>\n<p>\u062a\u0648\u062c\u0647: \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 Postgres \u0628\u0627\u06cc\u062f \u0628\u0627 ; \u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0628\u062f. \u0627\u06af\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644 \u062e\u0648\u0631\u062f\u06cc\u062f\u060c \u062d\u062a\u0645\u0627\u064b \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u0686\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062c\u062f\u06cc\u062f \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u0622\u0646 \u067e\u0633\u0648\u0631\u062f \u0627\u06cc\u0645\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>CREATE USER myprojectuser WITH PASSWORD 'password';<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u062f\u062f \u062f\u0631 \u0647\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0646\u0628\u0627\u0634\u062f.<\/p>\n<p>\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0627 \u0631\u0648\u06cc UTF-8 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u06a9\u0647 Django \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u062f. \u0633\u0637\u062d \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0631\u0627 \u0628\u0647 \u201cread committed\u201d \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0646\u0637\u0642\u0647 \u0632\u0645\u0627\u0646\u06cc \u0631\u0627 UTC \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 Django \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0627\u0633\u0627\u0633 \u062a\u0648\u0635\u06cc\u0647\u200c\u0647\u0627\u06cc \u0631\u0633\u0645\u06cc <a href=\"https:\/\/docs.djangoproject.com\/en\/3.0\/ref\/databases\/#optimizing-postgresql-s-configuration\">\u067e\u0631\u0648\u0698\u0647 Django<\/a> \u0627\u0633\u062a:<\/p>\n<pre><code>ALTER ROLE myprojectuser SET client_encoding TO 'utf8';\r\nALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';\r\nALTER ROLE myprojectuser SET timezone TO 'UTC';<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0628\u062f\u0647\u06cc\u062f:<\/p>\n<pre><code>GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;<\/code><\/pre>\n<p>\u06a9\u0627\u0631 \u0634\u0645\u0627 \u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0632 \u067e\u0631\u0627\u0645\u067e\u062a PostgreSQL \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f:<\/p>\n<pre><code>\\q<\/code><\/pre>\n<p>\u062d\u0627\u0644 Postgres \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062a\u0648\u0633\u0637 Django \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u0628\u0647 \u0646\u0635\u0628 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u067e\u0631\u062f\u0627\u0632\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc Python\u060c \u062a\u0645\u0627\u0645\u06cc \u0646\u06cc\u0627\u0632\u0645\u0646\u062f\u06cc\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 virtual environment \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0627\u0631\u062f \u0622\u0646 \u0634\u0648\u06cc\u062f:<\/p>\n<pre><code>mkdir ~\/myprojectdir\r\ncd ~\/myprojectdir<\/code><\/pre>\n<p>\u0633\u067e\u0633 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062f\u0631 Python \u06cc\u06a9 virtual environment \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>python3 -m venv myprojectenv<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 myprojectenv \u062f\u0627\u062e\u0644 myprojectdir \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u0648 \u0646\u0633\u062e\u0647 \u0645\u062d\u0644\u06cc Python \u0648 pip \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u0645\u062d\u06cc\u0637\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0628\u0627\u06cc\u062f virtual environment \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>source myprojectenv\/bin\/activate<\/code><\/pre>\n<p>\u067e\u06cc\u0634\u200c\u0646\u0645\u0627\u06cc\u0634 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0634\u0645\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 virtual environment \u0627\u0633\u062a:<\/p>\n<p><code>(myprojectenv) user@host:~\/myprojectdir$<\/code><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062d\u06cc\u0637\u060c Django \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0646\u0635\u0628 Django \u062f\u0631\u0648\u0646 virtual environment \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f. \u0636\u0645\u0646 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>pip install django gunicorn uvicorn psycopg2-binary<\/code><\/pre>\n<p>\u0646\u06a9\u062a\u0647: \u0647\u0646\u06af\u0627\u0645 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc (\u0648\u0642\u062a\u06cc \u067e\u0631\u0627\u0645\u067e\u062a\u060c (myprojectenv) \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u062f) \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 pip \u0628\u0647 \u062c\u0627\u06cc pip3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0646\u0627\u0645 pip \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0646\u0633\u062e\u0647 Python \u0627\u0633\u062a \u0648 \u0641\u0631\u0642\u06cc \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u062a\u0645\u0627\u0645 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0631\u0648\u0698\u0647 Django \u0622\u0645\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc Python\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 \u062f\u062c\u0627\u0646\u06af\u0648 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<p>\u0686\u0648\u0646 \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u062f\u0627\u0631\u06cc\u062f\u060c \u062f\u0633\u062a\u0648\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0646\u0635\u0628 \u0634\u0648\u062f. Django \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646 \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631\u062c\u0647 \u062f\u0648\u0645 \u0628\u0631\u0627\u06cc \u06a9\u062f\u0647\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u0648 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0631 \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a:<\/p>\n<pre><code>django-admin startproject myproject .<\/code><\/pre>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 (~\/myprojectdir) \u0634\u0627\u0645\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<ul>\n<li>manage.py<\/li>\n<li>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc myproject\/ \u06a9\u0647 \u06a9\u062f \u0627\u0635\u0644\u06cc \u062f\u0631 \u0622\u0646 \u0627\u0633\u062a<\/li>\n<\/ul>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u062f. \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>nano myproject\/settings.py<\/code><\/pre>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0645\u062a\u063a\u06cc\u0631 ALLOWED_HOSTS \u0628\u06af\u0631\u062f\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0634\u0627\u0645\u0644 \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u0622\u062f\u0631\u0633\u200c\u0647\u0627 \u06cc\u0627 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f. \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u06a9\u0647 Host \u0622\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a \u0646\u0628\u0627\u0634\u062f \u0628\u0627\u0639\u062b \u0628\u0631\u0648\u0632 Exception \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u062e\u0648\u0627\u0647\u062f \u0634\u062f. \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631\u0648\u0646 \u06a9\u0631\u0648\u0634\u0647\u200c\u0647\u0627\u060c \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc IP \u06cc\u0627 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f. \u0647\u0631 \u0622\u06cc\u062a\u0645 \u0631\u0627 \u062f\u0631\u0648\u0646 \u06a9\u0648\u062a\u06cc\u0634\u0646 \u0648 \u0628\u0627 \u06a9\u0627\u0645\u0627 \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062c\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u062f\u0627\u0645\u0646\u0647 \u0648 \u0632\u06cc\u0631 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627\u060c \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0646\u062a \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0646\u06a9\u062a\u0647: \u062d\u062a\u0645\u0627\u064b localhost \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0686\u0648\u0646 \u0627\u062a\u0635\u0627\u0644\u200c\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u0628\u0647 \u0644\u0648\u06a9\u0627\u0644 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0639\u062f \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0628\u062e\u0634 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u200c\u0647\u0627 \u0628\u06af\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0628\u0627 DATABASES \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u0631\u0627\u06cc SQLite \u0627\u0633\u062a. \u0686\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u062f\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0645\u0642\u0627\u062f\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627 \u0645\u0634\u062e\u0635\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u062e\u0648\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0632 psycopg2 \u06a9\u0647 \u0646\u0635\u0628 \u06a9\u0631\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0645\u0648\u0642\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0644\u0648\u06a9\u0627\u0644 (localhost) \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645:<\/p>\n<pre><code>DATABASES = {\r\n    'default': {\r\n        'ENGINE': 'django.db.backends.postgresql',\r\n        'NAME': 'myproject',\r\n        'USER': 'myprojectuser',\r\n        'PASSWORD': 'password',\r\n        'HOST': 'localhost',\r\n        'PORT': '',\r\n    }\r\n}<\/code><\/pre>\n<p>\u0633\u067e\u0633 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0628\u0631\u0648\u06cc\u062f \u0648 \u0645\u0633\u06cc\u0631 \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc static \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 Nginx \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0633\u0631\u0648 \u06a9\u0646\u062f. \u0645\u0633\u06cc\u0631 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc\u060c \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 static \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a:<\/p>\n<pre><code>STATIC_ROOT = BASE_DIR \/ \"static\"<\/code><\/pre>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0627\u0648\u0644\u06cc\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0631\u0648\u06cc PostgreSQL \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>python manage.py migrate<\/code><\/pre>\n<p>\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>python manage.py createsuperuser<\/code><\/pre>\n<p>\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062a\u0645\u0627\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc static \u0631\u0627 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f (\u0628\u0631\u0627\u06cc Nginx):<\/p>\n<pre><code>python manage.py collectstatic<\/code><\/pre>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0628\u0627\u06cc\u062f \u067e\u0648\u0631\u062a 8000 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo ufw allow 8000<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u067e\u0631\u0648\u0698\u0647\u060c \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 Django \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>python manage.py runserver 0.0.0.0:8000<\/code><\/pre>\n<p>\u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 IP \u0633\u0631\u0648\u0631 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u067e\u0648\u0631\u062a 8000 \u0628\u0631\u0648\u06cc\u062f. \u0635\u0641\u062d\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Django \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u0641\u0632\u0648\u062f\u0646 \/admin \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0622\u062f\u0631\u0633\u060c \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f \u0648 \u0628\u0647 \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647\u060c \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 Ctrl+C \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 Gunicorn \u0648 Uvicorn \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631\u0686\u0647 Gunicorn \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc WSGI \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0631\u0627\u0628\u0637\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627 ASGI \u0628\u0627 worker\u0647\u0627\u06cc uvicorn \u062f\u0627\u0631\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Gunicorn \u0645\u062d\u0635\u0648\u0644 \u06a9\u0627\u0645\u0644\u06cc \u0627\u0633\u062a \u0648 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 Uvicorn \u062f\u0627\u0631\u062f\u060c \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628 gunicorn \u0628\u0627 worker uvicorn \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u062e\u0627\u0631\u062c \u0634\u062f\u0646 \u0627\u0632 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc\u060c Gunicorn \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 Gunicorn \u0631\u0627 \u0631\u0648\u06cc \u0647\u0645\u0627\u0646 \u0622\u062f\u0631\u0633 \u0627\u062c\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u06a9\u062a\u0647: \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0641\u0642\u0637 \u0627\u0632 uvicorn \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>uvicorn myproject.asgi:application --host 0.0.0.0 --port 8000<\/code><\/pre>\n<p>\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646 \u0627\u0633\u062a\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f \u0632\u06cc\u0631\u0627 Gunicorn \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc static \u062f\u0631 \u06a9\u062c\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0635\u0641\u062d\u0627\u062a Django \u0638\u0627\u0647\u0631 \u0634\u062f\u0646\u062f\u060c \u06cc\u0639\u0646\u06cc Gunicorn \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0641\u0631\u0645\u0627\u0646 gunicorn\u060c \u0645\u0627\u0698\u0648\u0644 asgi.py \u067e\u0631\u0648\u0698\u0647 Django \u06a9\u0647 \u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u06cc\u06a9 \u062a\u0627\u0628\u0639 application \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u062a\u0633\u062a\u060c \u0628\u0627 Ctrl+C \u067e\u0631\u0648\u0633\u0647 Gunicorn \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u062a\u0631\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>deactivate<\/code><\/pre>\n<p>\u0634\u0627\u062e\u0635 (\u0646\u0645\u0627\u062f) \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0627\u0632 \u067e\u0631\u0627\u0645\u067e\u062a \u062d\u0630\u0641 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u060c \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0628\u0647\u062a\u0631 \u0627\u062c\u0631\u0627\u06cc Gunicorn \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc systemd \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0648 \u0633\u0648\u06a9\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0633\u0648\u06a9\u062a Gunicorn \u062f\u0631 \u0628\u0648\u062a \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0645\u0646\u062a\u0638\u0631 \u0627\u062a\u0635\u0627\u0644 \u0645\u06cc\u200c\u0645\u0627\u0646\u062f. \u0648\u0642\u062a\u06cc \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u0648\u062f\u060c systemd \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f Gunicorn \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0646\u062f\u0644 \u06a9\u0631\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0641\u0627\u06cc\u0644 \u0633\u0648\u06a9\u062a systemd \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo nano \/etc\/systemd\/system\/gunicorn.socket<\/code><\/pre>\n<p>\u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644\u060c \u0628\u062e\u0634\u200c\u0647\u0627\u06cc [Unit] \u0628\u0631\u0627\u06cc \u062a\u0648\u0635\u06cc\u0641 \u0633\u0648\u06a9\u062a\u060c [Socket] \u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0633\u0648\u06a9\u062a \u0648 [Install] \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0633\u0648\u06a9\u062a \u062f\u0631 \u0632\u0645\u0627\u0646 \u0628\u0648\u062a \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0633\u0631\u0648\u06cc\u0633 systemd \u0628\u0631\u0627\u06cc Gunicorn \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u0645\u0634\u0627\u0628\u0647 (\u0628\u0647\u200c\u062c\u0632 \u067e\u0633\u0648\u0646\u062f) \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo nano \/etc\/systemd\/system\/gunicorn.service<\/code><\/pre>\n<p>\u062f\u0631 \u0628\u062e\u0634 [Unit] \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0627\u062f\u06cc\u062a\u0627 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u062a\u0648\u0636\u06cc\u062d\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062f\u0647 \u0648 \u0645\u06cc\u200c\u06af\u0648\u06cc\u06cc\u062f \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0644\u0627 \u0622\u0645\u062f\u0646 \u0634\u0628\u06a9\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f. \u0686\u0648\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0632 \u0633\u0648\u06a9\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f Requires \u0633\u0648\u06a9\u062a \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 [Service] \u06a9\u0627\u0631\u0628\u0631 \u0648 \u06af\u0631\u0648\u0647\u06cc \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f. \u06a9\u0627\u0631\u0628\u0631 \u0639\u0627\u062f\u06cc \u062e\u0648\u062f\u062a\u0627\u0646 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u0627\u0644\u06a9\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u06af\u0631\u0648\u0647 www-data \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc Nginx \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0627\u0631\u06cc \u0648 \u062f\u0633\u062a\u0648\u0631 \u0634\u0631\u0648\u0639 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0627\u06cc\u062f \u0645\u0633\u06cc\u0631 \u06a9\u0627\u0645\u0644 Gunicorn \u062f\u0631 virtual environment \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 Gunicorn \u0631\u0627 \u0628\u0647 \u0633\u0648\u06a9\u062a \u06cc\u0648\u0646\u06cc\u06a9\u0633 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \/run \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0628\u0627 Nginx \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u0648\u062f. \u0644\u0627\u06af\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0647\u062f\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f \u062a\u0627 systemd \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u06a9\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0639\u062f\u0627\u062f worker\u0647\u0627 \u0631\u0627 \u0647\u0645 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>\u0628\u062e\u0634 [Install] \u0647\u0645 \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u0634\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a.<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<p>\u062d\u0627\u0644 \u0633\u0648\u06a9\u062a Gunicorn \u0631\u0627 \u0641\u0639\u0627\u0644 \u0648 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0633\u0648\u06a9\u062a \u0631\u0627 \u062f\u0631 \/run\/gunicorn.sock \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062f\u0631 \u0628\u0648\u062a \u0646\u06cc\u0632 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0645\u0627\u0646\u062f. \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u062a\u0635\u0627\u0644\u060c \u0633\u0631\u0648\u06cc\u0633 gunicorn.service \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<pre><code>sudo systemctl start gunicorn.socket\r\nsudo systemctl enable gunicorn.socket<\/code><\/pre>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0635\u062d\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0648\u0636\u0639\u06cc\u062a \u067e\u0631\u062f\u0627\u0632\u0634 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl status gunicorn.socket<\/code><\/pre>\n<p>\u0648\u062c\u0648\u062f \u0641\u0627\u06cc\u0644 \/run\/gunicorn.sock \u0631\u0627 \u0647\u0645 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>ls -l \/run\/gunicorn.sock<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06cc\u0627 \u0641\u0627\u06cc\u0644 \u0633\u0648\u06a9\u062a \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u062f\u0647\u060c \u0628\u0627 Logs \u0633\u06cc\u0633\u062a\u0645 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>journalctl -u gunicorn.socket<\/code><\/pre>\n<p>\u0633\u0648\u06a9\u062a \u0627\u0632 \u0637\u0631\u06cc\u0642 systemctl \u0641\u0639\u0627\u0644 \u0627\u0633\u062a \u0627\u0645\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0633\u0631\u0648\u06cc\u0633 \u0647\u0646\u0648\u0632 \u0628\u0647 \u0639\u0644\u062a \u0646\u062f\u0627\u0634\u062a\u0646 \u0627\u062a\u0635\u0627\u0644 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u062f. \u0648\u0636\u0639\u06cc\u062a \u0622\u0646 \u0631\u0627 \u0686\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl status gunicorn.service<\/code><\/pre>\n<p>\u0627\u062a\u0635\u0627\u0644 \u0633\u0648\u06a9\u062a \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 curl \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>curl --unix-socket \/run\/gunicorn.sock http:\/\/localhost<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc HTML \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u062f \u06cc\u0639\u0646\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl status gunicorn.service<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0644\u0627\u06af\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u0648\u06a9\u062a \u0648 \u0633\u0631\u0648\u06cc\u0633 systemd \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u0631\u0648\u0631 \u0646\u0645\u0627\u06cc\u06cc\u062f. \u067e\u0633 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0627\u06cc\u062f systemd \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl daemon-reload\r\nsudo systemctl restart gunicorn.service<\/code><\/pre>\n<p>\u062d\u0627\u0644 \u0628\u0627\u06cc\u062f Nginx \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u06a9\u0633\u06cc \u06a9\u0631\u062f\u0646 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0628\u0647 \u0633\u0645\u062a Gunicorn \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.<\/p>\n<p>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0646\u0641\u06cc\u06af \u062f\u0631 sites-available \u0646\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo nano \/etc\/nginx\/sites-available\/myproject<\/code><\/pre>\n<p>\u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u062e\u0634 \u0633\u0631\u0648\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 80 \u06af\u0648\u0634 \u062f\u0647\u062f \u0648 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 IP \u0634\u0645\u0627 \u067e\u0627\u0633\u062e \u062f\u0647\u062f:<\/p>\n<p>\u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a favicon \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc static \u06a9\u0647 \u062f\u0631 ~\/myprojectdir\/static \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646\u062f \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f URI \/static \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f:<\/p>\n<pre><code>location \/static\/ {\r\n    alias \/home\/username\/myprojectdir\/static\/;\r\n}<\/code><\/pre>\n<p>\u0628\u0644\u0627\u06a9 location \/ \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0627 \u0628\u0647 \u0633\u0648\u06a9\u062a Gunicorn \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>location \/ {\r\n    include proxy_params;\r\n    proxy_pass http:\/\/unix:\/run\/gunicorn.sock;\r\n}<\/code><\/pre>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u0644\u06cc\u0646\u06a9 \u062f\u0631 sites-enabled \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/myproject \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0637\u0627 \u0633\u0646\u062c\u06cc \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo nginx -t<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u06af\u0632\u0627\u0631\u0634 \u0646\u0634\u062f\u060c Nginx \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl restart nginx<\/code><\/pre>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0648\u0631\u062a 80 \u0645\u062c\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u067e\u0648\u0631\u062a 8000 \u0631\u0627 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0628\u0627\u0632 \u06a9\u0631\u062f\u06cc\u062f \u0628\u0628\u0646\u062f\u06cc\u062f:<\/p>\n<pre><code>sudo ufw allow 80\r\nsudo ufw delete allow 8000<\/code><\/pre>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627 \u0631\u0641\u062a\u0646 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 IP \u0633\u0631\u0648\u0631\u060c \u0628\u0627\u06cc\u062f \u0635\u0641\u062d\u0647 \u062e\u0648\u0634 \u0622\u0645\u062f\u06af\u0648\u06cc\u06cc Django \u0628\u0627 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p>\u0646\u06a9\u062a\u0647: \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u0628\u0647\u062a\u0631\u060c \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0631\u0627\u0641\u06cc\u06a9 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SSL\/TLS \u0627\u06cc\u0645\u0646 \u06a9\u0646\u06cc\u062f. \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Let\u2019s Encrypt \u0627\u0633\u062a. \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0646\u0635\u0628 Let\u2019s Encrypt \u0628\u0627 Nginx \u0631\u0648\u06cc Ubuntu 20.04 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u060c \u0628\u0627\u06cc\u062f \u0646\u0635\u0628 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f. \u0646\u0645\u0627\u06cc\u0634 \u0635\u0641\u062d\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Nginx \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0639\u0644\u062a \u062a\u0646\u0638\u06cc\u0645 \u0646\u0627\u062f\u0631\u0633\u062a server_name \u062f\u0631 \u0641\u0627\u06cc\u0644 \/etc\/nginx\/sites-available\/myproject \u0627\u0633\u062a. server_name \u0628\u0627\u06cc\u062f \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 IP \u0634\u0645\u0627 \u0628\u0627\u0634\u062f. \u0686\u0648\u0646 Nginx \u0628\u0631 \u0627\u0633\u0627\u0633 server_name \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u0628\u0644\u0627\u06a9 \u06a9\u0627\u0646\u0641\u06cc\u06af \u067e\u0627\u0633\u062e \u062f\u0647\u062f. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0646\u0627\u0633\u0628 \u0646\u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0635\u0641\u062d\u0647 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 fallback \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u062e\u0637\u0627\u06cc 502 \u0628\u0647 \u0645\u0639\u0646\u06cc \u0646\u0627\u062a\u0648\u0627\u0646\u06cc Nginx \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u06a9\u0633\u06cc \u06a9\u0631\u062f\u0646 \u062f\u0631\u0633\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0633\u062a \u06a9\u0647 \u062f\u0644\u0627\u06cc\u0644 \u0645\u062a\u0646\u0648\u0639\u06cc \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644 \u0628\u0627\u06cc\u062f \u0644\u0627\u06af \u062e\u0637\u0627\u0647\u0627\u06cc Nginx \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo tail -f \/var\/log\/nginx\/error.log<\/code><\/pre>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0631\u0648\u0631\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c\u060c \u0646\u0628\u0648\u062f \u0641\u0627\u06cc\u0644 gunicorn.sock \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0639\u06cc\u0646 \u0627\u0633\u062a. \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f proxy_pass \u062f\u0631 \u0641\u0627\u06cc\u0644 Nginx \u0628\u0627 \u0645\u062d\u0644 \u0648\u0627\u0642\u0639\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0631 \/run \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0641\u0627\u06cc\u0644 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0633\u0648\u06a9\u062a systemd \u0628\u0631\u0627\u06cc Gunicorn \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u062f\u0647. \u0628\u062e\u0634 \u0633\u0648\u06a9\u062a Gunicorn \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0631\u0631\u0633\u06cc \u0648 \u0631\u0641\u0639 \u0627\u0634\u06a9\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062e\u0637\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0633\u0648\u06a9\u062a \u0647\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0648 \u0645\u0627\u0644\u06a9\u06cc\u062a \u0622\u0646 \u062a\u0648\u0633\u0637 root \u0628\u0647 \u062c\u0627\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 sudo \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f. \u0645\u062c\u0648\u0632\u0647\u0627 \u0648 \u0645\u0627\u0644\u06a9\u06cc\u062a \u0633\u0648\u06a9\u062a \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u200c\u0647\u0627\u06cc \u0648\u0627\u0644\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>namei -l \/run\/gunicorn.sock<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u062c\u0648\u0632\u0647\u0627 \u0648 \u0645\u0627\u0644\u06a9 \u0647\u0631 \u0633\u0637\u062d \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06af\u0631 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0648\u06cc \u0645\u0633\u06cc\u0631 \u0646\u0628\u0627\u0634\u062f\u060c Nginx \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0633\u0648\u06a9\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062d\u0642\u0648\u0642 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc (r-x) \u06cc\u0627 \u06af\u0631\u0648\u0647\u06cc \u06a9\u0647 Nginx \u062f\u0631 \u0622\u0646 \u0628\u0627\u0634\u062f \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0647\u0646\u06af\u0627\u0645 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f Django \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648\u0635\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc Postgres \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl status postgresql<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0633\u062a\u0627\u0631\u062a \u0648 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0628\u0648\u062a \u0627\u062c\u0631\u0627 \u0634\u0648\u062f:<\/p>\n<pre><code>sudo systemctl start postgresql\r\nsudo systemctl enable postgresql<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u06cc\u062f\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631 myproject\/settings.py \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0686\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0628\u0647\u062a\u0631\u060c \u0627\u06cc\u0646 \u0644\u0627\u06af\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f:<\/p>\n<ul>\n<li>\u0644\u0627\u06af\u200c\u0647\u0627\u06cc Gunicorn \u0648 Uvicorn<\/li>\n<li>\u0644\u0627\u06af\u200c\u0647\u0627\u06cc Nginx<\/li>\n<li>\u0644\u0627\u06af\u200c\u0647\u0627\u06cc Django<\/li>\n<\/ul>\n<p>\u0647\u0631\u06af\u0627\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u062f\u0627\u062f\u06cc\u062f\u060c \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0632\u06cc\u0631 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06cc\u0627 reload \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo systemctl restart gunicorn.service\r\nsudo systemctl daemon-reload\r\nsudo systemctl restart gunicorn.service\r\nsudo nginx -t\r\nsudo systemctl restart nginx<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u067e\u0631\u0648\u0698\u0647 Django ASGI \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u062f. Gunicorn \u0648 Uvicorn \u0637\u0648\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u063a\u06cc\u0631\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f \u0648 Django \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u067e\u0627\u0633\u062e \u062f\u0647\u062f. \u0633\u067e\u0633 Nginx \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 reverse proxy \u0646\u0635\u0628 \u0648 \u06a9\u0627\u0646\u0641\u06cc\u06af \u0634\u062f \u062a\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u067e\u0631\u0648\u0698\u0647 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f.<\/p>\n<p>Django \u0641\u0631\u0622\u06cc\u0646\u062f \u0633\u0627\u062e\u062a \u067e\u0631\u0648\u0698\u0647 \u0648 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627 \u0631\u0627 \u0633\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u0634\u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0648\u06cc \u0645\u0648\u0627\u0631\u062f \u062e\u0627\u0635 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0633\u0631\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">ParminCloud<\/a><\/strong>.<\/p>\n<\/div>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Django\u00a0\u06cc\u06a9 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. Django \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u062f\u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc production \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0627\u0645\u0646\u200c\u062a\u0631 \u0648 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u062a\u0631 \u062f\u0627\u0631\u06cc\u062f. \u0631\u0648\u0634 \u0633\u0646\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":5723,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[258,67,190,376],"tags":[638,635,634,637,636],"class_list":["post-5716","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu","category-67","category-programming","category-376","tag-638","tag--nginx---django","tag-634","tag---django--asgi--gunicorn","tag----postgresql--"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=5716"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5716\/revisions"}],"predecessor-version":[{"id":5720,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5716\/revisions\/5720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/5723"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=5716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=5716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=5716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}