上回我们在自己的 CentOS7 系统上安装了 PHP 并且让 PHP-FPM 与Web服务器 NGINX 相连。

这一回再说另外一个服务器端的编程语言—— Node.js

作为前端的开发者,Node.js 可以说是需要掌握的语言。其本身就是 JavaScript,只是可以直接在服务器上运行罢了。

当然,也可以用于制作各类命令行小程序,以后再作介绍。

安装 Node.js

安装 Node.js 有很多种办法。

  • 到官方网站下载 Binary 版本
  • 到官方网站下载 Source Code,然后再编译
  • 使用 nvm 之类的软件安装

考虑到前两种办法都比较麻烦,这里我比较推荐使用 nvm 安装 Node.js

nvm 的项目:https://github.com/creationix/nvm/

步骤1. 安装 nvm

curl 的话,直接执行下面的命令就可以了。

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

不过,要注意这个脚本是有时效性的。如果 nvm 有新的版本,请到官网看看新的脚本的链接。、

还有要注意,一定要在 root 的角色下运行,不然请自觉 sudo

安装好了就可以看到 => Close and reopen ... 字样。

此时,用一下 nvm --version 看一下安装好了没有。

如果没有,请执行一下 source ~/.bashrc

步骤2. 安装 node.js

第一步是设置一下 Node.js 的镜像到 npm.taobao.org

1
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

如果不这么做,就是直接下载官方的版本,下载速度很慢的。

第二步就是 nvm install --lts

这里的意思就是安装最新的 Node.jsLong term Support 版本,相对来说比较稳定,适合生产环境。

安装好了就会说 Now using node vx.x.x (npm vx.x.x) 的信息。

第三步就是设置默认的 Node.js 版本。

1
nvm alias default stable

不这么做的话,重启服务器之后你会发现 node 用不了。设置这个就是让 nvm 默认 use 稳定版,也就是 lts

步骤3. 试一下 Node.js

安装好了,就可以试一下新安装的 Node.js 啦~

执行命令 node -v 就可以看到现在使用的 Node.js 的版本号。

执行命令 npm -v 就可以看到现在使用的 NPM 的版本号。

步骤4. 安装 cnpm

因为原版的 npm 在国内安装东西是很慢的,要解决慢就一定要用镜像。

国内比较好的镜像就淘宝的 NPM 镜像

为了方便使用镜像并且不影响原本的 npm,我们建议安装 cnpm 作为 npm 的代替。

cnpm 就是使用了淘宝的 NPM 镜像的 npm

安装方法也很简单:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

只需要一步就可以安装好 cnpm

运行 cnpm -v 可以看到安装好了的 cnpm 的版本。

使用 Node.js

运行 Node.js

因为 Node.js 是运行一个Web服务器。所以它本身就已经有自己的端口了。

好比说我的这个 express 的项目,端口设置到 :4399

使用 node app.js 之类的手段让 Node.js 服务器运行起来。

那么访问 http://127.0.0.1:4399 就可以上你的网站了。

NGINX 反向代理

但是,我想访问特定域名的 :80 端口就可以访问网站。怎么办?

这个时候就是 NGINX 反向代理登场的时候。

对于网站的访客,只需要知道你的域名就可以访问到你的 Node.js 服务器。

NGINX 反向代理就是把用户对你的 :80 端口的通信转发到你的内部端口,如 :4399

那应该在 NGINX 里面怎么操作呢?

假设我的网站是 haha.comNode.js 服务器端口为 :4001

NGINX 的配置文件中加入:

1
2
3
4
5
6
7
8
9
10

server {
listen 80;
server_name haha.com;

location / {
proxy_pass http://127.0.0.1:4001;
}
}

nginx -s reload 重新加载一下配置就可以啦~

你也可以选择在 server 下多加一句 proxy_hide_header X-Powered-By;

这样就可以防止 express 的版本号泄露出来咯~

是不是很简单?

下一节介绍怎么在 CentOS7 下获取 Let's Encrypt 的免费证书来搭建 HTTPS 服务器。

除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

本文地址:https://blog.micblo.com/2017/01/19/CentOS7%E9%87%8D%E8%A3%85%E4%B9%8B%E8%B7%AF-Node-js%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8%E7%AF%87/