{"id":6656,"date":"2026-07-18T11:00:44","date_gmt":"2026-07-18T07:30:44","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6656"},"modified":"2026-07-18T11:00:44","modified_gmt":"2026-07-18T07:30:44","slug":"%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-node-js-%d8%a8%d8%b1%d8%a7%db%8c-%d9%85%d8%ad%db%8c%d8%b7-production-%d8%b1%d9%88%db%8c-ubuntu-24-04-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-node-js-%d8%a8%d8%b1%d8%a7%db%8c-%d9%85%d8%ad%db%8c%d8%b7-production-%d8%b1%d9%88%db%8c-ubuntu-24-04-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa\/","title":{"rendered":"\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Node.js \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 Production \u0631\u0648\u06cc Ubuntu 24.04 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PM2\u060c Nginx\u060c SSL \u0648 UFW"},"content":{"rendered":"<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"43f4r3\" data-start=\"96\" data-end=\"104\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n<p data-start=\"106\" data-end=\"303\">\u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0634\u062e\u0635\u06cc \u062a\u0646\u0647\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0631\u0627\u06cc\u0637 \u0645\u062d\u06cc\u0637 Production \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"305\" data-end=\"519\">\u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0635\u0648\u0631\u062a Crash \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0631\u0642\u0631\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f \u0631\u0627 \u0628\u062f\u0648\u0646 \u0627\u062e\u062a\u0644\u0627\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062d\u0645\u0644\u0627\u062a \u0631\u0627\u06cc\u062c \u0646\u06cc\u0632 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0627\u06cc\u0645\u0646 \u0628\u0627\u0634\u062f.<\/p>\n<p data-start=\"521\" data-end=\"648\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 Production \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0631\u0648\u06cc <strong data-start=\"616\" data-end=\"636\">Ubuntu 24.04 LTS<\/strong> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"650\" data-end=\"699\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f:<\/p>\n<ul data-start=\"701\" data-end=\"921\">\n<li data-section-id=\"18qhz5y\" data-start=\"701\" data-end=\"732\"><strong data-start=\"703\" data-end=\"714\">Node.js<\/strong> \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"18bj94e\" data-start=\"733\" data-end=\"796\"><strong data-start=\"735\" data-end=\"742\">PM2<\/strong> \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"svss7b\" data-start=\"797\" data-end=\"831\"><strong data-start=\"799\" data-end=\"808\">Nginx<\/strong> \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Reverse Proxy<\/li>\n<li data-section-id=\"1paui6x\" data-start=\"832\" data-end=\"880\"><strong data-start=\"834\" data-end=\"851\">Let&#8217;s Encrypt<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627\u06cc\u06af\u0627\u0646<\/li>\n<li data-section-id=\"1berw3e\" data-start=\"881\" data-end=\"921\"><strong data-start=\"883\" data-end=\"890\">UFW<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u0645\u0646\u200c\u0633\u0627\u0632\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647<\/li>\n<\/ul>\n<p data-start=\"923\" data-end=\"1086\">\u062a\u0631\u06a9\u06cc\u0628 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u062f\u0631 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u06cc \u0627\u0633\u062a \u0648 \u062a\u0648\u0633\u0637 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648 DevOps \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n<hr data-start=\"1088\" data-end=\"1091\" \/>\n<h1 data-section-id=\"1vcb37i\" data-start=\"1093\" data-end=\"1138\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f\u061f<\/h1>\n<p data-start=\"1140\" data-end=\"1179\">\u067e\u0633 \u0627\u0632 \u0645\u0637\u0627\u0644\u0639\u0647 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f:<\/p>\n<ul data-start=\"1181\" data-end=\"1727\">\n<li data-section-id=\"1gq4rs7\" data-start=\"1181\" data-end=\"1232\">Node.js \u0631\u0627 \u0628\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 LTS \u0631\u0648\u06cc Ubuntu \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"k2zxo5\" data-start=\"1233\" data-end=\"1279\">\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0628\u0627 PM2 \u0627\u062c\u0631\u0627 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1tnfa0t\" data-start=\"1280\" data-end=\"1333\">\u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1rt91yw\" data-start=\"1334\" data-end=\"1382\">Nginx \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 Reverse Proxy \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1ivt9o\" data-start=\"1383\" data-end=\"1439\">\u0627\u0631\u062a\u0628\u0627\u0637 HTTPS \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Let&#8217;s Encrypt \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1iy8gu5\" data-start=\"1440\" data-end=\"1479\">\u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0628\u0627 UFW \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"2cpvid\" data-start=\"1480\" data-end=\"1547\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc (Environment Variables) \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0627\u0645\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1yqxfun\" data-start=\"1548\" data-end=\"1620\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 Performance \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"12cr1ik\" data-start=\"1621\" data-end=\"1667\">\u0644\u0627\u06af\u200c\u0647\u0627 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u0635\u0631\u0641\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1liysbx\" data-start=\"1668\" data-end=\"1727\">\u0628\u0627 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1729\" data-end=\"1732\" \/>\n<h1 data-section-id=\"15g5ic3\" data-start=\"1734\" data-end=\"1746\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h1>\n<p data-start=\"1748\" data-end=\"1798\">\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0628\u0627\u06cc\u062f \u0622\u0645\u0627\u062f\u0647 \u0628\u0627\u0634\u0646\u062f:<\/p>\n<ul data-start=\"1800\" data-end=\"1991\">\n<li data-section-id=\"11buad8\" data-start=\"1800\" data-end=\"1830\">\u06cc\u06a9 \u0633\u0631\u0648\u0631 <strong data-start=\"1810\" data-end=\"1830\">Ubuntu 24.04 LTS<\/strong><\/li>\n<li data-section-id=\"6jg7gw\" data-start=\"1831\" data-end=\"1865\">\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 Root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo<\/li>\n<li data-section-id=\"1s9y3v2\" data-start=\"1866\" data-end=\"1889\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 UFW<\/li>\n<li data-section-id=\"pee4hs\" data-start=\"1890\" data-end=\"1924\">\u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u06a9\u0647 \u0628\u0647 IP \u0633\u0631\u0648\u0631 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f<\/li>\n<li data-section-id=\"12idu4q\" data-start=\"1925\" data-end=\"1947\">\u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx<\/li>\n<li data-section-id=\"11xu436\" data-start=\"1948\" data-end=\"1991\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 SSL \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Let&#8217;s Encrypt<\/li>\n<\/ul>\n<p data-start=\"1993\" data-end=\"2142\">\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0645\u0627\u0645\u06cc \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u0631\u0648\u06cc <strong data-start=\"2064\" data-end=\"2094\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f (Parmin Cloud)<\/strong> \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0648 \u0633\u067e\u0633 \u0627\u062f\u0627\u0645\u0647 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2144\" data-end=\"2190\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \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>example.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=\"2217\" data-end=\"2220\" \/>\n<h1 data-section-id=\"i5oo2v\" data-start=\"2222\" data-end=\"2246\">\u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634<\/h1>\n<p data-start=\"2248\" data-end=\"2302\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u0634\u06a9\u0644 \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>                Internet\r\n                    \u2502\r\n             HTTPS (443)\r\n                    \u2502\r\n                Nginx\r\n                    \u2502\r\n          Reverse Proxy\r\n                    \u2502\r\n          localhost:3000\r\n                    \u2502\r\n                 PM2\r\n                    \u2502\r\n               Node.js App<\/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=\"2618\" data-end=\"2632\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc:<\/p>\n<ul data-start=\"2634\" data-end=\"2888\">\n<li data-section-id=\"1getpng\" data-start=\"2634\" data-end=\"2671\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062a\u0646\u0647\u0627 \u0628\u0647 Nginx \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u0646\u062f.<\/li>\n<li data-section-id=\"16j5ial\" data-start=\"2672\" data-end=\"2726\">\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u06cc\u0633\u062a.<\/li>\n<li data-section-id=\"1oz4v7z\" data-start=\"2727\" data-end=\"2770\">\u062a\u0645\u0627\u0645\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0628\u0627 HTTPS \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"plujy3\" data-start=\"2771\" data-end=\"2825\">PM2 \u0645\u0633\u0626\u0648\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 Restart \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/li>\n<li data-section-id=\"xdh1k5\" data-start=\"2826\" data-end=\"2888\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0631\u06cc\u0628\u0648\u062a \u0634\u062f\u0646 \u0633\u0631\u0648\u0631\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"ywy272\" data-start=\"0\" data-end=\"52\">\u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644: \u0646\u0635\u0628 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 Node.js \u0631\u0648\u06cc Ubuntu 24.04<\/h1>\n<p data-start=\"54\" data-end=\"226\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 <strong data-start=\"77\" data-end=\"84\">LTS<\/strong> \u0627\u0632 Node.js \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc <strong data-start=\"138\" data-end=\"152\">NodeSource<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 Node.js \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<blockquote data-start=\"228\" data-end=\"411\">\n<p data-start=\"230\" data-end=\"238\"><strong data-start=\"230\" data-end=\"238\">\u0646\u06a9\u062a\u0647<\/strong><\/p>\n<p data-start=\"243\" data-end=\"411\">\u0646\u0633\u062e\u0647 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0645\u062e\u0627\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Ubuntu \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0632 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0631\u0633\u0645\u06cc Node.js \u0627\u0633\u062a\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0632 \u0645\u062e\u0632\u0646 NodeSource \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"413\" data-end=\"416\" \/>\n<h2 data-section-id=\"trv8a4\" data-start=\"418\" data-end=\"454\">\u0645\u0631\u062d\u0644\u0647 \u06f1: \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645<\/h2>\n<p data-start=\"456\" data-end=\"497\">\u0627\u0628\u062a\u062f\u0627 \u0644\u06cc\u0633\u062a \u0645\u062e\u0627\u0632\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\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> apt update &amp;&amp; <span class=\"\u037c10\">sudo<\/span> apt upgrade <span class=\"\u037c12\">-y<\/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<hr data-start=\"551\" data-end=\"554\" \/>\n<h2 data-section-id=\"8t7lwo\" data-start=\"556\" data-end=\"597\">\u0645\u0631\u062d\u0644\u0647 \u06f2: \u062f\u0627\u0646\u0644\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0646\u0635\u0628 NodeSource<\/h2>\n<p data-start=\"599\" data-end=\"624\">\u0648\u0627\u0631\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc Home \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> ~<\/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=\"644\" data-end=\"690\">\u0633\u067e\u0633 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0646\u0635\u0628 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 LTS \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\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\">curl<\/span> <span class=\"\u037c12\">-fsSL<\/span> https:\/\/deb.nodesource.com\/setup_24.x <span class=\"\u037c12\">-o<\/span> nodesource_setup.sh<\/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=\"777\" data-end=\"843\">\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \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>nano nodesource_setup.sh<\/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=\"883\" data-end=\"886\" \/>\n<h2 data-section-id=\"hfx31v\" data-start=\"888\" data-end=\"913\">\u0645\u0631\u062d\u0644\u0647 \u06f3: \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a<\/h2>\n<p data-start=\"915\" data-end=\"949\">\u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \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\">bash<\/span> nodesource_setup.sh<\/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=\"994\" data-end=\"1013\">\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n<ul data-start=\"1015\" data-end=\"1133\">\n<li data-section-id=\"plgfce\" data-start=\"1015\" data-end=\"1055\">\u0645\u062e\u0632\u0646 NodeSource \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"yf8mf7\" data-start=\"1056\" data-end=\"1085\">\u06a9\u0644\u06cc\u062f GPG \u0645\u0631\u0628\u0648\u0637\u0647 \u062b\u0628\u062a \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1q6ix7m\" data-start=\"1086\" data-end=\"1133\">\u0644\u06cc\u0633\u062a \u0645\u062e\u0627\u0632\u0646 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1135\" data-end=\"1138\" \/>\n<h2 data-section-id=\"1yrloil\" data-start=\"1140\" data-end=\"1163\">\u0645\u0631\u062d\u0644\u0647 \u06f4: \u0646\u0635\u0628 Node.js<\/h2>\n<p data-start=\"1165\" data-end=\"1191\">\u0627\u06a9\u0646\u0648\u0646 Node.js \u0631\u0627 \u0646\u0635\u0628 \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> apt install nodejs <span class=\"\u037c12\">-y<\/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<hr data-start=\"1233\" data-end=\"1236\" \/>\n<h2 data-section-id=\"1jo43ps\" data-start=\"1238\" data-end=\"1268\">\u0645\u0631\u062d\u0644\u0647 \u06f5: \u0628\u0631\u0631\u0633\u06cc \u0646\u0633\u062e\u0647 \u0646\u0635\u0628\u200c\u0634\u062f\u0647<\/h2>\n<p data-start=\"1270\" data-end=\"1314\">\u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0646\u0635\u0628\u060c \u0646\u0633\u062e\u0647 Node.js \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><span class=\"\u037c10\">node<\/span> <span class=\"\u037c12\">-v<\/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=\"1337\" data-end=\"1369\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0645\u0634\u0627\u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \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>v24.x.x<\/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=\"1392\" data-end=\"1423\">\u0633\u067e\u0633 \u0646\u0633\u062e\u0647 npm \u0631\u0627 \u0646\u06cc\u0632 \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><span class=\"\u037c10\">npm<\/span> <span class=\"\u037c12\">-v<\/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=\"1445\" data-end=\"1471\">\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>11.x.x<\/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=\"1493\" data-end=\"1605\">\n<p data-start=\"1495\" data-end=\"1503\"><strong data-start=\"1495\" data-end=\"1503\">\u0646\u06a9\u062a\u0647<\/strong><\/p>\n<p data-start=\"1508\" data-end=\"1605\">\u0628\u0627 \u0646\u0635\u0628 \u0628\u0633\u062a\u0647 <code data-start=\"1520\" data-end=\"1528\">nodejs<\/code>\u060c \u0627\u0628\u0632\u0627\u0631 <strong data-start=\"1536\" data-end=\"1543\">npm<\/strong> \u0646\u06cc\u0632 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0646\u0635\u0628 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0622\u0646 \u0646\u06cc\u0633\u062a.<\/p>\n<\/blockquote>\n<hr data-start=\"1607\" data-end=\"1610\" \/>\n<h1 data-section-id=\"1wpg7xh\" data-start=\"1612\" data-end=\"1656\">\u0646\u0635\u0628 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627<\/h1>\n<p data-start=\"1658\" data-end=\"1785\">\u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc Node.js \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0646 \u062f\u0627\u0631\u0646\u062f. \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u060c \u0628\u0633\u062a\u0647 <code data-start=\"1751\" data-end=\"1768\">build-essential<\/code> \u0631\u0627 \u0646\u06cc\u0632 \u0646\u0635\u0628 \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> apt install build-essential <span class=\"\u037c12\">-y<\/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=\"1836\" data-end=\"1871\">\u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0634\u0627\u0645\u0644 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"1873\" data-end=\"1891\">\n<li data-section-id=\"1o3sj3\" data-start=\"1873\" data-end=\"1878\">gcc<\/li>\n<li data-section-id=\"1o3qr3\" data-start=\"1879\" data-end=\"1884\">g++<\/li>\n<li data-section-id=\"1j36lre\" data-start=\"1885\" data-end=\"1891\">make<\/li>\n<\/ul>\n<p data-start=\"1893\" data-end=\"1955\">\u0648 \u0633\u0627\u06cc\u0631 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc Build \u06a9\u0631\u062f\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Native \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1957\" data-end=\"1960\" \/>\n<h2 data-section-id=\"1mmuvyi\" data-start=\"1962\" data-end=\"1985\">\u0628\u0631\u0631\u0633\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f Node.js<\/h2>\n<p data-start=\"1987\" data-end=\"2036\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0646\u0635\u0628 \u0635\u062d\u06cc\u062d\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><span class=\"\u037c10\">node<\/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=\"2056\" data-end=\"2133\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0646\u0635\u0628 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0648\u0627\u0631\u062f \u0645\u062d\u06cc\u0637 \u062a\u0639\u0627\u0645\u0644\u06cc Node.js \u062e\u0648\u0627\u0647\u06cc\u062f \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>Welcome to Node.js v24.x.x.\r\nType \".help\" for more information.\r\n&gt;<\/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=\"2213\" data-end=\"2250\">\u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0646\u06cc\u0632 \u062f\u0633\u062a\u0648\u0631 \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=\"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=\"\u037c11\">exit<\/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<hr data-start=\"2277\" data-end=\"2280\" \/>\n<h2 data-section-id=\"1t1kg9n\" data-start=\"2282\" data-end=\"2317\">\u0686\u0631\u0627 \u0627\u0632 \u0646\u0633\u062e\u0647 LTS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/h2>\n<p data-start=\"2319\" data-end=\"2347\">Node.js \u062f\u0648 \u0634\u0627\u062e\u0647 \u0627\u0646\u062a\u0634\u0627\u0631 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"2349\" data-end=\"2392\">\n<li data-section-id=\"1jthszl\" data-start=\"2349\" data-end=\"2362\"><strong data-start=\"2351\" data-end=\"2362\">Current<\/strong><\/li>\n<li data-section-id=\"1oivtop\" data-start=\"2363\" data-end=\"2392\"><strong data-start=\"2365\" data-end=\"2392\">LTS (Long Term Support)<\/strong><\/li>\n<\/ul>\n<p data-start=\"2394\" data-end=\"2479\">\u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc (Production)\u060c \u0647\u0645\u06cc\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0633\u062e\u0647 <strong data-start=\"2452\" data-end=\"2459\">LTS<\/strong> \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0632\u06cc\u0631\u0627:<\/p>\n<ul data-start=\"2481\" data-end=\"2627\">\n<li data-section-id=\"noya47\" data-start=\"2481\" data-end=\"2503\">\u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u062f.<\/li>\n<li data-section-id=\"bzflf8\" data-start=\"2504\" data-end=\"2537\">\u0645\u062f\u062a \u0637\u0648\u0644\u0627\u0646\u06cc\u200c\u062a\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1jatj9o\" data-start=\"2538\" data-end=\"2587\">\u0627\u06a9\u062b\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0646\u0633\u062e\u0647 LTS \u062a\u0633\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"s98rq1\" data-start=\"2588\" data-end=\"2627\">\u0627\u062d\u062a\u0645\u0627\u0644 \u0628\u0631\u0648\u0632 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0645\u062a\u0631 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p data-start=\"2629\" data-end=\"2689\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 LTS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"dzu2dy\" data-start=\"0\" data-end=\"41\">\u0645\u0631\u062d\u0644\u0647 \u062f\u0648\u0645: \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0648\u0646\u0647 Node.js<\/h1>\n<p data-start=\"43\" data-end=\"192\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 Node.js \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0645\u0631\u0627\u062d\u0644\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u0632 \u0635\u062d\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"194\" data-end=\"313\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP\u060c \u0639\u0628\u0627\u0631\u062a <strong data-start=\"280\" data-end=\"296\">Hello World!<\/strong> \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<blockquote data-start=\"315\" data-end=\"540\">\n<p data-start=\"317\" data-end=\"325\"><strong data-start=\"317\" data-end=\"325\">\u0646\u06a9\u062a\u0647<\/strong><\/p>\n<p data-start=\"330\" data-end=\"540\">\u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0631\u0648\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u0628\u0627\u0634\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0647\u0627 \u0631\u0648\u06cc \u0622\u062f\u0631\u0633 <strong data-start=\"463\" data-end=\"476\">localhost<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 Nginx \u0645\u0633\u0626\u0648\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"542\" data-end=\"545\" \/>\n<h1 data-section-id=\"13inhjx\" data-start=\"547\" data-end=\"566\">\u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u06cc\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"568\" data-end=\"599\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc Home \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> ~<\/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=\"619\" data-end=\"645\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f\u06cc \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 hello.js<\/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=\"674\" data-end=\"704\">\u06a9\u062f \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><span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">http<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'http'<\/span>);\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">hostname<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">'localhost'<\/span>;\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">port<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cy\">3000<\/span>;\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">server<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">http<\/span><span class=\"\u037cv\">.<\/span>createServer((<span class=\"\u037c11\">req<\/span>, <span class=\"\u037c11\">res<\/span>) =&gt; {\r\n    <span class=\"\u037c11\">res<\/span><span class=\"\u037cv\">.<\/span>statusCode <span class=\"\u037cv\">=<\/span> <span class=\"\u037cy\">200<\/span>;\r\n    <span class=\"\u037c11\">res<\/span><span class=\"\u037cv\">.<\/span>setHeader(<span class=\"\u037cz\">'Content-Type'<\/span>, <span class=\"\u037cz\">'text\/plain'<\/span>);\r\n    <span class=\"\u037c11\">res<\/span><span class=\"\u037cv\">.<\/span>end(<span class=\"\u037cz\">'Hello World!<\/span><span class=\"\u037c15\">\\n<\/span><span class=\"\u037cz\">'<\/span>);\r\n});\r\n\r\n<span class=\"\u037c11\">server<\/span><span class=\"\u037cv\">.<\/span>listen(<span class=\"\u037c11\">port<\/span>, <span class=\"\u037c11\">hostname<\/span>, () =&gt; {\r\n    <span class=\"\u037c11\">console<\/span><span class=\"\u037cv\">.<\/span>log(<span class=\"\u037cz\">`Server running at http:\/\/<\/span>${<span class=\"\u037c11\">hostname<\/span>}<span class=\"\u037cz\">:<\/span>${<span class=\"\u037c11\">port<\/span>}<span class=\"\u037cz\">\/`<\/span>);\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=\"1074\" data-end=\"1117\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"1119\" data-end=\"1122\" \/>\n<h1 data-section-id=\"8fi4k1\" data-start=\"1124\" data-end=\"1158\">\u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h1>\n<p data-start=\"1160\" data-end=\"1200\">\u06a9\u062f \u0628\u0627\u0644\u0627 \u06cc\u06a9 \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647:<\/p>\n<ul data-start=\"1202\" data-end=\"1329\">\n<li data-section-id=\"xue1o6\" data-start=\"1202\" data-end=\"1234\">\u0631\u0648\u06cc \u067e\u0648\u0631\u062a <strong data-start=\"1213\" data-end=\"1221\">3000<\/strong> \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"3bzmhn\" data-start=\"1235\" data-end=\"1270\">\u0641\u0642\u0637 \u0631\u0648\u06cc <strong data-start=\"1245\" data-end=\"1258\">localhost<\/strong> \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n<li data-section-id=\"1vxskdx\" data-start=\"1271\" data-end=\"1329\">\u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u067e\u0627\u0633\u062e <strong data-start=\"1299\" data-end=\"1315\">Hello World!<\/strong> \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"1331\" data-end=\"1463\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u062f\u0631\u0633 <code data-start=\"1349\" data-end=\"1360\">localhost<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u062e\u0627\u0631\u062c \u0633\u0631\u0648\u0631 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a \u0648 \u0641\u0642\u0637 \u062e\u0648\u062f \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n<p data-start=\"1465\" data-end=\"1530\">\u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<hr data-start=\"1532\" data-end=\"1535\" \/>\n<h1 data-section-id=\"1i79al\" data-start=\"1537\" data-end=\"1551\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1553\" data-end=\"1579\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \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\">node<\/span> hello.js<\/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=\"1608\" data-end=\"1658\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \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>Server running at http:\/\/localhost:3000\/<\/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=\"1714\" data-end=\"1717\" \/>\n<h1 data-section-id=\"3cafuo\" data-start=\"1719\" data-end=\"1738\">\u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1740\" data-end=\"1790\">\u06cc\u06a9 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062c\u062f\u06cc\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \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\">curl<\/span> http:\/\/localhost:3000<\/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=\"1832\" data-end=\"1891\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \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>Hello World!<\/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=\"1919\" data-end=\"1973\">\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1975\" data-end=\"2073\">\n<li data-section-id=\"10na69q\" data-start=\"1975\" data-end=\"2006\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0646\u0648\u0632 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f.<\/li>\n<li data-section-id=\"1exxaau\" data-start=\"2007\" data-end=\"2030\">\u0634\u0645\u0627\u0631\u0647 \u067e\u0648\u0631\u062a \u0635\u062d\u06cc\u062d \u0628\u0627\u0634\u062f.<\/li>\n<li data-section-id=\"ahahj5\" data-start=\"2031\" data-end=\"2073\">\u0645\u0642\u062f\u0627\u0631 <code data-start=\"2039\" data-end=\"2049\">hostname<\/code> \u0628\u0631\u0627\u0628\u0631 <code data-start=\"2056\" data-end=\"2067\">localhost<\/code> \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<hr data-start=\"2075\" data-end=\"2078\" \/>\n<h1 data-section-id=\"bhjesd\" data-start=\"2080\" data-end=\"2093\">\u062a\u0648\u0642\u0641 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2095\" data-end=\"2197\">\u067e\u0633 \u0627\u0632 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u0635\u062d\u06cc\u062d\u060c \u0628\u0647 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0641\u0634\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=\"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=\"2221\" data-end=\"2252\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"2254\" data-end=\"2257\" \/>\n<h1 data-section-id=\"1msq93g\" data-start=\"2259\" data-end=\"2313\">\u0686\u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0627\u0632 localhost \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/h1>\n<p data-start=\"2315\" data-end=\"2429\">\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0631\u0627\u06cc\u062c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0622\u062f\u0631\u0633 <code data-start=\"2371\" data-end=\"2380\">0.0.0.0<\/code> \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u062a\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u062f.<\/p>\n<p data-start=\"2431\" data-end=\"2489\">\u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u0632 \u0646\u0638\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u062a\u0648\u0635\u06cc\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"2491\" data-end=\"2536\">\u062f\u0631 \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c \u0648\u0636\u0639\u06cc\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \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>\u06a9\u0627\u0631\u0628\u0631\r\n   \u2502\r\n HTTPS\r\n   \u2502\r\nNginx\r\n   \u2502\r\nReverse Proxy\r\n   \u2502\r\nlocalhost:3000\r\n   \u2502\r\nNode.js<\/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=\"2632\" data-end=\"2661\">\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0686\u0646\u062f \u0645\u0632\u06cc\u062a \u0645\u0647\u0645 \u062f\u0627\u0631\u062f:<\/p>\n<h3 data-section-id=\"q0n59e\" data-start=\"2663\" data-end=\"2691\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645<\/h3>\n<p data-start=\"2693\" data-end=\"2786\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0647\u0631\u06af\u0632 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 Node.js \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 \u0627\u0632 Nginx \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"2788\" data-end=\"2791\" \/>\n<h3 data-section-id=\"ot617\" data-start=\"2793\" data-end=\"2818\">\u0645\u062f\u06cc\u0631\u06cc\u062a SSL \u062a\u0648\u0633\u0637 Nginx<\/h3>\n<p data-start=\"2820\" data-end=\"2926\">\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc HTTPS \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u062a\u0648\u0633\u0637 Nginx \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"2928\" data-end=\"2931\" \/>\n<h3 data-section-id=\"zndbn3\" data-start=\"2933\" data-end=\"2949\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a<\/h3>\n<p data-start=\"2951\" data-end=\"3059\">\u0628\u0627 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 UFW \u062a\u0646\u0647\u0627 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc 80 \u0648 443 \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u0648 \u067e\u0648\u0631\u062a 3000 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0633\u062a\u0647 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n<hr data-start=\"3061\" data-end=\"3064\" \/>\n<h3 data-section-id=\"1bqfo39\" data-start=\"3066\" data-end=\"3083\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06cc\u06cc<\/h3>\n<p data-start=\"3085\" data-end=\"3203\">Nginx \u062f\u0631 \u0633\u0631\u0648\u06cc\u0633\u200c\u062f\u0647\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a Cache\u060c \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 Load Balancing \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0628\u0647\u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 Node.js \u062f\u0627\u0631\u062f.<\/p>\n<p data-start=\"3205\" data-end=\"3314\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc Node.js \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u067e\u0634\u062a \u06cc\u06a9 Reverse Proxy \u0645\u0627\u0646\u0646\u062f Nginx \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1dnpv7n\" data-start=\"0\" data-end=\"31\">\u0645\u0631\u062d\u0644\u0647 \u0633\u0648\u0645: \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc PM2<\/h1>\n<p data-start=\"33\" data-end=\"154\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code data-start=\"64\" data-end=\"77\">node app.js<\/code> \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u06cc\u0627 \u0631\u06cc\u0628\u0648\u062a \u0634\u062f\u0646 \u0633\u0631\u0648\u0631\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0632 \u0645\u062a\u0648\u0642\u0641 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p data-start=\"156\" data-end=\"304\">\u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0646\u06cc\u0633\u062a\u061b \u0632\u06cc\u0631\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u06cc\u0627 Crash \u0646\u06cc\u0632 \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=\"306\" data-end=\"350\">\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0627\u0632 <strong data-start=\"326\" data-end=\"333\">PM2<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"352\" data-end=\"449\">PM2 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 Process Manager\u0647\u0627\u06cc Node.js \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul data-start=\"451\" data-end=\"642\">\n<li data-section-id=\"57malg\" data-start=\"451\" data-end=\"471\">\u0627\u062c\u0631\u0627\u06cc \u062f\u0627\u0626\u0645\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"w1lovu\" data-start=\"472\" data-end=\"500\">Restart \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0633 \u0627\u0632 Crash<\/li>\n<li data-section-id=\"l571go\" data-start=\"501\" data-end=\"533\">\u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a \u0633\u0631\u0648\u0631<\/li>\n<li data-section-id=\"1jvpw1n\" data-start=\"534\" data-end=\"571\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u0645\u200c\u0632\u0645\u0627\u0646<\/li>\n<li data-section-id=\"1ncsxlt\" data-start=\"572\" data-end=\"595\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0635\u0631\u0641 CPU \u0648 RAM<\/li>\n<li data-section-id=\"164ifx5\" data-start=\"596\" data-end=\"611\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0644\u0627\u06af\u200c\u0647\u0627<\/li>\n<li data-section-id=\"177a42b\" data-start=\"612\" data-end=\"642\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a Cluster<\/li>\n<\/ul>\n<hr data-start=\"644\" data-end=\"647\" \/>\n<h1 data-section-id=\"5p54qa\" data-start=\"649\" data-end=\"658\">\u0646\u0635\u0628 PM2<\/h1>\n<p data-start=\"660\" data-end=\"687\">PM2 \u0627\u0632 \u0637\u0631\u06cc\u0642 npm \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"689\" data-end=\"712\">\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\">npm<\/span> install <span class=\"\u037c12\">-g<\/span> pm2<\/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=\"751\" data-end=\"859\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code data-start=\"759\" data-end=\"763\">-g<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f PM2 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0633\u0631\u0627\u0633\u0631\u06cc (Global) \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0646\u0635\u0628 \u0634\u0648\u062f \u0648 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<hr data-start=\"861\" data-end=\"864\" \/>\n<h1 data-section-id=\"yolp9g\" data-start=\"866\" data-end=\"889\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0648\u0633\u0637 PM2<\/h1>\n<p data-start=\"891\" data-end=\"943\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0642\u0628\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645 \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>pm2 <span class=\"\u037c10\">start<\/span> hello.js<\/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=\"977\" data-end=\"1027\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \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>\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502 id \u2502 name   \u2502 mode    \u2502 status \u2502 cpu      \u2502 memory \u2502\r\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\r\n\u2502 0  \u2502 hello  \u2502 fork    \u2502 online \u2502 0%       \u2502 35 MB  \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/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=\"1317\" data-end=\"1372\">\u0627\u06cc\u0646 \u062c\u062f\u0648\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0641\u06cc\u062f\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul data-start=\"1374\" data-end=\"1450\">\n<li data-section-id=\"1fcrlpv\" data-start=\"1374\" data-end=\"1388\">\u0634\u0646\u0627\u0633\u0647 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"ikht92\" data-start=\"1389\" data-end=\"1401\">\u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"14ztbys\" data-start=\"1402\" data-end=\"1414\">\u0648\u0636\u0639\u06cc\u062a \u0627\u062c\u0631\u0627<\/li>\n<li data-section-id=\"vtoo5w\" data-start=\"1415\" data-end=\"1431\">\u0645\u06cc\u0632\u0627\u0646 \u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"5sxop2\" data-start=\"1432\" data-end=\"1450\">\u0645\u06cc\u0632\u0627\u0646 \u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647<\/li>\n<\/ul>\n<hr data-start=\"1452\" data-end=\"1455\" \/>\n<h1 data-section-id=\"wpd4p6\" data-start=\"1457\" data-end=\"1477\">\u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1479\" data-end=\"1559\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u06cc\u0633\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 PM2 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\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>pm2 list<\/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=\"1583\" data-end=\"1586\">\u06cc\u0627:<\/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>pm2 status<\/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=\"1612\" data-end=\"1624\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0645\u0648\u0646\u0647:<\/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>\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502 id \u2502 name   \u2502 status \u2502 uptime \u2502\r\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\r\n\u2502 0  \u2502 hello  \u2502 online \u2502 5m     \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/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=\"1809\" data-end=\"1871\">\u0627\u06af\u0631 \u0648\u0636\u0639\u06cc\u062a <strong data-start=\"1819\" data-end=\"1829\">online<\/strong> \u0628\u0627\u0634\u062f \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a.<\/p>\n<hr data-start=\"1873\" data-end=\"1876\" \/>\n<h1 data-section-id=\"3cafuo\" data-start=\"1878\" data-end=\"1897\">\u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"1899\" data-end=\"1933\">\u0627\u06a9\u0646\u0648\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \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><span class=\"\u037c10\">curl<\/span> http:\/\/localhost:3000<\/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=\"1975\" data-end=\"2005\">\u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \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=\"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>Hello World!<\/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=\"2033\" data-end=\"2136\">\u0627\u06cc\u0646 \u0628\u0627\u0631 \u062a\u0641\u0627\u0648\u062a \u0645\u0647\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062a\u0648\u0633\u0637 Node.js \u0627\u062c\u0631\u0627 \u0646\u0634\u062f\u0647\u060c \u0628\u0644\u06a9\u0647 PM2 \u0622\u0646 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2138\" data-end=\"2141\" \/>\n<h1 data-section-id=\"gt4sct\" data-start=\"2143\" data-end=\"2171\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2173\" data-end=\"2224\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\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>pm2 info hello<\/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=\"2254\" data-end=\"2257\">\u06cc\u0627:<\/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>pm2 describe hello<\/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=\"2291\" data-end=\"2334\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"2336\" data-end=\"2429\">\n<li data-section-id=\"ml3xp3\" data-start=\"2336\" data-end=\"2354\">\u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"1f4q74z\" data-start=\"2355\" data-end=\"2366\">\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/li>\n<li data-section-id=\"1l0vd6z\" data-start=\"2367\" data-end=\"2384\">\u062a\u0639\u062f\u0627\u062f Restart\u0647\u0627<\/li>\n<li data-section-id=\"1o4oet\" data-start=\"2385\" data-end=\"2390\">PID<\/li>\n<li data-section-id=\"3rnxzw\" data-start=\"2391\" data-end=\"2403\">\u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647<\/li>\n<li data-section-id=\"wce6ha\" data-start=\"2404\" data-end=\"2414\">\u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"17yay2r\" data-start=\"2415\" data-end=\"2429\">\u0646\u0633\u062e\u0647 Node.js<\/li>\n<\/ul>\n<hr data-start=\"2431\" data-end=\"2434\" \/>\n<h1 data-section-id=\"169b84p\" data-start=\"2436\" data-end=\"2459\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2461\" data-end=\"2513\">\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc PM2\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0644\u0627\u06af\u200c\u0647\u0627 \u0627\u0633\u062a.<\/p>\n<p data-start=\"2515\" data-end=\"2540\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0631\u0648\u062c\u06cc \u0628\u0631\u0646\u0627\u0645\u0647:<\/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>pm2 logs<\/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=\"2564\" data-end=\"2592\">\u06cc\u0627 \u0641\u0642\u0637 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 hello:<\/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>pm2 logs hello<\/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=\"2622\" data-end=\"2651\">\u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0627\u0644\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af:<\/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=\"2675\" data-end=\"2678\" \/>\n<h1 data-section-id=\"1dpu9ft\" data-start=\"2680\" data-end=\"2700\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0644\u062d\u0638\u0647\u200c\u0627\u06cc<\/h1>\n<p data-start=\"2702\" data-end=\"2738\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0644\u062d\u0638\u0647\u200c\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627:<\/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>pm2 monit<\/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=\"2763\" data-end=\"2823\">\u062f\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u0646\u062f\u0647 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"2825\" data-end=\"2901\">\n<li data-section-id=\"wce6ha\" data-start=\"2825\" data-end=\"2835\">\u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"wceily\" data-start=\"2836\" data-end=\"2846\">\u0645\u0635\u0631\u0641 RAM<\/li>\n<li data-section-id=\"g9wmgm\" data-start=\"2847\" data-end=\"2865\">\u062a\u0639\u062f\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627<\/li>\n<li data-section-id=\"17lfr8k\" data-start=\"2866\" data-end=\"2883\">\u0648\u0636\u0639\u06cc\u062a \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627<\/li>\n<li data-section-id=\"135vtmd\" data-start=\"2884\" data-end=\"2901\">\u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0644\u062d\u0638\u0647\u200c\u0627\u06cc<\/li>\n<\/ul>\n<p data-start=\"2903\" data-end=\"2979\">\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 Memory Leak \u06cc\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0635\u0631\u0641 \u0645\u0646\u0627\u0628\u0639 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2981\" data-end=\"2984\" \/>\n<h1 data-section-id=\"p8vn61\" data-start=\"2986\" data-end=\"3022\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 PM2 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a<\/h1>\n<p data-start=\"3024\" data-end=\"3107\">PM2 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u067e\u0633 \u0627\u0632 \u0647\u0631 \u0628\u0627\u0631 \u0631\u0648\u0634\u0646 \u0634\u062f\u0646 \u0633\u0631\u0648\u0631\u060c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"3109\" data-end=\"3138\">\u0627\u0628\u062a\u062f\u0627 \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>pm2 startup systemd<\/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=\"3173\" data-end=\"3203\">\u062e\u0631\u0648\u062c\u06cc \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\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>sudo env PATH=$PATH:\/usr\/bin pm2 startup systemd -u username --hp \/home\/username<\/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=\"3299\" data-end=\"3435\">\n<p data-start=\"3301\" data-end=\"3309\"><strong data-start=\"3301\" data-end=\"3309\">\u0646\u06a9\u062a\u0647<\/strong><\/p>\n<p data-start=\"3314\" data-end=\"3435\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0647\u0631 \u0646\u0633\u062e\u0647 Node.js \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a. \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 PM2 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0627 \u06a9\u067e\u06cc \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"3437\" data-end=\"3440\" \/>\n<h1 data-section-id=\"1yib0qd\" data-start=\"3442\" data-end=\"3472\">\u0630\u062e\u06cc\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627<\/h1>\n<p data-start=\"3474\" data-end=\"3572\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0644\u0627\u060c \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc PM2 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0627\u062c\u0631\u0627 \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>pm2 save<\/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=\"3596\" data-end=\"3602\">\u062e\u0631\u0648\u062c\u06cc:<\/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>Successfully saved in ~\/.pm2\/dump.pm2<\/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=\"3655\" data-end=\"3775\">\u0627\u0632 \u0627\u06cc\u0646 \u067e\u0633\u060c \u067e\u0633 \u0627\u0632 \u0647\u0631 \u0628\u0627\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631\u060c PM2 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0627\u0644\u0627 \u0645\u06cc\u200c\u0622\u0648\u0631\u062f.<\/p>\n<hr data-start=\"3777\" data-end=\"3780\" \/>\n<h1 data-section-id=\"g4q5pn\" data-start=\"3782\" data-end=\"3799\">\u0628\u0631\u0631\u0633\u06cc \u0633\u0631\u0648\u06cc\u0633 PM2<\/h1>\n<p data-start=\"3801\" data-end=\"3833\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0633\u0631\u0648\u06cc\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>systemctl status pm2-<span class=\"\u037c11\">$USER<\/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=\"3875\" data-end=\"3887\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/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>Active: active (running)<\/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=\"3927\" data-end=\"4008\">\u0627\u06af\u0631 \u0648\u0636\u0639\u06cc\u062a <strong data-start=\"3937\" data-end=\"3957\">active (running)<\/strong> \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0647\u0645\u0647 \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<hr data-start=\"4010\" data-end=\"4013\" \/>\n<h1 data-section-id=\"1nszlu5\" data-start=\"4015\" data-end=\"4037\">\u062f\u0633\u062a\u0648\u0631\u0627\u062a \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f PM2<\/h1>\n<p data-start=\"4039\" data-end=\"4088\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a PM2 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\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=\"4090\" data-end=\"4494\">\n<thead data-start=\"4090\" data-end=\"4107\">\n<tr data-start=\"4090\" data-end=\"4107\">\n<th class=\"last:pe-10\" data-start=\"4090\" data-end=\"4098\" data-col-size=\"sm\">\u062f\u0633\u062a\u0648\u0631<\/th>\n<th class=\"last:pe-10\" data-start=\"4098\" data-end=\"4107\" data-col-size=\"sm\">\u062a\u0648\u0636\u06cc\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"4127\" data-end=\"4494\">\n<tr data-start=\"4127\" data-end=\"4172\">\n<td data-start=\"4127\" data-end=\"4140\" data-col-size=\"sm\"><code data-start=\"4129\" data-end=\"4139\">pm2 list<\/code><\/td>\n<td data-start=\"4140\" data-end=\"4172\" data-col-size=\"sm\">\u0646\u0645\u0627\u06cc\u0634 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627<\/td>\n<\/tr>\n<tr data-start=\"4173\" data-end=\"4214\">\n<td data-start=\"4173\" data-end=\"4188\" data-col-size=\"sm\"><code data-start=\"4175\" data-end=\"4187\">pm2 status<\/code><\/td>\n<td data-start=\"4188\" data-end=\"4214\" data-col-size=\"sm\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627<\/td>\n<\/tr>\n<tr data-start=\"4215\" data-end=\"4245\">\n<td data-start=\"4215\" data-end=\"4228\" data-col-size=\"sm\"><code data-start=\"4217\" data-end=\"4227\">pm2 logs<\/code><\/td>\n<td data-start=\"4228\" data-end=\"4245\" data-col-size=\"sm\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627<\/td>\n<\/tr>\n<tr data-start=\"4246\" data-end=\"4282\">\n<td data-start=\"4246\" data-end=\"4260\" data-col-size=\"sm\"><code data-start=\"4248\" data-end=\"4259\">pm2 monit<\/code><\/td>\n<td data-start=\"4260\" data-end=\"4282\" data-col-size=\"sm\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0644\u062d\u0638\u0647\u200c\u0627\u06cc<\/td>\n<\/tr>\n<tr data-start=\"4283\" data-end=\"4331\">\n<td data-start=\"4283\" data-end=\"4305\" data-col-size=\"sm\"><code data-start=\"4285\" data-end=\"4304\">pm2 restart hello<\/code><\/td>\n<td data-col-size=\"sm\" data-start=\"4305\" data-end=\"4331\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/td>\n<\/tr>\n<tr data-start=\"4332\" data-end=\"4366\">\n<td data-start=\"4332\" data-end=\"4351\" data-col-size=\"sm\"><code data-start=\"4334\" data-end=\"4350\">pm2 stop hello<\/code><\/td>\n<td data-col-size=\"sm\" data-start=\"4351\" data-end=\"4366\">\u062a\u0648\u0642\u0641 \u0628\u0631\u0646\u0627\u0645\u0647<\/td>\n<\/tr>\n<tr data-start=\"4367\" data-end=\"4409\">\n<td data-start=\"4367\" data-end=\"4388\" data-col-size=\"sm\"><code data-start=\"4369\" data-end=\"4387\">pm2 delete hello<\/code><\/td>\n<td data-col-size=\"sm\" data-start=\"4388\" data-end=\"4409\">\u062d\u0630\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 PM2<\/td>\n<\/tr>\n<tr data-start=\"4410\" data-end=\"4443\">\n<td data-start=\"4410\" data-end=\"4423\" data-col-size=\"sm\"><code data-start=\"4412\" data-end=\"4422\">pm2 save<\/code><\/td>\n<td data-col-size=\"sm\" data-start=\"4423\" data-end=\"4443\">\u0630\u062e\u06cc\u0631\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc<\/td>\n<\/tr>\n<tr data-start=\"4444\" data-end=\"4494\">\n<td data-start=\"4444\" data-end=\"4462\" data-col-size=\"sm\"><code data-start=\"4446\" data-end=\"4461\">pm2 resurrect<\/code><\/td>\n<td data-start=\"4462\" data-end=\"4494\" data-col-size=\"sm\">\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"4496\" data-end=\"4499\" \/>\n<p data-start=\"4501\" data-end=\"4618\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0627\u0626\u0645\u06cc \u062a\u0648\u0633\u0637 PM2 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062d\u062a\u06cc \u062f\u0631 \u0635\u0648\u0631\u062a Crash \u06cc\u0627 \u0631\u06cc\u0628\u0648\u062a \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"b5jq6o\" data-start=\"0\" data-end=\"34\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0627\u06cc\u0644 Ecosystem \u062f\u0631 PM2<\/h1>\n<p data-start=\"36\" data-end=\"154\">\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code data-start=\"118\" data-end=\"136\">pm2 start app.js<\/code> \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n<p data-start=\"156\" data-end=\"216\">\u0627\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u0634\u0631\u0627\u06cc\u0637 \u0632\u06cc\u0631 \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645:<\/p>\n<ul data-start=\"218\" data-end=\"486\">\n<li data-section-id=\"193agbj\" data-start=\"218\" data-end=\"258\">\u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"it6kmu\" data-start=\"259\" data-end=\"326\">\u0647\u0631 \u0645\u062d\u06cc\u0637 (Development\u060c Staging \u0648 Production) \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0631\u062f.<\/li>\n<li data-section-id=\"7zgj3l\" data-start=\"327\" data-end=\"400\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc (Environment Variables) \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062a\u0645\u0631\u06a9\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"7bvdqt\" data-start=\"401\" data-end=\"486\">\u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Restart\u060c \u062a\u0639\u062f\u0627\u062f \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627 \u0648 \u0633\u0627\u06cc\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"488\" data-end=\"557\">\u0628\u0631\u0627\u06cc \u0686\u0646\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637\u06cc\u060c PM2 \u0642\u0627\u0628\u0644\u06cc\u062a\u06cc \u0628\u0647 \u0646\u0627\u0645 <strong data-start=\"525\" data-end=\"543\">Ecosystem File<\/strong> \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"559\" data-end=\"562\" \/>\n<h1 data-section-id=\"1jyeq5n\" data-start=\"564\" data-end=\"586\">\u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u06cc\u0644 Ecosystem<\/h1>\n<p data-start=\"588\" data-end=\"635\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\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>pm2 ecosystem<\/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=\"664\" data-end=\"706\">\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u060c \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \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>ecosystem.config.js<\/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=\"741\" data-end=\"744\" \/>\n<h1 data-section-id=\"1qmlbta\" data-start=\"746\" data-end=\"759\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644<\/h1>\n<p data-start=\"761\" data-end=\"778\">\u0641\u0627\u06cc\u0644 \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 ecosystem.config.js<\/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=\"818\" data-end=\"857\">\u0633\u067e\u0633 \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062a\u063a\u06cc\u06cc\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><span class=\"\u037c11\">module<\/span><span class=\"\u037cv\">.<\/span>exports <span class=\"\u037cv\">=<\/span> {\r\n  apps: [\r\n    {\r\n      name: <span class=\"\u037cz\">\"hello\"<\/span>,\r\n      script: <span class=\"\u037cz\">\"hello.js\"<\/span>,\r\n\r\n      env: {\r\n        NODE_ENV: <span class=\"\u037cz\">\"development\"<\/span>,\r\n        PORT: <span class=\"\u037cy\">3001<\/span>\r\n      },\r\n\r\n      env_production: {\r\n        NODE_ENV: <span class=\"\u037cz\">\"production\"<\/span>,\r\n        PORT: <span class=\"\u037cy\">3000<\/span>\r\n      }\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=\"1132\" data-end=\"1135\" \/>\n<h1 data-section-id=\"qhhia\" data-start=\"1137\" data-end=\"1161\">\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644<\/h1>\n<p data-start=\"1163\" data-end=\"1223\">\u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06cc\u06a9 \u0634\u06cc\u0621 (Object) \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"1225\" data-end=\"1253\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u0647\u0645 \u0639\u0628\u0627\u0631\u062a\u200c\u0627\u0646\u062f \u0627\u0632:<\/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=\"1255\" data-end=\"1440\">\n<thead data-start=\"1255\" data-end=\"1272\">\n<tr data-start=\"1255\" data-end=\"1272\">\n<th class=\"last:pe-10\" data-start=\"1255\" data-end=\"1263\" data-col-size=\"sm\">\u06af\u0632\u06cc\u0646\u0647<\/th>\n<th class=\"last:pe-10\" data-start=\"1263\" data-end=\"1272\" data-col-size=\"sm\">\u062a\u0648\u0636\u06cc\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1292\" data-end=\"1440\">\n<tr data-start=\"1292\" data-end=\"1322\">\n<td data-start=\"1292\" data-end=\"1301\" data-col-size=\"sm\"><code data-start=\"1294\" data-end=\"1300\">name<\/code><\/td>\n<td data-start=\"1301\" data-end=\"1322\" data-col-size=\"sm\">\u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 PM2<\/td>\n<\/tr>\n<tr data-start=\"1323\" data-end=\"1356\">\n<td data-start=\"1323\" data-end=\"1334\" data-col-size=\"sm\"><code data-start=\"1325\" data-end=\"1333\">script<\/code><\/td>\n<td data-start=\"1334\" data-end=\"1356\" data-col-size=\"sm\">\u0641\u0627\u06cc\u0644 \u0627\u062c\u0631\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/td>\n<\/tr>\n<tr data-start=\"1357\" data-end=\"1393\">\n<td data-start=\"1357\" data-end=\"1365\" data-col-size=\"sm\"><code data-start=\"1359\" data-end=\"1364\">env<\/code><\/td>\n<td data-start=\"1365\" data-end=\"1393\" data-col-size=\"sm\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062d\u06cc\u0637 Development<\/td>\n<\/tr>\n<tr data-start=\"1394\" data-end=\"1440\">\n<td data-start=\"1394\" data-end=\"1413\" data-col-size=\"sm\"><code data-start=\"1396\" data-end=\"1412\">env_production<\/code><\/td>\n<td data-start=\"1413\" data-end=\"1440\" data-col-size=\"sm\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062d\u06cc\u0637 Production<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"1442\" data-end=\"1445\" \/>\n<h1 data-section-id=\"1en8jec\" data-start=\"1447\" data-end=\"1480\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a Production<\/h1>\n<p data-start=\"1482\" data-end=\"1533\">\u067e\u0633 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \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>pm2 <span class=\"\u037c10\">start<\/span> ecosystem.config.js <span class=\"\u037c12\">--env<\/span> production<\/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=\"1595\" data-end=\"1664\">PM2 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0628\u062e\u0634 <code data-start=\"1625\" data-end=\"1641\">env_production<\/code> \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"1666\" data-end=\"1669\" \/>\n<h1 data-section-id=\"16p3dtc\" data-start=\"1671\" data-end=\"1684\">\u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a<\/h1>\n<p data-start=\"1686\" data-end=\"1711\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647:<\/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>pm2 list<\/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=\"1735\" data-end=\"1737\">\u06cc\u0627<\/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>pm2 status<\/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=\"1763\" data-end=\"1766\" \/>\n<h1 data-section-id=\"1j9opum\" data-start=\"1768\" data-end=\"1802\">\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Ecosystem File<\/h1>\n<p data-start=\"1804\" data-end=\"1842\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"1844\" data-end=\"2032\">\n<li data-section-id=\"11flxeb\" data-start=\"1844\" data-end=\"1876\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644<\/li>\n<li data-section-id=\"rgn5vg\" data-start=\"1877\" data-end=\"1899\">\u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/li>\n<li data-section-id=\"bbmsmi\" data-start=\"1900\" data-end=\"1932\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641<\/li>\n<li data-section-id=\"q57gyc\" data-start=\"1933\" data-end=\"1958\">\u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Restart<\/li>\n<li data-section-id=\"1eqo9cw\" data-start=\"1959\" data-end=\"1983\">\u062a\u0639\u06cc\u06cc\u0646 \u062a\u0639\u062f\u0627\u062f Instance\u0647\u0627<\/li>\n<li data-section-id=\"t2xf60\" data-start=\"1984\" data-end=\"2004\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Cluster<\/li>\n<li data-section-id=\"y7cvqa\" data-start=\"2005\" data-end=\"2032\">\u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0634\u062f\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f Deploy<\/li>\n<\/ul>\n<p data-start=\"2034\" data-end=\"2115\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Production \u0627\u0632 \u0641\u0627\u06cc\u0644 Ecosystem \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"2117\" data-end=\"2120\" \/>\n<h1 data-section-id=\"1hfc3hk\" data-start=\"2122\" data-end=\"2142\">\u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n<p data-start=\"2144\" data-end=\"2184\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u062f\u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062e\u062a\u0644\u0641 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p data-start=\"2186\" data-end=\"2225\">\u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0647\u0631 \u062f\u0648 \u0631\u0627 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u062a\u0639\u0631\u06cc\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=\"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=\"\u037c11\">module<\/span><span class=\"\u037cv\">.<\/span>exports <span class=\"\u037cv\">=<\/span> {\r\n  apps: [\r\n    {\r\n      name: <span class=\"\u037cz\">\"frontend\"<\/span>,\r\n      script: <span class=\"\u037cz\">\".\/frontend\/app.js\"<\/span>\r\n    },\r\n    {\r\n      name: <span class=\"\u037cz\">\"api\"<\/span>,\r\n      script: <span class=\"\u037cz\">\".\/backend\/server.js\"<\/span>\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<p data-start=\"2420\" data-end=\"2450\">\u0633\u067e\u0633 \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0647\u0645\u0632\u0645\u0627\u0646 \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>pm2 <span class=\"\u037c10\">start<\/span> ecosystem.config.js<\/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=\"2495\" data-end=\"2532\">PM2 \u0647\u0631 \u062f\u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"2534\" data-end=\"2537\" \/>\n<h1 data-section-id=\"rv09ld\" data-start=\"2539\" data-end=\"2572\">\u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f \u067e\u0631\u062f\u0627\u0632\u0634 (Cluster Mode)<\/h1>\n<p data-start=\"2574\" data-end=\"2645\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc PM2\u060c \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u062a\u0645\u0627\u0645 \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc CPU \u0627\u0633\u062a.<\/p>\n<p data-start=\"2647\" data-end=\"2710\">\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 Cluster Mode \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \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=\"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=\"\u037c11\">module<\/span><span class=\"\u037cv\">.<\/span>exports <span class=\"\u037cv\">=<\/span> {\r\n  apps: [\r\n    {\r\n      name: <span class=\"\u037cz\">\"hello\"<\/span>,\r\n      script: <span class=\"\u037cz\">\"hello.js\"<\/span>,\r\n      instances: <span class=\"\u037cz\">\"max\"<\/span>,\r\n      exec_mode: <span class=\"\u037cz\">\"cluster\"<\/span>\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<p data-start=\"2877\" data-end=\"2889\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a:<\/p>\n<ul data-start=\"2891\" data-end=\"3064\">\n<li data-section-id=\"1pjc4fu\" data-start=\"2891\" data-end=\"2946\">PM2 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u062a\u0639\u062f\u0627\u062f \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc CPU \u067e\u0631\u062f\u0627\u0632\u0634 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1olmjdi\" data-start=\"2947\" data-end=\"2988\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u06cc\u0646 \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627 \u062a\u0648\u0632\u06cc\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"g3dgq1\" data-start=\"2989\" data-end=\"3064\">\u062f\u0631 \u0635\u0648\u0631\u062a Crash \u0634\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u060c \u0641\u0642\u0637 \u0647\u0645\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/li>\n<\/ul>\n<p data-start=\"3066\" data-end=\"3140\">\u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Production \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0646\u0633\u0628\u062a \u0628\u0647 \u062d\u0627\u0644\u062a Fork \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0628\u0647\u062a\u0631\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"3142\" data-end=\"3145\" \/>\n<h1 data-section-id=\"1jgiype\" data-start=\"3147\" data-end=\"3162\">\u0630\u062e\u06cc\u0631\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/h1>\n<p data-start=\"3164\" data-end=\"3204\">\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0648\u0636\u0639\u06cc\u062a \u0631\u0627 \u0630\u062e\u06cc\u0631\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>pm2 save<\/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=\"3228\" data-end=\"3278\">\u062a\u0627 \u067e\u0633 \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"3280\" data-end=\"3283\" \/>\n<h1 data-section-id=\"1x5yk97\" data-start=\"3285\" data-end=\"3315\">\u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 Production<\/h1>\n<p data-start=\"3317\" data-end=\"3376\">\u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0641\u0627\u06cc\u0644 Ecosystem \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0645\u0644\u200c\u062a\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=\"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=\"\u037c11\">module<\/span><span class=\"\u037cv\">.<\/span>exports <span class=\"\u037cv\">=<\/span> {\r\n  apps: [\r\n    {\r\n      name: <span class=\"\u037cz\">\"myapp\"<\/span>,\r\n      script: <span class=\"\u037cz\">\"app.js\"<\/span>,\r\n      instances: <span class=\"\u037cz\">\"max\"<\/span>,\r\n      exec_mode: <span class=\"\u037cz\">\"cluster\"<\/span>,\r\n      autorestart: <span class=\"\u037cy\">true<\/span>,\r\n      watch: <span class=\"\u037cy\">false<\/span>,\r\n      max_memory_restart: <span class=\"\u037cz\">\"500M\"<\/span>,\r\n      env_production: {\r\n        NODE_ENV: <span class=\"\u037cz\">\"production\"<\/span>,\r\n        PORT: <span class=\"\u037cy\">3000<\/span>\r\n      }\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<p data-start=\"3704\" data-end=\"3720\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc:<\/p>\n<ul data-start=\"3722\" data-end=\"3921\">\n<li data-section-id=\"9fqw1z\" data-start=\"3722\" data-end=\"3760\">\u0627\u0632 \u062a\u0645\u0627\u0645 \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc CPU \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1oge69e\" data-start=\"3761\" data-end=\"3838\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0635\u0631\u0641 \u0628\u06cc\u0634 \u0627\u0632 \u06f5\u06f0\u06f0 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u062d\u0627\u0641\u0638\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 Restart \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"5a3n8r\" data-start=\"3839\" data-end=\"3890\">\u0642\u0627\u0628\u0644\u06cc\u062a Watch \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a \u062a\u0627 \u0645\u0635\u0631\u0641 \u0645\u0646\u0627\u0628\u0639 \u06a9\u0627\u0647\u0634 \u06cc\u0627\u0628\u062f.<\/li>\n<li data-section-id=\"bedxfe\" data-start=\"3891\" data-end=\"3921\">Restart \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u06cc\u0632 \u0641\u0639\u0627\u0644 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<hr data-start=\"3923\" data-end=\"3926\" \/>\n<p data-start=\"3928\" data-end=\"4041\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u062a\u0648\u0633\u0637 PM2 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u062f\u0631 \u067e\u0634\u062a <strong data-start=\"4006\" data-end=\"4029\">Nginx Reverse Proxy<\/strong> \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"vx78qk\" data-start=\"0\" data-end=\"52\">\u0645\u0631\u062d\u0644\u0647 \u0686\u0647\u0627\u0631\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Reverse Proxy<\/h1>\n<p data-start=\"54\" data-end=\"138\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062a\u0648\u0633\u0637 PM2 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645.<\/p>\n<p data-start=\"140\" data-end=\"276\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <strong data-start=\"181\" data-end=\"236\">Node.js \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \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 \u0646\u06a9\u0646\u062f<\/strong> \u0648 \u062a\u0645\u0627\u0645 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f <strong data-start=\"262\" data-end=\"271\">Nginx<\/strong> \u0634\u0648\u062f.<\/p>\n<p data-start=\"278\" data-end=\"324\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc\u060c Nginx \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=\"326\" data-end=\"486\">\n<li data-section-id=\"16p2s17\" data-start=\"326\" data-end=\"359\">\u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0648 HTTPS<\/li>\n<li data-section-id=\"t3mo3i\" data-start=\"360\" data-end=\"378\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u0648\u0627\u0647\u06cc SSL<\/li>\n<li data-section-id=\"fd25oc\" data-start=\"379\" data-end=\"408\">\u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 Node.js<\/li>\n<li data-section-id=\"n8t6zn\" data-start=\"409\" data-end=\"436\">\u0633\u0631\u0648\u06cc\u0633\u200c\u062f\u0647\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static<\/li>\n<li data-section-id=\"ohr8nu\" data-start=\"437\" data-end=\"464\">\u0627\u0639\u0645\u0627\u0644 Cache \u0648 Compression<\/li>\n<li data-section-id=\"1t3zzq3\" data-start=\"465\" data-end=\"486\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<\/ul>\n<p data-start=\"488\" data-end=\"581\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062a\u0646\u0647\u0627 \u0631\u0648\u06cc <code data-start=\"522\" data-end=\"533\">localhost<\/code> \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"583\" data-end=\"586\" \/>\n<h1 data-section-id=\"1e8ck85\" data-start=\"588\" data-end=\"607\">\u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc \u0627\u0631\u062a\u0628\u0627\u0637<\/h1>\n<p data-start=\"609\" data-end=\"669\">\u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0633\u06cc\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u0647 \u0634\u06a9\u0644 \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>\u06a9\u0627\u0631\u0628\u0631\r\n    \u2502\r\n HTTPS\r\n    \u2502\r\n Nginx\r\n    \u2502\r\n Reverse Proxy\r\n    \u2502\r\nlocalhost:3000\r\n    \u2502\r\nNode.js<\/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=\"784\" data-end=\"787\" \/>\n<h1 data-section-id=\"10eek90\" data-start=\"789\" data-end=\"816\">\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/h1>\n<p data-start=\"818\" data-end=\"909\">\u0627\u06af\u0631 \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \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><span class=\"\u037c10\">sudo<\/span> nano \/etc\/nginx\/sites-available\/example.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<blockquote data-start=\"985\" data-end=\"1035\">\n<p data-start=\"987\" data-end=\"1035\">\u0628\u0647\u200c\u062c\u0627\u06cc <code data-start=\"994\" data-end=\"1007\">example.com<\/code> \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"1037\" data-end=\"1040\" \/>\n<h1 data-section-id=\"x7loh9\" data-start=\"1042\" data-end=\"1066\">\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Reverse Proxy<\/h1>\n<p data-start=\"1068\" data-end=\"1130\">\u062f\u0627\u062e\u0644 \u0628\u0644\u0627\u06a9 <code data-start=\"1078\" data-end=\"1086\">server<\/code>\u060c \u0628\u062e\u0634 <code data-start=\"1092\" data-end=\"1104\">location \/<\/code> \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062a\u063a\u06cc\u06cc\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>server {\r\n\r\n    listen 80;\r\n\r\n    server_name example.com www.example.com;\r\n\r\n    location \/ {\r\n\r\n        proxy_pass http:\/\/localhost:3000;\r\n\r\n        proxy_http_version 1.1;\r\n\r\n        proxy_set_header Upgrade $http_upgrade;\r\n\r\n        proxy_set_header Connection \"upgrade\";\r\n\r\n        proxy_set_header Host $host;\r\n\r\n        proxy_cache_bypass $http_upgrade;\r\n\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<p data-start=\"1511\" data-end=\"1607\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a\u06cc \u063a\u06cc\u0631 \u0627\u0632 3000 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u0642\u062f\u0627\u0631 <code data-start=\"1567\" data-end=\"1579\">proxy_pass<\/code> \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0622\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"1609\" data-end=\"1612\" \/>\n<h1 data-section-id=\"1fvv7j6\" data-start=\"1614\" data-end=\"1644\">\u0647\u0631 \u0628\u062e\u0634 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h1>\n<h2 data-section-id=\"8i8h7r\" data-start=\"1646\" data-end=\"1659\">proxy_pass<\/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>proxy_pass http:\/\/localhost:3000;<\/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=\"1721\" data-end=\"1780\">\u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"1782\" data-end=\"1785\" \/>\n<h2 data-section-id=\"qhtyp7\" data-start=\"1787\" data-end=\"1808\">proxy_http_version<\/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>proxy_http_version 1.1;<\/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=\"1860\" data-end=\"1939\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTP\/1.1 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f WebSocket \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"1941\" data-end=\"1944\" \/>\n<h2 data-section-id=\"yg2sru\" data-start=\"1946\" data-end=\"1963\">Upgrade Header<\/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>proxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";<\/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=\"2070\" data-end=\"2147\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 WebSocket \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f (\u0645\u0627\u0646\u0646\u062f Socket.IO) \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2149\" data-end=\"2152\" \/>\n<h2 data-section-id=\"1sp8fyy\" data-start=\"2154\" data-end=\"2168\">Host Header<\/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>proxy_set_header Host $host;<\/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=\"2225\" data-end=\"2274\">\u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2276\" data-end=\"2335\">\u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0641\u0631\u06cc\u0645\u0648\u0631\u06a9\u200c\u0647\u0627 \u0645\u0627\u0646\u0646\u062f Express \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2337\" data-end=\"2340\" \/>\n<h2 data-section-id=\"wn7qb\" data-start=\"2342\" data-end=\"2357\">Cache Bypass<\/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>proxy_cache_bypass $http_upgrade;<\/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=\"2419\" data-end=\"2481\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Upgrade \u06cc\u0627 WebSocket\u060c \u0627\u0632 Cache \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2483\" data-end=\"2486\" \/>\n<h1 data-section-id=\"14krvvp\" data-start=\"2488\" data-end=\"2501\">\u062a\u0633\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/h1>\n<p data-start=\"2503\" data-end=\"2551\">\u0642\u0628\u0644 \u0627\u0632 Reload \u06a9\u0631\u062f\u0646 Nginx\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \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><span class=\"\u037c10\">sudo<\/span> nginx <span class=\"\u037c12\">-t<\/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=\"2592\" data-end=\"2646\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0635\u062d\u06cc\u062d \u0628\u0648\u062f\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\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>nginx: the configuration file syntax is ok\r\nnginx: configuration file test is successful<\/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=\"2762\" data-end=\"2765\" \/>\n<h1 data-section-id=\"wamr0u\" data-start=\"2767\" data-end=\"2782\">\u0627\u0639\u0645\u0627\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/h1>\n<p data-start=\"2784\" data-end=\"2828\">\u0627\u06a9\u0646\u0648\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u062f\u0648\u0646 \u0642\u0637\u0639 \u0633\u0631\u0648\u06cc\u0633 Reload \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 reload 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<hr data-start=\"2883\" data-end=\"2886\" \/>\n<h1 data-section-id=\"19qgloa\" data-start=\"2888\" data-end=\"2900\">\u062a\u0633\u062a \u0639\u0645\u0644\u06a9\u0631\u062f<\/h1>\n<p data-start=\"2902\" data-end=\"2952\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \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:\/\/example.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=\"2998\" data-end=\"3084\">\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"3086\" data-end=\"3089\" \/>\n<h1 data-section-id=\"wzrsyx\" data-start=\"3091\" data-end=\"3121\">\u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631<\/h1>\n<p data-start=\"3123\" data-end=\"3211\">\u0627\u06af\u0631 \u0686\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0647\u0631\u06a9\u062f\u0627\u0645 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"3213\" data-end=\"3260\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0648\u0645 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 3001 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \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 \/app2 {\r\n\r\n    proxy_pass http:\/\/localhost:3001;\r\n\r\n    proxy_http_version 1.1;\r\n\r\n    proxy_set_header Upgrade $http_upgrade;\r\n\r\n    proxy_set_header Connection \"upgrade\";\r\n\r\n    proxy_set_header Host $host;\r\n\r\n    proxy_cache_bypass $http_upgrade;\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=\"3538\" data-end=\"3550\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\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>https:\/\/example.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=\"3582\" data-end=\"3609\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0648\u0644 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p data-start=\"3611\" data-end=\"3612\">\u0648<\/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:\/\/example.com\/app2<\/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=\"3648\" data-end=\"3677\">\u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0648\u0645 \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"3679\" data-end=\"3682\" \/>\n<h1 data-section-id=\"1wgjf53\" data-start=\"3684\" data-end=\"3706\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Subdomain<\/h1>\n<p data-start=\"3708\" data-end=\"3775\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u06a9 Subdomain \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"3777\" data-end=\"3787\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/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=\"3789\" data-end=\"3920\">\n<thead data-start=\"3789\" data-end=\"3806\">\n<tr data-start=\"3789\" data-end=\"3806\">\n<th class=\"last:pe-10\" data-start=\"3789\" data-end=\"3796\" data-col-size=\"sm\">\u0622\u062f\u0631\u0633<\/th>\n<th class=\"last:pe-10\" data-start=\"3796\" data-end=\"3806\" data-col-size=\"sm\">\u0628\u0631\u0646\u0627\u0645\u0647<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"3826\" data-end=\"3920\">\n<tr data-start=\"3826\" data-end=\"3859\">\n<td data-start=\"3826\" data-end=\"3844\" data-col-size=\"sm\">app.example.com<\/td>\n<td data-start=\"3844\" data-end=\"3859\" data-col-size=\"sm\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc<\/td>\n<\/tr>\n<tr data-start=\"3860\" data-end=\"3885\">\n<td data-start=\"3860\" data-end=\"3878\" data-col-size=\"sm\">api.example.com<\/td>\n<td data-col-size=\"sm\" data-start=\"3878\" data-end=\"3885\">API<\/td>\n<\/tr>\n<tr data-start=\"3886\" data-end=\"3920\">\n<td data-start=\"3886\" data-end=\"3906\" data-col-size=\"sm\">admin.example.com<\/td>\n<td data-col-size=\"sm\" data-start=\"3906\" data-end=\"3920\">\u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"3922\" data-end=\"4036\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc \u0647\u0631 Subdomain \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 Nginx \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"4038\" data-end=\"4041\" \/>\n<h1 data-section-id=\"pgx0pc\" data-start=\"4043\" data-end=\"4074\">\u0686\u0631\u0627 Reverse Proxy \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f\u061f<\/h1>\n<p data-start=\"4076\" data-end=\"4124\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Reverse Proxy \u0645\u0632\u0627\u06cc\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645\u06cc \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"4126\" data-end=\"4429\">\n<li data-section-id=\"1awenpp\" data-start=\"4126\" data-end=\"4177\">\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a.<\/li>\n<li data-section-id=\"9ddvxx\" data-start=\"4178\" data-end=\"4217\">\u0645\u062f\u06cc\u0631\u06cc\u062a HTTPS \u062a\u0648\u0633\u0637 Nginx \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"najv7y\" data-start=\"4218\" data-end=\"4266\">\u0627\u0645\u06a9\u0627\u0646 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc Cache \u0648 Compression \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/li>\n<li data-section-id=\"eq9b9\" data-start=\"4267\" data-end=\"4324\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0628\u0627 \u0633\u0631\u0639\u062a \u0628\u0633\u06cc\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u062f\u0647\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"7wwiqs\" data-start=\"4325\" data-end=\"4380\">\u0627\u0645\u06a9\u0627\u0646 Load Balancing \u0628\u06cc\u0646 \u0686\u0646\u062f\u06cc\u0646 Instance \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"12xxn4g\" data-start=\"4381\" data-end=\"4429\">\u0627\u0645\u0646\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u0645\u062d\u0633\u0648\u0633\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"4431\" data-end=\"4530\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Production \u0627\u0632 \u0645\u0639\u0645\u0627\u0631\u06cc <strong data-start=\"4488\" data-end=\"4513\">Nginx + Node.js + PM2<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1f782ps\" data-start=\"0\" data-end=\"46\">\u0645\u0631\u062d\u0644\u0647 \u067e\u0646\u062c\u0645: \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc HTTPS \u0628\u0627 Let&#8217;s Encrypt<\/h1>\n<p data-start=\"48\" data-end=\"168\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u062a\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"170\" data-end=\"274\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTPS \u062f\u06cc\u06af\u0631 \u06cc\u06a9 \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a\u061b \u0628\u0644\u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p data-start=\"276\" data-end=\"293\">\u0628\u0627 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc SSL:<\/p>\n<ul data-start=\"295\" data-end=\"538\">\n<li data-section-id=\"13n8yc8\" data-start=\"295\" data-end=\"343\">\u062a\u0645\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0633\u0631\u0648\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"235lpy\" data-start=\"344\" data-end=\"377\">\u0627\u0632 \u0633\u0631\u0642\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li data-section-id=\"1wneatn\" data-start=\"378\" data-end=\"431\">\u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627 \u0633\u0627\u06cc\u062a \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 <strong data-start=\"406\" data-end=\"416\">Secure<\/strong> \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/li>\n<li data-section-id=\"ik7l8\" data-start=\"432\" data-end=\"468\">\u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1b13fd3\" data-start=\"469\" data-end=\"538\">\u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648 \u0645\u0627\u0646\u0646\u062f Google \u0627\u0645\u062a\u06cc\u0627\u0632 \u0628\u0647\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u062a \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"540\" data-end=\"619\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 <strong data-start=\"556\" data-end=\"573\">Let&#8217;s Encrypt<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u06af\u0648\u0627\u0647\u06cc SSL \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<hr data-start=\"621\" data-end=\"624\" \/>\n<h1 data-section-id=\"11vxkys\" data-start=\"626\" data-end=\"639\">\u0646\u0635\u0628 Certbot<\/h1>\n<p data-start=\"641\" data-end=\"688\">\u0627\u0628\u062a\u062f\u0627 \u0641\u0647\u0631\u0633\u062a \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\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> apt update<\/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=\"719\" data-end=\"764\">\u0633\u067e\u0633 Certbot \u0648 \u0627\u0641\u0632\u0648\u0646\u0647 \u0645\u062e\u0635\u0648\u0635 Nginx \u0631\u0627 \u0646\u0635\u0628 \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> apt install certbot python3-certbot-nginx <span class=\"\u037c12\">-y<\/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<hr data-start=\"829\" data-end=\"832\" \/>\n<h1 data-section-id=\"1nj929r\" data-start=\"834\" data-end=\"852\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL<\/h1>\n<p data-start=\"854\" data-end=\"883\">\u0627\u06a9\u0646\u0648\u0646 \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> certbot <span class=\"\u037c12\">--nginx<\/span> <span class=\"\u037c12\">-d<\/span> example.com <span class=\"\u037c12\">-d<\/span> www.example.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=\"953\" data-end=\"1003\">\u0628\u0647\u200c\u062c\u0627\u06cc <code data-start=\"960\" data-end=\"973\">example.com<\/code> \u062f\u0627\u0645\u0646\u0647 \u0648\u0627\u0642\u0639\u06cc \u062e\u0648\u062f \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<p data-start=\"1005\" data-end=\"1015\">\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=\"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> certbot <span class=\"\u037c12\">--nginx<\/span> <span class=\"\u037c12\">-d<\/span> parmincloud.ir <span class=\"\u037c12\">-d<\/span> www.parmincloud.ir<\/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=\"1091\" data-end=\"1094\" \/>\n<h1 data-section-id=\"1fvoxc8\" data-start=\"1096\" data-end=\"1128\">\u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u200c\u0627\u0641\u062a\u062f\u061f<\/h1>\n<p data-start=\"1130\" data-end=\"1179\">Certbot \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \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=\"1181\" data-end=\"1334\">\n<li data-section-id=\"18j02ka\" data-start=\"1181\" data-end=\"1201\">\u0628\u0631\u0631\u0633\u06cc \u0645\u0627\u0644\u06a9\u06cc\u062a \u062f\u0627\u0645\u0646\u0647<\/li>\n<li data-section-id=\"p2eznu\" data-start=\"1202\" data-end=\"1237\">\u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0627\u0632 Let&#8217;s Encrypt<\/li>\n<li data-section-id=\"1i9t3t6\" data-start=\"1238\" data-end=\"1265\">\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx<\/li>\n<li data-section-id=\"reeasp\" data-start=\"1266\" data-end=\"1283\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 HTTPS<\/li>\n<li data-section-id=\"zl4vzk\" data-start=\"1284\" data-end=\"1314\">\u0627\u06cc\u062c\u0627\u062f \u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a HTTP \u0628\u0647 HTTPS<\/li>\n<li data-section-id=\"woxh0e\" data-start=\"1315\" data-end=\"1334\">Reload \u06a9\u0631\u062f\u0646 Nginx<\/li>\n<\/ul>\n<p data-start=\"1336\" data-end=\"1396\">\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u06cc\u0627\u0632\u06cc \u0646\u06cc\u0633\u062a \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"1398\" data-end=\"1401\" \/>\n<h1 data-section-id=\"13gb15b\" data-start=\"1403\" data-end=\"1439\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 Certbot \u0627\u0632 \u0634\u0645\u0627 \u0645\u06cc\u200c\u067e\u0631\u0633\u062f<\/h1>\n<p data-start=\"1441\" data-end=\"1479\">\u062f\u0631 \u0637\u0648\u0644 \u0646\u0635\u0628 \u0686\u0646\u062f \u0633\u0624\u0627\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h2 data-section-id=\"47tmoz\" data-start=\"1481\" data-end=\"1489\">\u0627\u06cc\u0645\u06cc\u0644<\/h2>\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>Enter email address<\/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=\"1524\" data-end=\"1547\">\u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1549\" data-end=\"1603\">\u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u200c\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u062f\u06cc\u062f \u06af\u0648\u0627\u0647\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"1605\" data-end=\"1608\" \/>\n<h2 data-section-id=\"844rmc\" data-start=\"1610\" data-end=\"1627\">\u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/h2>\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>Do you agree?<\/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=\"1656\" data-end=\"1662\">\u06af\u0632\u06cc\u0646\u0647:<\/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>Y<\/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=\"1679\" data-end=\"1692\">\u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"1694\" data-end=\"1697\" \/>\n<h2 data-section-id=\"azscbc\" data-start=\"1699\" data-end=\"1717\">\u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a \u062e\u0648\u062f\u06a9\u0627\u0631<\/h2>\n<p data-start=\"1719\" data-end=\"1755\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0633\u0624\u0627\u0644 \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>Redirect HTTP to HTTPS?<\/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=\"1794\" data-end=\"1827\">\u06af\u0632\u06cc\u0646\u0647 \u0634\u0645\u0627\u0631\u0647 <strong data-start=\"1806\" data-end=\"1811\">2<\/strong> \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \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>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=\"1844\" data-end=\"1900\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc HTTP \u0628\u0647 HTTPS \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"1902\" data-end=\"1905\" \/>\n<h1 data-section-id=\"6utpqp\" data-start=\"1907\" data-end=\"1928\">\u0628\u0631\u0631\u0633\u06cc \u06af\u0648\u0627\u0647\u06cc \u0646\u0635\u0628\u200c\u0634\u062f\u0647<\/h1>\n<p data-start=\"1930\" data-end=\"1960\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc \u0646\u0635\u0628\u200c\u0634\u062f\u0647:<\/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> certbot certificates<\/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=\"2001\" data-end=\"2013\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0645\u0648\u0646\u0647:<\/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>Certificate Name: example.com\r\nDomains: example.com www.example.com\r\nExpiry Date: 2026-10-20<\/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=\"2119\" data-end=\"2122\" \/>\n<h1 data-section-id=\"xhyrqf\" data-start=\"2124\" data-end=\"2134\">\u062a\u0633\u062a \u0633\u0627\u06cc\u062a<\/h1>\n<p data-start=\"2136\" data-end=\"2173\">\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>https:\/\/example.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=\"2208\" data-end=\"2213\">\u0628\u0627\u06cc\u062f:<\/p>\n<ul data-start=\"2215\" data-end=\"2266\">\n<li data-section-id=\"14gmj78\" data-start=\"2215\" data-end=\"2231\">\u0639\u0644\u0627\u0645\u062a \u0642\u0641\u0644 (\ud83d\udd12)<\/li>\n<li data-section-id=\"1qrd1ep\" data-start=\"2232\" data-end=\"2252\">\u0627\u062a\u0635\u0627\u0644 \u0627\u0645\u0646 (Secure)<\/li>\n<li data-section-id=\"13yk2fg\" data-start=\"2253\" data-end=\"2266\">\u06af\u0648\u0627\u0647\u06cc \u0645\u0639\u062a\u0628\u0631<\/li>\n<\/ul>\n<p data-start=\"2268\" data-end=\"2283\">\u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"2285\" data-end=\"2288\" \/>\n<h1 data-section-id=\"ni257c\" data-start=\"2290\" data-end=\"2310\">\u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc<\/h1>\n<p data-start=\"2312\" data-end=\"2364\">\u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc Let&#8217;s Encrypt \u0641\u0642\u0637 <strong data-start=\"2340\" data-end=\"2350\">\u06f9\u06f0 \u0631\u0648\u0632<\/strong> \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p data-start=\"2366\" data-end=\"2386\">\u0627\u0645\u0627 \u062c\u0627\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<p data-start=\"2388\" data-end=\"2445\">Certbot \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628\u060c \u0633\u0631\u0648\u06cc\u0633 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2447\" data-end=\"2511\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u0635\u062d\u06cc\u062d \u0622\u0646 \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> certbot renew <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=\"2555\" data-end=\"2612\">\u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \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 simulated 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=\"2678\" data-end=\"2740\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u0646\u06cc\u0632 \u0628\u062f\u0648\u0646 \u062f\u062e\u0627\u0644\u062a \u0634\u0645\u0627 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2742\" data-end=\"2745\" \/>\n<h1 data-section-id=\"5qkg15\" data-start=\"2747\" data-end=\"2767\">\u0645\u062d\u0644 \u0630\u062e\u06cc\u0631\u0647 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627<\/h1>\n<p data-start=\"2769\" data-end=\"2810\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\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\/example.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=\"2860\" data-end=\"2890\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\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>fullchain.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=\"2919\" data-end=\"2920\">\u0648<\/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>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=\"2947\" data-end=\"2980\">\u06a9\u0647 Nginx \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2982\" data-end=\"2985\" \/>\n<h1 data-section-id=\"8ko3j3\" data-start=\"2987\" data-end=\"3017\">\u0646\u0645\u0648\u0646\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a HTTPS \u062f\u0631 Nginx<\/h1>\n<p data-start=\"3019\" data-end=\"3114\">\u0627\u06af\u0631 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc \u0642\u0635\u062f \u062f\u0627\u0634\u062a\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc \u0628\u0647 \u0634\u06a9\u0644 \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>server {\r\n\r\n    listen 80;\r\n\r\n    server_name example.com www.example.com;\r\n\r\n    return 301 https:\/\/$host$request_uri;\r\n\r\n}\r\n\r\nserver {\r\n\r\n    listen 443 ssl http2;\r\n\r\n    server_name example.com www.example.com;\r\n\r\n    ssl_certificate     \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\r\n    ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\r\n\r\n    ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\n    location \/ {\r\n\r\n        proxy_pass http:\/\/localhost:3000;\r\n\r\n        proxy_http_version 1.1;\r\n\r\n        proxy_set_header Upgrade $http_upgrade;\r\n\r\n        proxy_set_header Connection \"upgrade\";\r\n\r\n        proxy_set_header Host $host;\r\n\r\n        proxy_cache_bypass $http_upgrade;\r\n\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<p data-start=\"3793\" data-end=\"3895\">\u062f\u0631 \u0639\u0645\u0644\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 <code data-start=\"3819\" data-end=\"3836\">certbot --nginx<\/code> \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\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"3897\" data-end=\"3900\" \/>\n<h1 data-section-id=\"4cjlcn\" data-start=\"3902\" data-end=\"3925\">\u0686\u0631\u0627 HTTPS \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f\u061f<\/h1>\n<p data-start=\"3927\" data-end=\"3962\">\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc HTTPS \u0645\u0632\u0627\u06cc\u0627\u06cc \u0645\u062a\u0639\u062f\u062f\u06cc \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"3964\" data-end=\"4209\">\n<li data-section-id=\"n1c0wt\" data-start=\"3964\" data-end=\"3990\">\u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n<li data-section-id=\"146tswu\" data-start=\"3991\" data-end=\"4027\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062d\u0645\u0644\u0627\u062a Man-in-the-Middle<\/li>\n<li data-section-id=\"13x92u5\" data-start=\"4028\" data-end=\"4051\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n<li data-section-id=\"882u37\" data-start=\"4052\" data-end=\"4087\">\u0628\u0647\u0628\u0648\u062f \u0631\u062a\u0628\u0647 \u0633\u0627\u06cc\u062a \u062f\u0631 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648<\/li>\n<li data-section-id=\"1rlr8q6\" data-start=\"4088\" data-end=\"4122\">\u0627\u0645\u06a9\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTP\/2 \u0648 HTTP\/3<\/li>\n<li data-section-id=\"19pkpi7\" data-start=\"4123\" data-end=\"4160\">\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u062c\u062f\u06cc\u062f<\/li>\n<li data-section-id=\"bbgri8\" data-start=\"4161\" data-end=\"4209\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0646\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0627\u0645 <strong data-start=\"4185\" data-end=\"4199\">Not Secure<\/strong> \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631<\/li>\n<\/ul>\n<p data-start=\"4211\" data-end=\"4286\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0627\u0632 HTTPS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"4288\" data-end=\"4291\" \/>\n<p data-start=\"4293\" data-end=\"4414\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0634\u0645\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 <strong data-start=\"4326\" data-end=\"4335\">Nginx<\/strong> \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"4352\" data-end=\"4361\">HTTPS<\/strong> \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0644\u0627\u064b \u0627\u0645\u0646 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1qhyqwi\" data-start=\"0\" data-end=\"54\">\u0645\u0631\u062d\u0644\u0647 \u0634\u0634\u0645: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 UFW \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 Production<\/h1>\n<p data-start=\"56\" data-end=\"194\">\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u0648 HTTPS \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u062a\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-start=\"196\" data-end=\"327\">Ubuntu \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 <strong data-start=\"235\" data-end=\"267\">UFW (Uncomplicated Firewall)<\/strong> \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0642\u0648\u0627\u0646\u06cc\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"329\" data-end=\"443\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 UFW \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0641\u0642\u0637 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0645\u062c\u0627\u0632 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u0646\u062f \u0648 \u0633\u0627\u06cc\u0631 \u067e\u0648\u0631\u062a\u200c\u0647\u0627 \u0645\u0633\u062f\u0648\u062f \u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"445\" data-end=\"448\" \/>\n<h1 data-section-id=\"13ljh34\" data-start=\"450\" data-end=\"471\">\u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0641\u0627\u06cc\u0631\u0648\u0627\u0644<\/h1>\n<p data-start=\"473\" data-end=\"508\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc UFW \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><span class=\"\u037c10\">sudo<\/span> ufw status<\/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=\"539\" data-end=\"569\">\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\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>Status: inactive<\/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=\"601\" data-end=\"633\">\u06cc\u0639\u0646\u06cc \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0647\u0646\u0648\u0632 \u0641\u0639\u0627\u0644 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"635\" data-end=\"638\" \/>\n<h1 data-section-id=\"1b3bx9c\" data-start=\"640\" data-end=\"661\">\u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 SSH<\/h1>\n<p data-start=\"663\" data-end=\"771\">\u0642\u0628\u0644 \u0627\u0632 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0631\u0627 \u0645\u062c\u0627\u0632 \u06a9\u0646\u06cc\u062f\u061b \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0645\u0627 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0642\u0637\u0639 \u0634\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><span class=\"\u037c10\">sudo<\/span> ufw allow OpenSSH<\/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=\"809\" data-end=\"812\" \/>\n<h1 data-section-id=\"1y3r6wu\" data-start=\"814\" data-end=\"837\">\u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 Nginx<\/h1>\n<p data-start=\"839\" data-end=\"938\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTP \u0648 HTTPS \u0628\u0647 \u0633\u0627\u06cc\u062a \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f\u060c \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0645\u0644 Nginx \u0631\u0627 \u0641\u0639\u0627\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=\"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> ufw allow <span class=\"\u037cz\">'Nginx Full'<\/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=\"981\" data-end=\"1018\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<ul data-start=\"1020\" data-end=\"1045\">\n<li data-section-id=\"1td2ryx\" data-start=\"1020\" data-end=\"1031\">80 (HTTP)<\/li>\n<li data-section-id=\"10zxbwx\" data-start=\"1032\" data-end=\"1045\">443 (HTTPS)<\/li>\n<\/ul>\n<hr data-start=\"1047\" data-end=\"1050\" \/>\n<h1 data-section-id=\"1a6143g\" data-start=\"1052\" data-end=\"1071\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644<\/h1>\n<p data-start=\"1073\" data-end=\"1096\">\u0627\u06a9\u0646\u0648\u0646 UFW \u0631\u0627 \u0641\u0639\u0627\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=\"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> ufw enable<\/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=\"1127\" data-end=\"1151\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u06cc\u0627\u0645 \u0632\u06cc\u0631:<\/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>Command may disrupt existing ssh connections.\r\nProceed with operation (y|n)?<\/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=\"1242\" data-end=\"1245\">\u062d\u0631\u0641<\/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>y<\/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=\"1262\" data-end=\"1289\">\u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 Enter \u0628\u0632\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"1291\" data-end=\"1294\" \/>\n<h1 data-section-id=\"3pz9m8\" data-start=\"1296\" data-end=\"1310\">\u0628\u0631\u0631\u0633\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646<\/h1>\n<p data-start=\"1312\" data-end=\"1353\">\u0627\u06a9\u0646\u0648\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \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><span class=\"\u037c10\">sudo<\/span> ufw status<\/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=\"1384\" data-end=\"1410\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0645\u0634\u0627\u0628\u0647 \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>Status: active\r\n\r\nTo                         Action      From\r\n--                         ------      ----\r\nOpenSSH                    ALLOW       Anywhere\r\nNginx Full                 ALLOW       Anywhere\r\nOpenSSH (v6)               ALLOW       Anywhere (v6)\r\nNginx Full (v6)            ALLOW       Anywhere (v6)<\/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=\"1731\" data-end=\"1734\" \/>\n<h1 data-section-id=\"1at9428\" data-start=\"1736\" data-end=\"1762\">\u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f<\/h1>\n<p data-start=\"1764\" data-end=\"1798\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 UFW:<\/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> ufw app list<\/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=\"1831\" data-end=\"1843\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/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>Available applications:\r\n\r\nNginx Full\r\nNginx HTTP\r\nNginx HTTPS\r\nOpenSSH<\/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=\"1925\" data-end=\"1928\" \/>\n<h1 data-section-id=\"17e1ltj\" data-start=\"1930\" data-end=\"1955\">\u062a\u0641\u0627\u0648\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Nginx<\/h1>\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=\"1957\" data-end=\"2062\">\n<thead data-start=\"1957\" data-end=\"1975\">\n<tr data-start=\"1957\" data-end=\"1975\">\n<th class=\"last:pe-10\" data-start=\"1957\" data-end=\"1967\" data-col-size=\"sm\">\u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/th>\n<th class=\"last:pe-10\" data-start=\"1967\" data-end=\"1975\" data-col-size=\"sm\">\u067e\u0648\u0631\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1995\" data-end=\"2062\">\n<tr data-start=\"1995\" data-end=\"2014\">\n<td data-start=\"1995\" data-end=\"2008\" data-col-size=\"sm\">Nginx HTTP<\/td>\n<td data-start=\"2008\" data-end=\"2014\" data-col-size=\"sm\">80<\/td>\n<\/tr>\n<tr data-start=\"2015\" data-end=\"2036\">\n<td data-start=\"2015\" data-end=\"2029\" data-col-size=\"sm\">Nginx HTTPS<\/td>\n<td data-start=\"2029\" data-end=\"2036\" data-col-size=\"sm\">443<\/td>\n<\/tr>\n<tr data-start=\"2037\" data-end=\"2062\">\n<td data-start=\"2037\" data-end=\"2050\" data-col-size=\"sm\">Nginx Full<\/td>\n<td data-start=\"2050\" data-end=\"2062\" data-col-size=\"sm\">80 \u0648 443<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"2064\" data-end=\"2125\">\u062f\u0631 \u0627\u06a9\u062b\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc Production \u0627\u0632 <strong data-start=\"2095\" data-end=\"2109\">Nginx Full<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"2127\" data-end=\"2130\" \/>\n<h1 data-section-id=\"1xvuivm\" data-start=\"2132\" data-end=\"2146\">\u062d\u0630\u0641 \u06cc\u06a9 \u0642\u0627\u0646\u0648\u0646<\/h1>\n<p data-start=\"2148\" data-end=\"2192\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0642\u0627\u0646\u0648\u0646 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2194\" data-end=\"2204\">\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=\"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> ufw delete allow <span class=\"\u037cz\">'Nginx HTTP'<\/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=\"2254\" data-end=\"2256\">\u06cc\u0627<\/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> ufw delete allow <span class=\"\u037cy\">8080<\/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<hr data-start=\"2298\" data-end=\"2301\" \/>\n<h1 data-section-id=\"pphrvm\" data-start=\"2303\" data-end=\"2333\">\u0646\u0645\u0627\u06cc\u0634 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0634\u0645\u0627\u0631\u0647\u200c\u06af\u0630\u0627\u0631\u06cc\u200c\u0634\u062f\u0647<\/h1>\n<p data-start=\"2335\" data-end=\"2372\">\u06af\u0627\u0647\u06cc \u062d\u0630\u0641 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u0631\u0627\u062d\u062a\u200c\u062a\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><span class=\"\u037c10\">sudo<\/span> ufw status numbered<\/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=\"2412\" data-end=\"2424\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/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>[1] OpenSSH\r\n[2] Nginx Full<\/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=\"2466\" data-end=\"2484\">\u062d\u0630\u0641 \u0642\u0627\u0646\u0648\u0646 \u0634\u0645\u0627\u0631\u0647 2:<\/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> ufw delete <span class=\"\u037cy\">2<\/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<hr data-start=\"2517\" data-end=\"2520\" \/>\n<h1 data-section-id=\"nne6vk\" data-start=\"2522\" data-end=\"2556\">\u0686\u0631\u0627 \u0646\u0628\u0627\u06cc\u062f \u067e\u0648\u0631\u062a Node.js \u0628\u0627\u0632 \u0628\u0627\u0634\u062f\u061f<\/h1>\n<p data-start=\"2558\" data-end=\"2638\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 3000 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0646\u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0648\u0631\u062a \u0631\u0627 \u062f\u0631 UFW \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"2640\" data-end=\"2676\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 <strong data-start=\"2661\" data-end=\"2671\">\u0627\u0634\u062a\u0628\u0627\u0647<\/strong> \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><span class=\"\u037c10\">sudo<\/span> ufw allow <span class=\"\u037cy\">3000<\/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=\"2711\" data-end=\"2825\">\u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f \u0648 \u062a\u0645\u0627\u0645 \u0645\u0632\u0627\u06cc\u0627\u06cc Reverse Proxy \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f.<\/p>\n<p data-start=\"2827\" data-end=\"2842\">\u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0635\u062d\u06cc\u062d:<\/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>Internet\r\n      \u2502\r\n      \u25bc\r\n  Port 443\r\n      \u2502\r\n    Nginx\r\n      \u2502\r\nlocalhost:3000\r\n      \u2502\r\n   Node.js<\/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=\"2953\" data-end=\"3006\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0641\u0642\u0637 Nginx \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"3008\" data-end=\"3011\" \/>\n<h1 data-section-id=\"mv9kr0\" data-start=\"3013\" data-end=\"3038\">\u0686\u0631\u0627 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f\u061f<\/h1>\n<p data-start=\"3040\" data-end=\"3135\">\u062d\u062a\u06cc \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0627\u06cc\u0645\u0646 \u0628\u0627\u0634\u062f\u060c \u0628\u0627\u0632 \u0628\u0648\u062f\u0646 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0631\u06cc\u0633\u06a9 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<p data-start=\"3137\" data-end=\"3174\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"3176\" data-end=\"3352\">\n<li data-section-id=\"6gx8wo\" data-start=\"3176\" data-end=\"3221\">\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\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<\/li>\n<li data-section-id=\"n2t6az\" data-start=\"3222\" data-end=\"3254\">\u06a9\u0627\u0647\u0634 \u0633\u0637\u062d \u062d\u0645\u0644\u0647 (Attack Surface)<\/li>\n<li data-section-id=\"1sz73nd\" data-start=\"3255\" data-end=\"3280\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u0633\u06a9\u0646 \u067e\u0648\u0631\u062a\u200c\u0647\u0627<\/li>\n<li data-section-id=\"16kz01b\" data-start=\"3281\" data-end=\"3317\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062d\u0645\u0644\u0627\u062a \u062e\u0648\u062f\u06a9\u0627\u0631<\/li>\n<li data-section-id=\"q6g6kx\" data-start=\"3318\" data-end=\"3352\">\u0631\u0639\u0627\u06cc\u062a \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0633\u0631\u0648\u0631\u0647\u0627<\/li>\n<\/ul>\n<hr data-start=\"3354\" data-end=\"3357\" \/>\n<h1 data-section-id=\"1j3vg3b\" data-start=\"3359\" data-end=\"3400\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a UFW \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 Node.js<\/h1>\n<p data-start=\"3402\" data-end=\"3459\">\u0628\u0631\u0627\u06cc \u0627\u063a\u0644\u0628 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Production\u060c \u062a\u0646\u0647\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0632\u06cc\u0631 \u06a9\u0627\u0641\u06cc \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><span class=\"\u037c10\">sudo<\/span> ufw allow OpenSSH\r\n<span class=\"\u037c10\">sudo<\/span> ufw allow <span class=\"\u037cz\">'Nginx Full'<\/span>\r\n<span class=\"\u037c10\">sudo<\/span> ufw enable<\/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=\"3541\" data-end=\"3554\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628:<\/p>\n<ul data-start=\"3556\" data-end=\"3727\">\n<li data-section-id=\"jornhh\" data-start=\"3556\" data-end=\"3591\">SSH \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/li>\n<li data-section-id=\"f22p8m\" data-start=\"3592\" data-end=\"3648\">\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTP \u0648 HTTPS \u0628\u0647 \u0633\u0627\u06cc\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u0646\u062f.<\/li>\n<li data-section-id=\"1ijaih6\" data-start=\"3649\" data-end=\"3727\">\u062a\u0645\u0627\u0645 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u067e\u0648\u0631\u062a Node.js\u060c \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0646\u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3729\" data-end=\"3732\" \/>\n<p data-start=\"3734\" data-end=\"3923\">\u0628\u0627 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u0645\u0646\u06cc\u062a \u0634\u0628\u06a9\u0647 \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f \u0648 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0634\u0645\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"3818\" data-end=\"3825\">PM2<\/strong>\u060c <strong data-start=\"3827\" data-end=\"3836\">Nginx<\/strong>\u060c <strong data-start=\"3838\" data-end=\"3847\">HTTPS<\/strong> \u0648 <strong data-start=\"3850\" data-end=\"3857\">UFW<\/strong> \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0648 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"22ufc0\" data-start=\"0\" data-end=\"63\">\u0645\u0631\u062d\u0644\u0647 \u0647\u0641\u062a\u0645: \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0645\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc (Environment Variables)<\/h1>\n<p data-start=\"65\" data-end=\"146\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f:<\/p>\n<ul data-start=\"148\" data-end=\"313\">\n<li data-section-id=\"1tr4apt\" data-start=\"148\" data-end=\"178\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/li>\n<li data-section-id=\"v36kmq\" data-start=\"179\" data-end=\"192\">\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc API<\/li>\n<li data-section-id=\"bxqgzw\" data-start=\"193\" data-end=\"207\">\u062a\u0648\u06a9\u0646\u200c\u0647\u0627\u06cc JWT<\/li>\n<li data-section-id=\"1lf3msq\" data-start=\"208\" data-end=\"221\">\u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631<\/li>\n<li data-section-id=\"n2z9k\" data-start=\"222\" data-end=\"256\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062c\u0627\u0646\u0628\u06cc<\/li>\n<li data-section-id=\"yjbtd1\" data-start=\"257\" data-end=\"269\">\u0634\u0645\u0627\u0631\u0647 \u067e\u0648\u0631\u062a<\/li>\n<li data-section-id=\"1bh95fv\" data-start=\"270\" data-end=\"313\">\u0646\u0648\u0639 \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 (Development \u06cc\u0627 Production)<\/li>\n<\/ul>\n<p data-start=\"315\" data-end=\"469\">\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u0633\u062a\u061b \u0632\u06cc\u0631\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u0645\u062e\u0632\u0646 Git\u060c \u0644\u0627\u06af\u200c\u0647\u0627 \u06cc\u0627 \u062d\u062a\u06cc \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0641\u0634\u0627 \u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"471\" data-end=\"524\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"494\" data-end=\"519\">Environment Variables<\/strong> \u0627\u0633\u062a.<\/p>\n<hr data-start=\"526\" data-end=\"529\" \/>\n<h1 data-section-id=\"ya6wv2\" data-start=\"531\" data-end=\"555\"><span role=\"text\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0627\u06cc\u0644 <code data-start=\"549\" data-end=\"555\">.env<\/code><\/span><\/h1>\n<p data-start=\"557\" data-end=\"652\">\u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0627\u06cc\u0644 <code data-start=\"618\" data-end=\"624\">.env<\/code> \u0628\u0647 \u06a9\u0645\u06a9 \u067e\u06a9\u06cc\u062c <strong data-start=\"637\" data-end=\"647\">dotenv<\/strong> \u0627\u0633\u062a.<\/p>\n<p data-start=\"654\" data-end=\"677\">\u0627\u0628\u062a\u062f\u0627 \u067e\u06a9\u06cc\u062c \u0631\u0627 \u0646\u0635\u0628 \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\">npm<\/span> install dotenv<\/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=\"711\" data-end=\"755\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 <code data-start=\"720\" data-end=\"726\">.env<\/code> \u0631\u0627 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \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 .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<hr data-start=\"780\" data-end=\"783\" \/>\n<h1 data-section-id=\"14r6hy9\" data-start=\"785\" data-end=\"800\">\u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627<\/h1>\n<p data-start=\"802\" data-end=\"843\">\u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \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>PORT=3000\r\nNODE_ENV=production\r\n\r\nDB_HOST=localhost\r\nDB_PORT=5432\r\nDB_NAME=mydatabase\r\nDB_USER=myuser\r\nDB_PASS=StrongPassword\r\n\r\nJWT_SECRET=VeryStrongSecretKey\r\nAPI_KEY=xxxxxxxxxxxxxxxx<\/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=\"1034\" data-end=\"1051\">\u0647\u0631 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0631 \u0642\u0627\u0644\u0628:<\/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>KEY=VALUE<\/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=\"1076\" data-end=\"1089\">\u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"1091\" data-end=\"1094\" \/>\n<h1 data-section-id=\"2tahk0\" data-start=\"1096\" data-end=\"1118\"><span role=\"text\">\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 <code data-start=\"1112\" data-end=\"1118\">.env<\/code><\/span><\/h1>\n<p data-start=\"1120\" data-end=\"1207\">\u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 (\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 <code data-start=\"1158\" data-end=\"1166\">app.js<\/code> \u06cc\u0627 <code data-start=\"1170\" data-end=\"1181\">server.js<\/code>) \u062f\u0633\u062a\u0648\u0631 \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=\"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=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'dotenv'<\/span>)<span class=\"\u037cv\">.<\/span>config();<\/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=\"1256\" data-end=\"1318\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0645\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 <code data-start=\"1296\" data-end=\"1309\">process.env<\/code> \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1320\" data-end=\"1330\">\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=\"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=\"\u037cv\">const<\/span> <span class=\"\u037c11\">express<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'express'<\/span>);\r\n\r\n<span class=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'dotenv'<\/span>)<span class=\"\u037cv\">.<\/span>config();\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">app<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">express<\/span>();\r\n\r\n<span class=\"\u037c11\">app<\/span><span class=\"\u037cv\">.<\/span>listen(<span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>PORT, () =&gt; {\r\n\r\n    <span class=\"\u037c11\">console<\/span><span class=\"\u037cv\">.<\/span>log(\r\n        <span class=\"\u037cz\">`Server started on port <\/span>${<span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>PORT}<span class=\"\u037cz\">`<\/span>\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=\"1561\" data-end=\"1564\" \/>\n<h1 data-section-id=\"cbp4ff\" data-start=\"1566\" data-end=\"1586\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627<\/h1>\n<p data-start=\"1588\" data-end=\"1599\">\u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u0646\u0647:<\/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=\"\u037cv\">const<\/span> <span class=\"\u037c11\">dbHost<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>DB_HOST;\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">dbUser<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>DB_USER;\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">dbPassword<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>DB_PASS;<\/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=\"1734\" data-end=\"1787\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0647\u06cc\u0686 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u06cc \u062f\u0627\u062e\u0644 \u06a9\u062f \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n<hr data-start=\"1789\" data-end=\"1792\" \/>\n<h1 data-section-id=\"vhsvjm\" data-start=\"1794\" data-end=\"1835\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Environment Variables \u062f\u0631 PM2<\/h1>\n<p data-start=\"1837\" data-end=\"1937\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 PM2 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 Ecosystem \u0646\u06cc\u0632 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1939\" data-end=\"1945\">\u0646\u0645\u0648\u0646\u0647:<\/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=\"\u037c11\">module<\/span><span class=\"\u037cv\">.<\/span>exports <span class=\"\u037cv\">=<\/span> {\r\n\r\n    apps: [\r\n\r\n        {\r\n\r\n            name: <span class=\"\u037cz\">\"myapp\"<\/span>,\r\n\r\n            script: <span class=\"\u037cz\">\"app.js\"<\/span>,\r\n\r\n            env: {\r\n\r\n                NODE_ENV: <span class=\"\u037cz\">\"development\"<\/span>,\r\n\r\n                PORT: <span class=\"\u037cy\">3001<\/span>\r\n\r\n            },\r\n\r\n            env_production: {\r\n\r\n                NODE_ENV: <span class=\"\u037cz\">\"production\"<\/span>,\r\n\r\n                PORT: <span class=\"\u037cy\">3000<\/span>,\r\n\r\n                DB_HOST: <span class=\"\u037cz\">\"localhost\"<\/span>,\r\n\r\n                DB_USER: <span class=\"\u037cz\">\"myuser\"<\/span>,\r\n\r\n                DB_PASS: <span class=\"\u037cz\">\"StrongPassword\"<\/span>\r\n\r\n            }\r\n\r\n        }\r\n\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=\"2430\" data-end=\"2433\" \/>\n<h1 data-section-id=\"1i79al\" data-start=\"2435\" data-end=\"2449\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\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>pm2 <span class=\"\u037c10\">start<\/span> ecosystem.config.js <span class=\"\u037c12\">--env<\/span> production<\/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=\"2511\" data-end=\"2584\">PM2 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 <code data-start=\"2548\" data-end=\"2564\">env_production<\/code> \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"2586\" data-end=\"2589\" \/>\n<h1 data-section-id=\"17k3f2x\" data-start=\"2591\" data-end=\"2622\"><span role=\"text\">\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u0646\u062a\u0634\u0627\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"2616\" data-end=\"2622\">.env<\/code><\/span><\/h1>\n<p data-start=\"2624\" data-end=\"2699\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0627\u06cc\u0644 <code data-start=\"2668\" data-end=\"2674\">.env<\/code> \u0646\u0628\u0627\u06cc\u062f \u0648\u0627\u0631\u062f \u0645\u062e\u0632\u0646 Git \u0634\u0648\u062f.<\/p>\n<p data-start=\"2701\" data-end=\"2731\">\u0641\u0627\u06cc\u0644 <code data-start=\"2706\" data-end=\"2718\">.gitignore<\/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 .gitignore<\/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=\"2762\" data-end=\"2791\">\u0648 \u062e\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0622\u0646 \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>.env<\/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=\"2811\" data-end=\"2886\">\u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0641\u0627\u06cc\u0644 \u0647\u0646\u06af\u0627\u0645 Push \u06a9\u0631\u062f\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0647 GitHub \u06cc\u0627 GitLab \u0627\u0631\u0633\u0627\u0644 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2888\" data-end=\"2891\" \/>\n<h1 data-section-id=\"1rp83im\" data-start=\"2893\" data-end=\"2920\">\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0641\u0627\u06cc\u0644<\/h1>\n<p data-start=\"2922\" data-end=\"3023\">\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0627\u06cc\u0644 <code data-start=\"2940\" data-end=\"2946\">.env<\/code> \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0627\u0633\u062a\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0641\u0642\u0637 \u0645\u0627\u0644\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u0645\u06a9\u0627\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \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=\"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\">chmod<\/span> <span class=\"\u037cy\">600<\/span> .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=\"3053\" data-end=\"3123\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0641\u0642\u0637 \u0645\u0627\u0644\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f \u06cc\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u062f.<\/p>\n<hr data-start=\"3125\" data-end=\"3128\" \/>\n<h1 data-section-id=\"1l4zj2p\" data-start=\"3130\" data-end=\"3150\">\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627<\/h1>\n<p data-start=\"3152\" data-end=\"3256\">\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<p data-start=\"3258\" data-end=\"3268\">\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=\"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=\"\u037cv\">if<\/span> (<span class=\"\u037cv\">!<\/span><span class=\"\u037c11\">process<\/span><span class=\"\u037cv\">.<\/span>env<span class=\"\u037cv\">.<\/span>DB_PASS) {\r\n\r\n    <span class=\"\u037cv\">throw<\/span> <span class=\"\u037cv\">new<\/span> <span class=\"\u037c11\">Error<\/span>(<span class=\"\u037cz\">\"DB_PASS is not defined.\"<\/span>);\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=\"3369\" data-end=\"3405\">\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"3407\" data-end=\"3435\">\n<li data-section-id=\"1o3jok\" data-start=\"3407\" data-end=\"3412\">joi<\/li>\n<li data-section-id=\"1pfvbgp\" data-start=\"3413\" data-end=\"3425\">env-schema<\/li>\n<li data-section-id=\"tvsj6d\" data-start=\"3426\" data-end=\"3435\">envalid<\/li>\n<\/ul>\n<p data-start=\"3437\" data-end=\"3493\">\u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u0627\u0645\u0644 Environment Variables \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"3495\" data-end=\"3498\" \/>\n<h1 data-section-id=\"13z423x\" data-start=\"3500\" data-end=\"3517\">\u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u0647\u0645<\/h1>\n<p data-start=\"3519\" data-end=\"3576\">\u0628\u0631\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u060c \u0631\u0639\u0627\u06cc\u062a \u0646\u06a9\u0627\u062a \u0632\u06cc\u0631 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"3578\" data-end=\"3990\">\n<li data-section-id=\"1twukqp\" data-start=\"3578\" data-end=\"3618\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647 \u0631\u0627 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0642\u0631\u0627\u0631 \u0646\u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"adwvu4\" data-start=\"3619\" data-end=\"3651\">\u0641\u0627\u06cc\u0644 <code data-start=\"3626\" data-end=\"3632\">.env<\/code> \u0631\u0627 \u0648\u0627\u0631\u062f Git \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"9tnjco\" data-start=\"3652\" data-end=\"3728\">\u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u062d\u06cc\u0637 (Development\u060c Testing \u0648 Production) \u0641\u0627\u06cc\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/li>\n<li data-section-id=\"16oqhw9\" data-start=\"3729\" data-end=\"3764\">\u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 <code data-start=\"3743\" data-end=\"3749\">.env<\/code> \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"zmltkp\" data-start=\"3765\" data-end=\"3823\">\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc API \u0648 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"24nc1b\" data-start=\"3824\" data-end=\"3869\">\u0627\u0632 \u0686\u0627\u067e \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u062f\u0631 \u0644\u0627\u06af\u200c\u0647\u0627 \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1j1gfe0\" data-start=\"3870\" data-end=\"3990\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <strong data-start=\"3910\" data-end=\"3929\">HashiCorp Vault<\/strong> \u06cc\u0627 <strong data-start=\"3933\" data-end=\"3956\">AWS Secrets Manager<\/strong> \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a Secrets \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<hr data-start=\"3992\" data-end=\"3995\" \/>\n<h1 data-section-id=\"f1i1ab\" data-start=\"3997\" data-end=\"4014\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc<\/h1>\n<p data-start=\"4016\" data-end=\"4047\">\u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0646\u0627\u0633\u0628 \u067e\u0631\u0648\u0698\u0647:<\/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>myapp\/\r\n\r\n\u251c\u2500\u2500 app.js\r\n\u251c\u2500\u2500 package.json\r\n\u251c\u2500\u2500 ecosystem.config.js\r\n\u251c\u2500\u2500 .env\r\n\u251c\u2500\u2500 .gitignore\r\n\u251c\u2500\u2500 routes\/\r\n\u251c\u2500\u2500 controllers\/\r\n\u251c\u2500\u2500 models\/\r\n\u2514\u2500\u2500 public\/<\/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=\"4199\" data-end=\"4339\">\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631\u060c \u062a\u0645\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"4243\" data-end=\"4249\">.env<\/code> \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0641\u0627\u06cc\u0644 <code data-start=\"4273\" data-end=\"4294\">ecosystem.config.js<\/code> \u0645\u0633\u0626\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0648\u0633\u0637 PM2 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"4341\" data-end=\"4344\" \/>\n<p data-start=\"4346\" data-end=\"4506\">\u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0627\u0632 \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u062f\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0628\u0647 \u0634\u06a9\u0644 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1icx6x\" data-start=\"0\" data-end=\"58\">\u0645\u0631\u062d\u0644\u0647 \u0647\u0634\u062a\u0645: \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f (Performance Optimization)<\/h1>\n<p data-start=\"60\" data-end=\"199\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0686\u0646\u062f \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0647\u0645 \u0631\u0627 \u0646\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<p data-start=\"201\" data-end=\"224\">\u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"226\" data-end=\"405\">\n<li data-section-id=\"4ug998\" data-start=\"226\" data-end=\"256\">\u0635\u0641\u062d\u0627\u062a \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<li data-section-id=\"fvl6k3\" data-start=\"257\" data-end=\"289\">\u0645\u0635\u0631\u0641 \u067e\u0647\u0646\u0627\u06cc \u0628\u0627\u0646\u062f \u06a9\u0627\u0647\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"17pqojn\" data-start=\"290\" data-end=\"318\">\u0641\u0634\u0627\u0631 \u0631\u0648\u06cc Node.js \u06a9\u0645\u062a\u0631 \u0634\u0648\u062f.<\/li>\n<li data-section-id=\"19gm4cb\" data-start=\"319\" data-end=\"371\">\u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"1flrs8n\" data-start=\"372\" data-end=\"405\">\u0647\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0628\u0639 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0647\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"407\" data-end=\"463\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<hr data-start=\"465\" data-end=\"468\" \/>\n<h1 data-section-id=\"1eu5mg2\" data-start=\"470\" data-end=\"497\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Gzip<\/h1>\n<p data-start=\"499\" data-end=\"583\">\u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0633\u0627\u06cc\u062a\u060c \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644\u06cc \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u0633\u062a.<\/p>\n<p data-start=\"585\" data-end=\"629\">Nginx \u0627\u0632 Gzip \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0627\u062e\u0644\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"631\" data-end=\"661\">\u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0635\u0644\u06cc \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\/nginx\/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<p data-start=\"708\" data-end=\"777\">\u062f\u0627\u062e\u0644 \u0628\u062e\u0634 <code data-start=\"717\" data-end=\"723\">http<\/code> \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 \u062d\u0627\u0644\u062a \u06a9\u0627\u0645\u0646\u062a \u062e\u0627\u0631\u062c \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>gzip on;\r\n\r\ngzip_types\r\n    text\/plain\r\n    text\/css\r\n    application\/javascript\r\n    application\/json\r\n    application\/xml\r\n    text\/xml\r\n    image\/svg+xml;\r\n\r\ngzip_min_length 256;\r\n\r\ngzip_comp_level 5;\r\n\r\ngzip_vary on;<\/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=\"999\" data-end=\"1014\">\u062a\u0648\u0636\u06cc\u062d \u0647\u0631 \u06af\u0632\u06cc\u0646\u0647:<\/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=\"1016\" data-end=\"1262\">\n<thead data-start=\"1016\" data-end=\"1033\">\n<tr data-start=\"1016\" data-end=\"1033\">\n<th class=\"last:pe-10\" data-start=\"1016\" data-end=\"1024\" data-col-size=\"sm\">\u06af\u0632\u06cc\u0646\u0647<\/th>\n<th class=\"last:pe-10\" data-start=\"1024\" data-end=\"1033\" data-col-size=\"sm\">\u062a\u0648\u0636\u06cc\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"1053\" data-end=\"1262\">\n<tr data-start=\"1053\" data-end=\"1081\">\n<td data-start=\"1053\" data-end=\"1063\" data-col-size=\"sm\">gzip on<\/td>\n<td data-start=\"1063\" data-end=\"1081\" data-col-size=\"sm\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 Gzip<\/td>\n<\/tr>\n<tr data-start=\"1082\" data-end=\"1129\">\n<td data-start=\"1082\" data-end=\"1095\" data-col-size=\"sm\">gzip_types<\/td>\n<td data-start=\"1095\" data-end=\"1129\" data-col-size=\"sm\">\u0646\u0648\u0639 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0634\u0631\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f<\/td>\n<\/tr>\n<tr data-start=\"1130\" data-end=\"1169\">\n<td data-start=\"1130\" data-end=\"1148\" data-col-size=\"sm\">gzip_min_length<\/td>\n<td data-start=\"1148\" data-end=\"1169\" data-col-size=\"sm\">\u062d\u062f\u0627\u0642\u0644 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<\/td>\n<\/tr>\n<tr data-start=\"1170\" data-end=\"1217\">\n<td data-start=\"1170\" data-end=\"1188\" data-col-size=\"sm\">gzip_comp_level<\/td>\n<td data-start=\"1188\" data-end=\"1217\" data-col-size=\"sm\">\u0645\u06cc\u0632\u0627\u0646 \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc (\u06f1 \u062a\u0627 \u06f9)<\/td>\n<\/tr>\n<tr data-start=\"1218\" data-end=\"1262\">\n<td data-start=\"1218\" data-end=\"1230\" data-col-size=\"sm\">gzip_vary<\/td>\n<td data-col-size=\"sm\" data-start=\"1230\" data-end=\"1262\">\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0647\u062a\u0631 \u0628\u0627 Cache \u0645\u0631\u0648\u0631\u06af\u0631<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"1264\" data-end=\"1267\" \/>\n<p data-start=\"1269\" data-end=\"1289\">\u067e\u0633 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\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><span class=\"\u037c10\">sudo<\/span> nginx <span class=\"\u037c12\">-t<\/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=\"1318\" data-end=\"1339\">\u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\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><span class=\"\u037c10\">sudo<\/span> systemctl reload 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<hr data-start=\"1382\" data-end=\"1385\" \/>\n<h1 data-section-id=\"1322hkd\" data-start=\"1387\" data-end=\"1406\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Brotli<\/h1>\n<p data-start=\"1408\" data-end=\"1499\">Brotli \u0646\u0633\u0628\u062a \u0628\u0647 Gzip \u0646\u0631\u062e \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0647\u062a\u0631\u06cc \u062f\u0627\u0631\u062f \u0648 \u0627\u06a9\u062b\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0627\u0632 \u0622\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p data-start=\"1501\" data-end=\"1568\">\u0627\u06af\u0631 \u0645\u0627\u0698\u0648\u0644 Brotli \u0631\u0648\u06cc Nginx \u0646\u0635\u0628 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0641\u0639\u0627\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=\"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>brotli on;\r\n\r\nbrotli_comp_level 5;\r\n\r\nbrotli_types\r\n    text\/plain\r\n    text\/css\r\n    application\/javascript\r\n    application\/json\r\n    application\/xml;<\/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=\"1817\">\u062f\u0631 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc CSS \u0648 JavaScript\u060c Brotli \u0628\u06cc\u0646 \u06f1\u06f5 \u062a\u0627 \u06f3\u06f0 \u062f\u0631\u0635\u062f \u0628\u0647\u062a\u0631 \u0627\u0632 Gzip \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<hr data-start=\"1819\" data-end=\"1822\" \/>\n<h1 data-section-id=\"s2773m\" data-start=\"1824\" data-end=\"1850\">\u06a9\u0634 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9<\/h1>\n<p data-start=\"1852\" data-end=\"1868\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"1870\" data-end=\"1907\">\n<li data-section-id=\"1o4e2z\" data-start=\"1870\" data-end=\"1875\">CSS<\/li>\n<li data-section-id=\"1oinkpn\" data-start=\"1876\" data-end=\"1888\">JavaScript<\/li>\n<li data-section-id=\"129sk3p\" data-start=\"1889\" data-end=\"1897\">\u062a\u0635\u0627\u0648\u06cc\u0631<\/li>\n<li data-section-id=\"1lxrww1\" data-start=\"1898\" data-end=\"1907\">\u0641\u0648\u0646\u062a\u200c\u0647\u0627<\/li>\n<\/ul>\n<p data-start=\"1909\" data-end=\"1931\">\u0628\u0647 \u0646\u062f\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p data-start=\"1933\" data-end=\"2000\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0686\u0646\u062f \u0631\u0648\u0632 \u06cc\u0627 \u0686\u0646\u062f \u0647\u0641\u062a\u0647 Cache \u06a9\u0646\u062f.<\/p>\n<p data-start=\"2002\" data-end=\"2026\">\u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx:<\/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 ~* \\.(jpg|jpeg|png|gif|svg|ico|css|js|woff|woff2|ttf)$ {\r\n\r\n    expires 7d;\r\n\r\n    add_header Cache-Control \"public, no-transform\";\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=\"2182\" data-end=\"2246\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u062a\u0627 \u06f7 \u0631\u0648\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0627\u0646\u0644\u0648\u062f \u0646\u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"2248\" data-end=\"2251\" \/>\n<h1 data-section-id=\"rfwy6s\" data-start=\"2253\" data-end=\"2283\">\u06a9\u0634 \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631<\/h1>\n<p data-start=\"2285\" data-end=\"2380\">\u0627\u06af\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0627\u0631\u0627\u06cc Hash \u0647\u0633\u062a\u0646\u062f (\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 <code data-start=\"2325\" data-end=\"2340\">app.8af213.js<\/code>) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Cache \u0637\u0648\u0644\u0627\u0646\u06cc\u200c\u062a\u0631\u06cc \u062a\u0639\u06cc\u06cc\u0646 \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>expires 30d;<\/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=\"2409\" data-end=\"2416\">\u06cc\u0627 \u062d\u062a\u06cc:<\/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>expires 365d;<\/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=\"2446\" data-end=\"2449\" \/>\n<h1 data-section-id=\"frqc4i\" data-start=\"2451\" data-end=\"2481\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Cluster<\/h1>\n<p data-start=\"2483\" data-end=\"2542\">\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Node.js \u062a\u0646\u0647\u0627 \u0627\u0632 \u06cc\u06a9 \u0647\u0633\u062a\u0647 CPU \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2544\" data-end=\"2627\">\u0627\u06af\u0631 \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0686\u0646\u062f \u0647\u0633\u062a\u0647\u200c\u0627\u06cc \u0628\u0627\u0634\u062f\u060c \u0628\u062e\u0634 \u0632\u06cc\u0627\u062f\u06cc \u0627\u0632 \u0642\u062f\u0631\u062a \u067e\u0631\u062f\u0627\u0632\u0634\u06cc \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n<p data-start=\"2629\" data-end=\"2671\">PM2 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0627 Cluster Mode \u062d\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"2673\" data-end=\"2707\">\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0645\u0627\u0645 \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc CPU:<\/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>pm2 <span class=\"\u037c10\">start<\/span> app.js <span class=\"\u037c12\">-i<\/span> max<\/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=\"2746\" data-end=\"2822\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code data-start=\"2754\" data-end=\"2759\">max<\/code> \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f PM2 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0646\u062f\u0647\u060c Process \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<p data-start=\"2824\" data-end=\"2834\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644:<\/p>\n<p data-start=\"2836\" data-end=\"2851\">\u0633\u0631\u0648\u0631 \u06f4 \u0647\u0633\u062a\u0647\u200c\u0627\u06cc:<\/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>CPU Core 1 \u2192 App\r\nCPU Core 2 \u2192 App\r\nCPU Core 3 \u2192 App\r\nCPU Core 4 \u2192 App<\/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=\"2934\" data-end=\"2985\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0638\u0631\u0641\u06cc\u062a \u067e\u0627\u0633\u062e\u200c\u06af\u0648\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0686\u0646\u062f \u0628\u0631\u0627\u0628\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2987\" data-end=\"2990\" \/>\n<h1 data-section-id=\"zcberx\" data-start=\"2992\" data-end=\"3015\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0645\u0635\u0631\u0641 \u0645\u0646\u0627\u0628\u0639<\/h1>\n<p data-start=\"3017\" data-end=\"3044\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0635\u0631\u0641 CPU \u0648 RAM:<\/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>pm2 monit<\/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=\"3069\" data-end=\"3098\">\u0646\u0645\u0648\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647\u200c\u0634\u062f\u0647:<\/p>\n<ul data-start=\"3100\" data-end=\"3151\">\n<li data-section-id=\"5twmff\" data-start=\"3100\" data-end=\"3111\">CPU Usage<\/li>\n<li data-section-id=\"1oapp9o\" data-start=\"3112\" data-end=\"3126\">Memory Usage<\/li>\n<li data-section-id=\"1n8dzrw\" data-start=\"3127\" data-end=\"3142\">Restart Count<\/li>\n<li data-section-id=\"9whrrs\" data-start=\"3143\" data-end=\"3151\">Uptime<\/li>\n<\/ul>\n<p data-start=\"3153\" data-end=\"3243\">\u0627\u06af\u0631 \u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062f\u0627\u0648\u0645 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644 \u0648\u062c\u0648\u062f Memory Leak \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"3245\" data-end=\"3248\" \/>\n<h1 data-section-id=\"1lr51zn\" data-start=\"3250\" data-end=\"3289\">\u0633\u0631\u0648\u06cc\u0633\u200c\u062f\u0647\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u062a\u0648\u0633\u0637 Nginx<\/h1>\n<p data-start=\"3291\" data-end=\"3387\">\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc CSS \u0648 JavaScript \u062a\u0648\u0633\u0637 Node.js \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"3389\" data-end=\"3438\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a Nginx \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f.<\/p>\n<p data-start=\"3440\" data-end=\"3446\">\u0646\u0645\u0648\u0646\u0647:<\/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 \/static {\r\n\r\n    alias \/var\/www\/myapp\/public;\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=\"3518\" data-end=\"3615\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062a\u0648\u0633\u0637 Nginx \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0647\u06cc\u0686 \u0641\u0634\u0627\u0631\u06cc \u0628\u0647 Node.js \u0648\u0627\u0631\u062f \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<hr data-start=\"3617\" data-end=\"3620\" \/>\n<h1 data-section-id=\"h4muc4\" data-start=\"3622\" data-end=\"3642\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0644\u0627\u06af\u200c\u0647\u0627\u06cc PM2<\/h1>\n<p data-start=\"3644\" data-end=\"3663\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627:<\/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>pm2 logs<\/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=\"3687\" data-end=\"3734\">\u0627\u0645\u0627 \u0628\u0627 \u06af\u0630\u0634\u062a \u0632\u0645\u0627\u0646 \u062d\u062c\u0645 \u0644\u0627\u06af\u200c\u0647\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p data-start=\"3736\" data-end=\"3800\">\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u0631 \u0634\u062f\u0646 \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9\u060c \u0627\u0641\u0632\u0648\u0646\u0647 Log Rotate \u0631\u0627 \u0646\u0635\u0628 \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>pm2 install pm2-logrotate<\/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=\"3841\" data-end=\"3882\">\u0633\u067e\u0633 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \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>pm2 <span class=\"\u037cv\">set<\/span> pm2-logrotate:max_size 10M<\/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=\"3932\" data-end=\"3964\">\u062a\u0639\u062f\u0627\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \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>pm2 <span class=\"\u037cv\">set<\/span> pm2-logrotate:retain <span class=\"\u037cy\">7<\/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=\"4010\" data-end=\"4022\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644:<\/p>\n<ul data-start=\"4024\" data-end=\"4104\">\n<li data-section-id=\"i4naej\" data-start=\"4024\" data-end=\"4062\">\u0647\u0631 \u0641\u0627\u06cc\u0644 \u062d\u062f\u0627\u06a9\u062b\u0631 \u06f1\u06f0 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/li>\n<li data-section-id=\"1xpcrel\" data-start=\"4063\" data-end=\"4104\">\u0641\u0642\u0637 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u06f7 \u0631\u0648\u0632 \u0627\u062e\u06cc\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n<\/ul>\n<hr data-start=\"4106\" data-end=\"4109\" \/>\n<h1 data-section-id=\"pw30vf\" data-start=\"4111\" data-end=\"4132\">\u0628\u0631\u0631\u0633\u06cc \u0644\u0627\u06af\u200c\u0647\u0627\u06cc Nginx<\/h1>\n<p data-start=\"4134\" data-end=\"4149\">\u0644\u0627\u06af \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627:<\/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>\/var\/log\/nginx\/access.log<\/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=\"4190\" data-end=\"4200\">\u0644\u0627\u06af \u062e\u0637\u0627\u0647\u0627:<\/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>\/var\/log\/nginx\/error.log<\/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=\"4240\" data-end=\"4264\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0632\u0646\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627:<\/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> tail <span class=\"\u037c12\">-f<\/span> \/var\/log\/nginx\/access.log<\/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=\"4318\" data-end=\"4320\">\u06cc\u0627<\/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> tail <span class=\"\u037c12\">-f<\/span> \/var\/log\/nginx\/error.log<\/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=\"4373\" data-end=\"4376\" \/>\n<h1 data-section-id=\"14i8kem\" data-start=\"4378\" data-end=\"4404\">\u062a\u062d\u0644\u06cc\u0644 \u0644\u0627\u06af\u200c\u0647\u0627 \u0628\u0627 GoAccess<\/h1>\n<p data-start=\"4406\" data-end=\"4477\">\u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u062d\u0644\u06cc\u0644 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc Nginx\u060c \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 GoAccess \u0627\u0633\u062a.<\/p>\n<p data-start=\"4479\" data-end=\"4483\">\u0646\u0635\u0628:<\/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 install goaccess<\/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=\"4524\" data-end=\"4540\">\u0633\u0627\u062e\u062a \u06af\u0632\u0627\u0631\u0634 HTML:<\/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> goaccess \\\r\n\/var\/log\/nginx\/access.log \\\r\n<span class=\"\u037c12\">-o<\/span> \/var\/www\/html\/report.html \\\r\n<span class=\"\u037c12\">--log-format<\/span><span class=\"\u037cv\">=<\/span>COMBINED<\/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=\"4652\" data-end=\"4682\">\u0627\u06cc\u0646 \u06af\u0632\u0627\u0631\u0634 \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"4684\" data-end=\"4772\">\n<li data-section-id=\"1v5f3l1\" data-start=\"4684\" data-end=\"4705\">\u062a\u0639\u062f\u0627\u062f \u0628\u0627\u0632\u062f\u06cc\u062f\u06a9\u0646\u0646\u062f\u06af\u0627\u0646<\/li>\n<li data-section-id=\"15q5i3m\" data-start=\"4706\" data-end=\"4722\">\u0635\u0641\u062d\u0627\u062a \u067e\u0631\u0628\u0627\u0632\u062f\u06cc\u062f<\/li>\n<li data-section-id=\"d4peop\" data-start=\"4723\" data-end=\"4740\">\u0622\u062f\u0631\u0633 IP \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n<li data-section-id=\"uo6ipt\" data-start=\"4741\" data-end=\"4756\">\u0648\u0636\u0639\u06cc\u062a \u067e\u0627\u0633\u062e\u200c\u0647\u0627<\/li>\n<li data-section-id=\"od7psl\" data-start=\"4757\" data-end=\"4772\">\u0633\u0631\u0639\u062a \u067e\u0627\u0633\u062e\u200c\u062f\u0647\u06cc<\/li>\n<\/ul>\n<p data-start=\"4774\" data-end=\"4784\">\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"4786\" data-end=\"4789\" \/>\n<h1 data-section-id=\"158ttjs\" data-start=\"4791\" data-end=\"4810\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627<\/h1>\n<p data-start=\"4812\" data-end=\"4888\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u0631\u062e\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0646\u06cc\u0632 \u0627\u0632 \u0637\u0631\u06cc\u0642 Environment Variables \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"4890\" data-end=\"4900\">\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>CACHE_TIME=3600\r\n\r\nLOG_LEVEL=info\r\n\r\nAPI_RATE_LIMIT=100<\/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=\"4967\" data-end=\"5032\">\u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"5034\" data-end=\"5037\" \/>\n<h1 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"cgh6wk\" data-start=\"0\" data-end=\"66\">\u0645\u0631\u062d\u0644\u0647 \u0646\u0647\u0645: \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0648 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627 (Monitoring &amp; Metrics)<\/h1>\n<p data-start=\"68\" data-end=\"189\">\u067e\u0633 \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production\u060c \u062a\u0646\u0647\u0627 \u0627\u062c\u0631\u0627 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a\u061b \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062f\u0627\u0648\u0645 \u0648\u0636\u0639\u06cc\u062a \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u067e\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"191\" data-end=\"223\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627:<\/p>\n<ul data-start=\"225\" data-end=\"427\">\n<li data-section-id=\"1or3vu5\" data-start=\"225\" data-end=\"258\">\u0627\u0632 \u0642\u0637\u0639\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0633\u0631\u06cc\u0639\u0627\u064b \u0645\u0637\u0644\u0639 \u0634\u0648\u06cc\u062f.<\/li>\n<li data-section-id=\"1mtj9kr\" data-start=\"259\" data-end=\"290\">\u0645\u0635\u0631\u0641 CPU \u0648 RAM \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"179bunp\" data-start=\"291\" data-end=\"348\">\u0645\u0634\u06a9\u0644\u0627\u062a \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062a\u0623\u062b\u06cc\u0631 \u0628\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1maxunf\" data-start=\"349\" data-end=\"382\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0628\u0627\u0631 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"17ggmck\" data-start=\"383\" data-end=\"427\">\u0631\u0648\u0646\u062f \u0631\u0634\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"429\" data-end=\"479\">\u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0645\u0646\u0627\u0633\u0628 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0627\u0645\u0644 \u062f\u0648 \u0628\u062e\u0634 \u0627\u0633\u062a:<\/p>\n<ul data-start=\"481\" data-end=\"617\">\n<li data-section-id=\"429aul\" data-start=\"481\" data-end=\"545\"><strong data-start=\"483\" data-end=\"522\">\u067e\u0627\u06cc\u0634 \u0644\u062d\u0638\u0647\u200c\u0627\u06cc (Real-time Monitoring)<\/strong> \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc<\/li>\n<li data-section-id=\"mjop32\" data-start=\"546\" data-end=\"617\"><strong data-start=\"548\" data-end=\"587\">\u0630\u062e\u06cc\u0631\u0647 \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627 (Metrics Collection)<\/strong> \u0628\u0631\u0627\u06cc \u062a\u062d\u0644\u06cc\u0644 \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646<\/li>\n<\/ul>\n<hr data-start=\"619\" data-end=\"622\" \/>\n<h1 data-section-id=\"1t2tcaq\" data-start=\"624\" data-end=\"650\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 PM2<\/h1>\n<p data-start=\"652\" data-end=\"727\">PM2 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a Process\u0647\u0627\u060c \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0645\u0646\u0627\u0633\u0628\u06cc \u0646\u06cc\u0632 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"729\" data-end=\"732\" \/>\n<h2 data-section-id=\"1s38nyj\" data-start=\"734\" data-end=\"759\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627<\/h2>\n<p data-start=\"761\" data-end=\"801\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627:<\/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>pm2 list<\/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=\"837\" data-end=\"849\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/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>\u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502 id \u2502 name     \u2502 status  \u2502 cpu    \u2502 memory \u2502 uptime   \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/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=\"1047\" data-end=\"1096\">\u062f\u0631 \u0627\u06cc\u0646 \u062c\u062f\u0648\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"1098\" data-end=\"1182\">\n<li data-section-id=\"1azf5ub\" data-start=\"1098\" data-end=\"1112\">\u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<li data-section-id=\"vtoo5w\" data-start=\"1113\" data-end=\"1129\">\u0645\u06cc\u0632\u0627\u0646 \u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"5sxop2\" data-start=\"1130\" data-end=\"1148\">\u0645\u06cc\u0632\u0627\u0646 \u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647<\/li>\n<li data-section-id=\"wooa8z\" data-start=\"1149\" data-end=\"1164\">\u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/li>\n<li data-section-id=\"1l0vd6z\" data-start=\"1165\" data-end=\"1182\">\u062a\u0639\u062f\u0627\u062f Restart\u0647\u0627<\/li>\n<\/ul>\n<hr data-start=\"1184\" data-end=\"1187\" \/>\n<h1 data-section-id=\"y9o2be\" data-start=\"1189\" data-end=\"1210\">\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0644\u062d\u0638\u0647\u200c\u0627\u06cc PM2<\/h1>\n<p data-start=\"1212\" data-end=\"1249\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0632\u0646\u062f\u0647:<\/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>pm2 monit<\/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=\"1286\" data-end=\"1326\">\u0627\u06cc\u0646 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul data-start=\"1328\" data-end=\"1421\">\n<li data-section-id=\"wce6ha\" data-start=\"1328\" data-end=\"1338\">\u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"wceily\" data-start=\"1339\" data-end=\"1349\">\u0645\u0635\u0631\u0641 RAM<\/li>\n<li data-section-id=\"g9wmgm\" data-start=\"1350\" data-end=\"1368\">\u062a\u0639\u062f\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627<\/li>\n<li data-section-id=\"1qr2ohg\" data-start=\"1369\" data-end=\"1387\">\u0648\u0636\u0639\u06cc\u062a \u0647\u0631 Process<\/li>\n<li data-section-id=\"1n8dzrw\" data-start=\"1388\" data-end=\"1403\">Restart Count<\/li>\n<li data-section-id=\"135vtmd\" data-start=\"1404\" data-end=\"1421\">\u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0644\u062d\u0638\u0647\u200c\u0627\u06cc<\/li>\n<\/ul>\n<p data-start=\"1423\" data-end=\"1536\">\u0627\u06af\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062f\u0627\u0648\u0645 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644 \u0648\u062c\u0648\u062f <strong data-start=\"1500\" data-end=\"1515\">Memory Leak<\/strong> \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"1538\" data-end=\"1541\" \/>\n<h1 data-section-id=\"13shw7z\" data-start=\"1543\" data-end=\"1558\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627<\/h1>\n<p data-start=\"1560\" data-end=\"1591\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627:<\/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>pm2 logs<\/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=\"1627\" data-end=\"1657\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0627\u0635:<\/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>pm2 logs myapp<\/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=\"1699\" data-end=\"1702\" \/>\n<h1 data-section-id=\"16ixa2a\" data-start=\"1704\" data-end=\"1727\">\u0628\u0631\u0631\u0633\u06cc \u062a\u0639\u062f\u0627\u062f Restart\u0647\u0627<\/h1>\n<p data-start=\"1729\" data-end=\"1762\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0631\u062a\u0628\u0627\u064b Restart \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=\"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>pm2 status<\/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=\"1800\" data-end=\"1802\">\u06cc\u0627<\/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>pm2 info myapp<\/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=\"1844\" data-end=\"1906\">\u062f\u0631 \u0628\u062e\u0634 Restart Count \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0639\u062f\u0627\u062f Restart\u0647\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1908\" data-end=\"1968\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u063a\u06cc\u0631\u0639\u0627\u062f\u06cc \u0627\u06cc\u0646 \u0639\u062f\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0646\u0634\u0627\u0646\u0647 \u0648\u062c\u0648\u062f \u062e\u0637\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"1970\" data-end=\"1973\" \/>\n<h1 data-section-id=\"9f7d66\" data-start=\"1975\" data-end=\"1993\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af Nginx<\/h1>\n<p data-start=\"1995\" data-end=\"2071\">Nginx \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"2073\" data-end=\"2076\" \/>\n<h2 data-section-id=\"8i5f39\" data-start=\"2078\" data-end=\"2091\">Access Log<\/h2>\n<p data-start=\"2093\" data-end=\"2133\">\u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u062b\u0628\u062a \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=\"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\/log\/nginx\/access.log<\/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=\"2186\" data-end=\"2206\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u062d\u0638\u0647\u200c\u0627\u06cc:<\/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> tail <span class=\"\u037c12\">-f<\/span> \/var\/log\/nginx\/access.log<\/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=\"2272\" data-end=\"2275\" \/>\n<h2 data-section-id=\"1wwrmd5\" data-start=\"2277\" data-end=\"2289\">Error Log<\/h2>\n<p data-start=\"2291\" data-end=\"2330\">\u062e\u0637\u0627\u0647\u0627\u06cc Nginx \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0630\u062e\u06cc\u0631\u0647 \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=\"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\/log\/nginx\/error.log<\/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=\"2382\" data-end=\"2394\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647:<\/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> tail <span class=\"\u037c12\">-f<\/span> \/var\/log\/nginx\/error.log<\/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=\"2459\" data-end=\"2462\" \/>\n<h1 data-section-id=\"3v8eud\" data-start=\"2464\" data-end=\"2492\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0635\u0641\u062d\u0647 \u0648\u0636\u0639\u06cc\u062a Nginx<\/h1>\n<p data-start=\"2494\" data-end=\"2585\">Nginx \u0642\u0627\u0628\u0644\u06cc\u062a\u06cc \u0628\u0647 \u0646\u0627\u0645 <strong data-start=\"2515\" data-end=\"2530\">stub_status<\/strong> \u062f\u0627\u0631\u062f \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u0646\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0648\u0636\u0639\u06cc\u062a \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p data-start=\"2587\" data-end=\"2605\">\u062f\u0627\u062e\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0627\u06cc\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 \/nginx_status {\r\n\r\n    stub_status;\r\n\r\n    allow 127.0.0.1;\r\n\r\n    deny all;\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=\"2716\" data-end=\"2720\">\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 reload 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=\"2775\" data-end=\"2794\">\u0627\u06a9\u0646\u0648\u0646 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0633\u0631\u0648\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><span class=\"\u037c10\">curl<\/span> http:\/\/localhost\/nginx_status<\/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=\"2856\" data-end=\"2868\">\u0646\u0645\u0648\u0646\u0647 \u062e\u0631\u0648\u062c\u06cc:<\/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>Active connections: 5\r\n\r\nserver accepts handled requests\r\n\r\n10240 10240 20350\r\n\r\nReading: 0\r\n\r\nWriting: 2\r\n\r\nWaiting: 3<\/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=\"3005\" data-end=\"3008\" \/>\n<h1 data-section-id=\"1jqoa4b\" data-start=\"3010\" data-end=\"3045\">\u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js<\/h1>\n<p data-start=\"3047\" data-end=\"3102\">\u06af\u0627\u0647\u06cc \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u06cc\u0632 \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"3104\" data-end=\"3179\">\n<li data-section-id=\"g9wmgm\" data-start=\"3104\" data-end=\"3122\">\u062a\u0639\u062f\u0627\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627<\/li>\n<li data-section-id=\"1mr8jg\" data-start=\"3123\" data-end=\"3141\">\u0645\u062f\u062a \u067e\u0627\u0633\u062e\u200c\u062f\u0647\u06cc API<\/li>\n<li data-section-id=\"3rnxzw\" data-start=\"3142\" data-end=\"3154\">\u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647<\/li>\n<li data-section-id=\"i78ihv\" data-start=\"3155\" data-end=\"3179\">\u062a\u0639\u062f\u0627\u062f Query\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<\/ul>\n<p data-start=\"3181\" data-end=\"3235\">\u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 <strong data-start=\"3216\" data-end=\"3230\">Prometheus<\/strong> \u0627\u0633\u062a.<\/p>\n<p data-start=\"3237\" data-end=\"3271\">\u0627\u0628\u062a\u062f\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0646\u0635\u0628 \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\">npm<\/span> install prom-client<\/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=\"3322\" data-end=\"3328\">\u0646\u0645\u0648\u0646\u0647:<\/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=\"\u037cv\">const<\/span> <span class=\"\u037c11\">express<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'express'<\/span>);\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">client<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">require<\/span>(<span class=\"\u037cz\">'prom-client'<\/span>);\r\n\r\n<span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">app<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037c11\">express<\/span>();\r\n\r\n<span class=\"\u037c11\">client<\/span><span class=\"\u037cv\">.<\/span>collectDefaultMetrics();\r\n\r\n<span class=\"\u037c11\">app<\/span><span class=\"\u037cv\">.<\/span>get(<span class=\"\u037cz\">'\/metrics'<\/span>, <span class=\"\u037cv\">async<\/span> (<span class=\"\u037c11\">req<\/span>, <span class=\"\u037c11\">res<\/span>) =&gt; {\r\n\r\n    <span class=\"\u037c11\">res<\/span><span class=\"\u037cv\">.<\/span>set(\r\n        <span class=\"\u037cz\">'Content-Type'<\/span>,\r\n        <span class=\"\u037c11\">client<\/span><span class=\"\u037cv\">.<\/span>register<span class=\"\u037cv\">.<\/span>contentType\r\n    );\r\n\r\n    <span class=\"\u037c11\">res<\/span><span class=\"\u037cv\">.<\/span>end(\r\n        <span class=\"\u037cv\">await<\/span> <span class=\"\u037c11\">client<\/span><span class=\"\u037cv\">.<\/span>register<span class=\"\u037cv\">.<\/span>metrics()\r\n    );\r\n\r\n});\r\n\r\n<span class=\"\u037c11\">app<\/span><span class=\"\u037cv\">.<\/span>listen(<span class=\"\u037cy\">3000<\/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=\"3703\" data-end=\"3714\">\u0627\u06a9\u0646\u0648\u0646 \u0622\u062f\u0631\u0633:<\/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>\/metrics<\/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=\"3750\" data-end=\"3808\">\u062a\u0645\u0627\u0645 \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 Prometheus \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<hr data-start=\"3810\" data-end=\"3813\" \/>\n<h1 data-section-id=\"1f61z3v\" data-start=\"3815\" data-end=\"3833\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0633\u06cc\u0633\u062a\u0645<\/h1>\n<p data-start=\"3835\" data-end=\"3886\">\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0628\u0627\u06cc\u062f \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u062f.<\/p>\n<hr data-start=\"3888\" data-end=\"3891\" \/>\n<h2 data-section-id=\"1xwu26e\" data-start=\"3893\" data-end=\"3900\">htop<\/h2>\n<p data-start=\"3902\" data-end=\"3924\">\u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627:<\/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 install htop<\/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=\"3973\" data-end=\"3986\">\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647:<\/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>htop<\/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=\"4018\" data-end=\"4024\">\u0646\u0645\u0627\u06cc\u0634:<\/p>\n<ul data-start=\"4026\" data-end=\"4056\">\n<li data-section-id=\"1o4e26\" data-start=\"4026\" data-end=\"4031\">CPU<\/li>\n<li data-section-id=\"1o4tjq\" data-start=\"4032\" data-end=\"4037\">RAM<\/li>\n<li data-section-id=\"1j4db8d\" data-start=\"4038\" data-end=\"4044\">Swap<\/li>\n<li data-section-id=\"1ifmmqr\" data-start=\"4045\" data-end=\"4056\">Process\u0647\u0627<\/li>\n<\/ul>\n<hr data-start=\"4058\" data-end=\"4061\" \/>\n<h2 data-section-id=\"1g72k1j\" data-start=\"4063\" data-end=\"4081\">\u0628\u0631\u0631\u0633\u06cc \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9<\/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>df <span class=\"\u037c12\">-h<\/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<hr data-start=\"4114\" data-end=\"4117\" \/>\n<h2 data-section-id=\"1ev9cyu\" data-start=\"4119\" data-end=\"4133\">\u0628\u0631\u0631\u0633\u06cc \u062d\u0627\u0641\u0638\u0647<\/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>free <span class=\"\u037c12\">-h<\/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<hr data-start=\"4168\" data-end=\"4171\" \/>\n<h2 data-section-id=\"1u4zc0w\" data-start=\"4173\" data-end=\"4186\">\u0628\u0631\u0631\u0633\u06cc \u0634\u0628\u06a9\u0647<\/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>ss <span class=\"\u037c12\">-tulnp<\/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=\"4223\" data-end=\"4225\">\u06cc\u0627<\/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>netstat <span class=\"\u037c12\">-tulnp<\/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<hr data-start=\"4267\" data-end=\"4270\" \/>\n<h2 data-section-id=\"1dfpr6z\" data-start=\"4272\" data-end=\"4290\">\u0628\u0631\u0631\u0633\u06cc \u0645\u0635\u0631\u0641 \u062f\u06cc\u0633\u06a9<\/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>iostat<\/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=\"4324\" data-end=\"4327\" \/>\n<h1 data-section-id=\"1lxdpdu\" data-start=\"4329\" data-end=\"4358\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af<\/h1>\n<p data-start=\"4360\" data-end=\"4430\">\u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Production \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \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=\"4432\" data-end=\"4665\">\n<thead data-start=\"4432\" data-end=\"4450\">\n<tr data-start=\"4432\" data-end=\"4450\">\n<th class=\"last:pe-10\" data-start=\"4432\" data-end=\"4440\" data-col-size=\"sm\">\u0627\u0628\u0632\u0627\u0631<\/th>\n<th class=\"last:pe-10\" data-start=\"4440\" data-end=\"4450\" data-col-size=\"sm\">\u06a9\u0627\u0631\u0628\u0631\u062f<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"4472\" data-end=\"4665\">\n<tr data-start=\"4472\" data-end=\"4504\">\n<td data-start=\"4472\" data-end=\"4482\" data-col-size=\"sm\">Grafana<\/td>\n<td data-start=\"4482\" data-end=\"4504\" data-col-size=\"sm\">\u062f\u0627\u0634\u0628\u0648\u0631\u062f\u0647\u0627\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc<\/td>\n<\/tr>\n<tr data-start=\"4505\" data-end=\"4536\">\n<td data-start=\"4505\" data-end=\"4518\" data-col-size=\"sm\">Prometheus<\/td>\n<td data-start=\"4518\" data-end=\"4536\" data-col-size=\"sm\">\u0630\u062e\u06cc\u0631\u0647 \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627<\/td>\n<\/tr>\n<tr data-start=\"4537\" data-end=\"4569\">\n<td data-start=\"4537\" data-end=\"4547\" data-col-size=\"sm\">Netdata<\/td>\n<td data-start=\"4547\" data-end=\"4569\" data-col-size=\"sm\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0644\u062d\u0638\u0647\u200c\u0627\u06cc<\/td>\n<\/tr>\n<tr data-start=\"4570\" data-end=\"4602\">\n<td data-start=\"4570\" data-end=\"4580\" data-col-size=\"sm\">Glances<\/td>\n<td data-start=\"4580\" data-end=\"4602\" data-col-size=\"sm\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645<\/td>\n<\/tr>\n<tr data-start=\"4603\" data-end=\"4640\">\n<td data-start=\"4603\" data-end=\"4619\" data-col-size=\"sm\">Grafana Agent<\/td>\n<td data-start=\"4619\" data-end=\"4640\" data-col-size=\"sm\">\u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0645\u062a\u0631\u06cc\u06a9\u200c\u0647\u0627<\/td>\n<\/tr>\n<tr data-start=\"4641\" data-end=\"4665\">\n<td data-start=\"4641\" data-end=\"4648\" data-col-size=\"sm\">Loki<\/td>\n<td data-start=\"4648\" data-end=\"4665\" data-col-size=\"sm\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0644\u0627\u06af\u200c\u0647\u0627<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"4667\" data-end=\"4741\">\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<hr data-start=\"4743\" data-end=\"4746\" \/>\n<h1 data-section-id=\"1yp1l2r\" data-start=\"4748\" data-end=\"4758\">PM2 Plus<\/h1>\n<p data-start=\"4760\" data-end=\"4817\">PM2 \u0646\u0633\u062e\u0647 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0646\u06cc\u0632 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u062f:<\/p>\n<ul data-start=\"4819\" data-end=\"4975\">\n<li data-section-id=\"gl423r\" data-start=\"4819\" data-end=\"4835\">\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u062a\u062d\u062a \u0648\u0628<\/li>\n<li data-section-id=\"w2lc9b\" data-start=\"4836\" data-end=\"4855\">\u0646\u0645\u0648\u062f\u0627\u0631 \u0645\u0635\u0631\u0641 \u0645\u0646\u0627\u0628\u0639<\/li>\n<li data-section-id=\"1n9ktcz\" data-start=\"4856\" data-end=\"4885\">\u0647\u0634\u062f\u0627\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0635\u0631\u0641 CPU<\/li>\n<li data-section-id=\"1n9lal7\" data-start=\"4886\" data-end=\"4915\">\u0647\u0634\u062f\u0627\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0635\u0631\u0641 RAM<\/li>\n<li data-section-id=\"954qyr\" data-start=\"4916\" data-end=\"4933\">\u0646\u0645\u0627\u06cc\u0634 Restart\u0647\u0627<\/li>\n<li data-section-id=\"6gijir\" data-start=\"4934\" data-end=\"4975\">\u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u0645\u200c\u0632\u0645\u0627\u0646<\/li>\n<\/ul>\n<hr data-start=\"4977\" data-end=\"4980\" \/>\n<h1 data-section-id=\"x5vts2\" data-start=\"4982\" data-end=\"5010\">\u0686\u0631\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f\u061f<\/h1>\n<p data-start=\"5012\" data-end=\"5040\">\u0627\u06af\u0631 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n<ul data-start=\"5042\" data-end=\"5215\">\n<li data-section-id=\"13lhp3u\" data-start=\"5042\" data-end=\"5101\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u0639\u062a\u200c\u0647\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633 \u062e\u0627\u0631\u062c \u0628\u0627\u0634\u062f \u0648 \u0645\u062a\u0648\u062c\u0647 \u0646\u0634\u0648\u06cc\u062f.<\/li>\n<li data-section-id=\"1mzsirm\" data-start=\"5102\" data-end=\"5130\">\u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0635\u0631\u0641 RAM \u0631\u0627 \u0646\u0628\u06cc\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1rmhsy5\" data-start=\"5131\" data-end=\"5179\">\u062d\u0645\u0644\u0627\u062a \u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u063a\u06cc\u0631\u0639\u0627\u062f\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1c3w0a8\" data-start=\"5180\" data-end=\"5215\">\u0639\u0644\u062a \u06a9\u0646\u062f \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"5217\" data-end=\"5251\">\u0627\u0645\u0627 \u0628\u0627 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0645\u0646\u0627\u0633\u0628 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"5253\" data-end=\"5445\">\n<li data-section-id=\"1w03f94\" data-start=\"5253\" data-end=\"5293\">\u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u067e\u06cc\u0634 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"zahszo\" data-start=\"5294\" data-end=\"5330\">\u0631\u0648\u0646\u062f \u0631\u0634\u062f \u0645\u0635\u0631\u0641 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"8wlrvx\" data-start=\"5331\" data-end=\"5396\">\u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0642\u0627\u06cc \u0633\u062e\u062a\u200c\u0627\u0641\u0632\u0627\u0631 \u06cc\u0627 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u062a\u0635\u0645\u06cc\u0645\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642\u200c\u062a\u0631\u06cc \u0628\u06af\u06cc\u0631\u06cc\u062f.<\/li>\n<li data-section-id=\"1qobgs4\" data-start=\"5397\" data-end=\"5445\">\u0627\u0632 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u0628\u0644\u0646\u062f\u0645\u062f\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h3 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"1aflsvo\" data-start=\"0\" data-end=\"105\">\u0645\u0631\u062d\u0644\u0647 \u06f1\u06f0 \u2014 \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c\u060c \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 (Common Errors, Troubleshooting, and Best Practices)<\/h3>\n<p data-start=\"107\" data-end=\"337\">\u062d\u062a\u06cc \u0627\u06af\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a Node.js \u0634\u0645\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0627\u0632 \u0647\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627 \u06cc\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0634\u0648\u06cc\u062f. \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0631\u0648\u0634 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0648 \u0631\u0639\u0627\u06cc\u062a \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627\u060c \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0633\u0631\u0648\u06cc\u0633 \u0634\u0645\u0627 \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631\u060c \u0627\u0645\u0646\u200c\u062a\u0631 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0628\u0627\u0634\u062f.<\/p>\n<p data-start=\"339\" data-end=\"459\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637 Production\u060c \u0631\u0648\u0634 \u0628\u0631\u0637\u0631\u0641 \u06a9\u0631\u062f\u0646 \u0622\u0646\u200c\u0647\u0627 \u0648 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 Best Practice\u0647\u0627\u06cc \u0645\u0647\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<hr data-start=\"461\" data-end=\"464\" \/>\n<h1 data-section-id=\"1o0vz0m\" data-start=\"466\" data-end=\"495\">\u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0648 \u0631\u0648\u0634 \u0631\u0641\u0639 \u0622\u0646\u200c\u0647\u0627<\/h1>\n<h2 data-section-id=\"1vw7hno\" data-start=\"497\" data-end=\"531\">\u06f1. \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0648\u0633\u0637 PM2 \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f<\/h2>\n<p data-start=\"533\" data-end=\"624\">\u0627\u06af\u0631 \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 <code data-start=\"555\" data-end=\"566\">pm2 start<\/code> \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u062c\u0631\u0627 \u0646\u0634\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0639\u0644\u062a \u0622\u0646 \u0627\u0633\u062a:<\/p>\n<ul data-start=\"626\" data-end=\"756\">\n<li data-section-id=\"1lkogz0\" data-start=\"626\" data-end=\"649\">\u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"eqvxdz\" data-start=\"650\" data-end=\"696\">\u0628\u0631\u062e\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 (Dependencies) \u0646\u0635\u0628 \u0646\u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/li>\n<li data-section-id=\"7tcc72\" data-start=\"697\" data-end=\"756\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc (Environment Variables) \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0646\u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"758\" data-end=\"813\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0639\u0644\u062a \u062e\u0637\u0627 \u0627\u0628\u062a\u062f\u0627 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \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>pm2 logs<\/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=\"837\" data-end=\"912\">\u0633\u067e\u0633 \u0627\u0632 \u0635\u062d\u06cc\u062d \u0628\u0648\u062f\u0646 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u0646\u0635\u0628 \u0628\u0648\u062f\u0646 \u062a\u0645\u0627\u0645\u06cc \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0645\u0637\u0645\u0626\u0646 \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\">npm<\/span> install <span class=\"\u037c12\">--production<\/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=\"952\" data-end=\"1057\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 <code data-start=\"975\" data-end=\"981\">.env<\/code> \u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"1007\" data-end=\"1028\">ecosystem.config.js<\/code> \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<hr data-start=\"1059\" data-end=\"1062\" \/>\n<h2 data-section-id=\"l9itxs\" data-start=\"1064\" data-end=\"1094\">\u06f2. \u062e\u0637\u0627\u06cc Port Already in Use<\/h2>\n<p data-start=\"1096\" data-end=\"1149\">\u0627\u06af\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\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>Error: listen EADDRINUSE<\/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=\"1189\" data-end=\"1269\">\u06cc\u0639\u0646\u06cc \u067e\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u0635\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f\u060c \u062a\u0648\u0633\u0637 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0634\u063a\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"1271\" data-end=\"1319\">\u0627\u0628\u062a\u062f\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u06a9\u0646\u0646\u062f\u0647 \u0627\u0632 \u067e\u0648\u0631\u062a \u0631\u0627 \u067e\u06cc\u062f\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> lsof <span class=\"\u037c12\">-i<\/span> :3000<\/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=\"1353\" data-end=\"1387\">\u0633\u067e\u0633 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0622\u0646 \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=\"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\">kill<\/span> <span class=\"\u037c12\">-9<\/span> PID<\/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=\"1419\" data-end=\"1489\">\u06cc\u0627 \u0634\u0645\u0627\u0631\u0647 \u067e\u0648\u0631\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code data-start=\"1451\" data-end=\"1457\">.env<\/code> \u06cc\u0627 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a PM2 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<hr data-start=\"1491\" data-end=\"1494\" \/>\n<h2 data-section-id=\"alea0k\" data-start=\"1496\" data-end=\"1528\">\u06f3. \u062e\u0637\u0627\u06cc Nginx 502 Bad Gateway<\/h2>\n<p data-start=\"1530\" data-end=\"1620\">\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u062e\u0637\u0627\u0647\u0627 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Reverse Proxy\u060c \u0646\u0645\u0627\u06cc\u0634 \u0635\u0641\u062d\u0647 <strong data-start=\"1596\" data-end=\"1615\">502 Bad Gateway<\/strong> \u0627\u0633\u062a.<\/p>\n<p data-start=\"1622\" data-end=\"1668\">\u0627\u06cc\u0646 \u062e\u0637\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u062f\u0644\u0627\u06cc\u0644 \u0632\u06cc\u0631 \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul data-start=\"1670\" data-end=\"1813\">\n<li data-section-id=\"1w8u0dp\" data-start=\"1670\" data-end=\"1701\">\u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0645\u062a\u0648\u0642\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1r70yq8\" data-start=\"1702\" data-end=\"1733\">PM2 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"1aqdke5\" data-start=\"1734\" data-end=\"1775\">\u0645\u0642\u062f\u0627\u0631 <code data-start=\"1742\" data-end=\"1754\">proxy_pass<\/code> \u062f\u0631 Nginx \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"150ykwa\" data-start=\"1776\" data-end=\"1813\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u062f\u06cc\u06af\u0631\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p data-start=\"1815\" data-end=\"1848\">\u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \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>pm2 <span class=\"\u037c10\">restart<\/span> all<\/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=\"1879\" data-end=\"1919\">\u0633\u067e\u0633 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u062c\u062f\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\">sudo<\/span> systemctl reload 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=\"1962\" data-end=\"2076\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u0645\u0642\u062f\u0627\u0631 <code data-start=\"1988\" data-end=\"2000\">proxy_pass<\/code> \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u067e\u0648\u0631\u062a\u06cc \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0622\u0646 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a\u061b \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=\"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>proxy_pass http:\/\/localhost:3000;<\/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=\"2126\" data-end=\"2129\" \/>\n<h2 data-section-id=\"20fzep\" data-start=\"2131\" data-end=\"2161\">\u06f4. \u062e\u0637\u0627\u0647\u0627\u06cc Permission Denied<\/h2>\n<p data-start=\"2163\" data-end=\"2257\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u062e\u0648\u0627\u0646\u062f\u0646 \u06cc\u0627 \u0646\u0648\u0634\u062a\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc Permission \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p data-start=\"2259\" data-end=\"2288\">\u0645\u0627\u0644\u06a9\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \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\">chown<\/span> <span class=\"\u037c12\">-R<\/span> <span class=\"\u037c11\">$USER<\/span>:<span class=\"\u037c11\">$USER<\/span> \/var\/www\/myapp<\/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=\"2344\" data-end=\"2379\">\u0633\u067e\u0633 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u0639\u0645\u0627\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=\"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\">chmod<\/span> <span class=\"\u037c12\">-R<\/span> <span class=\"\u037cy\">755<\/span> \/var\/www\/myapp<\/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<blockquote data-start=\"2427\" data-end=\"2502\">\n<p data-start=\"2429\" data-end=\"2502\"><strong data-start=\"2429\" data-end=\"2438\">\u0646\u06a9\u062a\u0647:<\/strong> \u0647\u0631\u06af\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u06cc\u0627 PM2 \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631 <strong data-start=\"2482\" data-end=\"2490\">root<\/strong> \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<hr data-start=\"2504\" data-end=\"2507\" \/>\n<h2 data-section-id=\"ahai4h\" data-start=\"2509\" data-end=\"2535\">\u06f5. \u062a\u0645\u062f\u06cc\u062f \u0646\u0634\u062f\u0646 \u06af\u0648\u0627\u0647\u06cc SSL<\/h2>\n<p data-start=\"2537\" data-end=\"2612\">\u0627\u06af\u0631 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc Let&#8217;s Encrypt \u062a\u0645\u062f\u06cc\u062f \u0646\u0634\u0648\u0646\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0645\u062f\u06cc\u062f \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \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> certbot renew <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=\"2656\" data-end=\"2699\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0637\u0627 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<ul data-start=\"2701\" data-end=\"2787\">\n<li data-section-id=\"1a8hvqj\" data-start=\"2701\" data-end=\"2737\">\u0631\u06a9\u0648\u0631\u062f DNS \u062f\u0627\u0645\u0646\u0647 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"1fsu9nx\" data-start=\"2738\" data-end=\"2764\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx \u0635\u062d\u06cc\u062d \u0628\u0627\u0634\u062f.<\/li>\n<li data-section-id=\"rk3xjo\" data-start=\"2765\" data-end=\"2787\">\u062f\u0627\u0645\u0646\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<p data-start=\"2789\" data-end=\"2837\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af Certbot \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=\"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\/log\/letsencrypt\/<\/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=\"2874\" data-end=\"2877\" \/>\n<h2 data-section-id=\"14dgf2o\" data-start=\"2879\" data-end=\"2914\">\u06f6. \u0645\u0633\u062f\u0648\u062f \u0634\u062f\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062a\u0648\u0633\u0637 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644<\/h2>\n<p data-start=\"2916\" data-end=\"3011\">\u0627\u06af\u0631 \u0633\u0627\u06cc\u062a \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a \u0627\u0645\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b UFW \u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p data-start=\"3013\" data-end=\"3045\">\u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc Nginx \u0631\u0627 \u0635\u0627\u062f\u0631 \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> ufw allow <span class=\"\u037cz\">'Nginx Full'<\/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=\"3088\" data-end=\"3120\">\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \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><span class=\"\u037c10\">sudo<\/span> ufw status<\/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=\"3151\" data-end=\"3154\" \/>\n<h1 data-section-id=\"1kjbw30\" data-start=\"3156\" data-end=\"3210\">\u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc (Troubleshooting Workflow)<\/h1>\n<p data-start=\"3212\" data-end=\"3274\">\u0647\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627 \u0645\u0634\u06a9\u0644\u06cc \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u0628\u0647\u200c\u062a\u0631\u062a\u06cc\u0628 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<h2 data-section-id=\"1fsqr9p\" data-start=\"3276\" data-end=\"3294\">\u06f1. \u0628\u0631\u0631\u0633\u06cc \u0644\u0627\u06af\u200c\u0647\u0627<\/h2>\n<p data-start=\"3296\" data-end=\"3344\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645\u06cc \u062e\u0637\u0627\u0647\u0627 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 \u0644\u0627\u06af\u200c\u0647\u0627 \u062b\u0628\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"3346\" data-end=\"3370\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc PM2:<\/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>pm2 logs<\/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=\"3394\" data-end=\"3420\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0644\u0627\u06af\u200c\u0647\u0627\u06cc Nginx:<\/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> tail <span class=\"\u037c12\">-f<\/span> \/var\/log\/nginx\/error.log<\/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=\"3473\" data-end=\"3476\" \/>\n<h2 data-section-id=\"wvb81i\" data-start=\"3478\" data-end=\"3504\">\u06f2. \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627<\/h2>\n<p data-start=\"3506\" data-end=\"3539\">\u0627\u0632 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0645\u0637\u0645\u0626\u0646 \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>pm2 status<\/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=\"3565\" data-end=\"3566\">\u0648<\/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>systemctl status 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<hr data-start=\"3604\" data-end=\"3607\" \/>\n<h2 data-section-id=\"1gtixae\" data-start=\"3609\" data-end=\"3638\">\u06f3. \u0628\u0631\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<\/h2>\n<p data-start=\"3640\" data-end=\"3692\">\u0642\u0628\u0644 \u0627\u0632 \u0631\u06cc\u0633\u062a\u0627\u0631\u062a \u06a9\u0631\u062f\u0646 Nginx \u0647\u0645\u06cc\u0634\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627 \u062a\u0633\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\">sudo<\/span> nginx <span class=\"\u037c12\">-t<\/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=\"3721\" data-end=\"3800\">\u0627\u06af\u0631 \u0627\u0632 \u0641\u0627\u06cc\u0644 Ecosystem \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u0632 \u0635\u062d\u06cc\u062d \u0628\u0648\u062f\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644 \u0646\u06cc\u0632 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f.<\/p>\n<hr data-start=\"3802\" data-end=\"3805\" \/>\n<h2 data-section-id=\"10ayuri\" data-start=\"3807\" data-end=\"3832\">\u06f4. \u0628\u0631\u0631\u0633\u06cc \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0641\u0639\u0627\u0644<\/h2>\n<p data-start=\"3834\" data-end=\"3899\">\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \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=\"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> netstat <span class=\"\u037c12\">-tulnp<\/span> | <span class=\"\u037c10\">grep<\/span> <span class=\"\u037c10\">node<\/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=\"3946\" data-end=\"3949\">\u06cc\u0627:<\/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>ss <span class=\"\u037c12\">-tulnp<\/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<hr data-start=\"3974\" data-end=\"3977\" \/>\n<h2 data-section-id=\"1p6y5vr\" data-start=\"3979\" data-end=\"4001\">\u06f5. \u0628\u0631\u0631\u0633\u06cc \u0645\u0646\u0627\u0628\u0639 \u0633\u0631\u0648\u0631<\/h2>\n<p data-start=\"4003\" data-end=\"4054\">\u06af\u0627\u0647\u06cc \u0645\u0634\u06a9\u0644 \u0627\u0632 \u06a9\u0645\u0628\u0648\u062f \u062d\u0627\u0641\u0638\u0647 \u06cc\u0627 \u0645\u0635\u0631\u0641 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f CPU \u0627\u0633\u062a.<\/p>\n<p data-start=\"4056\" data-end=\"4080\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\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>htop<\/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=\"4100\" data-end=\"4103\">\u06cc\u0627:<\/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>pm2 monit<\/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=\"4128\" data-end=\"4131\" \/>\n<h2 data-section-id=\"gmrtz7\" data-start=\"4133\" data-end=\"4156\">\u06f6. \u062a\u0633\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n<p data-start=\"4158\" data-end=\"4227\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u0644\u0645 \u0627\u0633\u062a\u060c \u0622\u0646 \u0631\u0627 \u0628\u062f\u0648\u0646 Nginx \u062a\u0633\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\">curl<\/span> http:\/\/localhost:3000<\/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=\"4269\" data-end=\"4339\">\u0627\u06af\u0631 \u067e\u0627\u0633\u062e \u0645\u0646\u0627\u0633\u0628 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u062f\u060c \u0645\u0634\u06a9\u0644 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<hr data-start=\"4341\" data-end=\"4344\" \/>\n<h1 data-section-id=\"1dcgonk\" data-start=\"4346\" data-end=\"4378\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 (Best Practices)<\/h1>\n<p data-start=\"4380\" data-end=\"4466\">\u0628\u0631\u0627\u06cc \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 Production \u067e\u0627\u06cc\u062f\u0627\u0631\u060c \u0627\u0645\u0646 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u060c \u0631\u0639\u0627\u06cc\u062a \u0646\u06a9\u0627\u062a \u0632\u06cc\u0631 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h2 data-section-id=\"1v06byh\" data-start=\"4468\" data-end=\"4482\">\u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc<\/h2>\n<ul data-start=\"4484\" data-end=\"4532\">\n<li data-section-id=\"1atlz17\" data-start=\"4484\" data-end=\"4532\">\u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0648 \u0628\u0633\u062a\u0647\u200c\u0647\u0627 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/li>\n<\/ul>\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 &amp;&amp; <span class=\"\u037c10\">sudo<\/span> apt upgrade <span class=\"\u037c12\">-y<\/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<ul data-start=\"4586\" data-end=\"4855\">\n<li data-section-id=\"1nhya4k\" data-start=\"4586\" data-end=\"4623\">\u062a\u0645\u0627\u0645 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0627 \u0628\u0647 HTTPS \u0647\u062f\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1rjkvf0\" data-start=\"4624\" data-end=\"4664\">\u0648\u0631\u0648\u062f SSH \u0631\u0627 \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0644\u06cc\u062f SSH \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"6lmrnt\" data-start=\"4665\" data-end=\"4706\">\u0648\u0631\u0648\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631 root \u0631\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"rx3tne\" data-start=\"4707\" data-end=\"4753\">\u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 Root \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"o2zryz\" data-start=\"4754\" data-end=\"4815\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0645\u0627\u0646\u0646\u062f Stack Trace \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u0646\u062f\u0647\u06cc\u062f.<\/li>\n<li data-section-id=\"xxj5u4\" data-start=\"4816\" data-end=\"4855\">\u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/li>\n<\/ul>\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\">npm<\/span> audit<\/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=\"4880\" data-end=\"4883\" \/>\n<h2 data-section-id=\"bq1y7i\" data-start=\"4885\" data-end=\"4905\">\u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f<\/h2>\n<p data-start=\"4907\" data-end=\"4946\">\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0645\u0627\u0645 \u0647\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0646\u062f\u0647:<\/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>pm2 <span class=\"\u037c10\">start<\/span> app.js <span class=\"\u037c12\">-i<\/span> max<\/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=\"4985\" data-end=\"5007\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"5009\" data-end=\"5242\">\n<li data-section-id=\"11p96lk\" data-start=\"5009\" data-end=\"5049\">\u0627\u0632 Redis \u06cc\u0627 \u0633\u0627\u06cc\u0631 Cache\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"13524hw\" data-start=\"5050\" data-end=\"5100\">\u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Gzip \u06cc\u0627 Brotli \u0631\u0627 \u062f\u0631 Nginx \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"qsavdo\" data-start=\"5101\" data-end=\"5157\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Static \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062a\u0648\u0633\u0637 Nginx \u0633\u0631\u0648\u06cc\u0633\u200c\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"8j7ady\" data-start=\"5158\" data-end=\"5198\">\u0644\u0627\u06af\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0648\u0631\u0647\u200c\u0627\u06cc Rotate \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1vv0ltq\" data-start=\"5199\" data-end=\"5242\">\u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<hr data-start=\"5244\" data-end=\"5247\" \/>\n<h2 data-section-id=\"ao7y5j\" data-start=\"5249\" data-end=\"5268\">\u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a<\/h2>\n<p data-start=\"5270\" data-end=\"5305\">\u0628\u0631\u0627\u06cc \u06a9\u0627\u0647\u0634 \u0631\u06cc\u0633\u06a9 \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a:<\/p>\n<ul data-start=\"5307\" data-end=\"5762\">\n<li data-section-id=\"1numom9\" data-start=\"5307\" data-end=\"5354\">\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0646\u0638\u0645 \u0646\u0633\u062e\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 (Backup) \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"yt2yej\" data-start=\"5355\" data-end=\"5394\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631 Git \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"9amgqj\" data-start=\"5395\" data-end=\"5448\">\u062a\u0645\u0627\u0645\u06cc \u0645\u0631\u0627\u062d\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 (Deployment) \u0631\u0627 \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"c4pomd\" data-start=\"5449\" data-end=\"5524\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0635\u0644\u06cc\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Staging \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"1qf28ou\" data-start=\"5525\" data-end=\"5603\">\u0627\u0632 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af Uptime \u0645\u0627\u0646\u0646\u062f UptimeRobot \u06cc\u0627 StatusCake \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"ru9khh\" data-start=\"5604\" data-end=\"5698\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0631\u0627\u0641\u06cc\u06a9\u060c \u0627\u0632 Load Balancer\u060c Docker \u06cc\u0627 Kubernetes \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li data-section-id=\"ge1nzy\" data-start=\"5699\" data-end=\"5762\">\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0648\u0631\u0647\u200c\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p data-start=\"5764\" data-end=\"5886\">\u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0632\u06cc\u0631\u0633\u0627\u062e\u062a Node.js \u0634\u0645\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631\u060c \u0627\u0645\u0646\u200c\u062a\u0631 \u0648 \u0622\u0645\u0627\u062f\u0647 \u067e\u0627\u0633\u062e\u200c\u06af\u0648\u06cc\u06cc \u0628\u0647 \u0628\u0627\u0631 \u06a9\u0627\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"gtium7\" data-start=\"0\" data-end=\"35\">\u0645\u0631\u062d\u0644\u0647 \u06f1\u06f1 \u2014 \u067e\u0631\u0633\u0634\u200c\u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 (FAQ)<\/h2>\n<p data-start=\"37\" data-end=\"174\">\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0647 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0633\u0624\u0627\u0644\u0627\u062a\u06cc \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0631\u0648\u06cc Ubuntu \u0645\u0637\u0631\u062d \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.<\/p>\n<hr data-start=\"176\" data-end=\"179\" \/>\n<h1 data-section-id=\"etfs71\" data-start=\"181\" data-end=\"253\">\u06f1. \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0631\u0648\u06cc Ubuntu \u0628\u0647\u200c\u0635\u0648\u0631\u062a Production \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n<p data-start=\"255\" data-end=\"465\">\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0627\u0635\u0648\u0644\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u062f\u0631 \u0645\u062d\u06cc\u0637 Production\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647\u200c\u062a\u0631\u062a\u06cc\u0628 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f. \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code data-start=\"377\" data-end=\"390\">node app.js<\/code> \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc \u0645\u0646\u0627\u0633\u0628 \u0646\u06cc\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0632 \u0645\u062a\u0648\u0642\u0641 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p data-start=\"467\" data-end=\"497\">\u0631\u0648\u0646\u062f \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<h3 data-section-id=\"1wr7pw7\" data-start=\"499\" data-end=\"523\">\u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632 \u06a9\u0646\u06cc\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><span class=\"\u037c10\">sudo<\/span> apt update &amp;&amp; <span class=\"\u037c10\">sudo<\/span> apt upgrade <span class=\"\u037c12\">-y<\/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<h3 data-section-id=\"13l7yg7\" data-start=\"577\" data-end=\"609\">\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 Root \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"611\" data-end=\"714\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631 Root \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3 data-section-id=\"1qg5emd\" data-start=\"716\" data-end=\"757\">\u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 LTS \u0627\u0632 Node.js \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"759\" data-end=\"807\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc NodeSource \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><span class=\"\u037c10\">curl<\/span> <span class=\"\u037c12\">-fsSL<\/span> https:\/\/deb.nodesource.com\/setup_24.x <span class=\"\u037c12\">-o<\/span> nodesource_setup.sh\r\n\r\n<span class=\"\u037c10\">sudo<\/span> <span class=\"\u037c10\">bash<\/span> nodesource_setup.sh\r\n\r\n<span class=\"\u037c10\">sudo<\/span> apt install nodejs <span class=\"\u037c12\">-y<\/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<h3 data-section-id=\"14c9v66\" data-start=\"953\" data-end=\"997\">\u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"999\" data-end=\"1079\">\u0627\u06af\u0631 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 Git \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0622\u0646 \u0631\u0627 Clone \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \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 https:\/\/your-repository.git\r\n\r\n<span class=\"\u037c10\">cd<\/span> your-project\r\n\r\n<span class=\"\u037c10\">npm<\/span> ci<\/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<blockquote data-start=\"1157\" data-end=\"1300\">\n<p data-start=\"1159\" data-end=\"1300\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code data-start=\"1170\" data-end=\"1178\">npm ci<\/code> \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0646\u0633\u0628\u062a \u0628\u0647 <code data-start=\"1206\" data-end=\"1219\">npm install<\/code> \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0632\u06cc\u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062b\u0628\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 <code data-start=\"1266\" data-end=\"1285\">package-lock.json<\/code> \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n<h3 data-section-id=\"vmumh4\" data-start=\"1302\" data-end=\"1334\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"1336\" data-end=\"1356\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul data-start=\"1358\" data-end=\"1408\">\n<li data-section-id=\"qf7hfa\" data-start=\"1358\" data-end=\"1375\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n<li data-section-id=\"122523r\" data-start=\"1376\" data-end=\"1385\">API Key<\/li>\n<li data-section-id=\"1cllivr\" data-start=\"1386\" data-end=\"1398\">JWT Secret<\/li>\n<li data-section-id=\"13qhooj\" data-start=\"1399\" data-end=\"1408\">Token\u0647\u0627<\/li>\n<\/ul>\n<p data-start=\"1410\" data-end=\"1443\">\u0631\u0627 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 <code data-start=\"1423\" data-end=\"1429\">.env<\/code> \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h3 data-section-id=\"3bwbo2\" data-start=\"1445\" data-end=\"1477\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0648\u0633\u0637 PM2 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\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><span class=\"\u037c10\">sudo<\/span> <span class=\"\u037c10\">npm<\/span> install <span class=\"\u037c12\">-g<\/span> pm2\r\n\r\npm2 <span class=\"\u037c10\">start<\/span> app.js <span class=\"\u037c12\">--name<\/span> my-production-app<\/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=\"1tvl7ml\" data-start=\"1559\" data-end=\"1588\">\u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a<\/h3>\n<p data-start=\"1590\" data-end=\"1624\">\u0627\u0628\u062a\u062f\u0627 \u062f\u0633\u062a\u0648\u0631 Startup \u0631\u0627 \u062a\u0648\u0644\u06cc\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>pm2 startup<\/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=\"1651\" data-end=\"1695\">\u0633\u067e\u0633 \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 PM2 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1697\" data-end=\"1745\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0646\u06cc\u0632 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\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>pm2 save<\/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=\"1769\" data-end=\"1772\" \/>\n<h1 data-section-id=\"1o0elot\" data-start=\"1774\" data-end=\"1836\">\u06f2. \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0631\u0648\u06cc VPS \u0686\u06cc\u0633\u062a\u061f<\/h1>\n<p data-start=\"1838\" data-end=\"1922\">\u062f\u0631 \u0627\u063a\u0644\u0628 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062d\u0631\u0641\u0647\u200c\u0627\u06cc\u060c <strong data-start=\"1865\" data-end=\"1872\">PM2<\/strong> \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0627\u0633\u062a.<\/p>\n<p data-start=\"1924\" data-end=\"1948\">\u0645\u0632\u0627\u06cc\u0627\u06cc PM2 \u0639\u0628\u0627\u0631\u062a\u200c\u0627\u0646\u062f \u0627\u0632:<\/p>\n<ul data-start=\"1950\" data-end=\"2120\">\n<li data-section-id=\"12aydu0\" data-start=\"1950\" data-end=\"1982\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0639\u062f \u0627\u0632 \u0631\u06cc\u0628\u0648\u062a<\/li>\n<li data-section-id=\"zx8ktq\" data-start=\"1983\" data-end=\"2011\">Restart \u062e\u0648\u062f\u06a9\u0627\u0631 \u0647\u0646\u06af\u0627\u0645 Crash<\/li>\n<li data-section-id=\"az0gom\" data-start=\"2012\" data-end=\"2044\">\u0627\u062c\u0631\u0627\u06cc Cluster \u0631\u0648\u06cc \u0686\u0646\u062f \u0647\u0633\u062a\u0647 CPU<\/li>\n<li data-section-id=\"9ana2u\" data-start=\"2045\" data-end=\"2072\">\u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0645\u0635\u0631\u0641 CPU \u0648 RAM<\/li>\n<li data-section-id=\"164ifx5\" data-start=\"2073\" data-end=\"2088\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0644\u0627\u06af\u200c\u0647\u0627<\/li>\n<li data-section-id=\"1bohvua\" data-start=\"2089\" data-end=\"2120\">\u0627\u0645\u06a9\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u0632\u0645\u0627\u0646 \u0686\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<\/ul>\n<p data-start=\"2122\" data-end=\"2215\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 PM2 \u0628\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0631\u0627\u06cc\u062c \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<hr data-start=\"2217\" data-end=\"2220\" \/>\n<h1 data-section-id=\"1lt5sg0\" data-start=\"2222\" data-end=\"2279\">\u06f3. \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 Production \u0627\u0632 PM2 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06cc\u0627 Systemd\u061f<\/h1>\n<p data-start=\"2281\" data-end=\"2328\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647\u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"2314\" data-end=\"2323\">\u0647\u0631 \u062f\u0648<\/strong> \u0627\u0633\u062a.<\/p>\n<p data-start=\"2330\" data-end=\"2344\">\u062f\u0631 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n<ul data-start=\"2346\" data-end=\"2455\">\n<li data-section-id=\"1nx1m3b\" data-start=\"2346\" data-end=\"2384\">PM2 \u0645\u0633\u0626\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0627\u0633\u062a.<\/li>\n<li data-section-id=\"xftbbp\" data-start=\"2385\" data-end=\"2455\">Systemd \u0645\u0633\u0626\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 PM2 \u067e\u0633 \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/li>\n<\/ul>\n<p data-start=\"2457\" data-end=\"2467\">\u0645\u0631\u0627\u062d\u0644 \u06a9\u0627\u0631:<\/p>\n<p data-start=\"2469\" data-end=\"2489\">\u0628\u0631\u0646\u0627\u0645\u0647 \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>pm2 <span class=\"\u037c10\">start<\/span> app.js<\/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=\"2521\" data-end=\"2554\">\u0633\u067e\u0633 Startup Script \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>pm2 startup<\/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=\"2581\" data-end=\"2611\">\u062f\u0633\u062a\u0648\u0631 \u062a\u0648\u0644\u06cc\u062f\u0634\u062f\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p data-start=\"2613\" data-end=\"2622\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646:<\/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>pm2 save<\/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=\"2646\" data-end=\"2729\">\u0628\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u067e\u0633 \u0627\u0632 \u0647\u0631 \u0628\u0627\u0631 \u0631\u06cc\u0628\u0648\u062a \u0633\u0631\u0648\u0631\u060c \u062a\u0645\u0627\u0645\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<hr data-start=\"2731\" data-end=\"2734\" \/>\n<h1 data-section-id=\"12bkxr8\" data-start=\"2736\" data-end=\"2803\">\u06f4. \u0686\u06af\u0648\u0646\u0647 Nginx \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Reverse Proxy \u0628\u0631\u0627\u06cc Node.js \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n<p data-start=\"2805\" data-end=\"2872\">\u062f\u0631 \u0645\u062d\u06cc\u0637 Production \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 Node.js \u0645\u062a\u0635\u0644 \u0646\u0634\u0648\u0646\u062f.<\/p>\n<p data-start=\"2874\" data-end=\"2884\">\u0628\u0647\u200c\u062c\u0627\u06cc \u0622\u0646:<\/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      \u25bc\r\nNginx (80 \/ 443)\r\n      \u2502\r\n      \u25bc\r\nNode.js (localhost:3000)<\/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=\"2976\" data-end=\"2990\">\u0646\u0645\u0648\u0646\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\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>server {\r\n\r\n    listen 80;\r\n\r\n    server_name example.com;\r\n\r\n    location \/ {\r\n\r\n        proxy_pass http:\/\/localhost:3000;\r\n\r\n        proxy_http_version 1.1;\r\n\r\n        proxy_set_header Upgrade $http_upgrade;\r\n\r\n        proxy_set_header Connection \"upgrade\";\r\n\r\n        proxy_set_header Host $host;\r\n\r\n        proxy_cache_bypass $http_upgrade;\r\n\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<p data-start=\"3343\" data-end=\"3360\">\u067e\u0633 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644:<\/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> nginx <span class=\"\u037c12\">-t<\/span>\r\n\r\n<span class=\"\u037c10\">sudo<\/span> systemctl reload 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<hr data-start=\"3418\" data-end=\"3421\" \/>\n<h1 data-section-id=\"51rv19\" data-start=\"3423\" data-end=\"3473\">\u06f5. \u0686\u06af\u0648\u0646\u0647 HTTPS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645\u061f<\/h1>\n<p data-start=\"3475\" data-end=\"3536\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"3497\" data-end=\"3514\">Let&#8217;s Encrypt<\/strong> \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 Certbot \u0627\u0633\u062a.<\/p>\n<p data-start=\"3538\" data-end=\"3564\">\u0627\u0628\u062a\u062f\u0627 Certbot \u0631\u0627 \u0646\u0635\u0628 \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> apt install certbot python3-certbot-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=\"3626\" data-end=\"3655\">\u0633\u067e\u0633 \u06af\u0648\u0627\u0647\u06cc SSL \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\">sudo<\/span> certbot <span class=\"\u037c12\">--nginx<\/span> <span class=\"\u037c12\">-d<\/span> example.com <span class=\"\u037c12\">-d<\/span> www.example.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=\"3725\" data-end=\"3748\">Certbot \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631:<\/p>\n<ul data-start=\"3750\" data-end=\"3902\">\n<li data-section-id=\"1vdxn3g\" data-start=\"3750\" data-end=\"3779\">\u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"ovnd4v\" data-start=\"3780\" data-end=\"3816\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Nginx \u0631\u0627 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"10un9vd\" data-start=\"3817\" data-end=\"3857\">\u0631\u06cc\u062f\u0627\u06cc\u0631\u06a9\u062a HTTP \u0628\u0647 HTTPS \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li data-section-id=\"3ntsb8\" data-start=\"3858\" data-end=\"3902\">\u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p data-start=\"3904\" data-end=\"3929\">\u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062a\u0645\u062f\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\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><span class=\"\u037c10\">sudo<\/span> certbot renew <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<hr data-start=\"3973\" data-end=\"3976\" \/>\n<h1 data-section-id=\"oefpxu\" data-start=\"3978\" data-end=\"4025\">\u06f6. \u0686\u06af\u0648\u0646\u0647 \u0627\u0645\u0646\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u0645\u061f<\/h1>\n<p data-start=\"4027\" data-end=\"4079\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a \u0633\u0631\u0648\u0631\u060c \u0631\u0639\u0627\u06cc\u062a \u0646\u06a9\u0627\u062a \u0632\u06cc\u0631 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h3 data-section-id=\"c75adz\" data-start=\"4081\" data-end=\"4105\">\u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\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><span class=\"\u037c10\">sudo<\/span> ufw allow OpenSSH\r\n\r\n<span class=\"\u037c10\">sudo<\/span> ufw allow <span class=\"\u037cz\">\"Nginx Full\"<\/span>\r\n\r\n<span class=\"\u037c10\">sudo<\/span> ufw enable<\/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=\"4189\" data-end=\"4192\" \/>\n<h3 data-section-id=\"14f8s21\" data-start=\"4194\" data-end=\"4222\">\u0627\u0632 \u06a9\u0644\u06cc\u062f SSH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"4224\" data-end=\"4287\">\u0648\u0631\u0648\u062f \u0628\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0627\u0632 SSH Key \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"4289\" data-end=\"4292\" \/>\n<h3 data-section-id=\"nd6byq\" data-start=\"4294\" data-end=\"4332\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631 Root \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"4334\" data-end=\"4379\">\u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"4381\" data-end=\"4384\" \/>\n<h3 data-section-id=\"1vo7lle\" data-start=\"4386\" data-end=\"4412\">\u0627\u0632 Helmet \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/h3>\n<p data-start=\"4414\" data-end=\"4447\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a Header\u0647\u0627\u06cc HTTP:<\/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\">npm<\/span> install helmet<\/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=\"4481\" data-end=\"4484\" \/>\n<h3 data-section-id=\"1duk53u\" data-start=\"4486\" data-end=\"4528\">Node.js \u0631\u0627 \u0641\u0642\u0637 \u0631\u0648\u06cc localhost \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\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><span class=\"\u037cv\">const<\/span> <span class=\"\u037c11\">hostname<\/span> <span class=\"\u037cv\">=<\/span> <span class=\"\u037cz\">\"127.0.0.1\"<\/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=\"4579\" data-end=\"4699\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0641\u0642\u0637 Nginx \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0647\u0631\u06af\u0632 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 Node.js \u0645\u062a\u0635\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<hr data-start=\"4701\" data-end=\"4704\" \/>\n<h3 data-section-id=\"9uoti0\" data-start=\"4706\" data-end=\"4746\">\u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\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><span class=\"\u037c10\">npm<\/span> audit<\/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=\"4771\" data-end=\"4820\">\u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u0622\u0633\u06cc\u0628\u200c\u067e\u0630\u06cc\u0631\u06cc\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"4822\" data-end=\"4825\" \/>\n<p data-start=\"4827\" data-end=\"4943\">\u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0632\u06cc\u0631\u0633\u0627\u062e\u062a Node.js \u0634\u0645\u0627 \u0627\u0632 \u0646\u0638\u0631 \u0627\u0645\u0646\u06cc\u062a\u060c \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f\u060c \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr data-start=\"1334\" data-end=\"1337\" \/>\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=\"346\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0648 \u0622\u0645\u0627\u062f\u0647 Production \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0631\u0648\u06cc Ubuntu \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645. \u0627\u0628\u062a\u062f\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 LTS \u0627\u0632 Node.js \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PM2 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 Restart \u0634\u0648\u062f \u0648 \u067e\u0633 \u0627\u0632 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062f\u062e\u0627\u0644\u062a \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n<p data-start=\"348\" data-end=\"647\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647\u060c \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Reverse Proxy\u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u062a\u0645\u0627\u0645\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 Nginx \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f\u06cc\u0645. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc\u200c\u0647\u0627\u06cc SSL \u0631\u0627\u06cc\u06af\u0627\u0646 Let&#8217;s Encrypt\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0627\u0645\u0646\u06cc\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.<\/p>\n<p data-start=\"649\" data-end=\"855\">\u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0645\u0646\u06cc\u062a \u0633\u0631\u0648\u0631 \u0646\u06cc\u0632 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 UFW \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u06cc\u0645\u060c \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0628\u0627 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0641\u0634\u0631\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u06a9\u0634 \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u062f\u0627\u062f\u06cc\u0645.<\/p>\n<p data-start=\"857\" data-end=\"1073\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0646\u06cc\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637 Production\u060c \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0648 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u060c \u0627\u0645\u0646\u06cc\u062a \u0648 \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0645\u0631\u0648\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 Node.js \u067e\u0627\u06cc\u062f\u0627\u0631\u060c \u0633\u0631\u06cc\u0639 \u0648 \u0627\u06cc\u0645\u0646 \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"1075\" data-end=\"1316\">\u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0646\u06a9\u0627\u062a\u060c \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0646\u06cc\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Docker\u060c Kubernetes \u06cc\u0627 Load Balancer\u0647\u0627\u060c \u0633\u0631\u0648\u06cc\u0633 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647\u200c\u0633\u0627\u062f\u06af\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr data-start=\"1318\" data-end=\"1321\" \/>\n<h1 data-section-id=\"q2oide\" data-start=\"1323\" data-end=\"1337\">\u0645\u0637\u0627\u0644\u0639\u0647 \u0628\u06cc\u0634\u062a\u0631<\/h1>\n<p data-start=\"1339\" data-end=\"1459\">\u0627\u06af\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u062f\u0627\u0646\u0634 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f\u060c \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0642\u0627\u0644\u0627\u062a \u0632\u06cc\u0631 \u0646\u06cc\u0632 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n<ul data-start=\"1461\" data-end=\"1753\">\n<li data-section-id=\"1s02cnp\" data-start=\"1461\" data-end=\"1491\">\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 Node.js \u0631\u0648\u06cc Ubuntu<\/li>\n<li data-section-id=\"sxuwj\" data-start=\"1492\" data-end=\"1542\">\u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PostgreSQL \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Node.js<\/li>\n<li data-section-id=\"14hy89n\" data-start=\"1543\" data-end=\"1582\">\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Nginx \u0631\u0648\u06cc Ubuntu<\/li>\n<li data-section-id=\"j35w6l\" data-start=\"1583\" data-end=\"1631\">\u0622\u0645\u0648\u0632\u0634 \u062f\u0631\u06cc\u0627\u0641\u062a \u06af\u0648\u0627\u0647\u06cc SSL \u0631\u0627\u06cc\u06af\u0627\u0646 \u0628\u0627 Let&#8217;s Encrypt<\/li>\n<li data-section-id=\"32wx1o\" data-start=\"1632\" data-end=\"1676\">\u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0628\u0627 Docker<\/li>\n<li data-section-id=\"19vyr52\" data-start=\"1677\" data-end=\"1753\">\u0622\u0645\u0648\u0632\u0634 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc CI\/CD \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Node.js \u0628\u0627 Jenkins \u06cc\u0627 GitHub Actions<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\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.<\/p>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Node.js \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0634\u062e\u0635\u06cc \u062a\u0646\u0647\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0631\u0627\u06cc\u0637 \u0645\u062d\u06cc\u0637 Production \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0635\u0648\u0631\u062a Crash \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":6657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[258,8,131],"tags":[1787,166,1793,1790,167,1795,1789,1791,1794,1785,1707,1792,1788,236,1786],"class_list":["post-6656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu","category-8","category-131","tag-lets-encrypt","tag-nginx","tag-node-js--","tag-pm2","tag-reverse-proxy","tag--devops-node-js","tag--pm2","tag--node-js--production-node-js--ubuntu","tag--node-js","tag---node-js","tag-1707","tag-1788","tag-236","tag--ufw"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6656","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=6656"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6656\/revisions"}],"predecessor-version":[{"id":6658,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6656\/revisions\/6658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6657"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}