【问题标题】:Make nginx and node.js have a common root folder让 nginx 和 node.js 有一个共同的根文件夹
【发布时间】:2017-10-20 03:52:14
【问题描述】:

我已经搭建了一个Ubuntu服务器(16.04),安装了nodejs和nginx,并让它们一个个运行良好。 nodejs 在 3000 端口,nginx 在 80 端口。

现在对我来说唯一的问题是 ftp。我想让 nodejs 的 js 文件驻留在 nginx www 文件夹的子文件夹中,反之亦然。所以我可以一次上传所有文件。

我试图在 nginx /var/www/html/my_web_project 中创建一个符号链接,指向 nodejs 中的一个文件夹 /home/admin/www/my_web_project。 ..但是我遇到了访问被拒绝的无尽问题。

管理员主文件夹已加密,可能会导致问题?

无论如何,我不介意在某个地方有一个文件夹,nginx 和 nodejs 都希望在它们各自的子文件夹中找到它们的文件。

这是一个好方法吗,有人可以给我一些建议吗?

【问题讨论】:

  • 使用/usr/share/nginx/html,这通常是默认的 Nginx 位置。确保运行 Node 的用户对这些文件具有读取权限(阅读与用户和组相关的 Linux 文件权限)。 切勿以 root 用户身份运行 Nginx 或 Node! 我还建议阅读 Linux directory structure 以了解所有这些位置的含义。
  • 在我的安装中,nginx 位于 /var/www/html,我认为它是相同的。你的意思是我把节点文件(在我的例子中是一个 javascript 文件)放在那里,我就完成了。我明天会测试这个然后回来,累死了。 :) 非常感谢。
  • 似乎有所不同,在我的安装中,nginx 指向/usr/share/nginx/html,但/var/www/html 很好。但是,如果它是一个 Node 脚本(你不应该发送到浏览器),你应该把它放在 Nginx 无法访问的地方,例如 /usr/local/myapp 或类似的地方。
  • @Svenskunganka,我已经尝试安装和卸载 nginx 一百次了。它拒绝安装,除非我在“apt-get”命令之前写“sudo”。安装后,它创建了一个文件夹“/var/www/html”文件夹。我想在那里创建一个子文件夹,我还必须用“sudo”创建它,否则它会被创建为另一个用户。我有一个我自己(不是 root)创建的 index.html 文件,我想将它复制到这个文件夹中。当然可以,但是 nginx 无法读取该文件,因为它是由另一个用户创建的...... OMG!我该怎么做呢?!有什么方法可以让这个可行吗?
  • chown 给用户(通常是www-data)。请注意,您还可以使用sudo -u www-data mkdir somedir 以其他用户身份运行命令。 安装软件总是需要root权限(例如sudo),但你应该运行 nginx作为www-data用户(这是默认)而不是root,与您的节点脚本相同(可能为www-data,但任何没有sudo 访问权限的用户都可以)

标签: node.js linux ubuntu nginx


【解决方案1】:

Linux 有一个陡峭的学习曲线,但它实际上是值得的,因为我终于找到了一个可行的解决方案。

从安装 nginx 开始。即使您打算在 nodejs 中进行大部分开发,您也需要一个可以工作的 Web 服务器,即 nginx。

我浏览了这些指南:

https://serverfault.com/questions/433265/how-do-i-change-the-nginx-user

https://nevyan.blogspot.se/2016/01/install-setup-nginx-php-mysql-and-ftp.html

指南归结为以下命令:

sudo apt-get install nginx
sudo nano /etc/nginx/nginx.conf    
sudo nano /etc/nginx/sites-available/default

编辑 nginx.conf,指示 nginx 以用户 'my_user' 运行:

user my_user;

编辑默认配置,这里的关键行:

root /home/my_user/ftp/files;

然后重启你的 nginx 服务器。

结果应该是什么?简单的;我可以通过 ftp 将文件上传到我的网络服务器。

  1. 我通过 ftp 或 sftp 连接到“my_user”,因为它是我的用户主文件夹,所以我可以覆盖这些文件。避免了 linux 文件安全的大部分困难。 (我很难全部掌握。)
  2. 由于 nginx 以用户 'my_user' 运行,它也可以访问 /home/my_user/ftp/files 文件夹! (这一步我几乎疯了)
  3. nginx 的根文件夹设置为 /home/my_user/ftp/files,所以当我将新版本的 index.html 上传到该文件夹​​时,nginx 会立即使用它。

有效。 :)

nodejs 很容易安装,它似乎“开箱即用”。我基本上遵循了这个指南:https://kyup.com/tutorials/install-run-node-js-application/

我也想要 websocket,这是最简单的部分:

sudo npm install websocket

希望它对某人有所帮助,我在制作这项工作时很开心。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多