请教一下一般网站的目录规划放在哪里 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
simple2025
0D

请教一下一般网站的目录规划放在哪里

  •  
  •   simple2025 May 8, 2021 3035 views
    This topic created in 1814 days ago, the information mentioned may be changed or developed.

    我现在 python 的代码在服务器上面是放在 ~/code 里面,但是这个有一个问题

    ~ 这个目录应该无法在挂载了把, 因为我碰到 磁盘空间占满了,需要挂磁盘

    难道应该挂载在 ~/newcode 这个目录下面?

    还有一个问题,为什么 宝塔 /www 的 owner 是 root 呢,按理来讲不是应该是 www 这个用户的吗

    20 replies    2021-05-10 01:23:09 +08:00
    no1xsyzy
        2
    no1xsyzy  
       May 8, 2021
    /www 这个地方根本就是不符合 FHS,应是 /var/www
    可以 grep www /etc/passwd 看看有没有 www 这个用户,通常也不是叫 www 而是 www-data 之类的
    另外,www-data 无法完成系统维护工作,宝塔这种维护工具的拥有权当然不应该给其他用户。

    ~ 不是一个确切的目录。而且一会 ~/code 一会 ~/newcode 根本搞不懂你到底想说什么。
    nbweb
        3
    nbweb  
       May 8, 2021
    网站目录一般是 /var/www 吧
    simple2025
        4
    simple2025  
    OP
       May 8, 2021
    @no1xsyzy ~就是${HOME} 这个目录呀, ~/code 是我 py 代码部署在这里, ~/newcode 是说如果要增加磁盘,这个磁盘应该挂在这里?
    wednesdayco
        5
    wednesdayco  
       May 8, 2021
    @chenqh 新加磁盘不是 /mnt 里么- -
    simple2025
        6
    simple2025  
    OP
       May 8, 2021
    @wednesdayco 新加磁盘要挂载的呀
    aristolochic
        7
    aristolochic  
       May 8, 2021   4
    按照设计来讲是应该放到 /srv 下面的,/var/www 也是个流行的选择,可实践起来却真的不一定。
    首先是发行版(的打包者)就有脾气,同样是安个 Nginx,得有那个告诉你 Nginx 跑起来的静态目录吧,那个 sites-available/default 的 root 目录就不一样:
    SUSE 系列的挺守规矩,就放在 /srv 里面; Debian/Ubuntu 和 RHEL/CentOS 都放在 /var/www,/srv 目录里面基本上默认啥都没有; Arch 系 /srv 下面倒是给你放了两个空文件夹 ftp 和 http,你以为要放在 /srv/http 那里了吗?当然不,是放在 /usr/share/nginx 下。
    这就是另一种范式。系统打包的东西你真不知道装在哪儿,因为规范没那么强力,尤其是像 Arch 这样的八成就跟着上游走了。自己编译的、闭源的,没准还放在 /opt 里面。
    我的推荐是在以下几个里面选:/srv, /var/www, /www, /opt 。前两者好多人都用,生态上也基本就认这两个,合理;/www 的话也见不少人用过(排除宝塔面板),但可能有一半都是 /var/www 的软链接;/opt 的话,比如说打包成 docker 就挺不错的,如果用户不想要了,可以一键删干净。
    放家目录可就算了吧,自己玩儿的可行,真要部署可就没听说过了。部属用的用户比如 deploy 或者服务用的用户 www-data 哪儿有家目录啊?难不成放你普通用户家目录?凭啥啊,折腾用户组多费劲。再说 systemd 服务指向的工作目录是家目录下的一个子目录,心里不膈应吗。
    对说到部署,还有一种选择是听工具链的选择。已经有人提到了,宝塔面板用 /www 。各有各的喜好,比如用 Capistrano 部署 Rails,就是 /var/www 。人家 Tomcat 还直接放在 webapp 呢,不就从根源上没这码事儿吗。
    simple2025
        8
    simple2025  
    OP
       May 8, 2021
    @aristolochic 大佬,那 /srv 和或者叫 /var/www 改用什么权限呢 owner `root` 然后 755?
    simple2025
        9
    simple2025  
    OP
       May 8, 2021
    @aristolochic 如果是 755,那如果要写文件,不是要用 root?
    aristolochic
        10
    aristolochic  
       May 8, 2021
    @chenqh 这不得看场景嘛……我是利用了 www-data 用户组,把执行可执行文件的用户加进去,然后服务目录 755 g+s 。不好说算不算好实践。(要设置 gid bits 是部署时复制文件的 hack,没啥别的意思)。执行用户为什么一定要是 root 呢,没这个规矩啊
    simple2025
        11
    simple2025  
    OP
       May 8, 2021
    @aristolochic 755 不是 group 用户只有读权限和可执行权限吗?没有写权限呀
    simple2025
        12
    simple2025  
    OP
       May 8, 2021
    @aristolochic 除非是 775?
    aristolochic
        13
    aristolochic  
       May 8, 2021
    @chenqh 用户组属于 www-data 是为了让 Nginx 能够服务 public 下的静态资源,以及允许读写 sock 文件,仅需要针对 sock 文件添加组的写权限而已。Nginx 又不负责写文件,为什么要给用户组写权限呢?文件是运行应用服务器的那个用户写的(对于我而言是 Rails 应用,创建了一个 web 用户)。
    部署和运行应用服务器的用户同时拥有这些文件 /目录,因为一来我希望 web 用户在 rvm 用户组下能用到 Ruby 虚拟环境,二来作为部署用户访问 rvm,能够使用 webpack 编译前端资源。如果不考虑自动化部署的话,/var/www/<YOUR_APP_NAME>完全是可以交给 www-data 的( www-data:www-data )
    no1xsyzy
        14
    no1xsyzy  
       May 8, 2021
    @chenqh $HOME 可不止一个
    www-data 的 $HOME 通常是 / 或者 /nonexisting 吧
    simple2025
        15
    simple2025  
    OP
       May 8, 2021
    @no1xsyzy 好吧
    aristolochic
        16
    aristolochic  
       May 9, 2021
    @no1xsyzy 神奇的是,www-data 虽然肯定是 nologin,但好多发行版给的家目录是 /var/www 。
    Arch 系的 Nginx 还不用 www-data,用 http,给的家目录是 /srv/http (这就和之前对上了
    或许这就是规范吧
    simple2025
        17
    simple2025  
    OP
       May 9, 2021
    @aristolochic 不对呀,大佬,`/var` 目录 不是 `root:root` 然后 755 的吗? `/var/www` 然后划给 `web:web` 然后 755?
    aristolochic
        18
    aristolochic  
       May 9, 2021
    @chenqh 对啊,/var 肯定是不能给除了 root 以外的别的东西的,但里面的东西比如 /var/www 归谁管就不一定了,不然为什么 Debian/Ubuntu 系创建 www-data 用户要设置 /var/www 为家目录呢?人家就是让你这么用的。
    我现在设置的是 web:www-data,属于 web 是因为没钱+懒,开发测试部署都在一个机器上,所以需要启动不同的 Puma 实例,又不想改默认的 Puma 配置,所以 sock 文件相对于服务器目录,那生产不就放在 /var/www 里面了(不是好范式,应该放在 /run 底下,不要学我),加上又有部署魔改需求和使用 RVM 的需要,就这么做了,正常应该是 www-data:www-data,因为我要用 Nginx 。你要是不用的话,假设用 web 启动你的服务器,那就 web:web 。建议新建一个用户,最好是一个服务一个文件
    simple2025
        19
    simple2025  
    OP
       May 9, 2021
    @aristolochic 被大佬弄晕了
    muzuiget
        20
    muzuiget  
       May 10, 2021
    如果机器就自己一个人用,随便放在哪里都行,无冲突即可。

    对,自从用了 Docker,再也不用考虑这种事了。
    About     Help     Advertise     Blog     API     FAQ     Solana     1175 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 23:44 PVG 07:44 LAX 16:44 JFK 19:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86