Web 服务的程序放在 /opt /var /etc /app /web 哪个好? Web 服务的数据呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
rv54ntjwfm3ug8
V2EX    Linux

Web 服务的程序放在 /opt /var /etc /app /web 哪个好? Web 服务的数据呢?

  rv54ntjwfm3ug8 2022-03-26 18:51:51 +08:00 6381 次点击
这是一个创建于 1298 天前的主题,其中的信息可能已经有所发展或是发生改变。

每种情况的人我都见过,google 查了很久说什么的都有,没有结论

48 条回复    2022-03-30 21:07:59 +08:00
yemoluo
    1
yemoluo  
   2022-03-26 18:53:38 +08:00
我懒,放在 /home/www 目录
Kobayashi
    2
Kobayashi  
   2022-03-26 18:54:21 +08:00 via Android
再帮你加一个 /srv
xy90321
    3
xy90321  
   2022-03-26 19:01:23 +08:00 via iPhone
/srv 貌似比较正统,因为 www 也是一个服务

公司项目比较懒,服务器在哪儿就放哪儿,所以一般是 /opt 下面

自己项目一般丢 /var 下面
CallMeReznov
    4
CallMeReznov  
   2022-03-26 19:24:00 +08:00
inetpub/wwwroot
ericguo
    5
ericguo  
   2022-03-26 19:25:36 +08:00
/var/www
dream4ever
    6
dream4ever  
   2022-03-26 19:28:10 +08:00
@CallMeReznov IIS 乱入,哈哈
liKeYunKeji
    7
liKeYunKeji  
   2022-03-26 19:33:18 +08:00 via iPhone
cd ../www/wwwroot/
wonderfulcxm
    8
wonderfulcxm  
   2022-03-26 19:35:10 +08:00 via iPhone
随便放吧,我就在根分区新建了一个 /web 目录,直观,也方便挂载分区,最主要小心 redhat 系 selinux 的权限设定。
Cbdy
    9
Cbdy  
   2022-03-26 19:39:35 +08:00
现在都用 docker ,放`/app`吧
jiangzm
    10
jiangzm  
   2022-03-26 19:43:47 +08:00
vm:
/var/www/xxx
/opt/app/xxx

docker:
/app/xxx
jim9606
    11
jim9606  
   2022-03-26 19:58:25 +08:00   1
如果按 FHS 规范的话是这样的:PREFIX 为 /usr/local (/usr 下通常是发行版软件包),主程序在$PREFIX/bin ,共享库在$PREFIX/lib ,配置文件在$PREFIX/etc ,数据在 /var/<appname>,日志在 /var/log/<appname>。如果还需要添加 systemd 服务单元,可以放 /etc/systemd/system 或者 /usr/local/lib/systemd/system 。
不过这样放太散乱了,不如把所有东西放一个独立目录下方便备份和搬运。典型做法是都放 /opt/<appname>,下设 bin 、etc 、lib 、var 等等。
LxnChan
    12
LxnChan  
   2022-03-26 20:34:23 +08:00
我自己的站都是 /var ,但这玩意应该也没有强制要求吧,放在某个目录下主要考虑的可能是权限问题,方便统一改一类的
Showfom
    13
Showfom  
PRO
   2022-03-26 20:42:06 +08:00
Debian 默认安装 Nginx 和 Apache 2 以后的默认 web 目录都是 /var/www
yaott2020
    14
yaott2020  
   2022-03-26 20:59:01 +08:00 via Android
我一般放在 /www
eason1874
    15
eason1874  
   2022-03-26 21:23:11 +08:00
没用文件存储的我喜欢 /var/www

用文件存储的我喜欢 /opt/www
westoy
    16
westoy  
   2022-03-26 21:24:18 +08:00
自己写的 web 程序我一般是新建一个用户然后放在这个用户的$HOME 下面
darknoll
    17
darknoll  
   2022-03-26 21:31:32 +08:00
/var/www
jacyl4
    18
jacyl4  
   2022-03-26 21:37:33 +08:00
放 /var/www ,因为这是 www-data 的 home 目录
jiangzm
    19
jiangzm  
   2022-03-26 21:40:08 +08:00
@jim9606 你这说的是软件
richangfan
    20
richangfan  
   2022-03-26 21:54:01 +08:00
创建一个 www 用户,设置 ssh 免密码登入,再创建 /home/www/production 、/home/www/test 、/home/www/work 三个目录分别放正式网站、测试网站、准备发布的网站
brader
    21
brader  
   2022-03-26 22:42:25 +08:00
这时候就要推荐一波我的 coreos docker 了
https://github.com/wenshunbiao/docker
10935336
    22
10935336  
   2022-03-26 22:58:34 +08:00
我都是放 /home/wwwroot
bkkkd
    23
bkkkd  
   2022-03-26 23:12:58 +08:00
习惯性的创建一个 /data 目录自己管自己的.
datou
    24
datou  
   2022-03-26 23:40:43 +08:00
我是习惯性新建 /project
rainysia
    25
rainysia  
   2022-03-27 00:25:24 +08:00
习惯搞个 /home/www 单独开个 www-data 给它。
kkocdko
    26
kkocdko  
   2022-03-27 01:02:51 +08:00 via Android
/home/服务的名字
seakingii
    27
seakingii  
   2022-03-27 01:07:44 +08:00
@bkkkd 同样的习惯。。。
seakingii
    28
seakingii  
   2022-03-27 01:09:33 +08:00
我习惯建一个 /data 目录 ,自己的东西都放在里面,尽量不要和系统的目录缠在一起

/data/soft/soft1
/data/soft/sof2

/data/web/web1

/data/backup/database
/data/script/script1.sh
IvanLi127
    29
IvanLi127  
   2022-03-27 01:24:35 +08:00 via Android
服务程序我习惯放 /srv/下,纯静态页面放 /var/www 。不过现在我直接跑 docker 了,哈哈哈哈
dingdangnao
    30
dingdangnao  
   2022-03-27 04:28:18 +08:00 via iPhone
用的 oneinstack 默认放到 /data/wwwroot/ 感觉 也挺好?
akira
    31
akira  
   2022-03-27 04:39:18 +08:00
新建一个 /data/ 目录,非系统的东西放这下面
lululau
    32
lululau  
   2022-03-27 09:21:55 +08:00
/Appplications
sutra
    33
sutra  
   2022-03-27 10:24:36 +08:00
man hier
fancy2020
    34
fancy2020  
   2022-03-27 11:08:24 +08:00
ryanbuu
    35
ryanbuu  
   2022-03-27 12:19:24 +08:00
我一般选择多挂一个硬盘,挂载到 /data0 ,扔里边
adoal
    36
adoal  
   2022-03-27 15:30:54 +08:00
“每种情况的人我都见过”,因为很多人的主要职责是做开发,顺便兼做部署实施……所以往往并没有系统学习过 FSH 之类的规范,而是会根据自己(个人以及所在团队)的经验发明一些目录布局。

楼上有盆友提到,按 FSH 放太散乱了,不如把所有东西放一个独立目录下方便备份和搬运。的确这也是一个很实用的经验。但是这经验通常也是来自兼做部署实施的开发人员的经历。而从专职运维的人的视角来看,虽然这样做本身没什么大问题,但会“把所有东西放一个独立目录下”的实施案例,通常在目录结构的 owner 和 mode 设置上不太讲究,比如在系统里开一个可以登录的交互帐户,同时用做安装文件和启动 daemon 的功能,装好的文件 owner 就是这个帐户……而你仔细观察一下发行版打包的 rpm 和 deb ,通常装好的文件里不会在运行时修改的内容(放到 bin/sbin 里的程序、放到 share 里的静态数据、放到 etc 里的配置) owner 是 root ,启动 daemon 用的 euid 是专用帐户(比如 Debian 系发行版启动 Apache 和 Nginx 用的是 www-data ),只有运行时会修改的数据,其 owner 才是运行 daemon 的用户。这样的好处是,如果 daemon 因为有爆栈之类 bug 被 exploit 了,至少可以保证入侵者不会篡改配置、静态数据甚至在可执行程序里埋入木马。所以建议,不论用什么样的目录布局,最好是把运行时不会改的文件的 owner 和启动 daemon 用的 euid 设置为不同用户。发行版打包用的规范,其实是做底层基础设施的人根据经验总结的最佳实践。做业务系统应用开发的场景跟基础设施不太一样,但有些是可以借鉴的。
liuxu
    37
liuxu  
   2022-03-27 16:59:18 +08:00
主要是 linux 这么多年发展,从不规范到规范不断发展导致的

a: 目前的 FHS 标准是 /srv 为 web 目录,/var 存放软件产生的数据,如日志,邮件收信,/etc 运行时配置文件,/usr 软件和软件自己的文本文件
b: 上面标准制定之前的标准:/var/www 为 web 目录,/var/log 日志,/var/mail 邮件,/var/lib 数据库等数据文件

rhel 系目前用 a ,至少 7/8 是,deb 系惯用 b ,少部分系统安装 nginx 会使用 /usr/local/nginx/www 目录,也就是软件自身目录

普通用户没权限时,/home/username 下自己制定

各种软件文档对普通用户的“标准”方式是为软件创建一个带 /home 目录的用户名,然后文件存放在 /home/软件用户名下

/data 放数据猜测是用 windows 用户没系统学习 linux 目录划分,百度了个 linux 新手教程直接开始用 linux ,然后把 /比想象成 windows 的 d: e:磁盘分区,认为 /data 就是 e:\data ,用的人多了也就经常在各种“教程”看到了


原始 linux 规范,/usr 为软件目录,后面 FHS 规定 /opt 为第三方大型软件包安装目录(特别是桌面环境的软件),/opt 有点 windows 的 d:\Program Files 味道,目前看 chrome ,libreoffice 等会使用 /opt


https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
levinit
    38
levinit  
   2022-03-27 21:09:10 +08:00 via iPhone
/srv/http
libook
    39
libook  
   2022-03-28 11:47:44 +08:00
POSIX 对文件系统的目录划分有一个大致的分类,你可以根据实际情况来确定属于哪个分类就可以了。

从系统运行方面来看,无非就是权限问题,这块只要你的上级所有目录都满足权限要求就可以。

从管理方面来说,不论怎么放,只要能形成标准、文档、制度就可以了。
julyclyde
    40
julyclyde  
   2022-03-28 13:17:08 +08:00
@adoal 嫌弃 fhs 乱的人都是不打包的
把文件名记到 rpmdb 里就不在乎“一个套件的各个部分到处放”了
adoal
    41
adoal  
   2022-03-28 13:27:18 +08:00
@julyclyde 贵互联网行业大厂才有专门为业务开发团队需要的基础设施来搞打包的人。鄙各行各业信息化领域,都是(不明学历不明经验不明素养不明薪酬的)开发人员兼职到甲方生产环境做实施的(而且并不是 NetFlix 那种开发有责任做运维),业务功能导向的绩效评定,做规范打包(以及实现业务功能开发外的其它活)是不会额外拿钱的,所以所有东西都扔到一个目录下拷走是性价比最高的选择。
julyclyde
    42
julyclyde  
   2022-03-28 13:28:41 +08:00
@adoal 贵互联网都是 rpm 里放一个 tar+install.sh 的山寨……
adoal
    43
adoal  
   2022-03-28 13:30:59 +08:00
@julyclyde 那为啥要用 rpm
julyclyde
    44
julyclyde  
   2022-03-28 13:31:48 +08:00
@adoal 不知道啊,而且还是后来才有的,以前就是 tar 而已
adoal
    45
adoal  
   2022-03-28 13:35:40 +08:00
@julyclyde 所以其实贵互联网行业大部分也不在乎这些事是吧……我只知道阿里内部有专门做打包的团队,早些年对 CentOS 5 依赖很大的时候有相当一些软件 backport 过去放到内网的 repo 上用 yum 安装。
zxCoder
    46
zxCoder  
   2022-03-28 15:35:09 +08:00
/home/xxx/data/
cco
    47
cco  
   2022-03-28 16:07:53 +08:00
数据盘挂哪里就放哪里。
24owls
    48
24owls  
   2022-03-30 21:07:59 +08:00
如果目标是尽量遵循 FHS 和发行版的约定的话,只读的放在 /usr 或者 /usr/local 或者 /opt/<package>,会变的放在发行版放 www 目录的地方(如 /var/www 或 /srv/www ),只用在本机上的配置放在 /etc

拿 wordpress 举个例子,如果每次部署都在本地测试后再推送到服务器,那么程序文件打包安装到 /usr 或者 /usr/local 目录,数据文件和数据库放到 /var/www 或 /srv/www 目录。相反,如果需要用 wordpress 在线升级在线安装插件等,那么整个 wordpress 都算作数据放到 /var 目录。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1263 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 37ms UTC 17:26 PVG 01:26 LAX 10:26 JFK 13:26
Do have faith in what you're doing.
ubao 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