在 cPanel 面板的虚拟主机上安装 Node.js 需要开通 SSH 权限,具体可以咨询主机商。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,简单的说就是运行在服务端的 JavaScript,比如 Ghost 博客等程序就是基于 Node.js 构建的。今天这个教程就是教大家如何快速、轻松的在 cPanel 虚拟主机上安装 Node.js 环境。

安装 Node.js 和 npm

这里有几个简单的步骤来安装 Node.js 和 npm(Node.js 的包管理器),执行以下步骤即可安装。

使用 SSH 登录你的帐户(如果你的帐户没有开通 SSH 权限,请联系主机商)。
登录 SSH 之后,执行以下命令:

cd ~
wget https://nodejs.org/dist/v7.9.0/node-v7.9.0-linux-x64.tar.gz

上面的命令下载的是 v7.9.0 版本,如果你需要安装其他版本,可以在这里找到下载地址:https://nodejs.org/dist/,请下载 Linux x64 版本,tar.gz 格式的压缩包。

输入以下命令解压 Node.js 文件:

tar xzf node-v7.9.0-linux-x64.tar.gz

为了节省空间,可以将下载压缩包删除了:

rm node-v7.9.0-linux-x64.tar.gz -f

将解压出来的文件夹重命名为 nodejs:

mv node-v7.9.0-linux-x64 nodejs

现在安装 node 和 npm 二进制文件:

mkdir ~/bin
cp nodejs/bin/node ~/bin
cd ~/bin
ln -s ../nodejs/lib/node_modules/npm/bin/npm-cli.js npm
cd ~
npm install -g npm

到这里,Node.js 和 npm 都已经成功的在你的账户下安装,可以输入以下命令进行验证:

node --version
npm --version

命令已经安装在你账户下的 ~/bin 目录中,默认情况下,你可以在帐户中的任何目录运行 node 和 npm。

如何启动 Node.js 程序

现在已经安装好了 Node.js,就可以运行 Node.js 程序了。但是,具体的步骤取决于程序的配置。

方法1:使用 npm

有很多第三方程序以及生产环境下的程序(比如 Ghost)可以使用 npm 程序启动,输入以下命令:

nohup npm start --production &

使用 nohup 后台命令可以确保即使你退出当前终端会话,程序也将继续运行。

使用这个方法启动,应用程序必须有一个有效的 package.json 文件,package.json 文件中包含 npm 程序读取的项目元数据,以确定如何启动应用程序,管理其依赖关系等等。

可以在这里查看 npm 的 package.json 文件中文文档:http://mujiang.info/translation/npmjs/files/package.json.html

方法2:直接运行 node

对于一些简单的程序,或者任何没有 package.json 文件的程序,你可以直接运行对应的 node 可执行文件,例如:

nohup node app.js &

但是,你将无法使用 npm 来管理这个程序。

同样的,使用 nohup 后台命令可以确保即使你退出当前终端会话,程序也将继续运行。

如何停止 Node.js 程序

只需要执行以下命令,即可停止 Node.js 程序:

pkill node

以上命令执行后将立即停止所有正在运行的 Node.js 程序。

将 Node.js 程序集成到 Web 服务器

既然已经在虚拟主机上成功运行了 Node.js 程序,根据你正在运行的 Node.js 程序的类型,你可能希望能够使用 Web 浏览器访问它,为此,你需要为 Node.js 程序选择一个未使用的端口进行监听,然后定义 Rewrite 规则,将访客重定向到 Node.js 程序。以下步骤将演示如何执行此操作:

在虚拟主机的 public_html 目录下新建一个 .htaccess 文件(如果是附加域或者子域,请把 .htaccess 文件放到对应的网站根目录),将以下代码添加到这个文件中(如果你使用 cPanel 面板的文件管理器,需要点击右上角的设置,勾选显示隐藏文件才能看到点开头的文件):

DirectoryIndex disabled
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:XXXXX/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:XXXXX/$1 [P,L]

将上面两行 RewriteRule 后面的 XXXXX 替换为你的 Node.js 程序监听的端口。在虚拟主机上运行 Node.js,你必须选择一个未使用的端口,并且端口号必须在 49152 ~ 65535 之间(部分服务器可能开启了防火墙,无法使用自定义的端口,具体需要咨询主机商)。

正常情况下,保存好 .htaccess 文件之后,你的网站的访客将被重定向到在指定端口上侦听的 Node.js 应用程序。
如果你的程序无法启动,可能是你选择的端口已经被使用,可以检查应用程序日志中的错误代码,比如 EADDRINUSE,表示端口正在使用。如果是这样,请选择其他端口号,并更新应用程序的配置和 .htaccess 文件,然后重试。

最后修改:2021 年 04 月 14 日
如果觉得我的文章对你有用,请随意赞赏