[英]Deploy Angular 2 App to EC2
我希望這是問這個問題的正確地方,如果不是,請移動或刪除此帖子。
我正在嘗試創建一個可以使用Angular 2和Amazon EC2處理基本POST和GET請求的簡單網站。 我在Angular 2中使用Web應用程序的前端有相當多的經驗,但是在將其連接到后端並在Amazon EC2實例上進行此操作方面卻經驗很少。
我希望找到一個示例或一些資源來解釋如何將HTTP服務與某種后端框架一起使用。 我知道Angular提供了有關如何使用HTTP服務的示例,但是很難說明后端設置看起來像什么樣的內容才能處理這些請求,以及如何在EC2上正確配置此設置。 任何幫助或資源將不勝感激!
前端/客戶端
正如@glavan所說,可以在AWS S3中部署類似於angular 2應用程序的SPA。 這是SPA最具成本效益的方法。 這是在S3上部署SPA的視頻。 該視頻將指導您逐步介紹如何部署角度應用程序。
后端
AWS EC2是一個不錯的選擇。 但是還有更多可用的替代方法。 如您所說,您是后端的新手,設置EC2,VPC和Elastic-ip有點困難。
如今,SPA涵蓋了許多業務邏輯,路由等。我們僅需要后端作為API來執行數據庫的CRUD操作。 我想建議一種稱為無服務器的前沿技術。 這是在5分鍾內啟動后端的教程 。 AWS lambda是一種稱為功能即服務的服務 。 您可以使用AWS lambda + API網關+ DynamoDB構建后端。
對於例如 :假設你想在后台注冊一些細節,你會從客戶端的所有POST數據到與URL和正確的路徑后端。 在AWS lambda中,您將POST邏輯作為一個函數編寫,其中包含解析請求中的數據並將其發送到dynamoDB的邏輯。 現在,通過將此功能與API網關(AWS中的另一項服務)連接,可以將該功能公開。 最后,我們獲得一個API,可在您的angular 2 APP中使用。 因此,在調用POST時, 角度2-> API網關-> Lambda(提取請求並發送到DB)-> dynamoDB 。
與EC2相比,使用無服務器的好處。
話雖如此,與傳統后端方法相比,請嘗試無服務器。 對此有任何疑問將受到歡迎。
如果您指的是彈性beantalk nodejs ec2,那么這個答案最適合您,因為花了我一段時間才弄清楚這一點,但事實證明它比我想象的要容易:
/usr/bin/env: node: No such file or directory
問題,我添加了以下腳本 .ebextensions/angular2deployment.config
files:
"/opt/elasticbeanstalk/env.vars" :
mode: "000775"
owner: root
group: users
content: |
export NPM_CONFIG_LOGLEVEL=error
export NODE_PATH=`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
"/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
mode: "000775"
owner: root
group: users
content: |
#!/bin/bash
. /opt/elasticbeanstalk/env.vars
function error_exit
{
eventHelper.py --msg "$1" --severity ERROR
exit $2
}
#install not-installed yet app node_modules
if [ ! -d "/var/node_modules" ]; then
mkdir /var/node_modules ;
fi
if [ -d /tmp/deployment/application ]; then
ln -s /var/node_modules /tmp/deployment/application/
fi
OUT=$([ -d "/tmp/deployment/application" ] && cd /tmp/deployment/application && $NODE_PATH/node $NODE_PATH/npm install 2>&1) || error_exit "Failed to run npm install. $OUT" $?
echo $OUT
"/opt/elasticbeanstalk/hooks/configdeploy/pre/50npm.sh" :
mode: "000666"
owner: root
group: users
content: |
#no need to run npm install during configdeploy
node_modules
& dist
文件夾,兩者都不需要。 npm install && npm start
(此步驟必須成功),請注意我正在使用angular2的默認package.json
請參閱Angular.IO部署 node_modules
.ebextensions
),然后壓縮它們,不要壓縮頂層文件夾(部署時將具有子目錄,這將破壞部署) 如果您使用的是MacOS,則在壓縮時,macos將添加macos文件夾,這將破壞部署,請確保使用不會添加此額外目錄的工具,在我的情況下,我使用的是YemuZip
附加說明:EC2 Elastic beantalk將運行npm install
& npm start
,這就是為什么我建議運行它們並確保它們在您的本地環境中正常的原因
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.