【问题标题】:Deploying nodejs files on shared hosting在共享主机上部署 nodejs 文件
【发布时间】:2019-07-12 13:50:08
【问题描述】:
  1. 在 PHP 中,我曾经将文件放在 public_html 文件夹中。我对 nodejs 做了同样的事情,并使用“forever start app.js”启动了我的应用程序。路由器按预期工作,但我可以在浏览器中看到我的 nodejs 源代码,例如http://example.com/app.js展示了app.js的源码。

  2. 在一些教程中,他们将文件放在 /var/www/html/ 中并启动应用程序。 public_html 和 /var/www/html 有什么区别?

  3. 我使用的是共享主机,因此我无权将文件放在 /var/www/html/ 中。我在 /home/%username% 文件夹中部署了 nodejs 文件并访问了http://example.com/app.js。这次源代码不可见,路由器按预期抛出 404 错误页面。 (在 /home/%username% 部署之前删除了 public_html 中的文件)

  4. 索引页路由器未按预期工作。路由器收到的不是“/”或“/index”,而是索引页的“/index.html.var”(http://example.com/)。

请指导我在共享主机上安全地部署 nodejs 应用程序。

【问题讨论】:

    标签: javascript node.js server shared-hosting


    【解决方案1】:

    呃,不,Node.js 不同,它不是 PHP。 Node.js 中的程序就像 C/C++、Python 或任何其他通用编程语言一样,它可以控制(很可能)整个服务器,因此它不能部署到共享主机上。

    你至少需要一个便宜的 VPS(虚拟专用服务器,云服务器),现在非常便宜,与共享主机相当。

    首先,我建议 Heroku,免费服务器:https://www.heroku.com

    编程笔记: Node.js 是服务器端语言,它不像传统 JS 那样在浏览器中运行,你不会通过 URL 访问它,除非你使用 Express.js 或那种库创建网络服务器。

    使用 Express.js 在 public_html 中服务器静态文件的示例

    • 将您的 server.js(或 app.js,或您放入的任何内容)放在 public_html 之外,不要将您的 Node.js 代码放在那里。
    • 例如,当您将 app.js 放在 public_html 外面时,以这种方式提供静态文件:

      app.use('/static', express.static('public_html'))

    • 在以/static 开头的 URL 路径访问您的文件,或使用以下中间件用于在根 URL 路径处服务器静态文件。:

      app.use('/', express.static('public_html'))

    参考:http://expressjs.com/en/starter/static-files.html

    【讨论】:

    • 你明白了。我认为在 public_html 上部署 nodejs,快速路由器将负责隐藏我的源代码并仅提供静态文件,但事实并非如此,它提供 public_html 中的所有文件。在 VPS 中,我应该在哪里部署 nodejs? (哪个目录?)为什么'/'或'/index'页面在快速路由器中被接收为'/index.html.var'? app.use('/',index) // 没用 app.use('/index.html.var',index) //这个服务的索引页面例如(example.com)
    • 知道了。对于索引页面,快速路由器正在获取“GET /index.html.var”而不是“/”或“/index”。我使用 morgan 模块登录并在导航到主页时得到“GET /index.html.var”。有人可以帮我解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2018-06-07
    • 2020-11-29
    • 2014-11-01
    相关资源
    最近更新 更多