{"id":8409,"date":"2023-02-25T10:24:05","date_gmt":"2023-02-25T06:54:05","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/"},"modified":"2023-02-25T10:24:05","modified_gmt":"2023-02-25T06:54:05","slug":"deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/","title":{"rendered":"\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u062f\u0631 AWS Elastic Beanstalk \u0628\u0627 CI\/CD"},"content":{"rendered":"<div data-article-id=\"1378535\" id=\"article-body\">\n<p>\u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u00ab\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u0628\u0627 GitHub Actions CI\/CD\u00bb\u060c \u062a\u0627 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0647 \u0647\u0627\u0628 \u062f\u0627\u06a9\u0631 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645.  \u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0634\u0645\u0627 \u06a9\u0627\u0631 \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062f!  \u0627\u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a.  \u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u0627 \u0631\u0627 24 \u0633\u0627\u0639\u062a \u0634\u0628\u0627\u0646\u0647 \u0631\u0648\u0632 \u0648 \u0647\u0641\u062a \u0631\u0648\u0632 \u0647\u0641\u062a\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u062a\u0635\u0644 \u0627\u0633\u062a \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0627\u0634\u062f.  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0627\u06cc\u062f\u0647 \u062e\u0648\u0628\u06cc \u0646\u06cc\u0633\u062a \ud83d\ude05.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u062c\u0627\u0631\u0647 \u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u0645\u0648\u062e\u062a \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u06cc \u0633\u0631\u0648\u0631 \u0627\u062c\u0627\u0631\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0622\u0646 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%A8%DB%8C%D8%A7_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D9%85\" >\u0628\u06cc\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#AWS_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >AWS \u0686\u06cc\u0633\u062a\u061f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%B2%DB%8C%D8%B1%D8%B3%D8%A7%D8%AE%D8%AA_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%DB%8C%DA%A9_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_IaaS_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_%D9%BE%D9%84%D8%AA_%D9%81%D8%B1%D9%85_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%DB%8C%DA%A9_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_PaaS\" >\u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 (IaaS) \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 (PaaS)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_NGINX\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc NGINX<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_NGINX\" >\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc NGINX<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_AWS\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc AWS<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%DB%8C%DA%A9_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%DB%8C_%D8%B1%D8%A7_%D8%AF%D8%B1_Elastic_Beanstalk_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%88_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u0631\u0627 \u062f\u0631 Elastic Beanstalk \u0627\u06cc\u062c\u0627\u062f \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7%DB%8C\" >\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_MERN_%D8%AF%D8%B1_AWS_%D8%A8%D8%A7_CICD\" >\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u062f\u0631 AWS \u0628\u0627 CI\/CD<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#deployment_package\" >deployment_package<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/deploying-a-mern-app-to-aws-elastic-beanstalk-with-cicd-4f1j\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86_%D8%AF%D8%A7%D8%AF%D9%86_%D8%A8%D9%87_%D9%85%D8%AD%DB%8C%D8%B7_%D8%B2%DB%8C%D8%B3%D8%AA\" >\u067e\u0627\u06cc\u0627\u0646 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%DB%8C%D8%A7_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D9%85\"><\/span>\n<p>  \u0628\u06cc\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u0627\u06af\u0631 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u06a9\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0645\u0642\u0627\u0644\u0627\u062a \u0642\u0628\u0644\u06cc \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f \u062a\u0627 \u062f\u0686\u0627\u0631 \u0633\u0631\u062f\u0631\u06af\u0645\u06cc \u0646\u0634\u0648\u06cc\u062f.<\/li>\n<li>\n<p>\u062d\u0633\u0627\u0628 AWS.<\/li>\n<li>\u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc AWS \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0647\u0633\u062a\u0646\u062f \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647 \u06a9\u0627\u0631\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u06cc\/\u062f\u0628\u06cc\u062a \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f.<\/li>\n<\/ul>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647\u060c \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u0631\u0647 \u0648\u0631\u06cc \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0633\u0627\u062f\u0647 \u0645\u0627 \u0628\u0647 AWS \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u062f.  \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p><\/p>\n<blockquote>\n<p>\u26a0\ufe0f <strong>\u0647\u0634\u062f\u0627\u0631:<\/strong> \u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0645\u062d\u0636 \u0627\u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u0648 \u0645\u062d\u06cc\u0637 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0631\u0627 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0635\u0648\u0631\u062a\u062d\u0633\u0627\u0628 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"AWS_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  AWS \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f\u0645\u060c \u0645\u0627 \u0628\u0647 \u0634\u062e\u0635\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f \u0633\u0631\u0648\u0631 \u0627\u062c\u0627\u0631\u0647 \u06a9\u0646\u06cc\u0645 \u0648 AWS \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0627\u0633\u062a.  \u0646\u0647 \u0627\u0632 \u0646\u0638\u0631 \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0627\u062a\u0627\u0642 \u0648 \u062f\u0633\u062a\u0647\u200c\u0627\u06cc \u0627\u0632 \u062c\u0639\u0628\u0647\u200c\u0647\u0627\u060c \u0627\u0645\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0627\u0628\u0631\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0647\u0631 \u0646\u0642\u0637\u0647\u200c\u0627\u06cc \u062f\u0631 \u062c\u0647\u0627\u0646 \u0627\u062c\u0627\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \ud83d\ude02:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.jpg\" alt=\"\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u0645 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062e\u0648\u062f\" loading=\"lazy\" width=\"880\" height=\"495\" title=\"\"><\/p>\n<p>\u0627\u06af\u0631 \u0632\u06cc\u0631 \u06cc\u06a9 \u0633\u0646\u06af \u0632\u0646\u062f\u06af\u06cc \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0646\u0627\u0645 AWS \u0631\u0627 \u0634\u0646\u06cc\u062f\u0647 \u0627\u06cc\u062f.  \u0645\u062e\u0641\u0641 \u0622\u0646 \u0627\u0633\u062a <strong>\u0622<\/strong>\u0645\u0631\u062f <strong>\u062f\u0628\u0644\u06cc\u0648<\/strong>eb <strong>\u0627\u0633<\/strong>\u062e\u062f\u0645\u0627\u062a  AWS (\u062a\u0648\u0633\u0637 \u0622\u0645\u0627\u0632\u0648\u0646) \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0627\u0632 \u062e\u062f\u0645\u0627\u062a \u0631\u0627\u06cc\u0627\u0646\u0634 \u0627\u0628\u0631\u06cc\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644\u060c \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646\u06cc\u060c \u0634\u0628\u06a9\u0647\u060c \u0645\u0648\u0628\u0627\u06cc\u0644\u060c \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647\u060c \u0627\u0645\u0646\u06cc\u062a \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0634\u0645\u0627\u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631\u0628\u0647\u200c\u0641\u0631\u062f \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u0648\u062f\u060c \u0648 \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u0644\u062a\u0641\u0631\u0645\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u067e\u06cc\u0634\u0631\u0648 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0645\u0631\u0648\u0632\u06cc \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.  Google Cloud (\u062a\u0648\u0633\u0637 \u06af\u0648\u06af\u0644) \u0648 Azure (\u062a\u0648\u0633\u0637 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a) \u0647\u0631 \u062f\u0648 \u0631\u0642\u0628\u0627\u06cc \u0627\u0635\u0644\u06cc AWS \u0647\u0633\u062a\u0646\u062f.<\/p>\n<blockquote>\n<p><strong>\u0632\u0645\u0627\u0646 \u0628\u0632\u0631\u06af \u0645\u063a\u0632 \ud83d\udca1:<\/strong> \u0627\u06af\u0631 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u00ab\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 MERN \u0631\u0627 \u0628\u0627 \u067e\u0634\u062a\u0647 \u06a9\u0627\u0645\u0644 \u0628\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645\u00bb\u060c \u0628\u0631\u0646\u0627\u0645\u0647 frontend \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Netlify \u0648 \u0628\u06a9\u200c\u0627\u0646\u062f \u0631\u0627 \u062f\u0631 Heroku \u0645\u0633\u062a\u0642\u0631 \u06a9\u0631\u062f\u06cc\u0645.  \u0627\u06cc\u0646\u0647\u0627 \u062e\u0648\u0628 \u0647\u0633\u062a\u0646\u062f \u0627\u0645\u0627 \u0627\u06a9\u062b\u0631 \u0634\u0631\u06a9\u062a \u0647\u0627 \u0628\u0647 IaaS (\u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0633\u0631\u0648\u0631) \u0627\u0632 PaaS (\u067e\u0644\u062a\u0641\u0631\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0633\u0631\u0648\u0631) \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B2%DB%8C%D8%B1%D8%B3%D8%A7%D8%AE%D8%AA_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%DB%8C%DA%A9_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_IaaS_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_%D9%BE%D9%84%D8%AA_%D9%81%D8%B1%D9%85_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%DB%8C%DA%A9_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_PaaS\"><\/span>\n<p>  \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 (IaaS) \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 (PaaS)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0648\u0636\u0648\u062d \u062a\u0641\u0627\u0648\u062a \u0628\u06cc\u0646 Iaas \u0648 PaaS \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308042_987_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"IaaS \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 PaaS\" loading=\"lazy\" width=\"880\" height=\"495\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_NGINX\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc NGINX<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>NGINX<\/strong> \u06cc\u06a9 \u0648\u0628 \u0633\u0631\u0648\u0631 \u0645\u062d\u0628\u0648\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0639\u0627\u062f\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0627\u0631\u060c \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0648 \u06a9\u0634 HTTP \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0622\u0646 \u0631\u0627 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0627 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u06cc\u0632\u0627\u0646 \u0627\u0634\u063a\u0627\u0644 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633\u060c NGINX \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0628\u06cc\u0646 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0633\u0631\u0648\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0634\u0645\u0627 (\u06a9\u0644\u0627\u06cc\u0646\u062a) \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0648\u0628 \u0633\u0631\u0648\u0631 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f.  \u0627\u06cc\u0646 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0627\u0632 \u0686\u0646\u062f \u062c\u0647\u062a \u0645\u0641\u06cc\u062f \u0627\u0633\u062a: \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u0631\u0648\u0631 \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0645\u06a9\u0631\u0631 \u0631\u0627 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u06a9\u0646\u062f\u060c \u0632\u0645\u0627\u0646 \u067e\u0627\u0633\u062e \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f \u0648 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u0631\u0628 \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 NGINX \u0628\u06cc\u0634\u062a\u0631 \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u00ab\u0631\u0627\u0647\u0646\u0645\u0627\u06cc NGINX\u00bb \u0646\u0648\u0634\u062a\u0647 \u0641\u0631\u0647\u0627\u0646 \u062d\u0633\u0646 \u0686\u0627\u0648\u062f\u0631\u06cc \u0631\u0627 \u062f\u0631 freeCodeCamp \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0627\u0634\u0647!  \u0686\u0631\u0627 \u0645\u0627 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc \u062f\u0647\u06cc\u0645\u061f  \u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0648 \u0628\u0627\u0637\u0646 \u0628\u0647 \u0637\u0648\u0631 \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u062a\u0639\u0627\u062f\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0627\u0631 \u0645\u0627\u0646\u0646\u062f NGINX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0647\u0631 \u062f\u0648 \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0648 \u0628\u0627\u0637\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0628 \u0633\u0631\u0648\u0631 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u0628\u0627\u0631 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u0646\u0627\u0633\u0628 \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u062a\u0631 \u0648 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308042_304_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"nginx\" loading=\"lazy\" width=\"880\" height=\"495\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_NGINX\"><\/span>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc NGINX<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u06a9\u062f \u062e\u0648\u062f \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.  \u062f\u0631 root \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>nginx<\/code>.<\/p>\n<p>\u062f\u0631 \u0622\u0646 \u067e\u0648\u0634\u0647\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>nginx.conf<\/code> \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># Defining a server group called `client` that has one server in it called `client` on port `3000`.<\/span>\nupstream client <span class=\"o\">{<\/span>\n    server client:3000<span class=\"p\">;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c\"># Defining a server group called `server` that has one server in it called `server` on port `5000`.<\/span>\nupstream server <span class=\"o\">{<\/span>\n    server server:5000<span class=\"p\">;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c\"># Listening on port 80 and redirecting requests to the client and server.<\/span>\nserver <span class=\"o\">{<\/span>\n    listen 80<span class=\"p\">;<\/span>\n    listen <span class=\"o\">[<\/span>::]:80<span class=\"p\">;<\/span>\n\n    proxy_http_version 1.1<span class=\"p\">;<\/span>\n    proxy_set_header Upgrade <span class=\"nv\">$http_upgrade<\/span><span class=\"p\">;<\/span>\n    proxy_set_header Connection <span class=\"s1\">'upgrade'<\/span><span class=\"p\">;<\/span>\n    proxy_set_header Host <span class=\"nv\">$host<\/span><span class=\"p\">;<\/span>\n    proxy_cache_bypass <span class=\"nv\">$http_upgrade<\/span><span class=\"p\">;<\/span>\n\n    location \/ <span class=\"o\">{<\/span>\n        proxy_pass http:\/\/client<span class=\"p\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    location \/server <span class=\"o\">{<\/span>\n        rewrite \/server\/<span class=\"o\">(<\/span>.<span class=\"k\">*<\/span><span class=\"o\">)<\/span> \/<span class=\"nv\">$1<\/span> <span class=\"nb\">break<\/span><span class=\"p\">;<\/span>\n        proxy_pass http:\/\/server<span class=\"p\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0631\u0627 <code>upstream<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0633\u0631\u0648\u0631\u060c \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc <code>client<\/code> \u062f\u0631 \u0628\u0646\u062f\u0631 <code>3000<\/code> \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc <code>server<\/code> \u062f\u0631 \u0628\u0646\u062f\u0631 <code>5000<\/code>.<\/li>\n<li>\u0631\u0627 <code>server<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u0648\u0631\u062a \u06af\u0648\u0634 \u0645\u06cc \u062f\u0647\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>80<\/code> \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc  \u0631\u0627 <code>listen<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u067e\u0648\u0631\u062a \u0648 <code>proxy_http_version<\/code>\u060c <code>proxy_set_header<\/code>\u060c \u0648 <code>proxy_cache_bypass<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0631\u0627\u06a9\u0633\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<li>\u0631\u0627 <code>location<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc URL \u06a9\u0647 \u0628\u0647 \u0647\u0631 \u06af\u0631\u0648\u0647 \u0633\u0631\u0648\u0631 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0648\u0644\u06cc\u0646 <code>location \/<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0645\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0647 <code>client<\/code> \u06af\u0631\u0648\u0647 \u0633\u0631\u0648\u0631  \u062f\u0648\u0645\u06cc\u0646 <code>location \/server<\/code> \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u0628\u0627 \u0645\u0633\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc \u062f\u0647\u062f <code>\/server<\/code> \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>rewrite<\/code> \u0628\u062e\u0634\u0646\u0627\u0645\u0647 \u062d\u0630\u0641 <code>\/server<\/code> \u0627\u0632 \u0645\u0633\u06cc\u0631 \u0642\u0628\u0644 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631 \u0628\u0647 <code>server<\/code> \u06af\u0631\u0648\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>proxy_pass<\/code> \u0628\u062e\u0634\u0646\u0627\u0645\u0647<\/li>\n<\/ul>\n<p>\u062d\u062a\u06cc \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u0632 NGINX \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0637\u0641\u0627\u064b \u0645\u0642\u0627\u0644\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f\u0645 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0648\u0636\u0648\u062d \u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc NGINX \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c Dockerfile \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0648\u0634\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 Paste \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>FROM nginx:stable-alpine\n\nRUN <span class=\"nb\">rm<\/span> \/etc\/nginx\/conf.d\/<span class=\"k\">*<\/span>\n\nCOPY .\/nginx.conf \/etc\/nginx\/conf.d\/\n\nCMD <span class=\"o\">[<\/span> <span class=\"s2\">\"nginx\"<\/span>, <span class=\"s2\">\"-g\"<\/span>, <span class=\"s2\">\"daemon off;\"<\/span> <span class=\"o\">]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_AWS\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc AWS<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0627\u0632 \u0633\u0647 \u0633\u0631\u0648\u06cc\u0633 AWS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<br \/>1) Elastic Beanstalk &#8211; \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u062f\u0647 \u06a9\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<br \/>2) EC2 &#8211; Elastic Compute \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0638\u0631\u0641\u06cc\u062a \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u06cc\u06a9 \u0645\u0627\u0634\u06cc\u0646 \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0644\u062e\u0648\u0627\u0647 \u062e\u0648\u062f \u0645\u0627\u0646\u0646\u062f \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644\u060c \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648 \u063a\u06cc\u0631\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<br \/>3) \u0633\u0637\u0644 S3 &#8211; \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631.  \u062a\u0645\u0627\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0641\u0642\u0637 Elastic Beanstalk \u0628\u0627\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0648\u062f.  \u062f\u0648 \u0645\u0648\u0631\u062f \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u062f \u0648 \u0648\u0627\u0631\u062f \u06a9\u0646\u0633\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a AWS \u062e\u0648\u062f \u0634\u0648\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0646\u0627\u0628\u0639 \u0627\u0628\u0631\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0627 GitHub Actions \u0647\u0633\u062a\u06cc\u0645\u060c \u0628\u0647 \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc Actions \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0645\u0646\u0627\u0628\u0639 \u0645\u0627 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u06a9\u062f \u062f\u0631 AWS\u060c \u0648 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a.  \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u0639\u0637\u0627 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0646\u0648\u0627\u0631 \u062c\u0633\u062a\u062c\u0648\u060c &#8220;IAM&#8221; (Identity and Access Management) \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/strong> \u0632\u06cc\u0631 <strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u0631\u0633\u06cc<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308043_66_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"AWS IM\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<p>\u0631\u0627 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/strong> \u0648 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0648\u062f \u06cc\u06a9 \u0646\u0627\u0645 \u0628\u062f\u0647\u06cc\u062f -> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0628\u0639\u062f<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308043_816_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 IAM\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<p>\u06a9\u0647 \u062f\u0631 <strong>\u0645\u062c\u0648\u0632\u0647\u0627 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong> \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <strong>\u062e\u0637 \u0645\u0634\u06cc \u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0636\u0645\u06cc\u0645\u0647 \u06a9\u0646\u06cc\u062f<\/strong> -> \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f <strong>AdministratorAccess-AWSElasticBeanstalk<\/strong> -> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0628\u0639\u062f<\/strong> -> \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308043_111_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u0648\u0632 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%A7%DB%8C_%D8%B1%D8%A7_%D8%AF%D8%B1_Elastic_Beanstalk_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%88_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u0631\u0627 \u062f\u0631 Elastic Beanstalk \u0627\u06cc\u062c\u0627\u062f \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0631 \u0646\u0648\u0627\u0631 \u062c\u0633\u062a\u062c\u0648\u060c &#8220;Elastic Beanstalk&#8221; \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u06a9\u0644\u06cc\u06a9 <strong>\u0627\u06cc\u062c\u0627\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308043_707_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"AWS Elastic Beanstalk\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<p>\u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0648\u062f \u06cc\u06a9 \u0646\u0627\u0645 \u0628\u062f\u0647\u06cc\u062f\u060c \u062a\u0631\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0628\u0631\u0686\u0633\u0628 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/strong> \u062e\u0627\u0644\u06cc\u060c &#8220;Docker&#8221; \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <strong>\u0633\u06a9\u0648<\/strong>\u0648 \u0628\u0642\u06cc\u0647 \u0631\u0627 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.  \u06a9\u0644\u06cc\u06a9 <strong>\u0627\u06cc\u062c\u0627\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308044_904_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0633\u0627\u0642\u0647 \u0644\u0648\u0628\u06cc\u0627 \u0627\u0644\u0627\u0633\u062a\u06cc\u06a9\" loading=\"lazy\" width=\"880\" height=\"481\" title=\"\"><\/p>\n<p>\u062a\u0628\u0631\u06cc\u06a9 \ud83c\udf8a!  \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc URL \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 EB \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308044_469_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%AD%DB%8C%D8%B7%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062f\u0631 EB \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0648\u06cc\u062f <strong>\u0635\u0641\u062d\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<\/strong> \u0648 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f<\/strong> \u0632\u06cc\u0631 <strong>\u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631<\/strong> \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308044_205_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<p>\u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 -> \u0632\u06cc\u0631 \u0628\u0631\u0648\u06cc\u062f <strong>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc<\/strong> \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc env \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>REACT_APP_BACKEND_URL <span class=\"o\">=<\/span> \/server\nMONGODB_URI <span class=\"o\">=<\/span> your MongoDB URI\nTOKEN_KEY <span class=\"o\">=<\/span> random string\nEMAIL <span class=\"o\">=<\/span> email\nPASSWORD <span class=\"o\">=<\/span> password\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0648\u062f\u0634\u0647!  \u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0631\u062d\u0644\u0647 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u0628\u0647 \u062e\u0637 \u0644\u0648\u0644\u0647 CI\/CD \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_MERN_%D8%AF%D8%B1_AWS_%D8%A8%D8%A7_CICD\"><\/span>\n<p>  \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u062f\u0631 AWS \u0628\u0627 CI\/CD<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627\u0632 \u06a9\u0646 <code>pipeline.yml<\/code> \u0648 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0631\u0627 \u062f\u0631\u0633\u062a \u062f\u0631 \u0632\u06cc\u0631 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u062f\u0627\u06a9\u0631 \u0647\u0627\u0628 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code>      <span class=\"c1\"># This is the step that is deploying the application to Elastic Beanstalk.<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Deploy to Elastic Beanstalk<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">einaregilsson\/beanstalk-deploy@v21<\/span>\n        <span class=\"na\">with<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">aws_access_key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.AWS_ACCESS_KEY_ID }}<\/span>\n          <span class=\"na\">aws_secret_key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.AWS_SECRET_ACCESS_KEY }}<\/span>\n          <span class=\"na\">application_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_APP_NAME }}<\/span>\n          <span class=\"na\">environment_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_ENV_NAME }}<\/span>\n          <span class=\"na\">region<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_REGION }}<\/span>\n          <span class=\"na\">version_label<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">version-${{<\/span><span class=\"nv\"> <\/span><span class=\"s\">github.run_number<\/span><span class=\"nv\"> <\/span><span class=\"s\">}}\"<\/span>\n          <span class=\"na\">deployment_package<\/span><span class=\"pi\">:<\/span> <span class=\"s\">docker-compose.yml<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u06a9\u0634\u0646 GitHub \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>einaregilsson\/beanstalk-deploy@v21<\/code> \u062a\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.  \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d \u0646\u06cc\u0633\u062a\u060c \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. <\/li>\n<li>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code>AWS_ACCESS_KEY_ID<\/code>\u060c <code>AWS_SECRET_ACCESS_KEY<\/code> \u0628\u0647 \u0627\u0633\u0631\u0627\u0631 GitHub.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0627\u0632 \u062f\u0627\u0634\u0628\u0648\u0631\u062f IAM \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.  \u0641\u0642\u0637 \u0631\u0648\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0622\u0646 \u0628\u0631\u0648\u06cc\u062f <strong>\u0645\u062f\u0627\u0631\u06a9 \u0627\u0645\u0646\u06cc\u062a\u06cc<\/strong> \u0631\u0627 \u0628\u0631\u06af\u0647 \u0648 \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f. <\/li>\n<li>\n<code>EB_APP_NAME<\/code>  \u0646\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 EB \u0634\u0645\u0627 \u0627\u0633\u062a \u0648 <code>EB_ENV_NAME<\/code> \u0646\u0627\u0645 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a (\u0628\u0647 &#8220;-env&#8221; \u062e\u062a\u0645 \u0645\u06cc \u0634\u0648\u062f\u060c \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0646 &#8220;Productivityapp-env&#8221; \u0627\u0633\u062a).<\/li>\n<li>\n<code>EB_REGION<\/code>  \u0645\u0646\u0637\u0642\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308045_599_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0645\u0646\u0637\u0642\u0647 \u0633\u0627\u0642\u0647 \u0644\u0648\u0628\u06cc\u0627 \u0627\u0644\u0627\u0633\u062a\u06cc\u06a9\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 docker-compose \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637 GitHub \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f\u060c \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0648\u0645 \u0628\u0627 \u06a9\u0644\u0645\u0647 &#8220;\u0622\u062e\u0631\u06cc\u0646&#8221; \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u062a\u06af \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u062c\u0627\u06cc <code>github.run_number<\/code>.  \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0646\u0647\u0627\u06cc\u06cc YAML \u0627\u0633\u062a.  (\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0648\u0627\u062d\u062f \u0628\u0633\u0627\u0632\u06cc\u062f\u060c \u0641\u0642\u0637 \u0628\u0631\u0686\u0633\u0628 \u0631\u0627 \u0628\u0627 \u0622\u0646 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f <code>github.run_number<\/code>)<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"c1\"># The name of the workflow.<\/span>\n<span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Build and Deploy<\/span>\n\n<span class=\"c1\"># Run the workflow when code is pushed to the main branch<\/span>\n<span class=\"na\">on<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">push<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">branches<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">main<\/span>\n\n<span class=\"c1\"># Set environment variables<\/span>\n<span class=\"na\">env<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">MONGODB_URI<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.MONGODB_URI }}<\/span>\n  <span class=\"na\">TOKEN_KEY<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.TOKEN_KEY }}<\/span>\n  <span class=\"na\">EMAIL<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EMAIL }}<\/span>\n  <span class=\"na\">PASSWORD<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.PASSWORD }}<\/span>\n\n<span class=\"c1\"># This is the workflow that is being run.<\/span>\n<span class=\"na\">jobs<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">build-and-deploy<\/span><span class=\"pi\">:<\/span>\n    <span class=\"c1\"># This is telling GitHub to run the workflow on the latest version of Ubuntu.<\/span>\n    <span class=\"na\">runs-on<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ubuntu-latest<\/span>\n    <span class=\"na\">steps<\/span><span class=\"pi\">:<\/span>\n      <span class=\"c1\"># Checkout the code from the GitHub repository<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Checkout code<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">actions\/checkout@v3<\/span>\n\n      <span class=\"c1\"># Install dependencies and run tests for the client application<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Install and Test Client<\/span>\n        <span class=\"na\">working-directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/client<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">npm install<\/span>\n          <span class=\"s\">npm run test<\/span>\n\n      <span class=\"c1\"># Install dependencies, export environment variables to be used by application and run tests for the server application<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Install and Test Server<\/span>\n        <span class=\"na\">working-directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/server<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">npm install<\/span>\n          <span class=\"s\">export MONGODB_URI=$MONGODB_URI<\/span>\n          <span class=\"s\">export TOKEN_KEY=$TOKEN_KEY<\/span>\n          <span class=\"s\">export EMAIL=$EMAIL<\/span>\n          <span class=\"s\">export PASSWORD=$PASSWORD<\/span>\n          <span class=\"s\">npm run test<\/span>\n\n      <span class=\"c1\"># Build a Docker image for the client application<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Build Client Docker Image<\/span>\n        <span class=\"na\">working-directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/client<\/span>\n        <span class=\"c1\"># Build image with tag rakeshpotnuru\/productivity-app:client<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">docker build -t rakeshpotnuru\/productivity-app:client-${{github.run_number}} -t rakeshpotnuru\/productivity-app:client-latest .<\/span>\n\n      <span class=\"c1\"># Build a Docker image for the server application<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Build Server Docker Image<\/span>\n        <span class=\"na\">working-directory<\/span><span class=\"pi\">:<\/span>\n          <span class=\"s\">.\/server<\/span>\n          <span class=\"s\"># Build image with tag rakeshpotnuru\/productivity-app:server<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">docker build -t rakeshpotnuru\/productivity-app:server-${{github.run_number}} -t rakeshpotnuru\/productivity-app:server-latest .<\/span>\n\n      <span class=\"c1\"># Build a Docker image for the NGINX reverse proxy<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Build NGINX Docker Image<\/span>\n        <span class=\"na\">working-directory<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/nginx<\/span>\n        <span class=\"c1\"># Build image with tag rakeshpotnuru\/productivity-app:nginx<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">docker build -t rakeshpotnuru\/productivity-app:nginx-${{github.run_number}} -t rakeshpotnuru\/productivity-app:nginx-latest .<\/span>\n\n      <span class=\"c1\"># Login to Docker Hub using credentials from repository secrets<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Log in to Docker Hub<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">docker\/login-action@v2<\/span>\n        <span class=\"na\">with<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">username<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.DOCKER_USERNAME }}<\/span>\n          <span class=\"na\">password<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.DOCKER_PASSWORD }}<\/span>\n\n      <span class=\"c1\"># Push the Docker images to Docker Hub<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Push Docker Images to Docker Hub<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:client-${{github.run_number}}<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:server-${{github.run_number}}<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:nginx-${{github.run_number}}<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:client-latest<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:server-latest<\/span>\n          <span class=\"s\">docker push rakeshpotnuru\/productivity-app:nginx-latest<\/span>\n\n      <span class=\"c1\"># This is the step that is deploying the application to Elastic Beanstalk.<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Deploy to Elastic Beanstalk<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">einaregilsson\/beanstalk-deploy@v21<\/span>\n        <span class=\"na\">with<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">aws_access_key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.AWS_ACCESS_KEY_ID }}<\/span>\n          <span class=\"na\">aws_secret_key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.AWS_SECRET_ACCESS_KEY }}<\/span>\n          <span class=\"na\">application_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_APP_NAME }}<\/span>\n          <span class=\"na\">environment_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_ENV_NAME }}<\/span>\n          <span class=\"na\">region<\/span><span class=\"pi\">:<\/span> <span class=\"s\">${{ secrets.EB_REGION }}<\/span>\n          <span class=\"na\">version_label<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">version-${{<\/span><span class=\"nv\"> <\/span><span class=\"s\">github.run_number<\/span><span class=\"nv\"> <\/span><span class=\"s\">}}\"<\/span>\n          <span class=\"na\">deployment_package<\/span><span class=\"pi\">:<\/span> <span class=\"s\">docker-compose.yml<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"deployment_package\"><\/span>\n<p>  deployment_package<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0648 \u0631\u0627\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0628\u0633\u062a\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f &#8211; 1. \u0641\u0627\u06cc\u0644 \u0641\u0634\u0631\u062f\u0647 \u06cc\u0627 2. \u0641\u0627\u06cc\u0644 docker-compose.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0647\u0627\u0628 docker \u0647\u0644 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644.<\/p>\n<p>\u0646\u0627\u0645 \u0642\u0628\u0644\u06cc \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 <code>docker-compose.dev.yml<\/code> \u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>docker-compose.yml<\/code> \u0641\u0627\u06cc\u0644.  \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">3.8\"<\/span>\n\n<span class=\"na\">services<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">nginx<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rakeshpotnuru\/productivity-app:nginx-latest<\/span>\n    <span class=\"na\">restart<\/span><span class=\"pi\">:<\/span> <span class=\"s\">always<\/span>\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">client<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">server<\/span>\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">80:80\"<\/span>\n\n  <span class=\"na\">client<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rakeshpotnuru\/productivity-app:client-latest<\/span>\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">CHOKIDAR_USEPOLLING=true<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">REACT_APP_BACKEND_URL=${REACT_APP_BACKEND_URL}<\/span>\n\n  <span class=\"na\">server<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rakeshpotnuru\/productivity-app:server-latest<\/span>\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">MONGODB_URI=${MONGODB_URI}<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">TOKEN_KEY=${TOKEN_KEY}<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">EMAIL=${EMAIL}<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">PASSWORD=${PASSWORD}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0628\u0647 \u062c\u0627\u06cc \u0633\u0627\u062e\u062a \u0645\u062c\u062f\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 Docker \u0628\u0627 Dockerfile\u060c \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u067e\u06cc\u0634 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0627\u0632 Docker Hub \u0645\u06cc \u06a9\u0634\u06cc\u0645.  \u0648 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 EB \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/li>\n<\/ul>\n<p>\u0647\u0645\u06cc\u0646!  \u06a9\u062f \u0631\u0627 \u0628\u0647 GitHub \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f \u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062a\u0645\u0627\u0645 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627 \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 GitHub Actions \u0639\u0628\u0648\u0631 \u06a9\u0646\u0646\u062f.  \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0639\u0645\u0644 \u0628\u0628\u06cc\u0646\u06cc\u062f \ud83c\udf89\ud83d\ude80\ud83e\udd29.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308045_322_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0633\u062a\u0642\u0631 \u0634\u062f\u0647\" loading=\"lazy\" width=\"880\" height=\"462\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308045_705_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0633\u062a\u0642\u0631 \u0634\u062f\u0647\" loading=\"lazy\" width=\"880\" height=\"468\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86_%D8%AF%D8%A7%D8%AF%D9%86_%D8%A8%D9%87_%D9%85%D8%AD%DB%8C%D8%B7_%D8%B2%DB%8C%D8%B3%D8%AA\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308045_683_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.jpg\" alt=\"\u0645\u06cc\u0645 \u0646\u0645\u0648\u0646\u0647 aws \u0631\u0627 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f\" loading=\"lazy\" width=\"880\" height=\"495\" title=\"\"><\/p>\n<p>\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0627\u06af\u0631 \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u06cc\u0637 \u0631\u0627 \u062e\u0627\u062a\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062e\u0627\u062a\u0645\u0647\u060c \u0628\u0647 <strong>\u0645\u062d\u06cc\u0637 \u0647\u0627<\/strong> -> \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062e\u0627\u062a\u0645\u0647 \u062f\u0647\u06cc\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f -> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0627\u0642\u062f\u0627\u0645\u0627\u062a<\/strong> -> \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u0645\u062d\u06cc\u0637 \u0631\u0627 \u062e\u0627\u062a\u0645\u0647 \u062f\u0647\u06cc\u062f<\/strong>.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0648\u062f\u060c \u062e\u0627\u062a\u0645\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/02\/1677308045_248_\u0627\u0633\u062a\u0642\u0631\u0627\u0631-\u06cc\u06a9-\u0628\u0631\u0646\u0627\u0645\u0647-MERN-\u062f\u0631-AWS-Elastic-Beanstalk-\u0628\u0627-CICD.png\" alt=\"\u062e\u0627\u062a\u0645\u0647 \u0645\u062d\u06cc\u0637 \u0633\u0627\u0642\u0647 \u0644\u0648\u0628\u06cc\u0627 \u0627\u0644\u0627\u0633\u062a\u06cc\u06a9\" loading=\"lazy\" width=\"880\" height=\"456\" title=\"\"><\/p>\n<hr\/>\n<p>\u0627\u06af\u0631 \u062a\u0627 \u0627\u06cc\u0646 \u062d\u062f \u0627\u0632 \u00ab\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 MERN \u0631\u0627 \u0628\u0627 \u067e\u0634\u062a\u0647 \u06a9\u0627\u0645\u0644 \u0628\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645\u00bb \u0641\u0627\u0635\u0644\u0647 \u06af\u0631\u0641\u062a\u0647\u200c\u0627\u06cc\u062f\u060c \u0622\u0641\u0631\u06cc\u0646.  \u0628\u0647 \u062e\u0648\u062f \u0634\u0627\u0646\u0647 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n<hr\/>\n<p>\u0627\u06cc\u0646 \u067e\u0627\u06cc\u0627\u0646 \u0645\u0627\u062c\u0631\u0627 \u0646\u06cc\u0633\u062a.  \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0645\u0642\u0627\u0644\u0627\u062a \u0647\u06cc\u062c\u0627\u0646 \u0627\u0646\u06af\u06cc\u0632 \u062f\u0631 \u0631\u0627\u0647 \u0627\u0633\u062a!  \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0645\u0646 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f &#8211; \u0628\u0647 \u0628\u0639\u062f \u0648 \u0628\u0627\u0644\u0627\u062a\u0631 \ud83d\ude80!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u00ab\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 MERN \u0628\u0627 GitHub Actions CI\/CD\u00bb\u060c \u062a\u0627 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0647 \u0647\u0627\u0628 \u062f\u0627\u06a9\u0631 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645. \u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0634\u0645\u0627 \u06a9\u0627\u0631 \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062f! \u0627\u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0645\u0627 \u0631\u0627 24 \u0633\u0627\u0639\u062a \u0634\u0628\u0627\u0646\u0647 \u0631\u0648\u0632 \u0648 \u0647\u0641\u062a \u0631\u0648\u0632 \u0647\u0641\u062a\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc &hellip;<\/p>\n","protected":false},"author":2,"featured_media":8410,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-8409","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/8409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=8409"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/8409\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/8410"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=8409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=8409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=8409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}