{"id":36,"date":"2026-09-28T20:00:59","date_gmt":"2026-09-28T17:00:59","guid":{"rendered":"https:\/\/localhost\/tatwerat-wp\/connect-frappe-site-to-production-subdomain\/"},"modified":"2026-09-28T20:00:59","modified_gmt":"2026-09-28T17:00:59","slug":"connect-frappe-site-to-production-subdomain","status":"publish","type":"post","link":"https:\/\/www.tatwerat.com\/ar\/connect-frappe-site-to-production-subdomain\/","title":{"rendered":"\u0631\u0628\u0637 \u0645\u0648\u0642\u0639 Frappe \u0628\u062f\u0648\u0645\u064a\u0646 \u0641\u0631\u0639\u064a \u0641\u064a \u0628\u064a\u0626\u0629 \u0627\u0644\u0625\u0646\u062a\u0627\u062c"},"content":{"rendered":"<p>\u0627\u0644\u062f\u0648\u0645\u064a\u0646 \u0627\u0644\u0641\u0631\u0639\u064a \u0645\u062b\u0644 <code>app.example.com<\/code> \u064a\u0645\u0646\u062d \u0645\u0648\u0642\u0639 Frappe \u0639\u0646\u0648\u0627\u0646\u064b\u0627 \u0648\u0627\u0636\u062d\u064b\u0627 \u0641\u064a \u0628\u064a\u0626\u0629 \u0627\u0644\u0625\u0646\u062a\u0627\u062c. \u0644\u0625\u062a\u0645\u0627\u0645 \u0627\u0644\u0631\u0628\u0637\u060c \u064a\u062c\u0628 \u0623\u0646 \u064a\u0635\u0644 DNS \u0625\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645\u060c \u0648\u0623\u0646 \u064a\u0639\u0631\u0641 Bench \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0631\u062a\u0628\u0637 \u0628\u0647\u0630\u0627 \u0627\u0644\u0639\u0646\u0648\u0627\u0646\u060c \u0648\u0623\u0646 \u064a\u062e\u062f\u0645\u0647 Nginx.<\/p>\n<h2>1. \u0636\u0628\u0637 DNS<\/h2>\n<p>\u0623\u0636\u0641 \u0633\u062c\u0644 A \u0644\u0644\u062f\u0648\u0645\u064a\u0646 \u0627\u0644\u0641\u0631\u0639\u064a \u064a\u0634\u064a\u0631 \u0625\u0644\u0649 \u0639\u0646\u0648\u0627\u0646 IPv4 \u0627\u0644\u0639\u0627\u0645 \u0644\u0644\u062e\u0627\u062f\u0645. \u0625\u0630\u0627 \u0643\u0646\u062a \u062a\u0633\u062a\u062e\u062f\u0645 IPv6 \u0641\u0623\u0636\u0641 \u0633\u062c\u0644 AAAA \u0623\u064a\u0636\u064b\u0627. \u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0646\u062a\u0634\u0627\u0631 \u0627\u0644\u0633\u062c\u0644 \u0648\u0648\u0635\u0648\u0644 \u0627\u0644\u062f\u0648\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645 \u0642\u0628\u0644 \u0625\u0635\u062f\u0627\u0631 \u0634\u0647\u0627\u062f\u0629 HTTPS.<\/p>\n<h2>2. \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u062f\u0648\u0645\u064a\u0646 \u0625\u0644\u0649 \u0645\u0648\u0642\u0639 Frappe<\/h2>\n<p>\u0645\u0646 \u062f\u0627\u062e\u0644 \u0645\u062c\u0644\u062f Bench\u060c \u0623\u0636\u0641 \u0627\u0644\u062f\u0648\u0645\u064a\u0646 \u0648\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0648\u062c\u0648\u062f \u0639\u0646\u062f \u0638\u0647\u0648\u0631 \u0627\u0644\u0633\u0624\u0627\u0644. \u0628\u0639\u062f\u0647\u0627 \u0623\u0639\u062f \u062a\u0648\u0644\u064a\u062f \u0625\u0639\u062f\u0627\u062f Nginx\u060c \u0648\u0627\u062e\u062a\u0628\u0631 \u0635\u062d\u062a\u0647\u060c \u062b\u0645 \u0623\u0639\u062f \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062e\u062f\u0645\u0629. \u0647\u0630\u0647 \u0647\u064a \u0627\u0644\u062e\u0637\u0648\u0627\u062a \u0627\u0644\u0648\u0627\u0631\u062f\u0629 \u0641\u064a <a href=\"https:\/\/docs.frappe.io\/framework\/v15\/user\/en\/bench\/guides\/adding-custom-domains\" target=\"_blank\" rel=\"noopener noreferrer\">\u062a\u0648\u062b\u064a\u0642 \u0627\u0644\u062f\u0648\u0645\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u062e\u0635\u0635\u0629<\/a>.<\/p>\n<pre><code>cd ~\/frappe-bench\nbench setup add-domain app.example.com\nbench setup nginx\nsudo nginx -t\nsudo service nginx reload<\/code><\/pre>\n<p>\u0625\u0630\u0627 \u0644\u0645 \u062a\u0643\u0646 \u0628\u064a\u0626\u0629 Bench \u0645\u0636\u0628\u0648\u0637\u0629 \u0644\u0644\u0625\u0646\u062a\u0627\u062c\u060c \u0646\u0641\u0651\u0630 \u0623\u0648\u0644\u064b\u0627 <code>sudo bench setup production YOUR_LINUX_USER<\/code>. \u0648\u0639\u0646\u062f \u0648\u062c\u0648\u062f \u0623\u0643\u062b\u0631 \u0645\u0646 \u0645\u0648\u0642\u0639 \u0639\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645 \u0646\u0641\u0633\u0647\u060c \u0631\u0627\u062c\u0639 <a href=\"https:\/\/docs.frappe.io\/framework\/user\/en\/bench\/guides\/setup-multitenancy\" target=\"_blank\" rel=\"noopener noreferrer\">\u0625\u0639\u062f\u0627\u062f \u062a\u0639\u062f\u062f \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0639\u0628\u0631 DNS<\/a>.<\/p>\n<h2>3. \u062a\u0641\u0639\u064a\u0644 HTTPS \u0648\u0627\u0644\u062a\u062d\u0642\u0642<\/h2>\n<p>\u0628\u0639\u062f \u0646\u062c\u0627\u062d DNS \u0648\u0641\u062a\u062d \u0627\u0644\u0645\u0648\u0642\u0639 \u0639\u0628\u0631 HTTP\u060c \u064a\u0645\u0643\u0646\u0643 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 Let\u2019s Encrypt \u0645\u0646 Bench. \u064a\u0634\u062a\u0631\u0637 \u0627\u0644\u0623\u0645\u0631 \u062f\u0648\u0645\u064a\u0646\u064b\u0627 \u0639\u0627\u0645\u064b\u0627 \u0635\u0627\u0644\u062d\u064b\u0627 \u0648\u0625\u0639\u062f\u0627\u062f DNS multitenancy. \u062c\u0631\u0651\u0628 \u0628\u0639\u062f\u0647\u0627 \u0641\u062a\u062d <code>https:\/\/app.example.com<\/code> \u0648\u062a\u0623\u0643\u062f \u0623\u0646\u0647 \u064a\u0639\u0631\u0636 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0635\u062d\u064a\u062d.<\/p>\n<pre><code>sudo -H bench setup lets-encrypt site1.example.com --custom-domain app.example.com<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0628\u062f\u0644 \u0627\u0644\u0623\u0633\u0645\u0627\u0621 \u0627\u0644\u062a\u062c\u0631\u064a\u0628\u064a\u0629 \u0628\u0642\u064a\u0645 \u0645\u0634\u0631\u0648\u0639\u0643. \u0625\u0630\u0627 \u0641\u0634\u0644 \u0627\u0644\u062a\u062d\u0642\u0642\u060c \u0627\u0641\u062d\u0635 \u0633\u062c\u0644\u0627\u062a DNS \u0648\u0627\u0644\u0645\u0646\u0627\u0641\u0630 80 \u0648443 \u0648\u0645\u0644\u0641\u0627\u062a \u0625\u0639\u062f\u0627\u062f Nginx \u0648\u0633\u062c\u0644\u0627\u062a \u0627\u0644\u062e\u062f\u0645\u0627\u062a.<\/p>\n<p><strong>\u0627\u0644\u0645\u0635\u062f\u0631:<\/strong> <a href=\"https:\/\/medium.com\/@abdo.host\/how-to-connect-a-frapp%C3%A9-site-to-a-subdomain-in-production-mode-138da8906e8b\" target=\"_blank\" rel=\"noopener noreferrer\">\u0645\u0642\u0627\u0644 Abdo Host \u0627\u0644\u0623\u0635\u0644\u064a \u0639\u0644\u0649 Medium<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0631\u0628\u0637 DNS \u0628\u0627\u0644\u062e\u0627\u062f\u0645\u060c \u0648\u0623\u0636\u0641 \u0627\u0644\u062f\u0648\u0645\u064a\u0646 \u0627\u0644\u0641\u0631\u0639\u064a \u0625\u0644\u0649 \u0645\u0648\u0642\u0639 Frappe\u060c \u062b\u0645 \u062d\u062f\u0651\u062b Nginx \u0648\u0641\u0639\u0651\u0644 HTTPS.<\/p>\n","protected":false},"author":0,"featured_media":37,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":0,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/media\/37"}],"wp:attachment":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}