美文网首页微信小程序开发随手记
从购买阿里云 ECS 服务器到搭建 Egg.js 运行环境

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

作者: 望穿秋水小作坊 | 来源:发表于2020-06-18 16:52 被阅读0次

一:本地终端连接到阿里云服务器 (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"

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/kqgsxktx.html