从零开始搭建 node 服务器 - 终于跑起来了

连接服务器

# 我直接用 mac 的 terminal 通过 ssh 连接
$ ssh 用户名@云服务器公网ip

# 比如我使用超级管理员账号 root 登录, 服务器公网 ip 为 xxx.xxx.xxx.xxx
$ ssh root@xxx.xxx.xxx.xxx

免密码登录

  1. 生成 ssh 公钥和私钥 ssh-keygen -t sra
  2. 一路回车, 最后会在用户根目录下的一个叫做 .ssh 的文件夹, 找到里面的 id_rsa.pub 文件, 复制里面很长的一串内容
  3. 先输密码登录远程服务器, 如果你的账户是 root, 那么打开 /root/.ssh/authorized_keys, 将刚才复制的内容粘贴进去, 保存, 下次连接就不需要输密码了, 如果没有这个文件, 手动创建即可

注意:

  1. 在 mac 系统下, 需要勾选 设置 - 共享 - 远程登录 这个选项
  2. 这里有个快捷的方法用来向一个文件里追加内容 echo 'some text' >> demo.txt

解决 linux 的中文乱码问题

# 1. 给系统添加中文字符编码
$ sudo locale-gen zh_CN.UTF-8

# 2. 给 /var/lib/locales/supported.d/ 下的 local(我并没有找到这个文件, 只有en这个文件)文件追加内容
$ echo 'zh_CN.UTF-8 UTF-8' >> en

安装 node 环境

据说通过 apt-get 安装的 node 版本低的吓人, 所以还是按照网上的办法先安装 nvm(一个 node 的版本管理工具), 再通过 nvm 安装 node

# 1. 安装 nvm (装完可能要重启终端, 也就是重新连接服务器)
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

# 2. 安装 node
$ nvm install node

# 3. 查看版本确保已经装好
$ node -v && npm -v

启动服务

  1. 直接 node server.js 启动成功了
  2. 然而我在本地浏览器输入服务器ip:端口号并不能访问
  3. 通过命令 netstat -apn 查看端口占用情况, 没有找到 server.js 启动服务监听的端口号
  4. 确保服务没有问题之后, 我又找到了这个命令 netstat -apn | grep 端口号 可以查看某个端口的占用情况,
    发现确实是 node 在监听没有问题
  5. 那为什么不能访问呢? google 之后发现有人说是防火墙的问题, 我一下想起来, 在建服务器实例的时候, 好像确实是让我选要开放哪些端口, 我选了 http 的 80, https 的 443 和一些其他的什么想不起来了
  6. 修改 server.js 里面的端口, 将它改成默认的 80 端口
  7. 启动服务, 本地浏览器直接访问服务器 ip, 奇迹出现了!

设置防火墙

# 1. 查看是否安装 iptables
$ whereis iptables
# 安装 iptables
$ sudo apt-get install iptables
# 添加规则, 开放 9999 端口
$ iptables -A INPUT -p tcp --dport 9999 -j ACCEPT
# 保存规则
$ sudo iptables-save
# 持续化规则(否则重启之后规则消失)
$ sudo apt-get install iptables-persistent
$ sudo netfilter-persistent save
$ sudo netfilter-persistent reload

补充内容

  • 新的 ubuntu 推荐使用 apt 代替原来的apt-get 来使用, 因为 apt 更好用 : )
  • 初次使用 apt 记得先 sudo apt update
  • 更新包 sudo apt update && sudo apt upgrade
相关文章
相关标签/搜索