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
相关产品推荐
相关产品推荐

