node.js - 我应该将我的 Node JS 应用程序放在哪里,以便可以通过主网站访问它?

标签 node.js ubuntu ubuntu-16.04 keystonejs

我最近在我的 home/myusername/myappname 目录中安装了一个 nodejs 应用程序(keystone)应用程序。

当我访问 www.mydomain.com 时,没有任何显示 - 即使在打开我的 nodejs 应用程序之后。

这些文件应该在哪里?

我正在运行 ubuntu 16.04。

过去我使用过 var/www 文件夹,但我没有使用 apache - 我需要手动创建这个文件夹吗?

谢谢!

最佳答案

要使您的应用程序可见,它必须正在运行(显然)并且可以在端口 80 上访问(如果您希望它在不向 URL 添加端口号的情况下可用)。

只要它正在运行,它在磁盘上的哪个位置都没有关系。

您不需要 Apache 或 nginx 或任何其他服务器。您的 Node 应用程序可能会监听端口 80。但也可以监听其他端口,而您的其他服务器(Apache、nginx 等)可以将请求代理到该端口。

但是,如果您的应用正在监听,例如端口 3000 那么您应该能够以 http://www.example.com:3000/ 的身份访问它.

此外,请确保您的域配置正确。这是 www 的 IPv4(或 IPv6 的 AAAA)记录subdomain 应该等于您的服务器的可公开访问的 IP 地址。

并确保您使用的端口未被防火墙阻止。

更新

要了解如何使用 Keystone 设置端口,请参阅:

  • http://keystonejs.com/docs/configuration/#options-server

  • 它可以在配置中更改,也可以使用以下命令运行您的应用程序:
    PORT=80 node yourApp.js
    

    代替:
    node yourApp.js
    

    但请记住,要使用低于 1024 的端口号,您通常需要以 root 身份运行程序(或添加更复杂的特殊权限)。

    这也意味着这将是您可以在此服务器上运行的唯一应用程序,即使您有更多域名。

    如果您不想以 root 身份运行或者您想托管更多应用程序,安装 nginx 并代理请求是最简单的。这样的配置称为“反向代理”——最好使用该短语搜索信息和教程。

    最简单的 nginx 配置是这样的:
    server {
        listen 80;
        server_name www.example.com;
        location / {
            proxy_pass http://localhost:3000;
        }
    }
    

    您可以将其设置为:
  • /etc/nginx/sites-available/默认

  • 或在不同的文件中,例如:
  • /etc/nginx/sites-available/示例

  • 然后符号链接(symbolic link)为/etc/nginx/sites-enabled/example

    修改配置后需要重启nginx。

    您可以在此处找到有关配置反向代理的更多选项:
  • https://www.nginx.com/resources/admin-guide/reverse-proxy/
  • 关于node.js - 我应该将我的 Node JS 应用程序放在哪里,以便可以通过主网站访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40746124/

    相关文章:

    mysql - 无法在 SSH 中设置 mysql 数据库

    amazon-web-services - Ansible Script dpkg lock on aws 启动 ubuntu 16.04

    node.js - Loopback 4不会生成构建文件

    node.js - 使用 Jade 模板进行插入和更新?

    node.js - Next.js 从文件夹内的文件获取静态路径名

    javascript - 我应该返回成功回调返回值吗?

    node.js - 我的机器上没有安装 Express

    node.js - 安装 yomen 时疑难解答。谁能帮我解决这个问题..!

    c++ - 在 linux (ubuntu) 上编译 SFML

    Java-错误 : Could not find or load main class