从购买阿里云 ECS 服务器到搭建 Egg.js 运行环境

一:本地终端连接到阿里云服务器 (ubuntu,其他系统步骤可能稍有出入,但是方法一致)

  1. 首先我们要保证我们终端能够连接到服务器,如果忘记阿里云服务器 root 登录密码,可以如下重置。


    重置密码(选择重置实例密码)
  2. 使用 terminal 终端进行远程连接

ssh root@100.100.100.100
然后输入我们刚刚重置的实例密码。

登陆成功就会出现这个提示
  1. terminal 能够默认长时间连接,不因为一小段时间未操作,就断开连接。

编辑服务器/etc/ssh/sshd_config,最后增加
ClientAliveInterval 60
ClientAliveCountMax 60
表示每 60 秒向客户端发起一次心跳,如果客户端无回应,则最多累计发送 60 次。

  1. 每次远程登录如果需要输入密码略显复杂,接下来配置 ssh 免密登陆。
  • 安装 ssh: sudo apt-get install ssh
  • 生成公钥私钥: ssh-keygen -t rsa (一路 Enter 回车键到底)
  • cd ~/.ssh 文件,会发现多了如下三个文件authorized_keys id_rsa id_rsa.pub
  • 将本地机器上的 id_rsa.pub 文件里面的公钥,拷贝到 服务器的 authorized_keys 文件中
  • 最后在服务端运行 service ssh restart 重启即可配置完成。再次运行 ssh root@100.100.100.100 就可以不需要输入密码直接登录了。

二:搭建环境

  1. 安装 nvm 这是一个 node 的版本控制器
  • 升级 sudo apt-get update 保证 apt-get 是最新版。
  • sudo apt-get install vim openssl build-essential libssl-dev wget curl git 安装一些环境必要包
  • curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash 安装 0.31.4 版本的 nvm,有时候因为网络原因会失败,可以多试几次。
  • 重启终端,然后用 nvm命令测试安装是否成功。
  1. 安装指定版本的 node
  • nvm install v8.15.1 安装指定版本
  • nvm use 8.15.1 当前环境使用指定版本
  • nvm alias default 8.15.1 指定默认 node 版本
  1. 查看并更换 npm,npm 是 node 的包管理器,会随着 node 自动安装
  • 作为国内开发,需要查看 npm 的源:npm config get registry
  • 如果源不是淘宝的,需换成淘宝源:npm config set registry https://registry.npm.taobao.org/
  1. 安装 nginx,因为 egg.js 需要使用 nginx 来做反向代理。
  • sudo apt-get install nginx
  • sudo /etc/init.d/nginx start 启动 nginx
  • curl http://localhost/ ping 一下这个地址,返回 Welcome to nginx! 表示安装成功。
  1. 为什么外网不能访问我们的首页呢?这是因为阿里云服务器有个安全组配置,我们需要去打开 80 端口。
点击这个开始进行安全组访问配置
把 80 和 443 端口打开来,因为后面我们需要配置 https
此时,通过外网浏览器就可以访问我们 nginx 首页啦

三:上传 egg.js 代码到服务器

  1. 使用 腾讯 git 代码管理平台,上传自己的代码
  2. 将我们阿里云远程服务器中 ~/.ssh/ 目录下的 id_rsa.pub 公钥加入到代码管理的 ssh 中。让远程服务器能访问我们的 git 代码仓库。
  3. git clone xxxx代码地址xxxx 即可。

四:利用 nginx 实现 egg.js 的反向代理,并且支持 https

前期提条件:有一个备案好的域名。

  1. 去 阿里云的 SSL 控制台,申请个人免费 SSL ,每个有效期只有一年,目前有完全免费的。


    SSL 签发状态
  2. 然后点击下载,会看到如下页面。

    证书下载

  3. 点击帮助,根据 nginx 帮助内容配置 nginx。

  4. 期间遇到任何问题,个人超过一个小时未解决,可以提交工单,你是阿里云付费用户,阿里云会有人帮你解决问题的。很强大!

  • 几个部署 SSL 需要用到的命令
  • tar zcvf cer.tar.gz cer 将本地证书打包成 cer.tar.gz 压缩文件
  • scp local_file remote_username@remote_ip:remote_folder 将本地文件传递到服务器
  • tar xvf cer.tar.gz 服务端解压缩文件
  • rm -rf cer.tar.gz 删除多余的压缩文件

确保 cer 目录放在 /etc/nginx/ 下,然后在 /etc/nginx/conf.d 文件夹下创建 myprogram-7001.conf 文件,并且填入一下内容

# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
    listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    server_name mt-app.runduck.cn;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
    root html;
    index index.html index.htm;
    ssl_certificate cer/3670617_mt-app.runduck.cn.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cer/3670617_mt-app.runduck.cn.key;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;   
    location / {
          proxy_pass http://127.0.0.1:7001;
    }
}   

server {
    listen       80;
    server_name mt-app.runduck.cn;
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}

注释掉 /etc/nginx/nginx.conf 文件内的 #include /etc/nginx/sites-enabled/*; 防止额外配置影响我们自己的配置。

  • 配置完成后用 sudo nginx -t 命令检查我们 conf 里面的配置是否正确。输出syntax is ok
  • sudo service nginx reload 重启 nginx 服务器

五:再安装一个 pm2,有部分 nodejs 代码需要用 pm2 执行

  • npm i pm2 -g
  • pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343