AWS服务器搭建个人网站

开始前先打个广告,使用koa搭建的个人网站图米粒,一个专注豆瓣相册分享的网站。先前使用了阿里云的免费15天服务器,下午刚部署完成,晚上就被封了80端口。也懒的去备案了,所以迁移到了AWS上。不用担心80端口被封掉,而且能免费使用1年,哈哈哈。下面就记录下如何在aws上部署node项目,图米粒使用了koa+mysql+nginx,也算是一个环境搭建记录吧,方便后面查看。

申请aws账号

首先需要去aws主页注册一个亚马逊账号,注册好后根据AWS账户的基本注册步骤:

  1. 创建账号(CREATE ACCOUNT)
  2. 填写支付方式(PAYMENT METHOD)
  3. 身份确认(IDENTITY VERIFICATION)
  4. 选择支持计划(SUPPORT PLAN)
  5. 最后确认(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部署

  • 安装gitapt-get install git
  • 配置git账户:
1
2
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
  • 生成git sshssh-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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
server_name toomany.co;
return 301 http://www.toomany.co$request_uri;
}
server {
listen 80;
server_name www.toomany.co;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:10080;
}
}

配置完重启nginx后,直接访问你的域名,就能看到你所配置的项目了。当然,这里你服务器的ip事先已经关联你的域名了,我的域名是在godaddy上买的,可以参考这个介绍如何绑定你的服务器。

小结

服务器配置node环境备忘录