【问题标题】:How to avoid permissions problems with node and nginx directory structure?如何避免 node 和 nginx 目录结构的权限问题?
【发布时间】:2022-02-07 18:21:02
【问题描述】:

在我的生产服务器上,我成功地使用 nginx 来托管一个静态站点并作为节点应用程序的反向代理。目前node应用在/home/myUserName/apps,站点在/var/www/siteDomain.com/html

在我的本地/开发机器上,html 目录位于我的应用程序目录 (../apps/html) 中。我想在生产环境中使用相同的目录结构,这样我就可以克隆我的 git 存储库,然后运行 ​​npm install 以防 package.json 发生变化(node_modules 在 .gitignore 中)。

/var/www/siteDomain.com 中使用 git 和 npm 时出现权限问题,因为所有者是 root 并且 siteDomain.com 是 drwxr-xr-x。我可以使用 sudo git 克隆我的 repo,但是所有子目录(包括 html)都归 root 所有,这会导致问题(必须使用 sudo npm,我读过它会产生更多问题,无法在 ftp 中操作文件......) .

我可以这样做的另一种方法是将 repo 克隆到 /home/myUserName/apps,其中所有内容都归我的非 root 用户所有,然后将 nginx 配置文件更改为指向 /home/myUserName/apps/html 作为静态站点的根.

在使用 git 和 npm 时,构建目录以使我不会遇到权限问题的最佳方法是什么?将 html 根目录指向 /var/www 之外的内容是否异常或将来会出现问题?

附:我的本地机器是 Windows,我对 linux(在生产服务器上运行)不是很有经验

【问题讨论】:

    标签: node.js git nginx directory-structure


    【解决方案1】:

    您可以在/home/username/projectname创建项目目录

    在没有 root 权限的情况下运行 nginx,如下所述。

    在您的/etc/nginx/nginx.conf 中添加/更改以下内容:

    user nginx;
    

    您应该递归地创建用户并授予对 webroot 目录的权限。

    这种方式只有主进程以root身份运行。因为:只有root进程才能监听1024以下的端口。网络服务器通常运行在端口80 和/或443。这意味着它需要以 root 身份启动。

    以非root用户身份运行主进程:

    更改以下内容的所有权:

        error_log
        access_log
        pid
        client_body_temp_path
        fastcgi_temp_path
        proxy_temp_path
        scgi_temp_path
        uwsgi_temp_path
    

    将监听指令更改为1024以上的端口,以所需用户登录并通过nginx -c /path/to/nginx.conf运行nginx。

    并且你的node目录必须放在/home/username/projectname。 将node用户、nginx用户和git用户添加到公共组并检查项目权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2020-06-21
      • 1970-01-01
      • 2018-01-06
      • 2013-05-23
      • 2014-04-08
      相关资源
      最近更新 更多