前言
该文档不会说如何在 AWS 上面创建 EC2 实例,如有需要,请自行参考 AWS 的文档
该文档所说的内容,是针对 Amazon Linux 64bit
安装 MongoDB
为 MongoDB 创建 Amazon EBS volumes
EBS 用来永久保存数据,我们创建一个 EBS 后,可以随便挂在到任意的 Instance 上。
登录 AWS ,进入 EC2 管理界面
点击 ELASTIC BLOCK STORE > Volumes > Create Volume 创建(注意:Amazon 会按照你所选择的 EBS 容量进行收费,建议一开始不要选择太多,以后可以按需扩容。EBS 收费 )
右键刚刚创建的 volume,点击 “Attach Volume” ,把它挂载到你的 Instance 上
用 SSH 登录到 AWS EC2 Instance
1
ssh -i aws_damon_node_singapore.pem ubuntu@<ip>
在EBS volume 上创建文件系统
在上一个步骤中,创建了 EBS 并挂载到 Instance 后,你的这个 Instance 会创建一个/dev/sdf
,然后我们在 terminal 里面执行:
1
sudo mkfs -t ext4 /dev/sdf
挂载驱动器
1
2
sudo mkdir -p /data/db
sudo chown `id -u` /data/db
启动时列出 volume
1
sudo echo `/dev/sdf /data/db auto noatime,noexec,nodiratime 0 0 ` >> /etc/fstab
注意: 如果在这里遇到权限问题,可以切换到 root 用户在执行
挂载 volume
1
sudo mount -a /dev/sdf /data/db
下载 MongoDB
1
2
curl http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0 .2 .tgz > m.tgz
tar xzf m.tgz
使用 package manager 安装
1
2
3
4
5
6
sudo vi /etc/yum.repos.d/10 gen.repo
name=10 gen Repository
baseurl=http://download-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
使用 yum 安装
1
sudo yum install mongo-10 gen
配置 MongoDB
1
2
3
4
5
6
7
sudo vi /etc/mongodb.conf
oplogSize=8000
journal=true
dbpath=/data/db
logpath=/data/db/logs
启动 MongoDB
1
./mongodb-xxxxxx/bin/mongod
自动启动 MongoDB
首先需要知道:
mongod 命令路径:/usr/bin/mongod
MongoDB 目录:/data/db
Mongodb logs 文件:/data/db/logs/work.log
然后编辑 /etc/rc.local
,在里面加入:
1
/usr/bin/mongod -dbpath=/data/db --fork --port 27017 --logpath=/data/db/logs/work.log --logappend --auth
然后把 /data/db/mongod.lock
删除。
1
sudo rm /data/db/mongod.lock
启动服务:
1
/usr/bin/mongod -dbpath=/data/db --fork --port 27017 --logpath=/data/db/logs/work.log --logappend --auth
如果出现以下错误:
1
ERROR: child process failed, exited with error number 1
那么可以把 /etc/mongod.conf
设置 nojournal=true
,然后重新启动服务
参考资料:
安装 NodeJs
网上绝大部分教程都是使用 apt-get
来安装 node,但 Amazon Linux 64bit 里面是没有 apt 组件的,因此,我们使用源码直接编译安装。
安装 gcc-c++
下载 NodeJs
1
sudo wget http://nodejs.org/dist/v0.10.32 /node-v0.10.32 .tar.gz
解压文件,并检查配置
1
2
3
4
5
6
7
cd ~/node-v0.10.32 .tar.gz
tar xvf node-v0.10.32 .tar.gz
cd node-v0.10.32
./configure
安装 NodeJs
安装可能需要等待的时间比较长
检查安装是否成功
如果能够成功返回 node 的版本号,说明已经安装成功
安装 ExpressJS 和 AngularJS
1
2
npm install express
npm install angular
使用 forever 启动 NodeJS
forever 一个用来持续(或者说永远)运行一个给定脚本的简单的命令行工具。简单来说,就是可以可以启动、停止和重启我们的 app 应用的工具。Forever Github 地址
1
2
sudo npm install forever -g
详细使用方式请 Google 之。
常见问题
MongoDB - error:13 Permission deny
安装好 MongoDB 后,使用命令 mongod
启动 Mongo 时,可能会遇到 permission deny 的问题:
1
exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
这是因为当前的用户没有权限访问 /data/db
目录
1
2
chown <username> /data/db
-bash: node: command not found
如果出现 -bash: node: command not found
错误,先检查 node 是否已经真的安装了:
1
2
3
4
5
6
7
8
9
10
11
ls -l /usr/local/bin | grep node
>> -rwxrwxr-x 1 root root 11515348 10 月 1 03 :48 node
>> lrwxrwxrwx 1 root root 38 10 月 1 03 :52 npm -> ../lib/node_modules/npm/bin/npm-cli.js
ls -l /usr/local/bin/node
>> -rwxrwxr-x 1 root root 11515348 10 月 1 03 :48 /usr/local/bin/node
如果出现上面的结果,那么 node 已经安装了,那么可能就是编译路径未配置,配置编译路径,在 /etc/profile
文件里面,添加两行:
1
2
export PATH="$HOME /local/node/bin:$PATH "
export NODE_PATH="$HOME /local/node:$HOME /local/node/lib/node_modules"
然后重启系统:
-bash: npm: command not found
安装好 Node 后,可以使用 npm 来安装 AngularJS 和 Express,但使用 npm 的时候,可能会出现错误:-bash: npm: command not found
在 terminal 里面输入以下命令解决:
1
2
3
4
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
如何开放 AWS EC2 Instance 的 80 端口
Go to the Security Group settings in the left hand navigation
Find the Security Group that your instance is apart of
Click on Inbound Rules
Use the drop down and add HTTP (port 80)
Click Apply and enjoy