服务器需要的文件夹按用途可分为系统目录、应用目录、数据目录、日志目录、备份目录和临时目录六大类,具体怎么划分取决于你用服务器跑网站、跑数据库还是做文件存储。规划好目录结构,后期维护权限、排查故障、清理磁盘都会顺手很多,下面这套划分方法适用于绝大多数Linux服务器场景,Windows服务器略有差异,我也会单独说明。
服务器需要哪些文件夹:六类核心目录缺一不可
不管你的服务器是物理机还是云主机,目录结构都逃不出这六种角色,每一类文件夹承担的职责完全不同,混着放是运维的大忌。
系统目录:服务器的骨架
Linux服务器的根目录下,/etc存放系统配置文件,/usr放系统自带的程序和库文件,/bin和/sbin保存可执行命令,这些目录在系统安装时就自动建好,绝大多数情况下不需要手动改动,你只需要知道它们存在,日常操作基本碰不到。
应用目录:业务程序的家
网站程序、后端服务、中间件,都要有独立的安装位置,行业惯例是:
/usr/local手动编译安装的软件放这里/opt第三方商业软件或独立应用包/srv系统提供的服务数据,比如Web站点文件
如果你的服务器是用Nginx或Apache跑网站,站点文件一般放在/srv/www或者/var/www下,每个站点单独一个文件夹,避免多个项目互相干扰。
数据目录:最该认真对待的区域
数据库文件、用户上传的图片、业务产生的结构化数据,建议统一放在独立分区,常见路径是/data、/var/lib或/srv/data。把数据目录和系统目录分盘存放,是服务器运维最基本的容灾手段,系统盘坏了不影响数据盘。
日志目录:服务器的话匣子
Linux默认的日志在/var/log下,Nginx的访问日志、MySQL的错误日志、系统内核日志都在这附近,日志文件夹的规划原则是按应用分子目录,比如/var/log/nginx/、/var/log/mysql/,用rsyslog做集中管理时也方便配置。
备份目录:最后一道防线
备份文件夹建议放在独立挂载点,比如/backup,内部按备份对象和时间分子目录:/backup/database/、/backup/site/,每天凌晨的定时任务往对应目录写文件,备份目录的权限要收紧,只允许root和备份账户读写,防止攻击者连备份一起删掉。
临时目录:用完就清的空间
系统自带的/tmp权限比较宽松,不适合放敏感数据,处理大文件或者做中转,建议在应用目录下建tmp/子目录,权限设置为700,只用当前用户自己能看到,同时配合定时清理任务,避免磁盘被撑爆。
网站服务器文件目录规划:一套能落地的标准布局
搭建一台网站服务器,文件夹规划是有固定套路的,以最常用的Nginx + PHP环境为例,规划合理的目录能让日后改配置、加站点、迁服务器都省心。
一套标准的Web目录结构
/srv/www/sites/example.com/每个域名一个独立目录public_html/网站根目录,对外可访问的文件config/配置文件,禁止Web访问logs/站点专属日志cache/应用缓存backup/该站点的本地备份
这种结构的好处是:一个目录搞定一个站点的所有内容,迁移时打包整个example.com文件夹换台机器就能跑起来。
不要让Nginx直接读到敏感文件
配置文件夹和网站根目录必须分离,Nginx的root指令指向public_html,而config/放在同级但不通过Web暴露的位置,代码里需要读配置时,用绝对路径引用,这样即使Web层面有漏洞,攻击者拿到的也只是静态资源,数据库密码这类敏感信息不在可访问范围内。
上传文件目录单独规划
用户上传的图片、附件这类动态文件,建议在数据盘单独建目录,比如/data/uploads/,通过软链接映射到网站目录下,原因很实际:
- 网站程序升级时不会误删用户文件
- 备份时可以跳过体积大的静态资源,只备份数据库和代码
- 磁盘空间不足时能单独扩容这个分区
服务器文件夹怎么创建?从目录结构到权限设置
新建目录用的就是mkdir命令,这个没什么好说的,真正需要花心思的是每个文件夹该给什么权限,这直接决定服务器的安全底线,行业共识认为,一个目录如果被非授权用户写入了内容,那这台服务器就已经处于风险状态。
Linux服务器文件夹权限怎么设置才安全
针对不同角色的目录,权限大小的要求完全不同:
| 目录类型 | 推荐权限 | 所属用户 | 说明 |
|---|---|---|---|
| 网站根目录 | 755 | www | 其他人只读,能浏览网页 |
| 配置文件目录 | 700 | root | 仅管理员可读 |
| 日志目录 | 750 | www | 写日志,但不让别人删 |
| 上传目录 | 750 | www | 程序能写,禁止执行脚本 |
| 备份目录 | 700 | root | 避免备份被篡改 |
Linux下调整权限用chmod,修改属主用chown,设置目录时务必要给nginx或php-fpm运行用户所需的最小权限,不要图省事直接chmod -R 777,那等于告诉攻击者可以随意上传和执行文件。
权限设置实操步骤
- 创建目录:
mkdir -p /srv/www/sites/example.com/{public_html,config,logs,cache},一条命令建好整个结构 - 改属主:
chown -R www:www /srv/www/sites/example.com/,让Web服务用户拥有读写权 - 收紧配置目录:
chmod 700 /srv/www/sites/example.com/config,只让管理员查看 - 检查权限:
ls -l /srv/www/sites/example.com/,确认每个目录的权限符合预期
Linux和Windows服务器文件夹结构有哪些不同
两者的逻辑完全不同,别说把Windows的习惯带到Linux上,反过来也不行。
盘符与挂载点的差异
Windows用盘符区分存储位置,网站文件放D盘、日志放E盘,很直观,Linux不区分C盘D盘,所有目录都在同一个根目录下,需要把额外的磁盘“挂载”到某个目录上,比如数据盘挂载在/data,往/data里写文件,实际用的是那块独立硬盘。
站点部署的路径习惯
Windows下IIS默认站点目录在C:inetpubwwwroot,改路径都在IIS管理器里操作,Linux下路径更灵活,常见的有/var/www、/srv/www、/home/wwwroot,不同发行版和不同运维团队偏好不同。
本地运维与远程管理方式不同带来的文件夹需求差异
Windows服务器多用远程桌面(RDP)直接操作,很多运维人员习惯把工具软件堆桌面,Linux则通过SSH命令行管理,服务器上见不到图形界面,所有文件都得靠合理的目录结构来组织,不然操作起来就是一场灾难。
服务器日志文件放哪里?按场景规划更高效
日志是排查故障的第一手信息,但很多人的日志文件夹就是默认的一锅粥,把日志按用途划分好,能少走不少弯路。
Nginx和Apache的日志布局
Nginx默认日志写在/var/log/nginx/access.log和error.log
,多站点时可以按域名拆分子目录,比如/var/log/nginx/example.com_access.log,Apache类似的,在/var/log/httpd下按站点区分。
数据库日志独立存放
MySQL的日志写在/var/log/mysql,生产环境建议把日志和数据库文件放在不同磁盘上,原因学校里的老师没告诉你:日志写入频繁,数据文件也在频繁写入线程,挤在同一块硬盘上容易互相拖慢性能。
日志轮转不是可选项
日志文件会无限增长,不处理就会撑满磁盘,Linux下用logrotate做定时切割,也就是按天或按大小把日志拆分,只保留最近30天或90天的记录,旧的自动压缩归档,配置在/etc/logrotate.d/下,每种应用一份配置。
一套最小可用的服务器文件夹清单
如果你刚拿到一台新服务器,不知道怎么动手,直接照着这个清单建就行:
- 系统与程序目录:
/usr/local和/etc系统自带,不用动 - 网站代码目录:
/srv/www/sites/ - 运行日志目录:
/var/log/nginx/、/var/log/mysql/ - 数据库数据目录:
/data/mysql/ - 临时中转目录:
/tmp,不用建 - 备份目录:
/backup/
目录建好后再按前面说的权限表格设置权限,一台结构清晰的服务器就就绪了,在服务器维护这条路上,前期规划目录花掉半小时,能省下后期反复排查问题的一整天。
服务器需要的文件夹不存在唯一答案,但存在一套合理逻辑。始终把程序、数据、日志、备份这四类内容分开存放,权限遵循最小化原则,就是所有服务器目录规划的总纲。
关于服务器文件夹规划的常见问题
服务器文件夹可以随便改名吗?
不能,Linux系统目录比如/etc、/bin是硬性规范,改名会导致系统崩溃,应用目录内部可以按自己的习惯调整,但需要同步修改软件配置,比如Nginx的root路径改到/home/www,必须同时改Nginx配置文件和相关引用,否则服务起不来。
网站目录和数据库目录必须分开放吗?
强烈建议分开,数据库目录放在独立挂载点,比如/data/mysql,好处体现在两块:第一,数据库文件体积通常很大,独立磁盘方便扩容;第二,备份策略可以区别对待,网站文件每日增量备份,数据库需要更频繁的备份甚至主从复制,两者混在一起的典型后果是磁盘满了分不清是哪个占的空间,清理时容易误删关键数据。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/715033.html





