You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx相关文件及Rack应用的最佳存储路径咨询

Nginx相关文件及Rack应用的最佳存储路径咨询

嘿,我完全懂你这种纠结——处理Nginx路径、权限还有脚本/定时任务的适配真的很头疼!结合FHS规范和实际运维经验,给你梳理个清晰的方案,帮你避开权限坑和规范冲突:

先明确核心原则:别碰/usr的可写限制

你提到的FHS规范是对的:/usr是只读、可共享的目录,绝对不能放需要读写、随时间变化的内容(比如用户上传、脚本生成的文件、需要更新的配置),否则不仅违反规范,还会频繁触发权限问题,甚至在系统更新时被覆盖。

分类型推荐存储路径

1. Rack应用核心代码(只读/少变更)

推荐放在 /var/www/your_rack_app/ 下:

  • /var/www 是FHS指定的网站内容专用目录,大多数发行版的Nginx默认会识别这个路径,权限配置更贴合Web服务场景
  • 每个应用建独立子目录,方便隔离管理,比如 /var/www/my_rack_app/ 放Gemfile、应用代码等

2. 可写内容(用户上传、动态生成文件)

一定要放在支持可变数据的目录,推荐 /var/lib/your_rack_app/ 下的子目录:

  • 比如 /var/lib/my_rack_app/uploads/ 存用户上传文件,/var/lib/my_rack_app/cache/ 存应用缓存
  • /var/lib 是FHS专门给可变状态数据留的位置,权限上更容易配置成Web服务用户、脚本用户都能访问的模式

3. Nginx相关配置与日志

  • 自定义配置:沿用系统标准路径 /etc/nginx/sites-available/your_app.conf,然后软链到 /etc/nginx/sites-enabled/ 启用——这是几乎所有发行版的通用做法,既符合规范,又方便启用/禁用配置
  • 应用专属日志:别放自定义路径,直接用 /var/log/nginx/your_app/,/var/log 是日志文件的标准位置,Nginx默认有权限写入,脚本读取日志也不会有权限障碍

4. 你的bash/Ruby脚本

  • 和应用绑定的脚本:放在应用目录下的子文件夹,比如 /var/www/my_rack_app/scripts/,方便和代码一起管理
  • 系统级通用脚本:放在 /usr/local/bin/,这个目录是FHS给本地自定义可执行文件留的,不在系统包管理的管控范围内,而且默认在PATH里,定时任务调用时不用写全路径

权限优化小技巧

  • 创建一个统一的用户组(比如 app_ops),把Nginx运行用户(通常是www-data)、你的SSH登录用户、定时任务的运行用户都加入这个组
  • 给应用相关目录设置权限:目录用 750(组内用户可读写执行,外部无权限),文件用 640,既保证安全,又能让所有相关用户正常操作

这样配置下来,不管是SSH脚本调用、定时任务执行还是Nginx访问,都能最小化权限冲突,同时完全符合FHS规范,不会在后续运维中踩坑。

备注:内容来源于stack exchange,提问作者Rich_F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:57:36