{"id":6629,"date":"2026-07-14T11:00:44","date_gmt":"2026-07-14T07:30:44","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6629"},"modified":"2026-07-14T11:00:44","modified_gmt":"2026-07-14T07:30:44","slug":"%d9%85%d9%82%db%8c%d8%a7%d8%b3%d9%be%d8%b0%db%8c%d8%b1-%d9%88-%d8%a7%db%8c%d9%85%d9%86-%da%a9%d8%b1%d8%af%d9%86-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-django-%d8%a8%d8%a7-docker","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%85%d9%82%db%8c%d8%a7%d8%b3%d9%be%d8%b0%db%8c%d8%b1-%d9%88-%d8%a7%db%8c%d9%85%d9%86-%da%a9%d8%b1%d8%af%d9%86-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-django-%d8%a8%d8%a7-docker\/","title":{"rendered":"\u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0627\u06cc\u0645\u0646 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0628\u0627 Docker\u060c Nginx \u0648 Let&#8217;s Encrypt"},"content":{"rendered":"<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"43f4r3\" data-start=\"656\" data-end=\"664\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n<p data-start=\"666\" data-end=\"785\">\u062f\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc <strong data-start=\"707\" data-end=\"732\">\u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 (Scalable)<\/strong> \u0648 <strong data-start=\"735\" data-end=\"752\">\u0627\u06cc\u0645\u0646 (Secure)<\/strong> \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<p data-start=\"787\" data-end=\"1113\">\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u060c <strong data-start=\"812\" data-end=\"853\">\u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0627\u0641\u0642\u06cc (Horizontal Scaling)<\/strong> \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0646\u0627\u0628\u0639 \u06cc\u06a9 \u0633\u0631\u0648\u0631\u060c \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 (Instance) \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u060c \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0632 \u06a9\u0627\u0631 \u0627\u0641\u062a\u0627\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u060c \u0633\u0631\u0648\u06cc\u0633 \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0642\u06cc \u0628\u0645\u0627\u0646\u062f \u0648 \u062a\u062d\u0645\u0644 \u062e\u0637\u0627\u06cc \u0628\u0627\u0644\u0627\u062a\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<p data-start=\"1115\" data-end=\"1303\">\u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0686\u0646\u062f \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 (Application Server) \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0631\u0648\u06cc \u0647\u0631\u06a9\u062f\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u06cc\u06a9 WSGI Server \u0645\u0627\u0646\u0646\u062f <strong data-start=\"1265\" data-end=\"1277\">Gunicorn<\/strong> \u06cc\u0627 <strong data-start=\"1281\" data-end=\"1290\">uWSGI<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"1305\" data-end=\"1383\">\u062f\u0631 \u062c\u0644\u0648\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u0646\u06cc\u0632 \u06cc\u06a9 <strong data-start=\"1331\" data-end=\"1340\">Nginx<\/strong> \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f \u06a9\u0647 \u0648\u0638\u0627\u06cc\u0641 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"1385\" data-end=\"1562\">\n<li data-section-id=\"1qi90jj\" data-start=\"1385\" data-end=\"1439\">\u062a\u0648\u0632\u06cc\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django (Load Balancing)<\/li>\n<li data-section-id=\"svpd0k\" data-start=\"1440\" data-end=\"1455\">Reverse Proxy<\/li>\n<li data-section-id=\"1fo8lqh\" data-start=\"1456\" data-end=\"1480\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u062a\u0635\u0627\u0644\u200c\u0647\u0627\u06cc HTTPS<\/li>\n<li data-section-id=\"1uik7dv\" data-start=\"1481\" data-end=\"1525\">\u067e\u0627\u06cc\u0627\u0646 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 TLS (TLS Termination)<\/li>\n<li data-section-id=\"et0086\" data-start=\"1526\" data-end=\"1562\">\u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<\/ul>\n<p data-start=\"1564\" data-end=\"1782\">\u0627\u062c\u0631\u0627\u06cc Django \u0648 Nginx \u062f\u0627\u062e\u0644 <strong data-start=\"1590\" data-end=\"1611\">\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker<\/strong> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u062f\u0648\u0646 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 (\u062a\u0648\u0633\u0639\u0647\u060c \u062a\u0633\u062a \u06cc\u0627 \u062a\u0648\u0644\u06cc\u062f)\u060c \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627\u0634\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 Docker \u0641\u0631\u0627\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"1784\" data-end=\"1984\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u06a9\u0647 \u062f\u0627\u062e\u0644 Docker \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u0641\u0642\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u06a9\u0647 \u062f\u0648 \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a \u0648 \u0631\u0648\u06cc \u0647\u0631\u06a9\u062f\u0627\u0645 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0634\u0627\u0645\u0644 Django \u0648 Gunicorn \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"1986\" data-end=\"2079\">\u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 HTTPS\u060c \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0633\u0648\u0645 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0631\u0648\u06cc \u0622\u0646 \u062f\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f:<\/p>\n<ul data-start=\"2081\" data-end=\"2199\">\n<li data-section-id=\"ai7635\" data-start=\"2081\" data-end=\"2131\"><strong data-start=\"2083\" data-end=\"2092\">Nginx<\/strong> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 Reverse Proxy \u0648 Load Balancer<\/li>\n<li data-section-id=\"ddkzdo\" data-start=\"2132\" data-end=\"2199\"><strong data-start=\"2134\" data-end=\"2145\">Certbot<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc SSL \u0627\u0632 Let&#8217;s Encrypt<\/li>\n<\/ul>\n<p data-start=\"2201\" data-end=\"2420\">\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc TLS \u062a\u0648\u0633\u0637 Certbot \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 Nginx \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f \u062a\u0627 \u062a\u0645\u0627\u0645\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTPS \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 Nginx \u0634\u062f\u0647 \u0648 \u0633\u067e\u0633 \u0628\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"2422\" data-end=\"2581\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0646\u06cc\u0632 \u0628\u0627 \u0627\u0639\u0645\u0627\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u0646\u0627\u0633\u0628\u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u0646\u0647\u0627 Nginx \u0627\u0645\u06a9\u0627\u0646 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<hr data-start=\"2583\" data-end=\"2586\" \/>\n<h1 data-section-id=\"15g5ic3\" data-start=\"2588\" data-end=\"2600\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h1>\n<p data-start=\"2602\" data-end=\"2647\">\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \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<h2 data-section-id=\"1fmkszc\" data-start=\"2649\" data-end=\"2669\">\u06f1. \u0633\u0647 \u0633\u0631\u0648\u0631 Ubuntu<\/h2>\n<p data-start=\"2671\" data-end=\"2731\">\u0628\u0647 \u0633\u0647 \u0633\u0631\u0648\u0631 Ubuntu 24.04 LTS (\u06cc\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631) \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul data-start=\"2733\" data-end=\"2815\">\n<li data-section-id=\"1kjzn9l\" data-start=\"2733\" data-end=\"2778\">\u062f\u0648 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0648 Gunicorn<\/li>\n<li data-section-id=\"1nwga0i\" data-start=\"2779\" data-end=\"2815\">\u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Nginx \u0648 Certbot<\/li>\n<\/ul>\n<p data-start=\"2817\" data-end=\"2837\">\u0631\u0648\u06cc \u0647\u0631 \u0633\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627\u06cc\u062f:<\/p>\n<ul data-start=\"2839\" data-end=\"2910\">\n<li data-section-id=\"etw5sp\" data-start=\"2839\" data-end=\"2889\">\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 Root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<li data-section-id=\"xeqqvt\" data-start=\"2890\" data-end=\"2910\">\u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<hr data-start=\"2912\" data-end=\"2915\" \/>\n<h2 data-section-id=\"15lrkvu\" data-start=\"2917\" data-end=\"2948\">\u06f2. \u0646\u0635\u0628 Docker \u0631\u0648\u06cc \u0647\u0631 \u0633\u0647 \u0633\u0631\u0648\u0631<\/h2>\n<p data-start=\"2950\" data-end=\"2984\">\u0631\u0648\u06cc \u0647\u0631 \u0633\u0647 \u0633\u0631\u0648\u0631 Docker \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<blockquote data-start=\"2986\" data-end=\"3083\">\n<p data-start=\"2988\" data-end=\"3083\">\u0627\u06af\u0631 \u0627\u0632 <strong data-start=\"2995\" data-end=\"3010\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Docker \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 \u0631\u0633\u0645\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h3 data-section-id=\"1na4y6x\" data-start=\"3085\" data-end=\"3108\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f GPG<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">curl<\/span> <span class=\"\u037c12\">-fsSL<\/span> https:\/\/docker-ce.parmincloud.ir\/gpg | <span class=\"\u037c10\">sudo<\/span> gpg <span class=\"\u037c12\">--dearmor<\/span> <span class=\"\u037c12\">-o<\/span> \/usr\/share\/keyrings\/docker.gpg<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-section-id=\"1rk1xnw\" data-start=\"3226\" data-end=\"3252\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u062e\u0632\u0646 Docker<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">echo<\/span> \\\r\n  <span class=\"\u037cz\">\"deb [arch=<\/span>$(dpkg --print-architecture)<span class=\"\u037cz\"> signed-by=\/usr\/share\/keyrings\/docker.gpg] https:\/\/docker-ce.parmincloud.ir\/linux\/ubuntu \\<\/span>\r\n  $(. \/etc\/os-release &amp;&amp; echo <span class=\"\u037cz\">\"<\/span><span class=\"\u037c11\">$VERSION_CODENAME<\/span><span class=\"\u037cz\">\"<\/span>)<span class=\"\u037cz\"> stable\"<\/span> | \\\r\n<span class=\"\u037c10\">sudo<\/span> <span class=\"\u037c10\">tee<\/span> \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3526\" data-end=\"3530\">\u0633\u067e\u0633:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> apt update\r\n\r\n<span class=\"\u037c10\">sudo<\/span> apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h2 data-section-id=\"aezj4h\" data-start=\"3665\" data-end=\"3679\">\u06f3. \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647<\/h2>\n<p data-start=\"3681\" data-end=\"3747\">\u0628\u0647 \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u061b \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 \u062f\u0627\u0645\u0646\u0647 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>your_domain.com<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3774\" data-end=\"3777\" \/>\n<h2 data-section-id=\"1ra0yuz\" data-start=\"3779\" data-end=\"3794\">\u06f4. \u062a\u0646\u0638\u06cc\u0645 DNS<\/h2>\n<p data-start=\"3796\" data-end=\"3868\">\u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f <strong data-start=\"3805\" data-end=\"3810\">A<\/strong> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0628\u0647 IP \u0639\u0645\u0648\u0645\u06cc \u0633\u0631\u0648\u0631 Nginx \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f.<\/p>\n<hr data-start=\"3870\" data-end=\"3873\" \/>\n<h2 data-section-id=\"1ih2auc\" data-start=\"3875\" data-end=\"3917\">\u06f5. \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static<\/h2>\n<p data-start=\"3919\" data-end=\"4012\">\u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0628\u0647 \u06cc\u06a9 \u0641\u0636\u0627\u06cc Object Storage \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 S3 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p data-start=\"4014\" data-end=\"4109\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <strong data-start=\"4040\" data-end=\"4070\">Object Storage \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/strong> \u06cc\u0627 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 S3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"4111\" data-end=\"4160\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n<ul data-start=\"4162\" data-end=\"4216\">\n<li data-section-id=\"m8i517\" data-start=\"4162\" data-end=\"4174\">Access Key<\/li>\n<li data-section-id=\"1hr90h5\" data-start=\"4175\" data-end=\"4187\">Secret Key<\/li>\n<li data-section-id=\"qnckm9\" data-start=\"4188\" data-end=\"4201\">Bucket Name<\/li>\n<li data-section-id=\"1s2xk80\" data-start=\"4202\" data-end=\"4216\">Endpoint URL<\/li>\n<\/ul>\n<hr data-start=\"4218\" data-end=\"4221\" \/>\n<h2 data-section-id=\"mrlizl\" data-start=\"4223\" data-end=\"4251\">\u06f6. \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL<\/h2>\n<p data-start=\"4253\" data-end=\"4320\">\u06cc\u06a9 \u0633\u0631\u0648\u0631 PostgreSQL \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p data-start=\"4322\" data-end=\"4332\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n<ul data-start=\"4334\" data-end=\"4349\">\n<li data-section-id=\"122786i\" data-start=\"4334\" data-end=\"4349\">Database Name<\/li>\n<\/ul>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ul data-start=\"4366\" data-end=\"4381\">\n<li data-section-id=\"122lmfw\" data-start=\"4366\" data-end=\"4381\">Database User<\/li>\n<\/ul>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>sammy<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4398\" data-end=\"4433\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"4435\" data-end=\"4497\">\n<li data-section-id=\"avbbrp\" data-start=\"4435\" data-end=\"4448\">\u0646\u0627\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<li data-section-id=\"7o09fq\" data-start=\"4449\" data-end=\"4461\">\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc<\/li>\n<li data-section-id=\"14w89ba\" data-start=\"4462\" data-end=\"4472\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631<\/li>\n<li data-section-id=\"uqrqqk\" data-start=\"4473\" data-end=\"4484\">\u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631<\/li>\n<li data-section-id=\"yjbtd1\" data-start=\"4485\" data-end=\"4497\">\u0634\u0645\u0627\u0631\u0647 \u067e\u0648\u0631\u062a<\/li>\n<\/ul>\n<p data-start=\"4499\" data-end=\"4639\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 PostgreSQL \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062c\u0632\u0626\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0633\u0627\u06cc\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Django \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"w6xsqh\" data-start=\"0\" data-end=\"43\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644 \u2014 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 Django<\/h2>\n<p data-start=\"45\" data-end=\"243\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 (Application Server) \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0634\u0627\u0645\u0644 <strong data-start=\"150\" data-end=\"160\">Django<\/strong> \u0648 <strong data-start=\"163\" data-end=\"175\">Gunicorn<\/strong> \u0631\u0648\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0631\u0648\u0631\u06af\u0631 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<blockquote data-start=\"245\" data-end=\"394\">\n<p data-start=\"247\" data-end=\"394\"><strong data-start=\"247\" data-end=\"256\">\u0646\u06a9\u062a\u0647:<\/strong> \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0645\u0642\u0627\u0644\u0647 \u00ab\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Django \u0648 Gunicorn \u0628\u0627 Docker\u00bb \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0631\u0627 \u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645 \u0628\u0631\u0648\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"396\" data-end=\"399\" \/>\n<h2 data-section-id=\"1q4hb16\" data-start=\"401\" data-end=\"421\">\u062f\u0631\u06cc\u0627\u0641\u062a \u0633\u0648\u0631\u0633 \u067e\u0631\u0648\u0698\u0647<\/h2>\n<p data-start=\"423\" data-end=\"490\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0634\u0648\u06cc\u062f \u0648 \u0645\u062e\u0632\u0646 \u0646\u0645\u0648\u0646\u0647 \u067e\u0631\u0648\u0698\u0647 Polls \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">git<\/span> clone <span class=\"\u037c12\">--single-branch<\/span> <span class=\"\u037c12\">--branch<\/span> polls-docker https:\/\/github.com\/do-community\/django-polls.git<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"602\" data-end=\"627\">\u0633\u067e\u0633 \u0648\u0627\u0631\u062f \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0648\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">cd<\/span> django-polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"658\" data-end=\"769\">\u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0646\u0633\u062e\u0647 Dockerized \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0648\u0646\u0647 <strong data-start=\"697\" data-end=\"706\">Polls<\/strong> \u062f\u0631 \u0645\u0633\u062a\u0646\u062f\u0627\u062a Django \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"771\" data-end=\"774\" \/>\n<h2 data-section-id=\"s1qku8\" data-start=\"776\" data-end=\"795\">\u0628\u0631\u0631\u0633\u06cc Dockerfile<\/h2>\n<p data-start=\"797\" data-end=\"828\">\u0641\u0627\u06cc\u0644 Dockerfile \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">cat<\/span> Dockerfile<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"858\" data-end=\"888\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>FROM python:3.7.4-alpine3.10\r\n\r\nADD django-polls\/requirements.txt \/app\/requirements.txt\r\n\r\nRUN set -ex \\\r\n    &amp;&amp; apk add --no-cache --virtual .build-deps postgresql-dev build-base \\\r\n    &amp;&amp; python -m venv \/env \\\r\n    &amp;&amp; \/env\/bin\/pip install --upgrade pip \\\r\n    &amp;&amp; \/env\/bin\/pip install --no-cache-dir -r \/app\/requirements.txt \\\r\n    &amp;&amp; runDeps=\"$(scanelf --needed --nobanner --recursive \/env \\\r\n        | awk '{ gsub(\/,\/, \"\\nso:\", $2); print \"so:\" $2 }' \\\r\n        | sort -u \\\r\n        | xargs -r apk info --installed \\\r\n        | sort -u)\" \\\r\n    &amp;&amp; apk add --virtual rundeps $runDeps \\\r\n    &amp;&amp; apk del .build-deps\r\n\r\nADD django-polls \/app\r\nWORKDIR \/app\r\n\r\nENV VIRTUAL_ENV \/env\r\nENV PATH \/env\/bin:$PATH\r\n\r\nEXPOSE 8000\r\n\r\nCMD [\"gunicorn\", \"--bind\", \":8000\", \"--workers\", \"3\", \"mysite.wsgi\"]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1675\" data-end=\"1716\">\u0627\u06cc\u0646 Dockerfile \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul data-start=\"1718\" data-end=\"2096\">\n<li data-section-id=\"1c31qfw\" data-start=\"1718\" data-end=\"1776\">\u0627\u0632 \u0627\u06cc\u0645\u06cc\u062c \u0631\u0633\u0645\u06cc Python \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 Base Image \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"4wnkbr\" data-start=\"1777\" data-end=\"1820\">\u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1oosh23\" data-start=\"1821\" data-end=\"1854\">\u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc Python \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"zc4db6\" data-start=\"1855\" data-end=\"1911\">\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 Django \u0648 Gunicorn \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1latnv8\" data-start=\"1912\" data-end=\"1954\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0645\u06cc\u062c \u06a9\u067e\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"16luzzf\" data-start=\"1955\" data-end=\"2008\">\u067e\u0648\u0631\u062a <strong data-start=\"1962\" data-end=\"1970\">8000<\/strong> \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"ezen8w\" data-start=\"2009\" data-end=\"2096\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a Gunicorn \u0631\u0627 \u0628\u0627 <strong data-start=\"2035\" data-end=\"2048\">\u0633\u0647 Worker<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"2098\" data-end=\"2101\" \/>\n<h2 data-section-id=\"105sia7\" data-start=\"2103\" data-end=\"2123\">\u0633\u0627\u062e\u062a \u0627\u06cc\u0645\u06cc\u062c Docker<\/h2>\n<p data-start=\"2125\" data-end=\"2153\">\u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u0645\u06cc\u062c \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker build <span class=\"\u037c12\">-t<\/span> polls .<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2192\" data-end=\"2281\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code data-start=\"2200\" data-end=\"2204\">-t<\/code> \u0646\u0627\u0645 \u0627\u06cc\u0645\u06cc\u062c \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u0627\u0645 \u0627\u06cc\u0645\u06cc\u062c \u0631\u0627 <strong data-start=\"2257\" data-end=\"2266\">polls<\/strong> \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645.<\/p>\n<p data-start=\"2283\" data-end=\"2332\">\u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 Build\u060c \u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker images<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2361\" data-end=\"2387\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>REPOSITORY          TAG       SIZE\r\npolls               latest    197MB\r\npython              3.7.4     98MB<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2508\" data-end=\"2585\">\u0627\u06af\u0631 \u0627\u06cc\u0645\u06cc\u062c <code data-start=\"2518\" data-end=\"2525\">polls<\/code> \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06cc\u0639\u0646\u06cc \u0633\u0627\u062e\u062a \u0627\u06cc\u0645\u06cc\u062c \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2587\" data-end=\"2590\" \/>\n<h2 data-section-id=\"1gjz46p\" data-start=\"2592\" data-end=\"2612\">\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0644 env<\/h2>\n<p data-start=\"2614\" data-end=\"2676\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0628\u0627\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"2678\" data-end=\"2701\">\u0641\u0627\u06cc\u0644 <code data-start=\"2683\" data-end=\"2688\">env<\/code> \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano env<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2725\" data-end=\"2750\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>DJANGO_SECRET_KEY=\r\nDEBUG=True\r\nDJANGO_ALLOWED_HOSTS=\r\nDATABASE_ENGINE=postgresql_psycopg2\r\nDATABASE_NAME=polls\r\nDATABASE_USERNAME=\r\nDATABASE_PASSWORD=\r\nDATABASE_HOST=\r\nDATABASE_PORT=\r\nSTATIC_ACCESS_KEY_ID=\r\nSTATIC_SECRET_KEY=\r\nSTATIC_BUCKET_NAME=\r\nSTATIC_ENDPOINT_URL=\r\nDJANGO_LOGLEVEL=info<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3044\" data-end=\"3069\">\u0645\u0642\u0627\u062f\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex flex-col-reverse w-fit\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"3071\" data-end=\"3729\">\n<thead data-start=\"3071\" data-end=\"3088\">\n<tr data-start=\"3071\" data-end=\"3088\">\n<th class=\"last:pe-10\" data-start=\"3071\" data-end=\"3079\" data-col-size=\"sm\">\u0645\u062a\u063a\u06cc\u0631<\/th>\n<th class=\"last:pe-10\" data-start=\"3079\" data-end=\"3088\" data-col-size=\"md\">\u062a\u0648\u0636\u06cc\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"3108\" data-end=\"3729\">\n<tr data-start=\"3108\" data-end=\"3179\">\n<td data-start=\"3108\" data-end=\"3128\" data-col-size=\"sm\">DJANGO_SECRET_KEY<\/td>\n<td data-start=\"3128\" data-end=\"3179\" data-col-size=\"md\">\u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0648 \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062d\u062f\u0633 \u0628\u0631\u0627\u06cc Django<\/td>\n<\/tr>\n<tr data-start=\"3180\" data-end=\"3291\">\n<td data-start=\"3180\" data-end=\"3203\" data-col-size=\"sm\">DJANGO_ALLOWED_HOSTS<\/td>\n<td data-start=\"3203\" data-end=\"3291\" data-col-size=\"md\">\u062f\u0631 \u0645\u062d\u06cc\u0637 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f <code data-start=\"3231\" data-end=\"3234\">*<\/code> \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u062f\u0627\u0645\u0646\u0647 \u0633\u0627\u06cc\u062a \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/td>\n<\/tr>\n<tr data-start=\"3292\" data-end=\"3334\">\n<td data-start=\"3292\" data-end=\"3308\" data-col-size=\"sm\">DATABASE_NAME<\/td>\n<td data-start=\"3308\" data-end=\"3334\" data-col-size=\"md\">\u0646\u0627\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL<\/td>\n<\/tr>\n<tr data-start=\"3335\" data-end=\"3376\">\n<td data-start=\"3335\" data-end=\"3355\" data-col-size=\"sm\">DATABASE_USERNAME<\/td>\n<td data-start=\"3355\" data-end=\"3376\" data-col-size=\"md\">\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/td>\n<\/tr>\n<tr data-start=\"3377\" data-end=\"3417\">\n<td data-start=\"3377\" data-end=\"3397\" data-col-size=\"sm\">DATABASE_PASSWORD<\/td>\n<td data-start=\"3397\" data-end=\"3417\" data-col-size=\"md\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/td>\n<\/tr>\n<tr data-start=\"3418\" data-end=\"3464\">\n<td data-start=\"3418\" data-end=\"3434\" data-col-size=\"sm\">DATABASE_HOST<\/td>\n<td data-start=\"3434\" data-end=\"3464\" data-col-size=\"md\">\u0622\u062f\u0631\u0633 \u06cc\u0627 IP \u0633\u0631\u0648\u0631 PostgreSQL<\/td>\n<\/tr>\n<tr data-start=\"3465\" data-end=\"3515\">\n<td data-start=\"3465\" data-end=\"3481\" data-col-size=\"sm\">DATABASE_PORT<\/td>\n<td data-start=\"3481\" data-end=\"3515\" data-col-size=\"md\">\u067e\u0648\u0631\u062a PostgreSQL (\u0645\u0639\u0645\u0648\u0644\u0627\u064b 5432)<\/td>\n<\/tr>\n<tr data-start=\"3516\" data-end=\"3581\">\n<td data-start=\"3516\" data-end=\"3539\" data-col-size=\"sm\">STATIC_ACCESS_KEY_ID<\/td>\n<td data-start=\"3539\" data-end=\"3581\" data-col-size=\"md\">Access Key \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc S3<\/td>\n<\/tr>\n<tr data-start=\"3582\" data-end=\"3632\">\n<td data-start=\"3582\" data-end=\"3602\" data-col-size=\"sm\">STATIC_SECRET_KEY<\/td>\n<td data-start=\"3602\" data-end=\"3632\" data-col-size=\"md\">Secret Key \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc<\/td>\n<\/tr>\n<tr data-start=\"3633\" data-end=\"3668\">\n<td data-start=\"3633\" data-end=\"3654\" data-col-size=\"sm\">STATIC_BUCKET_NAME<\/td>\n<td data-start=\"3654\" data-end=\"3668\" data-col-size=\"md\">\u0646\u0627\u0645 Bucket<\/td>\n<\/tr>\n<tr data-start=\"3669\" data-end=\"3729\">\n<td data-start=\"3669\" data-end=\"3691\" data-col-size=\"sm\">STATIC_ENDPOINT_URL<\/td>\n<td data-start=\"3691\" data-end=\"3729\" data-col-size=\"md\">\u0622\u062f\u0631\u0633 Endpoint \u0633\u0631\u0648\u06cc\u0633 Object Storage<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"3731\" data-end=\"3778\" data-is-last-node=\"\" data-is-only-node=\"\">\u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<div class=\"\" data-turn-id-container=\"c797b950-d9df-40f6-af13-673b52a0d0f9\" data-is-intersecting=\"true\"><\/div>\n<div class=\"\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-16\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-16\" data-turn-id-container=\"request-6a252b9d-f250-83eb-831d-bfa5a04bf562-16\" data-testid=\"conversation-turn-410\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" data-conversation-screenshot-content=\"\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"39c585df-6c3d-443e-9354-99651ec5b693\" data-message-model-slug=\"gpt-5-5\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full dark markdown-new-styling\">\n<h3 class=\"\" data-section-id=\"50s0ol\" data-start=\"0\" data-end=\"28\">\u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/h3>\n<p data-start=\"30\" data-end=\"110\">\u0628\u0639\u062f \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0627\u06cc\u0644 <code data-start=\"48\" data-end=\"53\">env<\/code>\u060c \u0628\u0627\u06cc\u062f \u062c\u062f\u0627\u0648\u0644 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"112\" data-end=\"148\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--env-file<\/span> env polls <span class=\"\u037c10\">sh<\/span> <span class=\"\u037c12\">-c<\/span> <span class=\"\u037cz\">\"python manage.py makemigrations &amp;&amp; python manage.py migrate\"<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"263\" data-end=\"276\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"278\" data-end=\"538\">\n<li data-section-id=\"cu9exm\" data-start=\"278\" data-end=\"315\">\u0641\u0627\u06cc\u0644 <code data-start=\"285\" data-end=\"290\">env<\/code> \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"r6cril\" data-start=\"316\" data-end=\"382\">\u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Dockerfile \u0628\u0647\u200c\u0637\u0648\u0631 \u0645\u0648\u0642\u062a \u0628\u0627 \u06cc\u06a9 Shell \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"uudvzj\" data-start=\"383\" data-end=\"467\">\u0627\u0628\u062a\u062f\u0627 <code data-start=\"391\" data-end=\"407\">makemigrations<\/code> \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u060c Migration\u0647\u0627 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"10w7yc3\" data-start=\"468\" data-end=\"538\">\u0633\u067e\u0633 <code data-start=\"474\" data-end=\"483\">migrate<\/code> \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0648 \u062c\u062f\u0627\u0648\u0644 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u062f\u0631 PostgreSQL \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"540\" data-end=\"614\">\u0627\u06af\u0631 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>No changes detected\r\nOperations to perform:\r\n  Apply all migrations: admin, auth, contenttypes, polls, sessions\r\nRunning migrations:\r\n  Applying contenttypes.0001_initial... OK\r\n  Applying auth.0001_initial... OK\r\n  ...\r\n  Applying polls.0001_initial... OK\r\n  Applying sessions.0001_initial... OK<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"918\" data-end=\"986\">\u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<blockquote data-start=\"988\" data-end=\"1107\">\n<p data-start=\"990\" data-end=\"1107\"><strong data-start=\"990\" data-end=\"999\">\u0646\u06a9\u062a\u0647:<\/strong> \u0627\u06af\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc Django \u0627\u06cc\u062c\u0627\u062f \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0639\u0645\u0644\u06cc\u0627\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"1109\" data-end=\"1112\" \/>\n<h2 data-section-id=\"ak8m8w\" data-start=\"1114\" data-end=\"1148\">\u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc (Superuser)<\/h2>\n<p data-start=\"1150\" data-end=\"1220\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a Django \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1222\" data-end=\"1256\">\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-it<\/span> <span class=\"\u037c12\">--env-file<\/span> env polls <span class=\"\u037c10\">sh<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1310\" data-end=\"1361\">\u067e\u0633 \u0627\u0632 \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>python manage.py createsuperuser<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1409\" data-end=\"1443\">\u0633\u067e\u0633 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1445\" data-end=\"1487\">\n<li data-section-id=\"kzwfap\" data-start=\"1445\" data-end=\"1468\">\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc (Username)<\/li>\n<li data-section-id=\"1e9yczy\" data-start=\"1469\" data-end=\"1476\">\u0627\u06cc\u0645\u06cc\u0644<\/li>\n<li data-section-id=\"14w89ba\" data-start=\"1477\" data-end=\"1487\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631<\/li>\n<\/ul>\n<p data-start=\"1489\" data-end=\"1564\">\u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u060c \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc <strong data-start=\"1525\" data-end=\"1537\">CTRL + D<\/strong> \u0627\u0632 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"1566\" data-end=\"1569\" \/>\n<h2 data-section-id=\"1w8my79\" data-start=\"1571\" data-end=\"1606\">\u062a\u0648\u0644\u06cc\u062f \u0648 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static<\/h2>\n<p data-start=\"1608\" data-end=\"1712\">\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc Object Storage \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1714\" data-end=\"1737\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--env-file<\/span> env polls <span class=\"\u037c10\">sh<\/span> <span class=\"\u037c12\">-c<\/span> <span class=\"\u037cz\">\"python manage.py collectstatic --noinput\"<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1833\" data-end=\"1913\">\u0628\u0633\u062a\u0647 \u0628\u0647 \u0633\u0631\u0639\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u0632\u0645\u0627\u0646 \u0628\u0628\u0631\u062f.<\/p>\n<p data-start=\"1915\" data-end=\"1961\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>121 static files copied.<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2001\" data-end=\"2093\">\u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u0648\u0644\u06cc\u062f \u0648 \u062f\u0631 Bucket \u0645\u0631\u0628\u0648\u0637\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/p>\n<hr data-start=\"2095\" data-end=\"2098\" \/>\n<h2 data-section-id=\"y814b2\" data-start=\"2100\" data-end=\"2115\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n<p data-start=\"2117\" data-end=\"2181\">\u0627\u06a9\u0646\u0648\u0646 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Django \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--env-file<\/span> env <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:8000 polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2239\" data-end=\"2265\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>[INFO] Starting gunicorn\r\n[INFO] Listening at: http:\/\/0.0.0.0:8000\r\n[INFO] Using worker: sync\r\n[INFO] Booting worker with pid: ...<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2408\" data-end=\"2421\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"2423\" data-end=\"2560\">\n<li data-section-id=\"lpdgw1\" data-start=\"2423\" data-end=\"2484\">\u067e\u0648\u0631\u062a <strong data-start=\"2430\" data-end=\"2436\">\u06f8\u06f0<\/strong> \u0633\u0631\u0648\u0631 \u0628\u0647 \u067e\u0648\u0631\u062a <strong data-start=\"2450\" data-end=\"2458\">\u06f8\u06f0\u06f0\u06f0<\/strong> \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1k99vtv\" data-start=\"2485\" data-end=\"2560\">Gunicorn \u0628\u0627 \u0633\u0647 Worker \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0648 \u0622\u0645\u0627\u062f\u0647 \u067e\u0627\u0633\u062e\u200c\u06af\u0648\u06cc\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/li>\n<\/ul>\n<hr data-start=\"2562\" data-end=\"2565\" \/>\n<h2 data-section-id=\"fjvo2v\" data-start=\"2567\" data-end=\"2589\">\u0628\u0631\u0631\u0633\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n<p data-start=\"2591\" data-end=\"2644\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/IP-\u0633\u0631\u0648\u0631<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2674\" data-end=\"2738\">\u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0632\u06cc\u0627\u062f \u0628\u0627 \u062e\u0637\u0627\u06cc <strong data-start=\"2697\" data-end=\"2719\">404 Page Not Found<\/strong> \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p data-start=\"2740\" data-end=\"2822\">\u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u06a9\u0627\u0645\u0644\u0627\u064b \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0647\u0646\u0648\u0632 \u0645\u0633\u06cc\u0631\u06cc \u0628\u0631\u0627\u06cc \u0622\u062f\u0631\u0633 <code data-start=\"2794\" data-end=\"2797\">\/<\/code> \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"2824\" data-end=\"2883\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0648\u0646\u0647 Polls \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0648\u0627\u0631\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0634\u0648\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/IP-\u0633\u0631\u0648\u0631\/polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2919\" data-end=\"3006\">\u0627\u06af\u0631 \u0647\u0645\u0647 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1xjle8\" data-start=\"0\" data-end=\"28\">\u0648\u0631\u0648\u062f \u0628\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a Django<\/h2>\n<p data-start=\"30\" data-end=\"88\">\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a\u060c \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/IP-\u0633\u0631\u0648\u0631\/admin<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"124\" data-end=\"170\">\u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a Django \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"172\" data-end=\"287\">\u062f\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647\u060c \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code data-start=\"220\" data-end=\"237\">createsuperuser<\/code> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0648\u0627\u0631\u062f \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u06cc\u062f.<\/p>\n<p data-start=\"289\" data-end=\"394\">\u067e\u0633 \u0627\u0632 \u0648\u0631\u0648\u062f\u060c \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc Django \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<blockquote data-start=\"396\" data-end=\"550\">\n<p data-start=\"398\" data-end=\"550\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 Object Storage \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0641\u0634\u0627\u0631 \u06a9\u0645\u062a\u0631\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0631\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"552\" data-end=\"555\" \/>\n<h2 data-section-id=\"9qkwil\" data-start=\"557\" data-end=\"572\">\u062a\u0648\u0642\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631<\/h2>\n<p data-start=\"574\" data-end=\"675\">\u067e\u0633 \u0627\u0632 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>CTRL + C<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"699\" data-end=\"702\" \/>\n<h2 data-section-id=\"1kg608a\" data-start=\"704\" data-end=\"736\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a Detached<\/h2>\n<p data-start=\"738\" data-end=\"861\">\u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 \u0628\u0633\u062a\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0646\u06cc\u0632 \u0645\u062a\u0648\u0642\u0641 \u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Detached \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-d<\/span> <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> polls <span class=\"\u037c12\">--env-file<\/span> env <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:8000 polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"940\" data-end=\"953\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"955\" data-end=\"1125\">\n<li data-section-id=\"lxx2ae\" data-start=\"955\" data-end=\"1003\"><code data-start=\"957\" data-end=\"961\">-d<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/li>\n<li data-section-id=\"198s1bo\" data-start=\"1004\" data-end=\"1071\"><code data-start=\"1006\" data-end=\"1012\">--rm<\/code> \u067e\u0633 \u0627\u0632 \u062a\u0648\u0642\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0645\u0646\u0627\u0628\u0639 \u0622\u0646 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1nz0b5g\" data-start=\"1072\" data-end=\"1125\"><code data-start=\"1074\" data-end=\"1088\">--name polls<\/code> \u0646\u0627\u0645 \u0645\u0634\u062e\u0635\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"1127\" data-end=\"1213\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u062d\u062a\u06cc \u0627\u06af\u0631 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p data-start=\"1215\" data-end=\"1272\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646\u060c \u06cc\u06a9 \u0628\u0627\u0631 \u062f\u06cc\u06af\u0631 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/IP-\u0633\u0631\u0648\u0631\/polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1308\" data-end=\"1385\">\u0627\u06af\u0631 \u0635\u0641\u062d\u0647 Polls \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1387\" data-end=\"1390\" \/>\n<h1 data-section-id=\"5gzyqi\" data-start=\"1392\" data-end=\"1434\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645 \u2014 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062f\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0631 Django<\/h1>\n<p data-start=\"1436\" data-end=\"1574\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u062f\u0648\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0639\u062f\u0627\u064b Nginx \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u06cc\u0646 \u0647\u0631 \u062f\u0648 \u0633\u0631\u0648\u0631 \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u062f (Load Balancing).<\/p>\n<p data-start=\"1576\" data-end=\"1667\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0631\u0627\u062d\u0644 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0645\u0634\u0627\u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0647\u0633\u062a\u0646\u062f\u060c \u0641\u0642\u0637 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0627\u0635\u0644\u06cc \u0631\u0627 \u0645\u0631\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1669\" data-end=\"1722\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 \u062f\u0648\u0645 \u0634\u0648\u06cc\u062f \u0648 \u0645\u062e\u0632\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">git<\/span> clone <span class=\"\u037c12\">--single-branch<\/span> <span class=\"\u037c12\">--branch<\/span> polls-docker https:\/\/github.com\/do-community\/django-polls.git<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1834\" data-end=\"1859\">\u0633\u067e\u0633 \u0648\u0627\u0631\u062f \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0648\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">cd<\/span> django-polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1890\" data-end=\"1893\" \/>\n<h2 data-section-id=\"105sia7\" data-start=\"1895\" data-end=\"1915\">\u0633\u0627\u062e\u062a \u0627\u06cc\u0645\u06cc\u062c Docker<\/h2>\n<p data-start=\"1917\" data-end=\"1939\">\u0627\u06cc\u0645\u06cc\u062c \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker build <span class=\"\u037c12\">-t<\/span> polls .<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1978\" data-end=\"1981\" \/>\n<h2 data-section-id=\"1gjz46p\" data-start=\"1983\" data-end=\"2003\">\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0644 env<\/h2>\n<p data-start=\"2005\" data-end=\"2030\">\u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano env<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2054\" data-end=\"2095\">\u0645\u0627\u0646\u0646\u062f \u0633\u0631\u0648\u0631 \u0627\u0648\u0644\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>DJANGO_SECRET_KEY=\r\nDEBUG=True\r\nDJANGO_ALLOWED_HOSTS=\r\nDATABASE_ENGINE=postgresql_psycopg2\r\nDATABASE_NAME=polls\r\nDATABASE_USERNAME=\r\nDATABASE_PASSWORD=\r\nDATABASE_HOST=\r\nDATABASE_PORT=\r\nSTATIC_ACCESS_KEY_ID=\r\nSTATIC_SECRET_KEY=\r\nSTATIC_BUCKET_NAME=\r\nSTATIC_ENDPOINT_URL=\r\nDJANGO_LOGLEVEL=info<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<blockquote data-start=\"2389\" data-end=\"2515\">\n<p data-start=\"2391\" data-end=\"2515\">\u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0634\u0627\u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0648\u0644 \u0628\u0627\u0634\u0646\u062f\u061b \u0632\u06cc\u0631\u0627 \u0647\u0631 \u062f\u0648 \u0633\u0631\u0648\u0631 \u0628\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u06cc\u06a9 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<\/blockquote>\n<p data-start=\"2517\" data-end=\"2573\">\u067e\u0633 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Detached \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-d<\/span> <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> polls <span class=\"\u037c12\">--env-file<\/span> env <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:8000 polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2652\" data-end=\"2689\">\u0627\u06a9\u0646\u0648\u0646 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/IP-\u0633\u0631\u0648\u0631-\u062f\u0648\u0645\/polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2729\" data-end=\"2801\">\u0627\u06af\u0631 \u0635\u0641\u062d\u0647 Polls \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0633\u0631\u0648\u0631 \u062f\u0648\u0645 \u0646\u06cc\u0632 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"2803\" data-end=\"2964\" data-is-last-node=\"\" data-is-only-node=\"\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u062f\u0648 Application Server \u06a9\u0627\u0645\u0644\u0627\u064b \u0622\u0645\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0633\u0631\u0648\u0631 <strong data-start=\"2875\" data-end=\"2898\">Nginx Reverse Proxy<\/strong> \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1jn1mtv\" data-start=\"0\" data-end=\"38\">\u0645\u0631\u062d\u0644\u0647 \u0633\u0648\u0645 \u2014 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx<\/h1>\n<p data-start=\"40\" data-end=\"198\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0645\u062c\u0632\u0627 \u0628\u0631\u0627\u06cc <strong data-start=\"111\" data-end=\"120\">Nginx<\/strong> \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 <strong data-start=\"152\" data-end=\"169\">Reverse Proxy<\/strong> \u0648 <strong data-start=\"172\" data-end=\"189\">Load Balancer<\/strong> \u0639\u0645\u0644 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"200\" data-end=\"347\">Nginx \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0645\u0633\u0626\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a HTTPS \u0648 \u06af\u0648\u0627\u0647\u06cc SSL \u0646\u06cc\u0632 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"349\" data-end=\"352\" \/>\n<h2 data-section-id=\"17qxrcq\" data-start=\"354\" data-end=\"386\">\u0686\u0631\u0627 \u0627\u0632 Nginx \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/h2>\n<p data-start=\"388\" data-end=\"443\">Nginx \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0645\u062a\u0639\u062f\u062f\u06cc \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647:<\/p>\n<ul data-start=\"445\" data-end=\"523\">\n<li data-section-id=\"svpd0k\" data-start=\"445\" data-end=\"460\">Reverse Proxy<\/li>\n<li data-section-id=\"zzcuul\" data-start=\"461\" data-end=\"477\">Load Balancing<\/li>\n<li data-section-id=\"1j7skya\" data-start=\"478\" data-end=\"492\">\u0645\u062f\u06cc\u0631\u06cc\u062a HTTPS<\/li>\n<li data-section-id=\"jzqevd\" data-start=\"493\" data-end=\"508\">\u06a9\u0634 \u06a9\u0631\u062f\u0646 \u0645\u062d\u062a\u0648\u0627<\/li>\n<li data-section-id=\"1v3dvlt\" data-start=\"509\" data-end=\"523\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a<\/li>\n<\/ul>\n<p data-start=\"525\" data-end=\"698\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 Object Storage \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a Cache \u062f\u0631 Nginx \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0639\u0648\u0636\u060c Nginx \u0645\u0633\u0626\u0648\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u0648\u0638\u0627\u06cc\u0641 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<ul data-start=\"700\" data-end=\"836\">\n<li data-section-id=\"1gtnea8\" data-start=\"700\" data-end=\"737\">\u062a\u0648\u0632\u06cc\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 Django<\/li>\n<li data-section-id=\"qa1dqu\" data-start=\"738\" data-end=\"759\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0631\u062a\u0628\u0627\u0637 HTTPS<\/li>\n<li data-section-id=\"p2eznu\" data-start=\"760\" data-end=\"795\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0627\u0632 Let&#8217;s Encrypt<\/li>\n<li data-section-id=\"1bbrtil\" data-start=\"796\" data-end=\"836\">\u0647\u062f\u0627\u06cc\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0628\u0647 HTTPS<\/li>\n<\/ul>\n<p data-start=\"838\" data-end=\"943\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f Nginx \u0634\u062f\u0647 \u0648 \u0633\u067e\u0633 \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"945\" data-end=\"948\" \/>\n<h2 data-section-id=\"12q3wle\" data-start=\"950\" data-end=\"969\">\u0645\u0639\u0645\u0627\u0631\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634<\/h2>\n<p data-start=\"971\" data-end=\"1063\">\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648\u060c Nginx \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u062f\u0631 \u067e\u0634\u062a \u0622\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/p>\n<p data-start=\"1065\" data-end=\"1094\">\u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u0686\u0646\u062f \u0645\u0632\u06cc\u062a \u0645\u0647\u0645 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"1096\" data-end=\"1323\">\n<li data-section-id=\"1fgiw1d\" data-start=\"1096\" data-end=\"1130\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc (Scalability)<\/li>\n<li data-section-id=\"1pll6ix\" data-start=\"1131\" data-end=\"1163\">\u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0644\u0627\u06cc\u0647 \u0648\u0628 \u0627\u0632 \u0644\u0627\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"19d982\" data-start=\"1164\" data-end=\"1224\">\u0627\u0645\u06a9\u0627\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0639\u062f\u0627\u062f \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc<\/li>\n<li data-section-id=\"1mxy5kb\" data-start=\"1225\" data-end=\"1323\">\u0627\u0645\u06a9\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0686\u0646\u062f\u06cc\u0646 Nginx \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Load Balancer\u0647\u0627\u06cc \u0633\u0637\u062d \u0628\u0627\u0644\u0627\u062a\u0631 \u0645\u0627\u0646\u0646\u062f <strong data-start=\"1312\" data-end=\"1323\">HAProxy<\/strong><\/li>\n<\/ul>\n<p data-start=\"1325\" data-end=\"1444\">\u0627\u0644\u0628\u062a\u0647 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Nginx \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0646\u06cc\u0632 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f \u06cc\u0627 \u0627\u0632 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0648\u062f.<\/p>\n<hr data-start=\"1446\" data-end=\"1449\" \/>\n<h2 data-section-id=\"hxcux5\" data-start=\"1451\" data-end=\"1478\">\u0627\u06cc\u062c\u0627\u062f \u067e\u0648\u0634\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/h2>\n<p data-start=\"1480\" data-end=\"1530\">\u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 Proxy \u0634\u0648\u06cc\u062f \u0648 \u067e\u0648\u0634\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">mkdir<\/span> conf<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1556\" data-end=\"1593\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>nano conf\/nginx.conf<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1629\" data-end=\"1632\" \/>\n<h2 data-section-id=\"18afxyb\" data-start=\"1634\" data-end=\"1650\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/h2>\n<p data-start=\"1652\" data-end=\"1686\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>upstream django {\r\n    server APP_SERVER_1_IP;\r\n    server APP_SERVER_2_IP;\r\n}\r\n\r\nserver {\r\n    listen 80 default_server;\r\n    return 444;\r\n}\r\n\r\nserver {\r\n    listen 80;\r\n    listen [::]:80;\r\n    server_name your_domain.com;\r\n\r\n    return 301 https:\/\/$server_name$request_uri;\r\n}\r\n\r\nserver {\r\n\r\n    listen 443 ssl http2;\r\n    listen [::]:443 ssl http2;\r\n\r\n    server_name your_domain.com;\r\n\r\n    ssl_certificate \/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem;\r\n    ssl_certificate_key \/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem;\r\n\r\n    ssl_session_cache shared:le_nginx_SSL:10m;\r\n    ssl_session_timeout 1440m;\r\n    ssl_session_tickets off;\r\n\r\n    ssl_protocols TLSv1.2 TLSv1.3;\r\n    ssl_prefer_server_ciphers off;\r\n\r\n    ssl_ciphers \"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384\";\r\n\r\n    client_max_body_size 4G;\r\n    keepalive_timeout 5;\r\n\r\n    location \/ {\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header X-Forwarded-Proto $scheme;\r\n        proxy_set_header Host $http_host;\r\n        proxy_redirect off;\r\n        proxy_pass http:\/\/django;\r\n    }\r\n\r\n    location ^~ \/.well-known\/acme-challenge\/ {\r\n        root \/var\/www\/html;\r\n    }\r\n\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3031\" data-end=\"3034\" \/>\n<h2 data-section-id=\"detvk6\" data-start=\"3036\" data-end=\"3069\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h2>\n<p data-start=\"3071\" data-end=\"3099\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0686\u0647\u0627\u0631 \u0628\u062e\u0634 \u0627\u0635\u0644\u06cc \u062f\u0627\u0631\u062f:<\/p>\n<h3 data-section-id=\"x05yhx\" data-start=\"3101\" data-end=\"3129\">\u06f1. \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Backend<\/h3>\n<p data-start=\"3131\" data-end=\"3176\">\u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>upstream django {\r\n    server APP_SERVER_1_IP;\r\n    server APP_SERVER_2_IP;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3268\" data-end=\"3353\">\u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 Nginx \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<blockquote data-start=\"3355\" data-end=\"3516\">\n<p data-start=\"3357\" data-end=\"3516\">\u0627\u06af\u0631 \u0627\u0632 \u0634\u0628\u06a9\u0647 \u062e\u0635\u0648\u0635\u06cc <strong data-start=\"3375\" data-end=\"3395\">Parmin Cloud VPC<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0627\u0632 IP \u062e\u0635\u0648\u0635\u06cc \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0634\u0628\u06a9\u0647 \u062f\u0627\u062e\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"3518\" data-end=\"3521\" \/>\n<h3 data-section-id=\"o0cnoy\" data-start=\"3523\" data-end=\"3574\">\u06f2. \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0645\u0646\u0647 \u0635\u062d\u06cc\u062d \u0646\u062f\u0627\u0631\u0646\u062f<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>server {\r\n    listen 80 default_server;\r\n    return 444;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3647\" data-end=\"3781\">\u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b IP \u0633\u0631\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f \u06cc\u0627 \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u063a\u06cc\u0631 \u0627\u0632 \u062f\u0627\u0645\u0646\u0647 \u0627\u0635\u0644\u06cc \u0633\u0627\u06cc\u062a \u0631\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0647\u062f\u060c Nginx \u0628\u062f\u0648\u0646 \u0627\u0631\u0633\u0627\u0644 \u067e\u0627\u0633\u062e\u060c \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0642\u0637\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"3783\" data-end=\"3860\">\u06a9\u062f \u0648\u0636\u0639\u06cc\u062a <strong data-start=\"3792\" data-end=\"3799\">444<\/strong> \u06cc\u06a9 \u06a9\u062f \u0627\u062e\u062a\u0635\u0627\u0635\u06cc Nginx \u0627\u0633\u062a \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0641\u0648\u0631\u0627\u064b \u0628\u0633\u062a\u0647 \u0634\u0648\u062f.<\/p>\n<hr data-start=\"3862\" data-end=\"3865\" \/>\n<h3 data-section-id=\"tivvv2\" data-start=\"3867\" data-end=\"3893\">\u06f3. \u0647\u062f\u0627\u06cc\u062a HTTP \u0628\u0647 HTTPS<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>server {\r\n    listen 80;\r\n\r\n    server_name your_domain.com;\r\n\r\n    return 301 https:\/\/$server_name$request_uri;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4019\" data-end=\"4095\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0628\u0627 \u06a9\u062f <strong data-start=\"4059\" data-end=\"4066\">301<\/strong> \u0628\u0647 \u0646\u0633\u062e\u0647 HTTPS \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"4097\" data-end=\"4160\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 \u0646\u0633\u062e\u0647 \u0627\u0645\u0646 \u0633\u0627\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"4162\" data-end=\"4165\" \/>\n<h3 data-section-id=\"c2ha7k\" data-start=\"4167\" data-end=\"4188\">\u06f4. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc HTTPS<\/h3>\n<p data-start=\"4190\" data-end=\"4252\">\u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0628\u062e\u0634 \u0641\u0627\u06cc\u0644\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a SSL \u0648 Reverse Proxy \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"4254\" data-end=\"4263\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n<ul data-start=\"4265\" data-end=\"4486\">\n<li data-section-id=\"ugxoc5\" data-start=\"4265\" data-end=\"4323\">\u0627\u0632 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0635\u0627\u062f\u0631 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Let&#8217;s Encrypt \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"2ibul9\" data-start=\"4324\" data-end=\"4358\">\u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0627\u0645\u0646 TLS \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"58hbur\" data-start=\"4359\" data-end=\"4406\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"rmq9yl\" data-start=\"4407\" data-end=\"4486\">\u0645\u0633\u06cc\u0631 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc Certbot \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 Let&#8217;s Encrypt \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1m1smd4\" data-start=\"0\" data-end=\"40\">\u0628\u0631\u0631\u0633\u06cc \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx<\/h2>\n<p data-start=\"42\" data-end=\"161\">\u062f\u0631 \u0628\u062e\u0634 \u0642\u0628\u0644 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0645\u0644 <code data-start=\"63\" data-end=\"75\">nginx.conf<\/code> \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645. \u062d\u0627\u0644\u0627 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u062f\u0627\u0646\u06cc\u0645 \u0647\u0631 \u0642\u0633\u0645\u062a \u0627\u0632 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"163\" data-end=\"166\" \/>\n<h2 data-section-id=\"ntj476\" data-start=\"168\" data-end=\"186\">\u0645\u0639\u0631\u0641\u06cc \u06af\u0648\u0627\u0647\u06cc SSL<\/h2>\n<p data-start=\"188\" data-end=\"254\">\u0627\u06cc\u0646 \u062f\u0648 \u062f\u0633\u062a\u0648\u0631 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc SSL \u0648 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>ssl_certificate \/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem;\r\nssl_certificate_key \/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"410\" data-end=\"540\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u062a\u0648\u0633\u0637 <strong data-start=\"440\" data-end=\"451\">Certbot<\/strong> \u0627\u0632 <strong data-start=\"455\" data-end=\"472\">Let&#8217;s Encrypt<\/strong> \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx \u062f\u0627\u062e\u0644 \u0622\u0646 Mount \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<hr data-start=\"542\" data-end=\"545\" \/>\n<h2 data-section-id=\"rn7b00\" data-start=\"547\" data-end=\"568\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc TLS<\/h2>\n<p data-start=\"570\" data-end=\"616\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0632\u06cc\u0631 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0645\u0646\u06cc\u062a \u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u0647\u0633\u062a\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>ssl_session_cache shared:le_nginx_SSL:10m;\r\nssl_session_timeout 1440m;\r\nssl_session_tickets off;\r\n\r\nssl_protocols TLSv1.2 TLSv1.3;\r\nssl_prefer_server_ciphers off;\r\n\r\nssl_ciphers \"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384\";<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1032\" data-end=\"1097\">\u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0648\u0633\u0637 \u067e\u0631\u0648\u0698\u0647 <strong data-start=\"1054\" data-end=\"1065\">Certbot<\/strong> \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u0646\u062f:<\/p>\n<ul data-start=\"1099\" data-end=\"1202\">\n<li data-section-id=\"1pf81s8\" data-start=\"1099\" data-end=\"1133\">\u0641\u0642\u0637 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0627\u0645\u0646 TLS \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u0646\u062f.<\/li>\n<li data-section-id=\"4smv38\" data-start=\"1134\" data-end=\"1164\">Cipher\u0647\u0627\u06cc \u0636\u0639\u06cc\u0641 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"v5vie2\" data-start=\"1165\" data-end=\"1202\">\u0627\u0645\u0646\u06cc\u062a \u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"1204\" data-end=\"1249\">\u062f\u0631 \u0627\u06a9\u062b\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0646\u06cc\u0633\u062a.<\/p>\n<hr data-start=\"1251\" data-end=\"1254\" \/>\n<h2 data-section-id=\"xhddcd\" data-start=\"1256\" data-end=\"1281\">\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062d\u062c\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627<\/h2>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>client_max_body_size 4G;\r\nkeepalive_timeout 5;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1343\" data-end=\"1376\">\u0627\u06cc\u0646 \u062f\u0648 \u062a\u0646\u0638\u06cc\u0645 \u0639\u0645\u0644\u06a9\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f:<\/p>\n<ul data-start=\"1378\" data-end=\"1534\">\n<li data-section-id=\"11lr9ld\" data-start=\"1378\" data-end=\"1452\"><code data-start=\"1380\" data-end=\"1402\">client_max_body_size<\/code> \u062d\u062f\u0627\u06a9\u062b\u0631 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1ti1r73\" data-start=\"1453\" data-end=\"1534\"><code data-start=\"1455\" data-end=\"1474\">keepalive_timeout<\/code> \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0628\u0627\u0632 \u0645\u0627\u0646\u062f\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648 Nginx \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"1536\" data-end=\"1627\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0642\u062f\u0627\u0631 <code data-start=\"1565\" data-end=\"1587\">client_max_body_size<\/code> \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"1629\" data-end=\"1632\" \/>\n<h2 data-section-id=\"1hzj4rz\" data-start=\"1634\" data-end=\"1663\">\u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 Django<\/h2>\n<p data-start=\"1665\" data-end=\"1697\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0628\u062e\u0634 \u0641\u0627\u06cc\u0644\u060c \u0642\u0633\u0645\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>location \/ {\r\n\r\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto $scheme;\r\n    proxy_set_header Host $http_host;\r\n\r\n    proxy_redirect off;\r\n\r\n    proxy_pass http:\/\/django;\r\n\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1937\" data-end=\"1994\">\u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u06a9\u0647 \u0628\u0647 \u0633\u0627\u06cc\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"1996\" data-end=\"2008\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n<ul data-start=\"2010\" data-end=\"2214\">\n<li data-section-id=\"1jbvywa\" data-start=\"2010\" data-end=\"2052\">IP \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0627\u06cc Django \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"uq8iri\" data-start=\"2053\" data-end=\"2102\">\u067e\u0631\u0648\u062a\u06a9\u0644 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 (HTTP \u06cc\u0627 HTTPS) \u062d\u0641\u0638 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"kr9mlc\" data-start=\"2103\" data-end=\"2135\">\u0645\u0642\u062f\u0627\u0631 Host \u0627\u0635\u0644\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"g2qwgu\" data-start=\"2136\" data-end=\"2214\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u06af\u0631\u0648\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc <code data-start=\"2162\" data-end=\"2170\">django<\/code> \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n<p data-start=\"2216\" data-end=\"2331\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0645\u062a\u0635\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u0628\u062a\u062f\u0627 \u062a\u0648\u0633\u0637 Nginx \u067e\u0631\u062f\u0627\u0632\u0634 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2333\" data-end=\"2336\" \/>\n<h2 data-section-id=\"1g6af9a\" data-start=\"2338\" data-end=\"2373\">\u0645\u0633\u06cc\u0631 \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc Let&#8217;s Encrypt<\/h2>\n<p data-start=\"2375\" data-end=\"2409\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>location ^~ \/.well-known\/acme-challenge\/ {\r\n    root \/var\/www\/html;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2494\" data-end=\"2571\">\u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0647\u0646\u06af\u0627\u0645 \u0635\u062f\u0648\u0631 \u06cc\u0627 \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc SSL \u062a\u0648\u0633\u0637 <strong data-start=\"2538\" data-end=\"2555\">Let&#8217;s Encrypt<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"2573\" data-end=\"2717\">\u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0627\u0645\u0646\u0647\u060c Certbot \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Let&#8217;s Encrypt \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0622\u0646\u200c\u0647\u0627 \u0645\u0627\u0644\u06a9\u06cc\u062a \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"2719\" data-end=\"2722\" \/>\n<h2 data-section-id=\"13m429m\" data-start=\"2724\" data-end=\"2752\">\u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx<\/h2>\n<p data-start=\"2754\" data-end=\"2797\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.<\/p>\n<blockquote data-start=\"2799\" data-end=\"2920\">\n<p data-start=\"2801\" data-end=\"2920\"><strong data-start=\"2801\" data-end=\"2810\">\u062a\u0648\u062c\u0647:<\/strong> \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0627\u062c\u0631\u0627\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0627 \u062e\u0637\u0627 \u0645\u062a\u0648\u0642\u0641 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u061b \u0632\u06cc\u0631\u0627 \u0647\u0646\u0648\u0632 \u06af\u0648\u0627\u0647\u06cc SSL \u0627\u06cc\u062c\u0627\u062f \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u06a9\u0627\u0645\u0644\u0627\u064b \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<p data-start=\"2922\" data-end=\"2945\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> nginx \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">443<\/span>:443 \\\r\n    <span class=\"\u037c12\">-v<\/span> ~\/conf\/nginx.conf:\/etc\/nginx\/conf.d\/nginx.conf:ro \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/www\/html:\/var\/www\/html \\\r\n    nginx:1.19.0<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3136\" data-end=\"3149\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"3151\" data-end=\"3389\">\n<li data-section-id=\"ch8vaz\" data-start=\"3151\" data-end=\"3208\">\u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc <strong data-start=\"3162\" data-end=\"3168\">80<\/strong> \u0648 <strong data-start=\"3171\" data-end=\"3178\">443<\/strong> \u0633\u0631\u0648\u0631 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"1s7auxg\" data-start=\"3209\" data-end=\"3255\">\u0641\u0627\u06cc\u0644 <code data-start=\"3216\" data-end=\"3228\">nginx.conf<\/code> \u062f\u0627\u062e\u0644 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Mount \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"9ve8yr\" data-start=\"3256\" data-end=\"3335\">\u067e\u0648\u0634\u0647 <code data-start=\"3263\" data-end=\"3278\">\/var\/www\/html<\/code> \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 Certbot \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/li>\n<li data-section-id=\"1f6yroz\" data-start=\"3336\" data-end=\"3389\">\u0627\u0632 \u0627\u06cc\u0645\u06cc\u062c \u0631\u0633\u0645\u06cc Nginx \u0646\u0633\u062e\u0647 <strong data-start=\"3363\" data-end=\"3373\">1.19.0<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n<p data-start=\"3391\" data-end=\"3468\">Docker \u0627\u0628\u062a\u062f\u0627 \u0627\u06cc\u0645\u06cc\u062c Nginx \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0633\u067e\u0633 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"3470\" data-end=\"3508\">\u0627\u0645\u0627 \u0686\u0648\u0646 \u0647\u0646\u0648\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem\r\n\/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3625\" data-end=\"3653\">Nginx \u0628\u0627 \u062e\u0637\u0627 \u0645\u062a\u0648\u0642\u0641 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p data-start=\"3655\" data-end=\"3788\" data-is-last-node=\"\" data-is-only-node=\"\">\u0627\u06cc\u0646 \u062e\u0637\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"3713\" data-end=\"3724\">Certbot<\/strong> \u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 Nginx \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1a4ojmd\" data-start=\"0\" data-end=\"64\">\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645 \u2014 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0628\u0627 Certbot \u0648 \u062a\u0646\u0638\u06cc\u0645 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631<\/h1>\n<p data-start=\"66\" data-end=\"147\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 Nginx \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627 \u0627\u0632 <strong data-start=\"117\" data-end=\"134\">Let&#8217;s Encrypt<\/strong> \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"149\" data-end=\"335\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 <strong data-start=\"165\" data-end=\"176\">Certbot<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u0627\u0628\u0632\u0627\u0631\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0628\u0646\u06cc\u0627\u062f <strong data-start=\"215\" data-end=\"255\">Electronic Frontier Foundation (EFF)<\/strong> \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0627\u0645\u06a9\u0627\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u062a\u0645\u062f\u06cc\u062f \u0631\u0627\u06cc\u06af\u0627\u0646 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc TLS\/SSL \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"337\" data-end=\"432\">\u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 Docker \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 Proxy \u0646\u0635\u0628 \u0627\u0633\u062a\u060c \u0627\u0632 \u0646\u0633\u062e\u0647 Dockerized \u0628\u0631\u0646\u0627\u0645\u0647 Certbot \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"434\" data-end=\"437\" \/>\n<h2 data-section-id=\"5z8x39\" data-start=\"439\" data-end=\"457\">\u0628\u0631\u0631\u0633\u06cc \u0631\u06a9\u0648\u0631\u062f DNS<\/h2>\n<p data-start=\"459\" data-end=\"533\">\u0642\u0628\u0644 \u0627\u0632 \u0647\u0631 \u0686\u06cc\u0632 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0628\u0647 IP \u0639\u0645\u0648\u0645\u06cc \u0633\u0631\u0648\u0631 Proxy \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"535\" data-end=\"545\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>your_domain.com  ---&gt;  Proxy Server Public IP<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"606\" data-end=\"706\">\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c Let&#8217;s Encrypt \u0642\u0627\u062f\u0631 \u0628\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0645\u0627\u0644\u06a9\u06cc\u062a \u062f\u0627\u0645\u0646\u0647 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"708\" data-end=\"711\" \/>\n<h2 data-section-id=\"1i4xx92\" data-start=\"713\" data-end=\"746\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc (Staging)<\/h2>\n<p data-start=\"748\" data-end=\"834\">\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u06af\u0648\u0627\u0647\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"836\" data-end=\"859\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-it<\/span> <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 <span class=\"\u037c12\">--name<\/span> certbot \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/etc\/letsencrypt:\/etc\/letsencrypt\"<\/span> \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt\"<\/span> \\\r\n    certbot\/certbot certonly <span class=\"\u037c12\">--standalone<\/span> <span class=\"\u037c12\">--staging<\/span> \\\r\n    <span class=\"\u037c12\">-d<\/span> your_domain.com<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1095\" data-end=\"1108\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"1110\" data-end=\"1390\">\n<li data-section-id=\"1emolcw\" data-start=\"1110\" data-end=\"1151\">\u067e\u0648\u0631\u062a 80 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 Certbot \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/li>\n<li data-section-id=\"1vac4v7\" data-start=\"1152\" data-end=\"1205\">\u067e\u0648\u0634\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 Mount \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"1wkzww0\" data-start=\"1206\" data-end=\"1277\">\u06af\u0632\u06cc\u0646\u0647 <code data-start=\"1214\" data-end=\"1228\">--standalone<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f Certbot \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 Nginx \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/li>\n<li data-section-id=\"hjq6by\" data-start=\"1278\" data-end=\"1390\">\u06af\u0632\u06cc\u0646\u0647 <code data-start=\"1286\" data-end=\"1297\">--staging<\/code> \u0627\u0632 \u0633\u0631\u0648\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc Let&#8217;s Encrypt \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0635\u062f\u0648\u0631 \u06af\u0648\u0627\u0647\u06cc \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0634\u0627\u0645\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1392\" data-end=\"1395\" \/>\n<h2 data-section-id=\"1jdzryg\" data-start=\"1397\" data-end=\"1419\">\u062a\u06a9\u0645\u06cc\u0644 \u0645\u0631\u0627\u062d\u0644 Certbot<\/h2>\n<p data-start=\"1421\" data-end=\"1472\">\u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0627\u062c\u0631\u0627\u060c Certbot \u0686\u0646\u062f \u0633\u0624\u0627\u0644 \u0627\u0632 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u062f \u067e\u0631\u0633\u06cc\u062f:<\/p>\n<ul data-start=\"1474\" data-end=\"1532\">\n<li data-section-id=\"kvfy9t\" data-start=\"1474\" data-end=\"1486\">\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644<\/li>\n<li data-section-id=\"xkuokd\" data-start=\"1487\" data-end=\"1532\">\u0645\u0648\u0627\u0641\u0642\u062a \u0628\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 (Terms of Service)<\/li>\n<\/ul>\n<p data-start=\"1534\" data-end=\"1587\">\u067e\u0633 \u0627\u0632 \u062a\u0623\u06cc\u06cc\u062f \u062f\u0627\u0645\u0646\u0647\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Congratulations!\r\n\r\nYour certificate and chain have been saved at:\r\n\r\n\/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem\r\n\r\nYour key file has been saved at:\r\n\r\n\/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1805\" data-end=\"1867\">\u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1869\" data-end=\"1872\" \/>\n<h2 data-section-id=\"1qd01x3\" data-start=\"1874\" data-end=\"1893\">\u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u06af\u0648\u0627\u0647\u06cc<\/h2>\n<p data-start=\"1895\" data-end=\"1962\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> <span class=\"\u037c10\">cat<\/span> \/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2038\" data-end=\"2098\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc\u060c \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2100\" data-end=\"2103\" \/>\n<h2 data-section-id=\"avgp2j\" data-start=\"2105\" data-end=\"2124\">\u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f Nginx<\/h2>\n<p data-start=\"2126\" data-end=\"2200\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc SSL \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\u200c\u0627\u0646\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Nginx \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> nginx \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">443<\/span>:443 \\\r\n    <span class=\"\u037c12\">-v<\/span> ~\/conf\/nginx.conf:\/etc\/nginx\/conf.d\/nginx.conf:ro \\\r\n    <span class=\"\u037c12\">-v<\/span> \/etc\/letsencrypt:\/etc\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/www\/html:\/var\/www\/html \\\r\n    nginx:1.19.0<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2485\" data-end=\"2591\">\u0628\u0631\u062e\u0644\u0627\u0641 \u0627\u062c\u0631\u0627\u06cc \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646 \u0628\u0627\u0631 Nginx \u0628\u062f\u0648\u0646 \u062e\u0637\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f\u061b \u0632\u06cc\u0631\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc SSL \u062f\u0631 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f.<\/p>\n<hr data-start=\"2593\" data-end=\"2596\" \/>\n<h2 data-section-id=\"1rnk6bd\" data-start=\"2598\" data-end=\"2612\">\u0628\u0631\u0631\u0633\u06cc HTTPS<\/h2>\n<p data-start=\"2614\" data-end=\"2660\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0648\u0627\u0631\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0634\u0648\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/your_domain.com<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2698\" data-end=\"2747\">\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0647\u0634\u062f\u0627\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u062f.<\/p>\n<p data-start=\"2749\" data-end=\"2877\">\u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0647\u0646\u0648\u0632 \u0627\u0632 <strong data-start=\"2783\" data-end=\"2822\">\u06af\u0648\u0627\u0647\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc (Staging Certificate)<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627 \u0645\u0639\u062a\u0628\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"2879\" data-end=\"2958\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 HTTPS \u0647\u062f\u0627\u06cc\u062a \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2960\" data-end=\"2963\" \/>\n<h2 data-section-id=\"nsc10o\" data-start=\"2965\" data-end=\"2998\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc \u0627\u0635\u0644\u06cc (Production)<\/h2>\n<p data-start=\"3000\" data-end=\"3038\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"3040\" data-end=\"3093\">\u0627\u0628\u062a\u062f\u0627 \u0627\u062c\u0631\u0627\u06cc Nginx \u0631\u0627 \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>CTRL + C<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3117\" data-end=\"3195\">\u0633\u067e\u0633 \u0647\u0645\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u06af\u0632\u06cc\u0646\u0647 <code data-start=\"3168\" data-end=\"3179\">--staging<\/code> \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-it<\/span> <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 <span class=\"\u037c12\">--name<\/span> certbot \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/etc\/letsencrypt:\/etc\/letsencrypt\"<\/span> \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt\"<\/span> \\\r\n    certbot\/certbot certonly <span class=\"\u037c12\">--standalone<\/span> \\\r\n    <span class=\"\u037c12\">-d<\/span> your_domain.com<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3421\" data-end=\"3526\">\u0627\u06af\u0631 Certbot \u0627\u0632 \u0634\u0645\u0627 \u067e\u0631\u0633\u06cc\u062f \u06a9\u0647 \u06af\u0648\u0627\u0647\u06cc \u0642\u0628\u0644\u06cc \u062d\u0641\u0638 \u0634\u0648\u062f \u06cc\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06af\u0631\u062f\u062f\u060c \u06af\u0632\u06cc\u0646\u0647 <strong data-start=\"3491\" data-end=\"3496\">2<\/strong> \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0648 Enter \u0628\u0632\u0646\u06cc\u062f.<\/p>\n<p data-start=\"3528\" data-end=\"3590\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u06af\u0648\u0627\u0647\u06cc \u0645\u0639\u062a\u0628\u0631 Let&#8217;s Encrypt \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"3jkfx8\" data-start=\"0\" data-end=\"28\">\u0627\u062c\u0631\u0627\u06cc Nginx \u0628\u0627 \u06af\u0648\u0627\u0647\u06cc \u0627\u0635\u0644\u06cc<\/h2>\n<p data-start=\"30\" data-end=\"82\">\u067e\u0633 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc \u0645\u0639\u062a\u0628\u0631\u060c \u062f\u0648\u0628\u0627\u0631\u0647 Nginx \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> nginx \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">443<\/span>:443 \\\r\n    <span class=\"\u037c12\">-v<\/span> ~\/conf\/nginx.conf:\/etc\/nginx\/conf.d\/nginx.conf:ro \\\r\n    <span class=\"\u037c12\">-v<\/span> \/etc\/letsencrypt:\/etc\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/www\/html:\/var\/www\/html \\\r\n    nginx:1.19.0<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"367\" data-end=\"413\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0648\u0627\u0631\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0634\u0648\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/your_domain.com<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"451\" data-end=\"542\">\u062f\u0631 \u0646\u0648\u0627\u0631 \u0622\u062f\u0631\u0633 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 HTTPS \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"544\" data-end=\"695\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631 <code data-start=\"580\" data-end=\"583\">\/<\/code> \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u06a9\u0631\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0628\u0627 \u062e\u0637\u0627\u06cc <strong data-start=\"626\" data-end=\"648\">404 Page Not Found<\/strong> \u0627\u0632 Django \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a.<\/p>\n<p data-start=\"697\" data-end=\"724\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/your_domain.com\/polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"769\" data-end=\"859\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0635\u0641\u062d\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p data-start=\"861\" data-end=\"874\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647:<\/p>\n<ul data-start=\"876\" data-end=\"1010\">\n<li data-section-id=\"x5gbxm\" data-start=\"876\" data-end=\"914\">\u0627\u0631\u062a\u0628\u0627\u0637 \u0633\u0627\u06cc\u062a \u0628\u0627 HTTPS \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"j251yt\" data-start=\"915\" data-end=\"955\">\u06af\u0648\u0627\u0647\u06cc \u0645\u0639\u062a\u0628\u0631 Let&#8217;s Encrypt \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"oly3f\" data-start=\"956\" data-end=\"1010\">Nginx \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1012\" data-end=\"1015\" \/>\n<h2 data-section-id=\"1a1rv6f\" data-start=\"1017\" data-end=\"1042\">\u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc SSL<\/h2>\n<p data-start=\"1044\" data-end=\"1167\">\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0635\u0627\u062f\u0631 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Let&#8217;s Encrypt \u062a\u0646\u0647\u0627 <strong data-start=\"1087\" data-end=\"1097\">\u06f9\u06f0 \u0631\u0648\u0632<\/strong> \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0627\u0631\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u067e\u06cc\u0634 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062a\u0645\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1169\" data-end=\"1310\">\u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0627\u06a9\u0646\u0648\u0646 Nginx \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a\u060c \u062f\u06cc\u06af\u0631 \u0646\u0628\u0627\u06cc\u062f Certbot \u0631\u0627 \u0628\u0627 \u062d\u0627\u0644\u062a <code data-start=\"1237\" data-end=\"1249\">standalone<\/code> \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0627\u0632 \u062d\u0627\u0644\u062a <strong data-start=\"1282\" data-end=\"1293\">Webroot<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"1312\" data-end=\"1377\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c Certbot \u0641\u0627\u06cc\u0644 \u062a\u0623\u06cc\u06cc\u062f \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>\/var\/www\/html\/.well-known\/acme-challenge\/<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1434\" data-end=\"1551\">\u0648 \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"1456\" data-end=\"1468\">nginx.conf<\/code> \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645\u060c Nginx \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 Let&#8217;s Encrypt \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"1553\" data-end=\"1556\" \/>\n<h2 data-section-id=\"1obrwnb\" data-start=\"1558\" data-end=\"1584\">\u0627\u062c\u0631\u0627\u06cc Nginx \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647<\/h2>\n<p data-start=\"1586\" data-end=\"1644\">\u0627\u0628\u062a\u062f\u0627 \u0627\u062c\u0631\u0627\u06cc \u0641\u0639\u0644\u06cc Nginx \u0631\u0627 \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>CTRL + C<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1668\" data-end=\"1705\">\u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Detached \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> nginx <span class=\"\u037c12\">-d<\/span> \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:80 \\\r\n    <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">443<\/span>:443 \\\r\n    <span class=\"\u037c12\">-v<\/span> ~\/conf\/nginx.conf:\/etc\/nginx\/conf.d\/nginx.conf:ro \\\r\n    <span class=\"\u037c12\">-v<\/span> \/etc\/letsencrypt:\/etc\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt \\\r\n    <span class=\"\u037c12\">-v<\/span> \/var\/www\/html:\/var\/www\/html \\\r\n    nginx:1.19.0<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1993\" data-end=\"2066\">\u0627\u06a9\u0646\u0648\u0646 Nginx \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0628\u0627 \u062e\u0631\u0648\u062c \u0627\u0632 SSH \u0646\u06cc\u0632 \u0645\u062a\u0648\u0642\u0641 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2068\" data-end=\"2071\" \/>\n<h2 data-section-id=\"s26cuh\" data-start=\"2073\" data-end=\"2098\">\u062a\u0633\u062a \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc<\/h2>\n<p data-start=\"2100\" data-end=\"2161\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0635\u062d\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u062a\u0633\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-it<\/span> <span class=\"\u037c12\">--rm<\/span> <span class=\"\u037c12\">--name<\/span> certbot \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/etc\/letsencrypt:\/etc\/letsencrypt\"<\/span> \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/var\/lib\/letsencrypt:\/var\/lib\/letsencrypt\"<\/span> \\\r\n    <span class=\"\u037c12\">-v<\/span> <span class=\"\u037cz\">\"\/var\/www\/html:\/var\/www\/html\"<\/span> \\\r\n    certbot\/certbot renew \\\r\n    <span class=\"\u037c12\">--webroot<\/span> \\\r\n    <span class=\"\u037c12\">-w<\/span> \/var\/www\/html \\\r\n    <span class=\"\u037c12\">--dry-run<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2431\" data-end=\"2444\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"2446\" data-end=\"2624\">\n<li data-section-id=\"1jmgc22\" data-start=\"2446\" data-end=\"2484\">\u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 <code data-start=\"2458\" data-end=\"2467\">webroot<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"c71l78\" data-start=\"2485\" data-end=\"2525\">\u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1a18gg0\" data-start=\"2526\" data-end=\"2624\">\u06af\u0632\u06cc\u0646\u0647 <code data-start=\"2534\" data-end=\"2545\">--dry-run<\/code> \u0641\u0642\u0637 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0645\u062f\u06cc\u062f \u0631\u0627 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u06af\u0648\u0627\u0647\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/li>\n<\/ul>\n<p data-start=\"2626\" data-end=\"2703\">\u0627\u06af\u0631 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Congratulations, all renewals succeeded.<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2759\" data-end=\"2833\">\u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc \u062f\u0631 \u0632\u0645\u0627\u0646 \u0645\u0642\u0631\u0631 \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2835\" data-end=\"2838\" \/>\n<h2 data-section-id=\"1x8zp3l\" data-start=\"2840\" data-end=\"2870\">\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u062c\u062f\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/h2>\n<p data-start=\"2872\" data-end=\"2936\">\u067e\u0633 \u0627\u0632 \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a Nginx \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u062f.<\/p>\n<p data-start=\"2938\" data-end=\"2983\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker <span class=\"\u037c10\">kill<\/span> <span class=\"\u037c12\">-s<\/span> HUP nginx<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3023\" data-end=\"3080\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0633\u06cc\u06af\u0646\u0627\u0644 <strong data-start=\"3040\" data-end=\"3047\">HUP<\/strong> \u0631\u0627 \u0628\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 Nginx \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"3082\" data-end=\"3243\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0648\u0642\u0641 \u06cc\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c Nginx \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u06af\u0648\u0627\u0647\u06cc SSL \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \u0648 \u0633\u0631\u0648\u06cc\u0633 \u0628\u062f\u0648\u0646 \u0642\u0637\u0639\u06cc \u0628\u0647 \u06a9\u0627\u0631 \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"va6tt8\" data-start=\"0\" data-end=\"57\">\u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645 \u2014 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django<\/h1>\n<p data-start=\"59\" data-end=\"152\">\u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u062a\u0645\u0627\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u062f\u0631 \u0633\u0631\u0648\u0631 <strong data-start=\"106\" data-end=\"115\">Nginx<\/strong> \u062e\u0627\u062a\u0645\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f (SSL Termination).<\/p>\n<p data-start=\"154\" data-end=\"168\">\u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631:<\/p>\n<ul data-start=\"170\" data-end=\"329\">\n<li data-section-id=\"1alyyvb\" data-start=\"170\" data-end=\"213\">\u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTPS \u0628\u0647 Nginx \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1poqg6c\" data-start=\"214\" data-end=\"261\">Nginx \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0631\u0627 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1ouu3iz\" data-start=\"262\" data-end=\"329\">\u0633\u067e\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0634\u0628\u06a9\u0647 \u062f\u0627\u062e\u0644\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"331\" data-end=\"388\">\u0628\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0646\u0627\u0633\u0628 \u0648 \u0627\u06cc\u0645\u0646 \u0627\u0633\u062a.<\/p>\n<p data-start=\"390\" data-end=\"642\">\u0627\u06af\u0631 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0648\u0633\u0639\u0647 \u0633\u0627\u0645\u0627\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631 \u062d\u0633\u0627\u0633 \u0645\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627\u0646\u06a9\u06cc \u06cc\u0627 \u067e\u0632\u0634\u06a9\u06cc \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <strong data-start=\"491\" data-end=\"516\">End-to-End Encryption<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 Nginx \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0646\u06cc\u0632 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0634\u0648\u062f. \u0627\u0644\u0628\u062a\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u062e\u0627\u0631\u062c \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u0647 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"644\" data-end=\"647\" \/>\n<h2 data-section-id=\"eybsom\" data-start=\"649\" data-end=\"707\">\u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0646\u06cc\u0645\u061f<\/h2>\n<p data-start=\"709\" data-end=\"783\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"785\" data-end=\"827\">\u0645\u0633\u06cc\u0631 \u0635\u062d\u06cc\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>Client\r\n    \u2502\r\n HTTPS\r\n    \u2502\r\nNginx Reverse Proxy\r\n    \u2502\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\u2502             \u2502\r\nDjango 1   Django 2<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"946\" data-end=\"1003\">\u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0628\u062a\u0648\u0627\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0634\u0648\u062f:<\/p>\n<ul data-start=\"1005\" data-end=\"1093\">\n<li data-section-id=\"fwrs0e\" data-start=\"1005\" data-end=\"1036\">Load Balancer \u062f\u0648\u0631 \u0632\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1ngdt2v\" data-start=\"1037\" data-end=\"1060\">HTTPS \u062f\u0648\u0631 \u0632\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"g08g11\" data-start=\"1061\" data-end=\"1093\">\u0627\u0645\u0646\u06cc\u062a \u0645\u0639\u0645\u0627\u0631\u06cc \u06a9\u0627\u0647\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1095\" data-end=\"1098\" \/>\n<h2 data-section-id=\"1bu0sqp\" data-start=\"1100\" data-end=\"1120\">\u0645\u0634\u06a9\u0644 Docker \u0648 UFW<\/h2>\n<p data-start=\"1122\" data-end=\"1217\">\u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 Docker \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 <strong data-start=\"1191\" data-end=\"1198\">UFW<\/strong> \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n<p data-start=\"1219\" data-end=\"1252\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>docker run <span class=\"\u037c12\">-p<\/span> <span class=\"\u037cy\">80<\/span>:8000 polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1295\" data-end=\"1388\">\u067e\u0648\u0631\u062a 80 \u0633\u0631\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u062d\u062a\u06cc \u0627\u06af\u0631 \u062f\u0631 UFW \u0642\u0627\u0646\u0648\u0646\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0646\u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p data-start=\"1390\" data-end=\"1416\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"1418\" data-end=\"1544\">\n<li data-section-id=\"xufl1x\" data-start=\"1418\" data-end=\"1466\">\u0627\u0632 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0627\u0628\u0631\u06cc <strong data-start=\"1436\" data-end=\"1452\">Parmin Cloud<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"vclp8o\" data-start=\"1467\" data-end=\"1512\">\u06cc\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 iptables \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"3m8mxr\" data-start=\"1513\" data-end=\"1544\">\u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a UFW \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"1546\" data-end=\"1586\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 \u0631\u0648\u0634 \u0633\u0648\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<hr data-start=\"1588\" data-end=\"1591\" \/>\n<h2 data-section-id=\"16bllg6\" data-start=\"1593\" data-end=\"1619\">\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0627\u06cc\u0644 after.rules<\/h2>\n<p data-start=\"1621\" data-end=\"1655\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0627\u0648\u0644\u06cc\u0646 \u0633\u0631\u0648\u0631 Django \u0634\u0648\u06cc\u062f.<\/p>\n<p data-start=\"1657\" data-end=\"1682\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> nano \/etc\/ufw\/after.rules<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1728\" data-end=\"1810\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0642\u0628\u0644 \u0627\u0632 \u062e\u0637 <code data-start=\"1754\" data-end=\"1762\">COMMIT<\/code> \u06cc\u0627 \u0628\u0639\u062f \u0627\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0645\u0648\u062c\u0648\u062f\u060c \u0628\u0644\u0648\u06a9 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code># BEGIN UFW AND DOCKER\r\n*filter\r\n:ufw-user-forward - [0:0]\r\n:DOCKER-USER - [0:0]\r\n\r\n-A DOCKER-USER -j RETURN -s 10.0.0.0\/8\r\n-A DOCKER-USER -j RETURN -s 172.16.0.0\/12\r\n-A DOCKER-USER -j RETURN -s 192.168.0.0\/16\r\n\r\n-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN\r\n\r\n-A DOCKER-USER -j ufw-user-forward\r\n\r\n-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0\/16\r\n-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0\/8\r\n-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0\/12\r\n\r\n-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0\/16\r\n-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0\/8\r\n-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0\/12\r\n\r\n-A DOCKER-USER -j RETURN\r\nCOMMIT\r\n# END UFW AND DOCKER<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2654\" data-end=\"2657\" \/>\n<h2 data-section-id=\"12sru5r\" data-start=\"2659\" data-end=\"2695\">\u0627\u06cc\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u061f<\/h2>\n<p data-start=\"2697\" data-end=\"2727\">\u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"2729\" data-end=\"2914\">\n<li data-section-id=\"14fqtw7\" data-start=\"2729\" data-end=\"2768\">\u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u062f\u0627\u062e\u0644\u06cc \u0634\u0628\u06a9\u0647 \u062e\u0635\u0648\u0635\u06cc \u0645\u062c\u0627\u0632 \u0628\u0627\u0634\u0646\u062f.<\/li>\n<li data-section-id=\"fia9um\" data-start=\"2769\" data-end=\"2823\">\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631 Proxy \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0628\u0631\u0642\u0631\u0627\u0631 \u0628\u0645\u0627\u0646\u062f.<\/li>\n<li data-section-id=\"1l3tv4g\" data-start=\"2824\" data-end=\"2914\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 Docker \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"2916\" data-end=\"2987\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062a\u0646\u0647\u0627 Nginx \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f.<\/p>\n<blockquote data-start=\"2989\" data-end=\"3123\">\n<p data-start=\"2991\" data-end=\"3123\">\u0627\u06af\u0631 \u0627\u0632 <strong data-start=\"2998\" data-end=\"3031\">\u0634\u0628\u06a9\u0647 \u062e\u0635\u0648\u0635\u06cc Parmin Cloud (VPC)<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0633\u062a\u0646\u062f\u061b \u0632\u06cc\u0631\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u062e\u0644\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0631\u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"3125\" data-end=\"3128\" \/>\n<h2 data-section-id=\"183s28k\" data-start=\"3130\" data-end=\"3164\">\u0627\u06af\u0631 \u0627\u0632 IP \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f<\/h2>\n<p data-start=\"3166\" data-end=\"3383\">\u0627\u06af\u0631 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"3178\" data-end=\"3190\">nginx.conf<\/code> \u0628\u0647\u200c\u062c\u0627\u06cc IP \u062e\u0635\u0648\u0635\u06cc\u060c IP \u0639\u0645\u0648\u0645\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0631\u0627 \u062f\u0631 \u0628\u062e\u0634 <code data-start=\"3242\" data-end=\"3252\">upstream<\/code> \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627\u0644\u0627\u060c \u06cc\u06a9 \u0642\u0627\u0646\u0648\u0646 \u062f\u0631 UFW \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0642\u0637 \u0633\u0631\u0648\u0631 Nginx \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u067e\u0648\u0631\u062a 80 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n<p data-start=\"3385\" data-end=\"3442\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0639\u0627\u062f\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u0633\u062f\u0648\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"3444\" data-end=\"3447\" \/>\n<h2 data-section-id=\"di9gdp\" data-start=\"3449\" data-end=\"3465\">\u0627\u0639\u0645\u0627\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/h2>\n<p data-start=\"3467\" data-end=\"3521\">\u067e\u0633 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644\u060c \u0633\u0631\u0648\u06cc\u0633 UFW \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> systemctl <span class=\"\u037c10\">restart<\/span> ufw<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3563\" data-end=\"3566\" \/>\n<h2 data-section-id=\"1idawc9\" data-start=\"3568\" data-end=\"3582\">\u0628\u0631\u0631\u0633\u06cc \u0646\u062a\u06cc\u062c\u0647<\/h2>\n<p data-start=\"3584\" data-end=\"3625\">\u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>http:\/\/APP_SERVER_1_IP<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3663\" data-end=\"3761\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062f\u06cc\u06af\u0631 \u0646\u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u0631 Django \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"3763\" data-end=\"3766\" \/>\n<h2 data-section-id=\"v730a8\" data-start=\"3768\" data-end=\"3796\">\u062a\u06a9\u0631\u0627\u0631 \u0645\u0631\u0627\u062d\u0644 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u062f\u0648\u0645<\/h2>\n<p data-start=\"3798\" data-end=\"3854\">\u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0628\u0627\u0644\u0627 \u0631\u0627 \u0631\u0648\u06cc \u062f\u0648\u0645\u06cc\u0646 \u0633\u0631\u0648\u0631 Django \u0646\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> nano \/etc\/ufw\/after.rules<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3900\" data-end=\"3932\">\u0628\u0644\u0648\u06a9 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"relative h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037c10\">sudo<\/span> systemctl <span class=\"\u037c10\">restart<\/span> ufw<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3974\" data-end=\"3977\" \/>\n<h2 data-section-id=\"rekrxs\" data-start=\"3979\" data-end=\"3991\">\u062a\u0633\u062a \u0646\u0647\u0627\u06cc\u06cc<\/h2>\n<p data-start=\"3993\" data-end=\"4030\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0622\u062f\u0631\u0633 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/your_domain.com\/polls<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4075\" data-end=\"4127\">\u0627\u06af\u0631 \u0635\u0641\u062d\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Polls \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u06cc\u0639\u0646\u06cc:<\/p>\n<ul data-start=\"4129\" data-end=\"4326\" data-is-last-node=\"\" data-is-only-node=\"\">\n<li data-section-id=\"yyhpnc\" data-start=\"4129\" data-end=\"4184\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u06cc\u06af\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0646\u062f\u0627\u0631\u0646\u062f.<\/li>\n<li data-section-id=\"1klkr41\" data-start=\"4185\" data-end=\"4230\">\u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n<li data-section-id=\"1s13tyj\" data-start=\"4231\" data-end=\"4257\">\u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u0628\u0631\u0642\u0631\u0627\u0631 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1cdca7j\" data-start=\"4258\" data-end=\"4326\" data-is-last-node=\"\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u06cc\u0646 \u062f\u0648 \u0633\u0631\u0648\u0631 Django \u0628\u0647\u200c\u0635\u0648\u0631\u062a Load Balanced \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3660\" data-end=\"3663\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"qpvq47\" data-start=\"0\" data-end=\"10\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h1>\n<p data-start=\"12\" data-end=\"165\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 <strong data-start=\"52\" data-end=\"62\">Django<\/strong> \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0627\u06cc\u0645\u0646\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"107\" data-end=\"117\">Docker<\/strong>\u060c <strong data-start=\"119\" data-end=\"128\">Nginx<\/strong> \u0648 <strong data-start=\"131\" data-end=\"148\">Let&#8217;s Encrypt<\/strong> \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"167\" data-end=\"179\">\u062f\u0631 \u0637\u0648\u0644 \u0645\u0633\u06cc\u0631:<\/p>\n<ul data-start=\"181\" data-end=\"584\">\n<li data-section-id=\"1qfjal1\" data-start=\"181\" data-end=\"242\">\u062f\u0648 \u0633\u0631\u0648\u0631 \u0645\u062c\u0632\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Django \u0648 Gunicorn \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645.<\/li>\n<li data-section-id=\"17b9ac1\" data-start=\"243\" data-end=\"318\">\u06cc\u06a9 \u0633\u0631\u0648\u0631 Proxy \u0628\u0627 Nginx \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"10tpwf1\" data-start=\"319\" data-end=\"390\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Certbot \u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0632 Let&#8217;s Encrypt \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u0645.<\/li>\n<li data-section-id=\"yr0zv4\" data-start=\"391\" data-end=\"466\">\u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0627\u0645\u06a9\u0627\u0646 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0633\u0627\u062e\u062a\u06cc\u0645.<\/li>\n<li data-section-id=\"hr5ogy\" data-start=\"467\" data-end=\"584\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Django \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u062a\u0646\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u067e\u0631\u062f\u0627\u0632\u0634 \u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"586\" data-end=\"589\" \/>\n<h2 data-section-id=\"1cjvepu\" data-start=\"591\" data-end=\"629\">\u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u0686\u06af\u0648\u0646\u0647 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/h2>\n<p data-start=\"631\" data-end=\"697\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0632\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631\u060c \u0627\u0645\u06a9\u0627\u0646 \u062a\u0648\u0633\u0639\u0647 \u0645\u0633\u062a\u0642\u0644 \u0647\u0631 \u0628\u062e\u0634 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a.<\/p>\n<p data-start=\"699\" data-end=\"768\">\u0628\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0644\u0627\u06cc\u0647 \u0631\u0627 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0645\u0642\u06cc\u0627\u0633\u200c\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"770\" data-end=\"926\">\n<li data-section-id=\"9uwgkf\" data-start=\"770\" data-end=\"814\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Django<\/li>\n<li data-section-id=\"tyevow\" data-start=\"815\" data-end=\"885\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0639\u062f\u0627\u062f \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Nginx \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Load Balancer \u062f\u0631 \u0644\u0627\u06cc\u0647 Proxy<\/li>\n<li data-section-id=\"ci6nky\" data-start=\"886\" data-end=\"926\">\u0627\u0631\u062a\u0642\u0627\u0621 \u06cc\u0627 \u062a\u0648\u0632\u06cc\u0639 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL<\/li>\n<\/ul>\n<p data-start=\"928\" data-end=\"1017\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u062f\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u0627\u0633\u06cc \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc\u060c \u0638\u0631\u0641\u06cc\u062a \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647\u200c\u0645\u0631\u0648\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"1019\" data-end=\"1022\" \/>\n<h2 data-section-id=\"133nvm5\" data-start=\"1024\" data-end=\"1049\">\u0628\u0647\u0628\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627<\/h2>\n<p data-start=\"1051\" data-end=\"1243\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u200c\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0631\u06cc\u0628\u0648\u062a \u0634\u062f\u0646 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u062a\u0648\u0642\u0641 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n<p data-start=\"1245\" data-end=\"1307\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1309\" data-end=\"1430\">\n<li data-section-id=\"i1bsvu\" data-start=\"1309\" data-end=\"1346\">\u0642\u0627\u0628\u0644\u06cc\u062a <strong data-start=\"1318\" data-end=\"1336\">Restart Policy<\/strong> \u062f\u0631 Docker<\/li>\n<li data-section-id=\"70aepo\" data-start=\"1347\" data-end=\"1370\">\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc <strong data-start=\"1359\" data-end=\"1370\">systemd<\/strong><\/li>\n<li data-section-id=\"np7mwc\" data-start=\"1371\" data-end=\"1430\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc Orchestration \u0645\u0627\u0646\u0646\u062f Docker Compose \u06cc\u0627 Kubernetes<\/li>\n<\/ul>\n<hr data-start=\"1432\" data-end=\"1435\" \/>\n<h2 data-section-id=\"1dvtbdu\" data-start=\"1437\" data-end=\"1458\">\u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/h2>\n<p data-start=\"1460\" data-end=\"1566\">\u0627\u06af\u0631 \u0642\u0631\u0627\u0631 \u0628\u0627\u0634\u062f \u0647\u0645\u06cc\u0646 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0631\u0627 \u0631\u0648\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0648 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627\u0633\u062a.<\/p>\n<p data-start=\"1568\" data-end=\"1648\">\u062f\u0631 \u0686\u0646\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"1650\" data-end=\"1675\">\n<li data-section-id=\"1c7x4t2\" data-start=\"1650\" data-end=\"1659\">Ansible<\/li>\n<li data-section-id=\"1j4177k\" data-start=\"1660\" data-end=\"1666\">Chef<\/li>\n<li data-section-id=\"2yjpks\" data-start=\"1667\" data-end=\"1675\">Puppet<\/li>\n<\/ul>\n<p data-start=\"1677\" data-end=\"1758\">\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0648\u06cc \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"1760\" data-end=\"1763\" \/>\n<h2 data-section-id=\"1qmyi65\" data-start=\"1765\" data-end=\"1801\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u062e\u0635\u0648\u0635\u06cc \u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627<\/h2>\n<p data-start=\"1803\" data-end=\"1866\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u06cc\u0645\u06cc\u062c Docker \u0631\u0648\u06cc \u0647\u0631 \u0633\u0631\u0648\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f.<\/p>\n<p data-start=\"1868\" data-end=\"1991\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u06cc\u0645\u06cc\u062c \u06cc\u06a9\u200c\u0628\u0627\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 Registry \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u0631\u0647\u0627 \u0647\u0645\u0627\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<p data-start=\"1993\" data-end=\"2126\">\u062f\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a <strong data-start=\"2004\" data-end=\"2020\">Parmin Cloud<\/strong> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 Mirror\u0647\u0627\u06cc \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627 \u0628\u0627 \u0633\u0631\u0639\u062a \u0628\u06cc\u0634\u062a\u0631 \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0628\u0627\u0644\u0627\u062a\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f.<\/p>\n<p data-start=\"2128\" data-end=\"2168\">\u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0627\u06cc\u0646 Mirror\u0647\u0627 \u0639\u0628\u0627\u0631\u062a\u200c\u0627\u0646\u062f \u0627\u0632:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>hub.cr.parmincloud.ir\r\nghcr.cr.parmincloud.ir\r\nquay.cr.parmincloud.ir\r\ngcr.cr.parmincloud.ir\r\nk8s.cr.parmincloud.ir\r\ngitlab.cr.parmincloud.ir<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2320\" data-end=\"2415\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 Mirror\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<h3 data-section-id=\"1oczr5v\" data-start=\"2417\" data-end=\"2434\">Python (PyPI)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/pypi.parmincloud.ir\/simple\/<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-section-id=\"3lj9kz\" data-start=\"2485\" data-end=\"2502\">Node.js (NPM)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/npm.parmincloud.ir<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-section-id=\"1aircs\" data-start=\"2544\" data-end=\"2556\">Composer<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"contents\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-(--code-block-surface) corner-superellipse\/1.1 overflow-clip rounded-3xl [--code-block-surface:var(--bg-elevated-secondary)] dark:[--code-block-surface:var(--composer-surface-primary)] lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cs \u037c16\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>https:\/\/composer.parmincloud.ir<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<div class=\"\"><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div>\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u062f\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 (Scalable) \u0648 \u0627\u06cc\u0645\u0646 (Secure) \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0627\u0641\u0642\u06cc (Horizontal Scaling) \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0646\u0627\u0628\u0639 \u06cc\u06a9 \u0633\u0631\u0648\u0631\u060c \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 (Instance) \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 Django \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u060c \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u062f\u0631 \u0635\u0648\u0631\u062a &hellip;<\/p>\n","protected":false},"author":9,"featured_media":6630,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142,131],"tags":[],"class_list":["post-6629","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-142","category-131"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6629","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=6629"}],"version-history":[{"count":0,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6629\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6630"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}