在EC2上安装MEAN环境

搭建决策树项目外网DEMO尝试几个地方后,最后选择了EC2(Amazon Elastic Compute Cloud)。选择的是最经济便宜的Amazon Linux AMI系统t2.micro型(前期免费)。因为是基于Red Hat的发行版本的系统,操作和在实验室的centos类似,本文结合了上一篇搭建NodeJS环境,并包含安装MongoDB的事宜,当然还包括扰人的Amazon远程连接的安全机制了。


  1. 使用PuTTY连接

    首先需要将EC2生成的私钥(.pem)转换为PuTTY支持的格式(.ppk)。打开PuTTYgen,按照图或者官方文档来操作。

    生成好密钥后,使用PuTTY来远程连接主机,在椭圆方块内写入ec2-user@public_dns_name或者public_ip(这两个值都可以在生成的实例中找到),注意两个方块内的值无误就好了。

    打开左边的Connection->SSH->Auth,导入刚才生成的**.ppk即可。

    在第一个配置时,远端主机总是不认我的私钥,网上建议是将主机镜像导入到一个新实例。不过我是简单粗暴地新建了一个实例。进入console后可以进入root模式来安装一些包。

  2. 安装NodeJS

    首先注意不要直接按照上一篇文章安装NodeJS,因为AMAZON的上的gcc版本高于4.8,make NodeJS时会报错V8编译错误(./deps/v8/src/checks.h:271:5: note: in expansion of macro ‘SEMISTATICJOIN’ SEMISTATICJOIN(StaticAssertTypedef, LINE)),所以需要安装低版本的gcc,我安装的是4.7.3。命令如下

    # wget -c http://ftp.gnu.org/gnu/gcc/gcc-4.7.3/gcc-4.7.3.tar.gz
    # tar zxvf gcc-4.7.3.tar.gz
    # cd gcc-4.7.3
    # ./contrib/download_prerequisites
    # ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    # make
    这个make时间超长,保持耐心
    # make install
    

    检查一下版本,安装NodeJS(v0.10.35,高版本安装bcrypt包暂不友好)就能成功,当然这里因为bash找不到gcc命令配置bash也失败,我就简单粗暴地新建一次实例。

  3. 安装mongoDB

    接下来的安装就比较顺利了。

    # wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.7.8.tgz
    # tar zxvf mongodb-linux-x86_64-2.6.7.tgz
    # mv mongodb-linux-x86_64-2.6.7 /usr/local/mongodb
    # cd /usr/local/mongodb
    

    启动时使用参数 --smallfiles避免报ERROR: Insufficient free space for journal files,也记得先建立文件夹/usr/local/mongodb/data以及/data/db、logs。

    # ./bin/mongod --smallfiles --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/logs/mongodb.log --fork
    开机自启动
    # echo "/usr/local/mongodb/bin/mongod --smallfiles --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/logs/mongodb.log --fork" >> /etc/rc.local
    
  4. 传源码运行服务器

    使用WinSCP传输文件,记得在高级设置中将**.ppk私钥导入SSH验证,主机名单使用public_dns_name就好。源码传好后安装依赖(npm install),运行(使用nohup ndoe add &命令保持运行状态),不过关闭就需要直接kill程序了。


断断续续的工作量大致为1天,其中建立连接和安装gcc耗时最多。操持Linux就是需要耐心,共勉之。封面放了一张与内容无关的图。

References:
1. Amazon官方文档
2. Linux使用root用户
3. 关于make v8 error的讨论
4. 安装gcc
5. 安装mongoDB