【发布时间】: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