【问题标题】:I have Godaddy Shared Web Hosting I need to host node.js website can host site? [closed]我有 Godaddy Shared Web Hosting 我需要托管 node.js 网站可以托管网站吗? [关闭]
【发布时间】:2017-03-01 23:02:30
【问题描述】:

任何人都有关于如何在 Godaddy 上安装节点服务器的想法或参考。我们有 Godaddy 共享主机,它提供完整的 Cpanel 并希望自定义此共享主机。要遵循的步骤是什么?我们是否可以通过在 Cpanel 设置中进行编辑来自定义这种托管?

我曾尝试托管 Node.js 网站,但无法启动并运行它显示的是纯 HTML 编码的网站,而不是用户界面。

【问题讨论】:

  • 我们得到了解决方案,因为 GoDaddy 在共享计划中启用了节点和 Python 托管。
  • 嘿巴维克。可以分享一下链接吗。他们说要使用 VPS 而不是共享主机。我对此有点困惑。面临与您相同的问题
  • 在我的 gatewayforweb 服务器中 -> 当我输入命令 node app.js -> 它说权限被拒绝。这个有什么解决办法?

标签: node.js server hosting godaddy-api website-hosting


【解决方案1】:

是的,即使是最便宜的共享主机层也可以做到这一点。 @nebulr 说明是正确的。这是一个稍微更新和扩展的版本,适合像我这样的菜鸟。

(1) 在您的共享主机帐户上启用 SSH:

登录您的 GoDaddy 主机并打开 SSH 访问(在仪表板上,位于右下角的“设置”中)。记下 cPanel 登录用户名,如果您不记得,请更改密码。 请注意,您可能还需要在 CPanel 中的“安全”和“SSH 访问”下创建密钥。

(2)自行安装nodejs程序:

https://nodejs.org/en/download/ 下载 Node.js 二进制文件特别是您需要 Linux x64 版本(直接链接https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz

在您的计算机上解压缩此 .tar 文件并在里面查找 bin 文件夹(在 Mac 上,您可能需要像 The Unarchiver 这样的程序来解压缩它)。 bin 文件夹将有一个名为“node”的文件,大小约为 40Mb。这个“节点”文件是我们将在这个包中使用的唯一东西。

使用CPanel 文件管理器或FTP 程序,在/home/yourUserName/ 的服务器上创建一个名为“bin”的文件夹,并为其授予755 的权限。注意这不在@ 内987654327@.

将“节点”文件上传到/home/yourusername/bin/

(3)创建一个简单的nodejs脚本:

打开一个文本编辑器(如 Sublime)并创建一个名为“app.js”(或其他)的新文件:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('NodeJS server running on Shared Hosting\n');
});

server.listen(port, hostname, () => {
  console.log('Server running at http://${hostname}:${port}/');
});

请注意,这只是来自https://nodejs.org/en/docs/guides/getting-started-guide/的基本服务器应用程序

打开您的CPanel 文件管理器或FTP 程序,并将app.js 文件上传到/home/yourusername/public_html/

(4)修改.htaccess文件:

使用您的 FTP 程序将这些行添加到 .htaccess 文件中:

RewriteEngine on
RewriteRule (.*) http://localhost:3000/$1 [P,L]
请注意,.htaccess 文件可能默认为空白。另请注意,如果您是勇敢的或 1337,您可以在 SSH 中使用 nano、vim 或 emacs 来编辑 .htaccess 文件。


(5)启动节点服务器:

通过打开 Putty (Windows) 或终端 (Mac) 并在命令行键入:ssh username@website.com(其中用户名是您的主机帐户的 cPanel 登录名)通过 SSH 连接到 godaddy 服务器 服务器应以username@website.com's password: 响应,这是您输入cPanel 登录密码的地方。

注意:如果这是您第一次通过 SSH 连接到服务器,您将收到一条消息:The authenticity of host 'X.X.X.X' can't be established. RSA key fingerprint is XXXX. Are you sure you want to continue connecting (yes/no)? 键入 yes 并继续。

输入cd public_html 导航到/home/yourUserName/public_html/。通过键入以下内容启动节点服务器脚本:node app.js & 几秒钟后,您应该会看到以下消息:Server running at http://127.0.0.1:3000/

(6) 看看:

打开网络浏览器并输入您网站的 URL。您应该会得到一个带有文本NodeJS server running on Shared Hosting 或您在上面app.js 的第9 行中输入的任何消息的白页。 请注意,您不能在共享主机帐户上使用 IP 地址,您需要使用域名。

【讨论】:

  • 太棒了 - 它正在工作。您刚刚为我节省了很多我本可以花在云上的钱。
  • 谢谢你!我唯一担心的是……你怎么阻止它?我似乎无法停止服务器。有什么解决办法吗?
  • 非常感谢,但是您如何使用 https 进行这项工作?我已经尝试了好几天了。有没有简单的解决办法?
  • 太好了。优秀!!!
  • 网站网址是什么?我要转到子目录吗?如果我这样做,恐怕我现有的 Wordpress 页面会消失......
【解决方案2】:

我通过以下方式在 godaddy 共享主机上安装了节点:

  1. SSH 到 Godaddy 服务器

  2. 在主文件夹中安装 nvm

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash  
    
  3. nvm install 10.14.0 (或首选节点版本) 注意:如果你在$nvm --version时遇到nvm command not found,只需关闭并重启SSH终端

  4. 在要运行节点应用的站点文件夹中,添加.httaccess文件

    ~/public_html/site folder/.htaccess
    

    重写引擎开启

    RewriteRule (.*) http://localhost:3000/$1 [P,L]
    

注意:.htaccess 可用于定位单个文件夹,更改会立即生效,无需重新启动服务器。

  1. 按照@nebulr 的指示在站点文件夹中运行您的 app.js 或节点服务器

    $node app.js &
    

【讨论】:

  • 我和godaddy家伙谈过。他们说共享主机不提供 ssh 访问权限
  • 在第 3 步中。抛出错误:node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by node)(Goddady 共享托管服务器)
  • ssh 可用于 godaddy 上的共享主机。
【解决方案3】:

另一种方法是通过 NVM。首先使用 SSH 连接到您的服务器。然后有一个 curl 命令允许您通过 bash 脚本安装 NVM:

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

对我来说,还需要两个额外的步骤:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

来源:

【讨论】:

    【解决方案4】:

    正如@nebuir 所说,可以使用 GoDaddy 的共享主机选项运行您的 node.js 开发的应用程序,因为我刚刚这样做了。 .htaccess 部分是完成这项工作的关键。我需要添加的唯一另一行是

    RewriteRule ^index.html.var$ http://www.yoursite.com:3000/$1 [L,P,QSA]
    

    之前

    RewriteRule  (.*)  http://www.yoursite.com:3000/$1  [P,L]
    

    【讨论】:

    • 根本没用
    【解决方案5】:

    是的,这是可能的。不知何故,我从未见过有人真正正确地回答了这个问题。这适用于最基本的共享托管计划。我已经成功地设置了几种不同的方式。我认为第二个可能是你想要的

    1. cgi节点 http://www.cgi-node.org/home

    基本上这取代了灯栈上的 PHP。您可以像运行 PHP 一样通过节点运行 javascript。这与 node js 具有所有相同的功能,但仅适用于模板渲染。

        <html>
        <body>
         <?
           var helloWorld = 'Hello World!'; 
           write(helloWorld + '<br/>'); 
         ?>
         <?= helloWorld ?>
        <br/>
        <b>I can count to 10: </b>
    
        <?
          for (var index= 0; index <= 10; index++) write(index + ' ');  
        ?>
          <br/>
          <b>Or even this: </b>
        <?  
          for (var index= 0; index <= 10; index++) { 
        ?>
            <?= index ?> 
        <? } ?>
    
        </body>
    </html>
    

    2。独立服务器(适用于 NameCheap 主机和 GoDaddy 共享主机)

    在您的共享主机帐户中,您需要 SSH 才能执行此操作。因此,您可能需要升级或向他们的客户支持请求 SSH 访问权限。下载最新的 NodeJS https://nodejs.org/en/download/。共享主机可能是 linux 64 位。您可以通过运行在 linux 或 unix 上进行检查:

    uname -a
    

    下载 Linux 二进制文件并将下载的 bin/node(以及 bin/npm 文件,如果您想在服务器上使用 npm)文件放在 /home/username/bin/ 中(如果没有,请创建 bin 文件夹'不存在)在服务器上。将权限 755 放在节点二进制文件上。所以你应该在这里有一个新文件:

    /home/username/bin/node

    打开 /home/username/public_html 中的 .htaccess 文件并添加以下行:

    RewriteEngine on
    RewriteRule  (.*)  http://localhost:3000/$1  [P,L] 
    

    在 /home/username/public_html 中创建一个文件并将其命名为 app.js。在该文件中添加以下行:

    const http = require('http');
    
    const hostname = '127.0.0.1';
    const port = 3000;
    
    const server = http.createServer((req, res) => {
      res.statusCode = 200;
      res.setHeader('Content-Type', 'text/plain');
      res.end('NodeJS server running on Shared Hosting\n');
    });
    
    server.listen(port, hostname, () => {
      console.log(`Server running at http://${hostname}:${port}/`);
    });
    

    SSH 进入服务器运行这些命令:

    cd /home/username/public_html
    which node # this should return ~/bin/node
    node app.js & # This will create a background process with the server running
    

    如果您可以正确设置此设置,从长远来看,这将为您节省大量资金,而不是使用 AWS 或 Heroku 等。

    【讨论】:

    • 感谢 nebulr,这是一个巨大的帮助!一个问题,当我关闭我的 ssh 终端时,它会停止节点应用程序的运行。如何通过 cpanel 启动应用程序以使其保持运行。
    • 这很奇怪,node app.js &amp; 应该处理这个问题,因为&amp; 表明它应该在后台运行应用程序
    • 你是对的!抱歉,我从最后错过了 &。感谢大量帮助!
    • 我正在遵循以下指南:ferugi.com/blog/nodejs-on-godaddy-shared-cpanel 我几乎已经配置了所有内容,但是 .htaccess 部分有问题。为我的站点添加它时,我收到内部服务器配置错误。我可以在 SSH bash 中运行我的节点应用程序,所以我知道它正在工作。有什么想法可能是错的吗?
    • @drwbns 你有我能看到的错误代码吗?
    【解决方案6】:

    您有两种选择来托管节点应用程序。 - 从 godaddy 或 digitalocean 等处购买您自己的 VPS 服务器。 - Godaddy 本身提供了运行其节点实例的选项。请参考https://in.godaddy.com/pro/one-click-installation/node-js

    【讨论】:

    • 是的,我在 Godaddy 上共享主机。
    • 他们有什么提示我可以在我的共享主机上运行 node.js 站点吗?
    • @BhavikLimbani:不是共享主机。这是他们自己的节点实例,在 VPS 上运行。
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2021-02-11
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多