开始前先打个广告,使用koa搭建的个人网站图米粒,一个专注豆瓣相册分享的网站。先前使用了阿里云的免费15天服务器,下午刚部署完成,晚上就被封了80端口。也懒的去备案了,所以迁移到了AWS上。不用担心80端口被封掉,而且能免费使用1年,哈哈哈。下面就记录下如何在aws上部署node项目,图米粒使用了koa+mysql+nginx,也算是一个环境搭建记录吧,方便后面查看。
申请aws账号
首先需要去aws主页注册一个亚马逊账号,注册好后根据AWS账户的基本注册步骤:
- 创建账号(CREATE ACCOUNT)
- 填写支付方式(PAYMENT METHOD)
- 身份确认(IDENTITY VERIFICATION)
- 选择支持计划(SUPPORT PLAN)
- 最后确认(CONFIRMATION)
这里需要注意第2点和第3点,绑定你的信用卡后,它会有个短信验证,会在你卡里扣除1美元,据说是能退给你的。还有就是身份确认的时候,填完手机号码后,会从亚马逊打过来一个pin码验证的电话,等听到让你输入pin码的时候,输入4位pin码就可以了。我当初验证了好几遍都通不过,后来干脆手机收不到打过来的电话了。最终用了公司的座机才搞定。最后申请成功后记得把绑定的银行卡删掉,不然1年后免费到期,就会在你的信用卡上扣钱了。
创建EC2实例
申请成功后,就可以创建实例了。这个创建流程网上有很多,随便搜一下就能出来很多。我当初就是参考了这个教程。里面选择配置的时候,如果选择了收费的选项,就会产生费用。免费的都会有标注。EC2默认是不开启80
端口的,所以需要自己手动去开启,我当初就被这个坑了很久。首先找到网络与安全NETWORK & SECURITY
,选择安全组Security Groups
,找到你正在使用的组,右键编辑入站规则Edit inbound rules
,添加规则,如下图
这样设置完后,就能访问80
端口了。
连接实例
在终端中输入chmod 400 xxx.pem
然后输入ssh -i "xxx.pem" ubuntu@your_public_ip
首次连接应该是ubuntu
账户,先切换到root
账户下面:
- 设置
root
密码:sudo passwd root
- 切换到
root
账户:sudo su root
到此为止,你已成功连上服务器,不过现在这台服务器什么都没有,下面我就来介绍下如何部署node环境。
Node部署
- 安装
git
:apt-get install git
- 配置git账户:
|
|
- 生成
git ssh
:ssh-keygen
- 安装
nvm
:可以参考这个 - 把你的项目代码拉到服务器本地:
git clone your_project_address
- 安装依赖:
npm install
- 安装
mysql
:参考文档,安装完后创建你需要用到的数据库,这里需要注意下编码问题,在创建数据库的时候要设置编码create database toomany character set utf8;
如果不设置编码,遇到中文的内容总会乱码,当初也是坑了我很久。 - 接下来全局安装一个
pm2
来启动node项目:npm install pm2 -g
。目前也没搞清楚它的配置文件,我这里还是用很原始的方法来启动的。NODE_ENV=production pm2 start server.js --name toomany --node-args='--harmony-generators'
- 跑起来后可以使用
pm2 list
查看正在运行的进程 - 通过
curl 127.0.0.1:10080
来查看是否已经成功跑起来了,如果返回如下结果就是ok了
下面就要通过nginx
把我们的域名反向代理到这个地址上面去 - 安装
nginx
:参考文档 - 配置
nginx
:
|
|
配置完重启nginx
后,直接访问你的域名,就能看到你所配置的项目了。当然,这里你服务器的ip
事先已经关联你的域名了,我的域名是在godaddy
上买的,可以参考这个介绍如何绑定你的服务器。
小结
服务器配置node环境备忘录