2014-09-25 62 views
2

我對亞馬遜web服務和彈性beanstalk很陌生。部署在aws上使用mongo db的節點js應用程序

雖然很多人都說使用簡單直接,但我會說這是一個非常主觀的陳述。對於像我這樣的雲主機和虛擬私人服務器新手來說,我相信學習曲線對於那些不得不「學習」的人來說並沒有太大的不同。

我正在開發一個使用expressjs作爲其核心框架和MongoDB作爲其數據庫的nodejs網站。我的僱主希望我們使用AWS。現在就是問題出現的地方。

我已經能夠在彈性beanstalk上建立一個環境,甚至上傳應用程序和環境開始,但沒有任何工作。

我的第一個問題是,儘管我成功地設置了環境,但我幾乎不知道所有的配置是什麼意思,我的腦袋都在旋轉。 AWS官方文檔在這方面幫助不大。其次,我不知道如何在MongoDB中使用它,在儀表板上,我看到的唯一選擇是Amazon RDS,並且我搜索的任何解釋對於像我這樣的新手來說都非常複雜。

有沒有人有鏈接到某個地方我可以得到一個簡單的解釋,或者可以有人簡單地解釋如何做到這一點?

PS:我創建的AWS環境是一個64位的Linux亞馬遜1.0.6版本2014.03 Node.js的運行

編輯:我收到錯誤502錯誤的網關。該應用程序運行在面向前端的nginx代理之後。

+0

如果實際上您的應用程序正在嘗試連接到mongo,您的502可能會出現問題。查看關於讓mongo在AWS上運行的答案。 – Jordan 2015-02-03 20:09:20

回答

2

AWS在配置服務器和應用程序方面可以做得更高級,所以難怪它會令人困惑。大多數時候,文檔對幫助也沒有太大的幫助。亞馬遜讓你使用他們的RDS/nosql(DynamoDB)。您可以在AMI市場添加許多不同類型的數據庫,但是我覺得這些數據庫太昂貴且不必要。

對於以下ssh到您的EC2實例ssh -i <your .pem key> [email protected](應該類似)

MongoDB的有關AWS:

echo "[MongoDB] 
name=MongoDB Repository 
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 
gpgcheck=0 
enabled=1" | sudo tee -a /etc/yum.repos.d/mongodb.repo 

sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools 

sudo mkdir /data /log /journal 

//Mount partitions -- Find available ones for /data /log /journal 
sudo mkfs.ext4 /dev/xvdf 
sudo mkfs.ext4 /dev/xvdg 
sudo mkfs.ext4 /dev/xvdh 

echo '/dev/xvdf /data ext4 defaults,auto,noatime,noexec 0 0 
/dev/xvdg /journal ext4 defaults,auto,noatime,noexec 0 0 
/dev/xvdh /log ext4 defaults,auto,noatime,noexec 0 0' | sudo tee -a /etc/fstab 

sudo mount /data 
sudo mount /journal 
sudo mount /log 

sudo chown mongod:mongod /data /journal /log 

sudo ln -s /journal /data/journal 

nano /etc/mongod.conf 
//Change to 
dbpath = /data 
logpath = /log/mongod.log 

sudo nano /etc/security/limits.conf 
* soft nofile 64000 
* hard nofile 64000 
* soft nproc 32000 
* hard nproc 32000 

sudo nano /etc/security/limits.d/90-nproc.conf 
* soft nproc 32000 
* hard nproc 32000 

sudo blockdev --setra 32 /dev/xvdf 

echo 'ACTION=="add", KERNEL=="xvdf", ATTR{bdi/read_ahead_kb}="16"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules 

//Run persistent 
mongod --fork --logpath /var/log/mongodb/mongod.log 

參考:gist

可以在運行mongo你當前的ssh會話以確保它正常運行。