{"id":5255,"date":"2026-08-30T11:56:05","date_gmt":"2026-08-30T08:56:05","guid":{"rendered":"https:\/\/maram.iq\/blogs\/nodejs-vps-production\/"},"modified":"2026-08-30T12:13:30","modified_gmt":"2026-08-30T09:13:30","slug":"nodejs-vps-production","status":"publish","type":"post","link":"https:\/\/maram.iq\/blogs\/nodejs-vps-production\/","title":{"rendered":"\u0643\u064a\u0641 \u062a\u0633\u062a\u0636\u064a\u0641 Node.js \u0639\u0644\u0649 VPS \u0628\u0637\u0631\u064a\u0642\u0629 Production\u061f"},"content":{"rendered":"\n<p>\u062a\u0634\u063a\u064a\u0644 \u062a\u0637\u0628\u064a\u0642 <strong>Node.js<\/strong> \u0639\u0644\u0649 \u062c\u0647\u0627\u0632\u0643 \u0627\u0644\u0645\u062d\u0644\u064a \u0623\u0645\u0631\u064c \u0628\u0633\u064a\u0637: \u0623\u0645\u0631\u064c \u0648\u0627\u062d\u062f <code>node app.js<\/code> \u0648\u064a\u0646\u0637\u0644\u0642. \u0644\u0643\u0646 \u0625\u0639\u062f\u0627\u062f \u062e\u0627\u062f\u0645 <strong>Node.js VPS<\/strong> \u0625\u0646\u062a\u0627\u062c\u064a \u062d\u0642\u064a\u0642\u064a \u0645\u0633\u0623\u0644\u0629\u064c \u0623\u062e\u0631\u0649 \u062a\u0645\u0627\u0645\u064b\u0627\u061b \u0641\u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0630\u064a \u064a\u0639\u0645\u0644 \u0628\u0646\u0633\u062e\u0629 \u0648\u0627\u062d\u062f\u0629 \u0639\u0644\u0649 \u0645\u0646\u0641\u0630\u064d \u0645\u0643\u0634\u0648\u0641\u060c \u0648\u064a\u062a\u0648\u0642\u0651\u0641 \u0639\u0646\u062f \u0623\u0648\u0651\u0644 \u062e\u0637\u0623\u060c \u0648\u0644\u0627 \u064a\u0645\u0644\u0643 \u0634\u0647\u0627\u062f\u0629 \u062a\u0634\u0641\u064a\u0631 \u0648\u0644\u0627 \u062c\u062f\u0627\u0631\u064b\u0627 \u0646\u0627\u0631\u064a\u064b\u0627\u060c \u0644\u064a\u0633 \u062c\u0627\u0647\u0632\u064b\u0627 \u0644\u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0632\u0648\u0651\u0627\u0631 \u062d\u0642\u064a\u0642\u064a\u064a\u0646. \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644 \u0646\u0628\u0646\u064a \u0628\u064a\u0626\u0629 \u0625\u0646\u062a\u0627\u062c \u0643\u0627\u0645\u0644\u0629 \u0644\u0640<strong>\u0627\u0633\u062a\u0636\u0627\u0641\u0629 Node.js \u0639\u0644\u0649 VPS<\/strong> \u062e\u0637\u0648\u0629 \u0628\u062e\u0637\u0648\u0629: \u0645\u0646 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0628\u0645\u062f\u064a\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0645\u0648\u062b\u0648\u0642\u060c \u0625\u0644\u0649 \u0648\u0636\u0639 Nginx \u0623\u0645\u0627\u0645\u0647\u060c \u0648\u062a\u0623\u0645\u064a\u0646\u0647 \u0628\u0634\u0647\u0627\u062f\u0629 SSL \u0648\u062c\u062f\u0627\u0631\u064d \u0646\u0627\u0631\u064a\u060c \u0648\u0623\u062e\u064a\u0631\u064b\u0627 \u0645\u0631\u0627\u0642\u0628\u062a\u0647 \u2014 \u0645\u0639 \u0623\u0631\u0642\u0627\u0645 \u0623\u062f\u0627\u0621 \u062d\u0642\u064a\u0642\u064a\u0629 \u0642\u0650\u0633\u0646\u0627\u0647\u0627 \u0639\u0644\u0649 \u062e\u0627\u062f\u0645 \u0645\u0631\u0627\u0645.<\/p>\n\n\n<figure style=\"margin:1.5rem 0;text-align:center;\"><img decoding=\"async\" src=\"https:\/\/maram.iq\/blogs\/wp-content\/uploads\/2026\/08\/node-steps.png\" alt=\"\u062e\u0637\u0648\u0627\u062a \u0625\u0639\u062f\u0627\u062f \u062e\u0627\u062f\u0645 Node.js VPS \u0641\u064a \u0627\u0644\u0625\u0646\u062a\u0627\u062c\" loading=\"lazy\" style=\"max-width:100%;height:auto;border-radius:12px;box-shadow:0 4px 16px rgba(15,23,42,.12);\"\/><figcaption style=\"color:#64748b;font-size:.9rem;margin-top:.5rem;\">\u062e\u0627\u0631\u0637\u0629 \u0627\u0644\u0637\u0631\u064a\u0642: \u0645\u0646 \u0631\u0641\u0639 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0625\u0644\u0649 \u0628\u064a\u0626\u0629 \u0625\u0646\u062a\u0627\u062c \u0645\u0624\u0645\u0651\u0646\u0629 \u0648\u0645\u064f\u0631\u0627\u0642\u064e\u0628\u0629<\/figcaption><\/figure>\n\n\n<div class=\"table-of-contents\" style=\"background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:1.5rem;margin:1.5rem 0;\"><p style=\"font-weight:700;font-size:1.05rem;margin-bottom:.75rem;\">\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u062f\u0644\u064a\u0644<\/p><ul style=\"list-style:none;padding:0;margin:0;\"><li style=\"padding:.25rem 0;\"><a href=\"#s1\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0644\u0645\u0627\u0630\u0627 \u062e\u0627\u062f\u0645 Node.js VPS \u0647\u0648 \u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0635\u062d\u064a\u062d\u061f<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s2\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 1: \u062a\u062b\u0628\u064a\u062a Node.js \u0648\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s3\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 2: \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0628\u0640PM2 \u0648\u062a\u0641\u0639\u064a\u0644 Clustering<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s4\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 3: \u0648\u0636\u0639 Nginx \u0648\u0643\u064a\u0644\u064b\u0627 \u0639\u0643\u0633\u064a\u064b\u0627<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s5\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 4: \u062a\u0641\u0639\u064a\u0644 HTTPS \u0628\u0634\u0647\u0627\u062f\u0629 SSL<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s6\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 5: \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0645\u0646\u0627\u0641\u0630 \u0628\u062c\u062f\u0627\u0631 \u0646\u0627\u0631\u064a<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s7\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0637\u0648\u0629 6: \u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0648\u0625\u0628\u0642\u0627\u0621 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062d\u064a\u064b\u0651\u0627<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s8\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0651\u0642 \u0642\u0628\u0644 \u0625\u0637\u0644\u0627\u0642 \u062e\u0627\u062f\u0645 Node.js VPS<\/a><\/li><li style=\"padding:.25rem 0;\"><a href=\"#s9\" style=\"color:#4f46e5;text-decoration:none;\">&#8592; \u0627\u0644\u062e\u0644\u0627\u0635\u0629<\/a><\/li><\/ul><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"s1\">\u0644\u0645\u0627\u0630\u0627 \u062e\u0627\u062f\u0645 Node.js VPS \u0647\u0648 \u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0635\u062d\u064a\u062d\u061f<\/h2>\n\n\n<p>\u0627\u0633\u062a\u0636\u0627\u0641\u0629 Node.js \u0639\u0644\u0649 \u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0645\u0634\u062a\u0631\u0643\u0629 (Shared Hosting) \u063a\u0627\u0644\u0628\u064b\u0627 \u063a\u064a\u0631 \u0645\u0645\u0643\u0646\u0629 \u0623\u0635\u0644\u064b\u0627\u060c \u0644\u0623\u0646\u0647\u0627 \u0645\u0628\u0646\u064a\u0629 \u062d\u0648\u0644 PHP \u0648Apache \u0648\u0644\u0627 \u062a\u0645\u0646\u062d\u0643 \u0639\u0645\u0644\u064a\u0629 \u0637\u0648\u064a\u0644\u0629 \u0627\u0644\u0623\u0645\u062f (long-running process) \u062a\u0628\u0642\u0649 \u0641\u064a \u0627\u0644\u0630\u0627\u0643\u0631\u0629. \u0623\u0645\u0627 \u062e\u0627\u062f\u0645 <strong>Node.js VPS<\/strong> \u0641\u064a\u0645\u0646\u062d\u0643 \u062a\u062d\u0643\u0651\u0645\u064b\u0627 \u0643\u0627\u0645\u0644\u064b\u0627: \u062a\u062e\u062a\u0627\u0631 \u0625\u0635\u062f\u0627\u0631 Node\u060c \u0648\u062a\u064f\u0628\u0642\u064a \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062d\u064a\u064b\u0651\u0627 \u0641\u064a \u0627\u0644\u062e\u0644\u0641\u064a\u0629\u060c \u0648\u062a\u0641\u062a\u062d \u0627\u0644\u0645\u0646\u0627\u0641\u0630 \u0627\u0644\u062a\u064a \u062a\u0631\u064a\u062f\u0647\u0627 \u0641\u0642\u0637\u060c \u0648\u062a\u0633\u062a\u063a\u0644\u0651 \u0643\u0644 \u0623\u0646\u0648\u064a\u0629 \u0627\u0644\u0645\u0639\u0627\u0644\u062c. \u0647\u0630\u0647 \u0627\u0644\u062d\u0631\u0651\u064a\u0629 \u0647\u064a \u0645\u0627 \u064a\u0641\u0635\u0644 \u0628\u064a\u0646 \u062a\u062c\u0631\u0628\u0629 \u062a\u0637\u0648\u064a\u0631 \u0648\u0628\u064a\u0646 \u062e\u062f\u0645\u0629 \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u062a\u062a\u062d\u0645\u0651\u0644 \u0636\u063a\u0637\u064b\u0627 \u062d\u0642\u064a\u0642\u064a\u064b\u0627.<\/p>\n\n\n<ul class=\"wp-block-list\"><li><strong>\u0639\u0645\u0644\u064a\u0629 \u062f\u0627\u0626\u0645\u0629:<\/strong> \u062a\u0637\u0628\u064a\u0642 Node \u064a\u0628\u0642\u0649 \u0645\u0642\u064a\u0645\u064b\u0627 \u0641\u064a \u0627\u0644\u0630\u0627\u0643\u0631\u0629 \u064a\u0633\u062a\u0642\u0628\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a\u060c \u0644\u0627 \u064a\u064f\u0633\u062a\u062f\u0639\u0649 \u0648\u064a\u0645\u0648\u062a \u0645\u0639 \u0643\u0644 \u0637\u0644\u0628.<\/li><li><strong>\u062a\u062d\u0643\u0651\u0645 \u0628\u0627\u0644\u0645\u0648\u0627\u0631\u062f:<\/strong> \u0643\u0627\u0645\u0644 \u0627\u0644\u0640RAM \u0648\u0627\u0644\u0645\u0639\u0627\u0644\u062c \u062a\u062d\u062a \u062a\u0635\u0631\u0651\u0641\u0643\u060c \u0648\u062a\u0633\u062a\u0637\u064a\u0639 \u062a\u0634\u063a\u064a\u0644 \u0646\u0633\u062e\u0629 \u0644\u0643\u0644 \u0646\u0648\u0627\u0629.<\/li><li><strong>\u0623\u0645\u0627\u0646 \u0642\u0627\u0628\u0644 \u0644\u0644\u0636\u0628\u0637:<\/strong> \u062c\u062f\u0627\u0631 \u0646\u0627\u0631\u064a \u0648\u0634\u0647\u0627\u062f\u0627\u062a SSL \u0648\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0646\u0638\u0627\u0645 \u062a\u0645\u0644\u0643\u0647\u0627 \u0623\u0646\u062a \u0644\u0627 \u0645\u0632\u0648\u0651\u062f \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629.<\/li><li><strong>\u0645\u0631\u0648\u0646\u0629 \u0627\u0644\u0623\u062f\u0648\u0627\u062a:<\/strong> Redis \u0648Nginx \u0648PostgreSQL \u0648\u0623\u064a \u062e\u062f\u0645\u0629 \u062a\u062d\u062a\u0627\u062c\u0647\u0627 \u0628\u062c\u0627\u0646\u0628 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0639\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645 \u0646\u0641\u0633\u0647.<\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\" id=\"s2\">\u0627\u0644\u062e\u0637\u0648\u0629 1: \u062a\u062b\u0628\u064a\u062a Node.js \u0648\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642<\/h2>\n\n\n<p>\u0627\u0628\u062f\u0623 \u0628\u062a\u062b\u0628\u064a\u062a \u0625\u0635\u062f\u0627\u0631 Node \u0645\u062f\u0639\u0648\u0645 \u0637\u0648\u064a\u0644 \u0627\u0644\u0623\u0645\u062f (LTS). \u0623\u0646\u0635\u062d \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0633\u062a\u0648\u062f\u0639 NodeSource \u0627\u0644\u0631\u0633\u0645\u064a \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0623\u062d\u062f\u062b \u0625\u0635\u062f\u0627\u0631 \u0645\u0633\u062a\u0642\u0631 \u0628\u062f\u0644 \u0646\u0633\u062e\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0642\u062f\u064a\u0645\u0629:<\/p>\n\n\n<pre class=\"wp-block-code\"><code># \u062a\u062b\u0628\u064a\u062a Node.js 20 LTS \u0639\u0644\u0649 Ubuntu\/Debian\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_20.x | sudo -E bash -\nsudo apt-get install -y nodejs\n\n# \u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0627\u0644\u0625\u0635\u062f\u0627\u0631\nnode -v   # v20.x\nnpm -v\n\n# \u062f\u0627\u062e\u0644 \u0645\u062c\u0644\u062f \u0645\u0634\u0631\u0648\u0639\u0643\nnpm ci --omit=dev     # \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0627\u062a \u0644\u0644\u0625\u0646\u062a\u0627\u062c \u0641\u0642\u0637\nnode app.js           # \u062a\u062c\u0631\u0628\u0629 \u0633\u0631\u064a\u0639\u0629 \u2014 \u062b\u0645 \u0646\u0648\u0642\u0641\u0647 \u0644\u0646\u0646\u062a\u0642\u0644 \u0625\u0644\u0649 PM2<\/code><\/pre>\n\n\n<p style=\"background:#ecfdf5;border-right:4px solid #16a34a;padding:14px 16px;border-radius:8px;\"><strong>&#128161; \u0646\u0635\u064a\u062d\u0629:<\/strong> \u0644\u0627 \u062a\u0634\u063a\u0651\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0643\u0645\u0633\u062a\u062e\u062f\u0645 <code>root<\/code>. \u0623\u0646\u0634\u0626 \u0645\u0633\u062a\u062e\u062f\u0645\u064b\u0627 \u062e\u0627\u0635\u064b\u0627 \u0628\u0627\u0644\u062a\u0637\u0628\u064a\u0642 (<code>adduser nodeapp<\/code>) \u0648\u0634\u063a\u0651\u0644 \u0627\u0644\u062e\u062f\u0645\u0629 \u062a\u062d\u062a\u0647\u061b \u0641\u0625\u0646 \u0627\u062e\u062a\u064f\u0631\u0642 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u064a\u0628\u0642\u0649 \u0627\u0644\u0636\u0631\u0631 \u0645\u062d\u0635\u0648\u0631\u064b\u0627.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s3\">\u0627\u0644\u062e\u0637\u0648\u0629 2: \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0628\u0640PM2 \u0648\u062a\u0641\u0639\u064a\u0644 Clustering<\/h2>\n\n\n<p>\u062a\u0634\u063a\u064a\u0644 <code>node app.js<\/code> \u0645\u0628\u0627\u0634\u0631\u0629\u064b \u064a\u0639\u0646\u064a \u0623\u0646\u0651 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0633\u064a\u062a\u0648\u0642\u0651\u0641 \u0628\u0645\u062c\u0631\u062f \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0637\u0631\u0641\u064a\u0629 \u0623\u0648 \u062d\u062f\u0648\u062b \u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u0639\u0627\u0644\u064e\u062c. \u0627\u0644\u062d\u0644 \u0647\u0648 \u0645\u062f\u064a\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0645\u062b\u0644 <strong>PM2<\/strong>: \u064a\u0628\u0642\u064a \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062d\u064a\u064b\u0651\u0627\u060c \u064a\u0639\u064a\u062f \u062a\u0634\u063a\u064a\u0644\u0647 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0627\u0646\u0647\u064a\u0627\u0631\u060c \u0648\u064a\u062c\u0645\u0639 \u0627\u0644\u0633\u062c\u0644\u0651\u0627\u062a \u2014 \u0648\u0627\u0644\u0623\u0647\u0645 \u0623\u0646\u0647 \u064a\u0634\u063a\u0651\u0644 <strong>\u0646\u0633\u062e\u0629 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0644\u0643\u0644 \u0646\u0648\u0627\u0629 \u0645\u0639\u0627\u0644\u062c<\/strong> (\u0648\u0636\u0639 Cluster) \u0641\u062a\u062a\u0636\u0627\u0639\u0641 \u0627\u0644\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u064a\u0639\u0627\u0628\u064a\u0629.<\/p>\n\n\n<pre class=\"wp-block-code\"><code># \u062a\u062b\u0628\u064a\u062a PM2 \u0639\u0627\u0644\u0645\u064a\u064b\u0627\nsudo npm install -g pm2\n\n# \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0641\u064a \u0648\u0636\u0639 Cluster \u0639\u0644\u0649 \u0643\u0644 \u0627\u0644\u0623\u0646\u0648\u064a\u0629 \u0627\u0644\u0645\u062a\u0627\u062d\u0629\npm2 start app.js --name myapp -i max\n\n# \u0645\u062a\u0627\u0628\u0639\u0629 \u0627\u0644\u062d\u0627\u0644\u0629 \u0648\u0627\u0644\u0633\u062c\u0644\u0651\u0627\u062a\npm2 list\npm2 logs myapp\n\n# \u062c\u0639\u0644 PM2 \u064a\u0639\u064a\u062f \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0628\u0639\u062f \u0625\u0642\u0644\u0627\u0639 \u0627\u0644\u062e\u0627\u062f\u0645\npm2 startup systemd\npm2 save<\/code><\/pre>\n\n\n<p>\u0627\u0644\u0641\u0627\u0631\u0642 \u0628\u064a\u0646 \u062a\u0634\u063a\u064a\u0644 \u0646\u0633\u062e\u0629 \u0648\u0627\u062d\u062f\u0629 (fork) \u0648\u0648\u0636\u0639 \u0627\u0644\u0639\u0646\u0642\u0648\u062f (cluster) \u0644\u064a\u0633 \u0646\u0638\u0631\u064a\u064b\u0627. \u0634\u063a\u0651\u0644\u0646\u0627 \u062a\u0637\u0628\u064a\u0642 Node \u0628\u0633\u064a\u0637\u064b\u0627 \u0639\u0644\u0649 \u062e\u0627\u062f\u0645 \u0645\u0631\u0627\u0645 \u0648\u0642\u0650\u0633\u0646\u0627 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0628\u0623\u062f\u0627\u0629 ApacheBench \u0641\u064a \u0627\u0644\u062d\u0627\u0644\u062a\u064a\u0646:<\/p>\n\n\n<figure style=\"margin:1.5rem 0;text-align:center;\"><img decoding=\"async\" src=\"https:\/\/maram.iq\/blogs\/wp-content\/uploads\/2026\/08\/node-bench.png\" alt=\"\u0628\u0646\u0634\u0645\u0627\u0631\u0643 \u062d\u0642\u064a\u0642\u064a \u0644\u0623\u062b\u0631 PM2 Clustering \u0639\u0644\u0649 \u0623\u062f\u0627\u0621 \u062e\u0627\u062f\u0645 Node.js VPS\" loading=\"lazy\" style=\"max-width:100%;height:auto;border-radius:12px;box-shadow:0 4px 16px rgba(15,23,42,.12);\"\/><figcaption style=\"color:#64748b;font-size:.9rem;margin-top:.5rem;\">\u0646\u0633\u062e\u0629 \u0648\u0627\u062d\u062f\u0629 \u2248 2,368 \u0637\u0644\u0628\/\u062b\u0627\u0646\u064a\u0629 \u0645\u0642\u0627\u0628\u0644 \u2248 4,420 \u0641\u064a \u0648\u0636\u0639 \u0627\u0644\u0639\u0646\u0642\u0648\u062f \u2014 \u0642\u064a\u0627\u0633 \u0641\u0639\u0644\u064a \u0639\u0644\u0649 \u062e\u0627\u062f\u0645 \u0645\u0631\u0627\u0645<\/figcaption><\/figure>\n\n\n<p style=\"background:#f8fafc;border:1px solid #e2e8f0;border-right:4px solid #64748b;padding:14px 16px;border-radius:8px;\"><strong>&#129309; \u0645\u0646 \u0648\u0627\u0642\u0639 \u0645\u0631\u0627\u0645:<\/strong> \u0641\u064a \u0627\u062e\u062a\u0628\u0627\u0631\u0646\u0627 \u0627\u0646\u062a\u0642\u0644\u062a \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0645\u0646 \u0646\u062d\u0648 <strong>2,368 \u0637\u0644\u0628\/\u062b\u0627\u0646\u064a\u0629<\/strong> \u0628\u0646\u0633\u062e\u0629 \u0648\u0627\u062d\u062f\u0629 \u0625\u0644\u0649 \u0646\u062d\u0648 <strong>4,420 \u0637\u0644\u0628\/\u062b\u0627\u0646\u064a\u0629<\/strong> \u0641\u064a \u0648\u0636\u0639 PM2 Cluster \u2014 \u0623\u064a \u0645\u0627 \u064a\u0642\u0627\u0631\u0628 <strong>\u0627\u0644\u0636\u0639\u0641<\/strong>\u060c \u0648\u0628\u0635\u0641\u0631 \u0637\u0644\u0628\u0627\u062a \u0641\u0627\u0634\u0644\u0629. \u062c\u0631\u0649 \u0627\u0644\u0642\u064a\u0627\u0633 \u0639\u0644\u0649 \u062e\u0627\u062f\u0645\u064d \u064a\u062d\u0645\u0644 \u062e\u062f\u0645\u0627\u062a \u0627\u062e\u062a\u0628\u0627\u0631 \u0623\u062e\u0631\u0649 \u0641\u064a \u0627\u0644\u0648\u0642\u062a \u0646\u0641\u0633\u0647\u060c \u0644\u0630\u0627 \u0639\u0644\u0649 \u062e\u0627\u062f\u0645\u064d \u0645\u062e\u0635\u0651\u0635 \u064a\u0642\u062a\u0631\u0628 \u0627\u0644\u062a\u062d\u0633\u0651\u0646 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0639\u062f\u062f \u0627\u0644\u0623\u0646\u0648\u064a\u0629 \u0627\u0644\u0641\u0639\u0644\u064a. \u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u0648\u0627\u0636\u062d\u0629: \u062a\u0641\u0639\u064a\u0644 Clustering \u0633\u0637\u0631\u064c \u0648\u0627\u062d\u062f \u064a\u0636\u0627\u0639\u0641 \u0637\u0627\u0642\u0629 \u062a\u0637\u0628\u064a\u0642\u0643 \u062a\u0642\u0631\u064a\u0628\u064b\u0627 \u062f\u0648\u0646 \u062a\u063a\u064a\u064a\u0631 \u0643\u0648\u062f\u0643.<\/p>\n\n\n<p style=\"background:#eff6ff;border-right:4px solid #3b82f6;padding:14px 16px;border-radius:8px;\"><strong>\u0645\u0644\u0627\u062d\u0638\u0629:<\/strong> \u0648\u0636\u0639 Cluster \u064a\u0646\u0627\u0633\u0628 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0639\u062f\u064a\u0645\u0629 \u0627\u0644\u062d\u0627\u0644\u0629 (stateless). \u0625\u0646 \u0643\u0646\u062a \u062a\u062d\u0641\u0638 \u0627\u0644\u062c\u0644\u0633\u0627\u062a \u0641\u064a \u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u064a\u0629\u060c \u0627\u0646\u0642\u0644\u0647\u0627 \u0625\u0644\u0649 \u0645\u062e\u0632\u0646 \u0645\u0634\u062a\u0631\u0643 \u0645\u062b\u0644 Redis \u0643\u064a \u062a\u0639\u0645\u0644 \u0643\u0644 \u0627\u0644\u0646\u0633\u062e \u0628\u062a\u0646\u0627\u063a\u0645.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s4\">\u0627\u0644\u062e\u0637\u0648\u0629 3: \u0648\u0636\u0639 Nginx \u0648\u0643\u064a\u0644\u064b\u0627 \u0639\u0643\u0633\u064a\u064b\u0627 (Reverse Proxy)<\/h2>\n\n\n<p>\u0644\u0627 \u062a\u0643\u0634\u0641 \u062a\u0637\u0628\u064a\u0642 Node \u0645\u0628\u0627\u0634\u0631\u0629\u064b \u0639\u0644\u0649 \u0627\u0644\u0645\u0646\u0641\u0630 80 \u0623\u0648 443. \u0627\u0644\u0645\u0645\u0627\u0631\u0633\u0629 \u0627\u0644\u0635\u062d\u064a\u062d\u0629 \u0623\u0646 \u064a\u0633\u062a\u0645\u0639 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0639\u0644\u0649 \u0645\u0646\u0641\u0630 \u062f\u0627\u062e\u0644\u064a (\u0645\u062b\u0644 3000) \u0648\u064a\u062c\u0644\u0633 <strong>Nginx<\/strong> \u0623\u0645\u0627\u0645\u0647 \u0628\u0648\u0635\u0641\u0647 \u0648\u0643\u064a\u0644\u064b\u0627 \u0639\u0643\u0633\u064a\u064b\u0627: \u064a\u0633\u062a\u0642\u0628\u0644 \u062d\u0631\u0643\u0629 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a\u060c \u064a\u0646\u0647\u064a \u062a\u0634\u0641\u064a\u0631 SSL\u060c \u064a\u062e\u062f\u0645 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u062b\u0627\u0628\u062a\u0629 \u0628\u0643\u0641\u0627\u0621\u0629\u060c \u0648\u064a\u0645\u0631\u0651\u0631 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u062f\u064a\u0646\u0627\u0645\u064a\u0643\u064a\u0629 \u0625\u0644\u0649 Node. \u0647\u0630\u0647 \u0627\u0644\u0628\u0646\u064a\u0629 \u0647\u064a \u0627\u0644\u0645\u0639\u064a\u0627\u0631 \u0641\u064a \u0623\u064a \u062e\u0627\u062f\u0645 Node.js VPS \u0625\u0646\u062a\u0627\u062c\u064a.<\/p>\n\n\n<figure style=\"margin:1.5rem 0;text-align:center;\"><img decoding=\"async\" src=\"https:\/\/maram.iq\/blogs\/wp-content\/uploads\/2026\/08\/node-stack.png\" alt=\"\u0628\u0646\u064a\u0629 \u062e\u0627\u062f\u0645 Node.js VPS: Nginx \u062b\u0645 PM2 \u062b\u0645 \u0639\u0645\u0651\u0627\u0644 Node\" loading=\"lazy\" style=\"max-width:100%;height:auto;border-radius:12px;box-shadow:0 4px 16px rgba(15,23,42,.12);\"\/><figcaption style=\"color:#64748b;font-size:.9rem;margin-top:.5rem;\">\u0627\u0644\u0637\u0644\u0628 \u064a\u0645\u0631\u0651 \u0639\u0628\u0631 Nginx \u0625\u0644\u0649 PM2 \u0627\u0644\u0630\u064a \u064a\u0648\u0632\u0651\u0639\u0647 \u0639\u0644\u0649 \u0639\u0645\u0651\u0627\u0644 Node \u2014 \u0646\u0633\u062e\u0629 \u0644\u0643\u0644 \u0646\u0648\u0627\u0629<\/figcaption><\/figure>\n\n\n<p>\u0625\u0639\u062f\u0627\u062f Nginx \u0627\u0644\u062a\u0627\u0644\u064a \u0645\u064f\u062e\u062a\u0628\u064e\u0631 \u0648\u064a\u0639\u0645\u0644 \u0641\u0639\u0644\u064a\u064b\u0627 \u0639\u0644\u0649 \u062e\u0627\u062f\u0645\u0646\u0627 (\u062a\u062d\u0642\u0651\u0642\u0646\u0627 \u0645\u0646 \u0627\u0633\u062a\u062c\u0627\u0628\u062a\u0647 \u0628\u0631\u0645\u0632 200 \u0648\u062c\u0633\u0645 JSON \u0635\u062d\u064a\u062d):<\/p>\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/nginx\/sites-available\/myapp\nserver {\n    listen 80;\n    server_name example.com www.example.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection &#039;upgrade&#039;;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_cache_bypass $http_upgrade;\n    }\n}<\/code><\/pre>\n\n\n<pre class=\"wp-block-code\"><code># \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0645\u0648\u0642\u0639 \u0648\u0627\u062e\u062a\u0628\u0627\u0631 \u0627\u0644\u0635\u064a\u0627\u063a\u0629 \u062b\u0645 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u062d\u0645\u064a\u0644\nsudo ln -s \/etc\/nginx\/sites-available\/myapp \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl reload nginx<\/code><\/pre>\n\n\n<p style=\"background:#ecfdf5;border-right:4px solid #16a34a;padding:14px 16px;border-radius:8px;\"><strong>&#128161; \u0646\u0635\u064a\u062d\u0629:<\/strong> \u062a\u0631\u0648\u064a\u0633\u0627\u062a <code>Upgrade<\/code> \u0648<code>Connection<\/code> \u0636\u0631\u0648\u0631\u064a\u0629 \u0625\u0646 \u0643\u0627\u0646 \u062a\u0637\u0628\u064a\u0642\u0643 \u064a\u0633\u062a\u062e\u062f\u0645 WebSocket (\u0645\u062b\u0644 Socket.IO)\u060c \u0648\u0625\u0644\u0627 \u0641\u0633\u062a\u0641\u0634\u0644 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0627\u0644\u0644\u062d\u0638\u064a\u0629 \u0639\u0646\u062f \u0627\u0644\u0645\u0631\u0648\u0631 \u0628\u0627\u0644\u0648\u0643\u064a\u0644.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s5\">\u0627\u0644\u062e\u0637\u0648\u0629 4: \u062a\u0641\u0639\u064a\u0644 HTTPS \u0628\u0634\u0647\u0627\u062f\u0629 SSL \u0645\u062c\u0627\u0646\u064a\u0629<\/h2>\n\n\n<p>\u0623\u064a \u062e\u062f\u0645\u0629 \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0627\u0644\u064a\u0648\u0645 \u064a\u062c\u0628 \u0623\u0646 \u062a\u0639\u0645\u0644 \u0639\u0628\u0631 HTTPS. \u0645\u0639 \u0623\u062f\u0627\u0629 Certbot \u0645\u0646 Let&#8217;s Encrypt \u062a\u062d\u0635\u0644 \u0639\u0644\u0649 \u0634\u0647\u0627\u062f\u0629 \u0645\u062c\u0627\u0646\u064a\u0629 \u0648\u062a\u064f\u062c\u062f\u064e\u0651\u062f \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0641\u064a \u062f\u0642\u064a\u0642\u062a\u064a\u0646:<\/p>\n\n\n<pre class=\"wp-block-code\"><code># \u062a\u062b\u0628\u064a\u062a Certbot \u0648\u0625\u0636\u0627\u0641\u0629 SSL \u0625\u0644\u0649 \u0625\u0639\u062f\u0627\u062f Nginx \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627\nsudo apt-get install -y certbot python3-certbot-nginx\nsudo certbot --nginx -d example.com -d www.example.com\n\n# \u0627\u0644\u062a\u062c\u062f\u064a\u062f \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0645\u064f\u0641\u0639\u0651\u0644 \u0639\u0628\u0631 \u0645\u0624\u0642\u0651\u062a systemd \u2014 \u062a\u062d\u0642\u0651\u0642 \u0645\u0646\u0647\nsudo systemctl status certbot.timer<\/code><\/pre>\n\n\n<p>\u0633\u064a\u0639\u062f\u0651\u0644 Certbot \u0645\u0644\u0641 Nginx \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0644\u064a\u0633\u062a\u0645\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u0646\u0641\u0630 443 \u0648\u064a\u062d\u0648\u0651\u0644 \u062d\u0631\u0643\u0629 \u0627\u0644\u0645\u0646\u0641\u0630 80 \u0625\u0644\u0649 HTTPS. \u0644\u0645 \u062a\u0639\u062f \u0628\u062d\u0627\u062c\u0629 \u0644\u0623\u064a \u0625\u0639\u062f\u0627\u062f \u062a\u0634\u0641\u064a\u0631 \u064a\u062f\u0648\u064a \u062f\u0627\u062e\u0644 \u062a\u0637\u0628\u064a\u0642 Node \u2014 \u064a\u062a\u0643\u0641\u0651\u0644 Nginx \u0628\u0643\u0644 \u0630\u0644\u0643.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s6\">\u0627\u0644\u062e\u0637\u0648\u0629 5: \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0645\u0646\u0627\u0641\u0630 \u0628\u062c\u062f\u0627\u0631 \u0646\u0627\u0631\u064a (Firewall)<\/h2>\n\n\n<p>\u062e\u0627\u062f\u0645\u0643 \u0645\u0643\u0634\u0648\u0641\u064c \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a\u060c \u0648\u062a\u0631\u0643 \u0645\u0646\u0627\u0641\u0630 \u0645\u0641\u062a\u0648\u062d\u0629 \u0628\u0644\u0627 \u062f\u0627\u0639\u064d \u062f\u0639\u0648\u0629\u064c \u0644\u0644\u0645\u0647\u0627\u062c\u0645\u064a\u0646. \u0627\u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0630\u0647\u0628\u064a\u0629: \u0623\u063a\u0644\u0642 \u0643\u0644 \u0634\u064a\u0621 \u062b\u0645 \u0627\u0641\u062a\u062d \u0645\u0627 \u062a\u062d\u062a\u0627\u062c\u0647 \u0641\u0642\u0637 \u2014 SSH \u0648HTTP \u0648HTTPS. \u0623\u062f\u0627\u0629 <code>ufw<\/code> \u062a\u062c\u0639\u0644 \u0630\u0644\u0643 \u0628\u0633\u064a\u0637\u064b\u0627:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw default deny incoming\nsudo ufw default allow outgoing\nsudo ufw allow OpenSSH        # \u0644\u0627 \u062a\u064f\u063a\u0644\u0642 \u0645\u0646\u0641\u0630 \u062f\u062e\u0648\u0644\u0643!\nsudo ufw allow &#039;Nginx Full&#039;   # \u064a\u0641\u062a\u062d 80 \u0648443\nsudo ufw enable\nsudo ufw status verbose<\/code><\/pre>\n\n\n<p style=\"background:#eff6ff;border-right:4px solid #3b82f6;padding:14px 16px;border-radius:8px;\"><strong>\u0645\u0644\u0627\u062d\u0638\u0629:<\/strong> \u0644\u0627\u062d\u0638 \u0623\u0646\u0651 \u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062f\u0627\u062e\u0644\u064a (3000) \u064a\u0628\u0642\u0649 \u0645\u063a\u0644\u0642\u064b\u0627 \u0623\u0645\u0627\u0645 \u0627\u0644\u062e\u0627\u0631\u062c \u2014 \u0644\u0627 \u0623\u062d\u062f \u064a\u0635\u0644 \u0625\u0644\u064a\u0647 \u0625\u0644\u0627 Nginx \u0645\u062d\u0644\u064a\u064b\u0627. \u0647\u0630\u0627 \u0628\u0627\u0644\u0636\u0628\u0637 \u0633\u0628\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0648\u0643\u064a\u0644 \u0627\u0644\u0639\u0643\u0633\u064a: \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u063a\u064a\u0631 \u0645\u0643\u0634\u0648\u0641 \u0645\u0628\u0627\u0634\u0631\u0629\u064b \u0639\u0644\u0649 \u0627\u0644\u0625\u0637\u0644\u0627\u0642.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s7\">\u0627\u0644\u062e\u0637\u0648\u0629 6: \u0627\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0648\u0625\u0628\u0642\u0627\u0621 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062d\u064a\u064b\u0651\u0627<\/h2>\n\n\n<p>\u0627\u0644\u0646\u0634\u0631 \u0644\u064a\u0633 \u0627\u0644\u0646\u0647\u0627\u064a\u0629\u061b \u0627\u0644\u062e\u062f\u0645\u0629 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u062a\u062d\u062a\u0627\u062c \u0645\u0631\u0627\u0642\u0628\u0629 \u0645\u0633\u062a\u0645\u0631\u0629 \u0644\u062a\u0639\u0631\u0641 \u062d\u064a\u0646 \u064a\u0631\u062a\u0641\u0639 \u0627\u0633\u062a\u0647\u0644\u0627\u0643 \u0627\u0644\u0630\u0627\u0643\u0631\u0629 \u0623\u0648 \u064a\u062a\u0643\u0631\u0631 \u0627\u0644\u0627\u0646\u0647\u064a\u0627\u0631. \u064a\u0645\u0646\u062d\u0643 PM2 \u0644\u0648\u062d\u0629 \u0645\u0631\u0627\u0642\u0628\u0629 \u0641\u0648\u0631\u064a\u0629 \u062f\u0627\u062e\u0644 \u0627\u0644\u0637\u0631\u0641\u064a\u0629\u060c \u0648\u0623\u0648\u0627\u0645\u0631 \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0633\u062c\u0644\u0651\u0627\u062a:<\/p>\n\n\n<pre class=\"wp-block-code\"><code># \u0644\u0648\u062d\u0629 \u0645\u0631\u0627\u0642\u0628\u0629 \u062d\u064a\u0651\u0629 (CPU\/RAM \u0644\u0643\u0644 \u0639\u0645\u0644\u064a\u0629)\npm2 monit\n\n# \u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0641\u0635\u0651\u0644\u0629 \u0639\u0646 \u062a\u0637\u0628\u064a\u0642\npm2 show myapp\n\n# \u0636\u0628\u0637 \u062d\u062f \u0623\u0642\u0635\u0649 \u0644\u0644\u0630\u0627\u0643\u0631\u0629: \u064a\u0639\u064a\u062f PM2 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0646\u0633\u062e\u0629 \u0625\u0646 \u062a\u062c\u0627\u0648\u0632\u062a\u0647 (\u064a\u0645\u0646\u0639 \u062a\u0633\u0631\u0651\u0628 \u0627\u0644\u0630\u0627\u0643\u0631\u0629)\npm2 start app.js --name myapp -i max --max-memory-restart 300M\n\n# \u0625\u062f\u0627\u0631\u0629 \u062d\u062c\u0645 \u0627\u0644\u0633\u062c\u0644\u0651\u0627\u062a \u062d\u062a\u0649 \u0644\u0627 \u062a\u0645\u062a\u0644\u0626 \u0627\u0644\u0642\u0631\u0635\npm2 install pm2-logrotate<\/code><\/pre>\n\n\n<p>\u0644\u0644\u0645\u0631\u0627\u0642\u0628\u0629 \u0627\u0644\u0623\u0639\u0645\u0642 (\u0632\u0645\u0646 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629\u060c \u0645\u0639\u062f\u0651\u0644 \u0627\u0644\u0623\u062e\u0637\u0627\u0621\u060c \u062a\u062a\u0628\u0651\u0639 \u0627\u0644\u0637\u0644\u0628\u0627\u062a) \u064a\u0645\u0643\u0646\u0643 \u0625\u0636\u0627\u0641\u0629 \u0623\u062f\u0648\u0627\u062a \u0645\u062b\u0644 \u062e\u062f\u0645\u0629 PM2 Plus \u0623\u0648 \u062f\u0645\u062c \u062a\u0637\u0628\u064a\u0642\u0643 \u0645\u0639 \u0646\u0638\u0627\u0645 \u0631\u0635\u062f \u062e\u0627\u0631\u062c\u064a. \u0644\u0643\u0646 \u0644\u0644\u0628\u062f\u0627\u064a\u0629\u060c <code>pm2 monit<\/code> \u0648<code>--max-memory-restart<\/code> \u064a\u063a\u0637\u0651\u064a\u0627\u0646 \u0623\u0647\u0645 \u0645\u0627 \u062a\u062d\u062a\u0627\u062c \u0645\u0639\u0631\u0641\u062a\u0647 \u0639\u0646 \u0635\u062d\u0651\u0629 \u062a\u0637\u0628\u064a\u0642\u0643.<\/p>\n\n\n<p style=\"background:#f8fafc;border:1px solid #e2e8f0;border-right:4px solid #64748b;padding:14px 16px;border-radius:8px;\"><strong>&#129309; \u0645\u0646 \u0648\u0627\u0642\u0639 \u0645\u0631\u0627\u0645:<\/strong> \u0646\u064f\u0628\u0642\u064a \u0639\u0644\u0649 \u062e\u0648\u0627\u062f\u0645 \u0645\u0631\u0627\u0645 \u0645\u0631\u0627\u0642\u0628\u0629\u064b \u062f\u0648\u0631\u064a\u0629 \u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u0646\u0638\u0627\u0645 (\u0627\u0644\u062d\u0650\u0645\u0644\u060c \u0627\u0644\u0630\u0627\u0643\u0631\u0629\u060c \u0632\u0645\u0646 \u0627\u0644\u0642\u0631\u0635\u060c \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629) \u0639\u0628\u0631 \u062a\u0633\u062c\u064a\u0644\u064d \u0645\u0646\u062a\u0638\u0645\u060c \u0641\u0646\u0643\u062a\u0634\u0641 \u0623\u064a \u0627\u062e\u062a\u0646\u0627\u0642 \u0642\u0628\u0644 \u0623\u0646 \u064a\u0634\u0639\u0631 \u0628\u0647 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645. \u0627\u0644\u0645\u0628\u062f\u0623 \u0646\u0641\u0633\u0647 \u064a\u062c\u0628 \u0623\u0646 \u062a\u0637\u0628\u0651\u0642\u0647 \u0639\u0644\u0649 \u062a\u0637\u0628\u064a\u0642\u0643: \u0631\u0627\u0642\u0628 \u0628\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u060c \u0648\u0644\u0627 \u062a\u0646\u062a\u0638\u0631 \u0634\u0643\u0648\u0649 \u0632\u0627\u0626\u0631\u064d \u0644\u062a\u0639\u0631\u0641 \u0623\u0646\u0651 \u0647\u0646\u0627\u0643 \u062e\u0637\u0623.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"s8\">\u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0651\u0642 \u0642\u0628\u0644 \u0625\u0637\u0644\u0627\u0642 \u062e\u0627\u062f\u0645 Node.js VPS<\/h2>\n\n\n<ul class=\"wp-block-list\"><li>&#9989; Node.js \u0625\u0635\u062f\u0627\u0631 LTS \u0645\u062b\u0628\u0651\u062a\u060c \u0648\u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u064a\u0639\u0645\u0644 \u062a\u062d\u062a \u0645\u0633\u062a\u062e\u062f\u0645 \u063a\u064a\u0631 <code>root<\/code>.<\/li><li>&#9989; PM2 \u064a\u0634\u063a\u0651\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0641\u064a \u0648\u0636\u0639 Cluster \u0645\u0639 <code>pm2 save<\/code> \u0648<code>pm2 startup<\/code>.<\/li><li>&#9989; Nginx \u0648\u0643\u064a\u0644 \u0639\u0643\u0633\u064a \u0623\u0645\u0627\u0645 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u060c \u0648\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062f\u0627\u062e\u0644\u064a \u063a\u064a\u0631 \u0645\u0643\u0634\u0648\u0641.<\/li><li>&#9989; \u0634\u0647\u0627\u062f\u0629 SSL \u0641\u0639\u0651\u0627\u0644\u0629 \u0648\u0627\u0644\u062a\u062c\u062f\u064a\u062f \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u064a\u0639\u0645\u0644.<\/li><li>&#9989; \u062c\u062f\u0627\u0631 \u0646\u0627\u0631\u064a <code>ufw<\/code> \u064a\u0633\u0645\u062d \u0641\u0642\u0637 \u0628\u0640SSH \u0648HTTP\/HTTPS.<\/li><li>&#9989; \u0645\u0631\u0627\u0642\u0628\u0629 \u0639\u0628\u0631 <code>pm2 monit<\/code> \u0648\u062d\u062f\u0651 \u0623\u0642\u0635\u0649 \u0644\u0644\u0630\u0627\u0643\u0631\u0629 \u0645\u0636\u0628\u0648\u0637.<\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\" id=\"s9\">\u0627\u0644\u062e\u0644\u0627\u0635\u0629<\/h2>\n\n\n<p>\u0625\u0639\u062f\u0627\u062f \u062e\u0627\u062f\u0645 <strong>Node.js VPS<\/strong> \u0628\u0637\u0631\u064a\u0642\u0629 \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0644\u064a\u0633 \u062e\u0637\u0648\u0629 \u0648\u0627\u062d\u062f\u0629 \u0628\u0644 \u0633\u062a\u0651 \u0637\u0628\u0642\u0627\u062a \u0645\u062a\u0643\u0627\u0645\u0644\u0629: \u0645\u062f\u064a\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u064a\u0628\u0642\u064a \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062d\u064a\u064b\u0651\u0627 \u0648\u064a\u0633\u062a\u063a\u0644\u0651 \u0643\u0644 \u0627\u0644\u0623\u0646\u0648\u064a\u0629\u060c \u0648\u0648\u0643\u064a\u0644 \u0639\u0643\u0633\u064a \u064a\u062d\u0645\u064a\u0647 \u0648\u064a\u0633\u0631\u0651\u0639\u0647\u060c \u0648\u062a\u0634\u0641\u064a\u0631\u064c \u0648\u062c\u062f\u0627\u0631\u064c \u0646\u0627\u0631\u064a \u064a\u0624\u0645\u0651\u0646\u0627\u0646\u0647\u060c \u0648\u0645\u0631\u0627\u0642\u0628\u0629\u064c \u062a\u0646\u0628\u0651\u0647\u0643 \u0642\u0628\u0644 \u0648\u0642\u0648\u0639 \u0627\u0644\u0645\u0634\u0643\u0644\u0629. \u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u062a\u064a \u0642\u0650\u0633\u0646\u0627\u0647\u0627 \u062a\u0624\u0643\u0651\u062f \u0623\u0646\u0651 \u062e\u0637\u0648\u0629\u064b \u0648\u0627\u062d\u062f\u0629 \u0645\u062b\u0644 \u062a\u0641\u0639\u064a\u0644 PM2 Cluster \u062a\u0636\u0627\u0639\u0641 \u0637\u0627\u0642\u0629 \u062a\u0637\u0628\u064a\u0642\u0643 \u062a\u0642\u0631\u064a\u0628\u064b\u0627. \u0627\u0628\u0646\u0650 \u0647\u0630\u0647 \u0627\u0644\u0637\u0628\u0642\u0627\u062a \u0645\u0631\u0651\u0629 \u0648\u0627\u062d\u062f\u0629 \u0628\u0634\u0643\u0644 \u0635\u062d\u064a\u062d\u060c \u0648\u0633\u062a\u062d\u0635\u0644 \u0639\u0644\u0649 \u062e\u062f\u0645\u0629 \u062a\u062a\u062d\u0645\u0651\u0644 \u0627\u0644\u0646\u0645\u0648 \u062f\u0648\u0646 \u0645\u0641\u0627\u062c\u0622\u062a \u2014 \u0648\u0647\u0630\u0627 \u0628\u0627\u0644\u0636\u0628\u0637 \u0645\u0627 \u064a\u0645\u064a\u0651\u0632 \u062e\u0627\u062f\u0645\u064b\u0627 \u0625\u0646\u062a\u0627\u062c\u064a\u064b\u0627 \u0639\u0646 \u0645\u062c\u0631\u0651\u062f \u062c\u0647\u0627\u0632 \u064a\u0634\u063a\u0651\u0644 <code>node app.js<\/code>.<\/p>\n\n\n<p>\u0644\u0644\u062a\u0639\u0645\u0651\u0642 \u0623\u0643\u062b\u0631: \u0631\u0627\u062c\u0639 \u062f\u0644\u064a\u0644\u0646\u0627 \u062d\u0648\u0644 <a href=\"https:\/\/maram.iq\/blogs\/?p=5209\">\u0643\u064a\u0641 \u062a\u0628\u0646\u064a \u0645\u062a\u062c\u0631 WooCommerce \u0645\u0646 \u0628\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629 \u0648\u0627\u062e\u062a\u0628\u0627\u0631 Load \u062d\u0642\u064a\u0642\u064a<\/a>\u060c \u0648\u0645\u0642\u0627\u0644\u0646\u0627 \u0639\u0646 <a href=\"https:\/\/maram.iq\/blogs\/?p=5229\">Laravel Reverb \u0648WebSockets \u0644\u0628\u0646\u0627\u0621 \u062a\u0637\u0628\u064a\u0642 Real-Time<\/a>\u060c \u0648\u0643\u0630\u0644\u0643 <a href=\"https:\/\/maram.iq\/blogs\/?p=5251\">\u062a\u0635\u0645\u064a\u0645 API \u0633\u0631\u064a\u0639: REST \u0623\u0645 GraphQL \u0623\u0645 gRPC<\/a>. \u0648\u0644\u0644\u062a\u0648\u062b\u064a\u0642 \u0627\u0644\u0631\u0633\u0645\u064a \u0631\u0627\u062c\u0639 <a href=\"https:\/\/pm2.keymetrics.io\/docs\/usage\/cluster-mode\/\" target=\"_blank\" rel=\"noopener\">\u062f\u0644\u064a\u0644 PM2 \u0644\u0648\u0636\u0639 \u0627\u0644\u0639\u0646\u0642\u0648\u062f<\/a>.<\/p>\n\n\n<div style=\"background:#0f172a;border-radius:12px;padding:24px 20px;text-align:center;margin:1.5rem 0;\"><p style=\"color:#fff;font-size:17px;margin:0 0 14px;\">\u062c\u0627\u0647\u0632 \u0644\u0625\u0637\u0644\u0627\u0642 \u062a\u0637\u0628\u064a\u0642 Node.js \u0641\u064a \u0628\u064a\u0626\u0629 \u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0645\u0624\u0645\u0651\u0646\u0629\u061f \u062e\u0648\u0627\u062f\u0645 \u0645\u0631\u0627\u0645 \u062a\u0645\u0646\u062d\u0643 \u0645\u0648\u0627\u0631\u062f \u0645\u062e\u0635\u0651\u0635\u0629\u060c \u062a\u062d\u0643\u0651\u0645\u064b\u0627 \u0643\u0627\u0645\u0644\u064b\u0627\u060c \u0648\u062f\u0639\u0645\u064b\u0627 \u0639\u0631\u0628\u064a\u064b\u0627 \u064a\u0641\u0647\u0645 \u0627\u062d\u062a\u064a\u0627\u062c\u0643.<\/p><a href=\"https:\/\/maram.iq\/\" style=\"display:inline-block;background:#16a34a;color:#fff;font-weight:700;padding:12px 28px;border-radius:8px;text-decoration:none;\">\u0627\u0637\u0644\u0628 \u062e\u0627\u062f\u0645 VPS \u0627\u0644\u0622\u0646<\/a><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0644\u064a\u0644 \u0639\u0645\u0644\u064a \u0644\u0625\u0639\u062f\u0627\u062f \u062e\u0627\u062f\u0645 Node.js VPS \u0641\u064a \u0627\u0644\u0625\u0646\u062a\u0627\u062c: PM2 \u0648Clustering \u0648Nginx \u0648SSL \u0648\u062c\u062f\u0627\u0631 \u0646\u0627\u0631\u064a \u0648\u0645\u0631\u0627\u0642\u0628\u0629\u060c \u0645\u0639 \u0628\u0646\u0634\u0645\u0627\u0631\u0643 \u062d\u0642\u064a\u0642\u064a.<\/p>\n","protected":false},"author":6,"featured_media":5258,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[281],"tags":[162,144,152,141,146,151,140,157],"class_list":["post-5255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-281","tag-php","tag-vps","tag-152","tag-141","tag-146","tag--ssl","tag-140","tag-157"],"_links":{"self":[{"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/posts\/5255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/comments?post=5255"}],"version-history":[{"count":2,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/posts\/5255\/revisions"}],"predecessor-version":[{"id":5257,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/posts\/5255\/revisions\/5257"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/media\/5258"}],"wp:attachment":[{"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/media?parent=5255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/categories?post=5255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maram.iq\/blogs\/wp-json\/wp\/v2\/tags?post=5255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}