尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FTP与WWW服务器配置实战:从vsftpd到Nginx/Apache的完整联调

FTP与WWW服务器配置实战:从vsftpd到Nginx/Apache的完整联调 简介这是一份围绕Windows 2000环境实验四编写的FTP与WWW服务器配置文档面向计算机网络课程学生、实验指导教师以及希望练手IIS配置的IT新人。文档从实验目的和环境要求入手记录了从IIS组件安装到服务启用的完整链路创建FTP站点MYFTPSITE并设置匿名访问、FTP操作员与虚拟目录规划Web站点MYWEBSITE时配置非默认端口、主目录、读/写权限及默认文档还附有个人Web站点发布和FTP上传下载操作指导。资源包共1个PDF文件大小1.34MB内容详实且条理清晰配有步骤说明和图示既适合实验前预习也可作为实验报告和复习的参考资料。该资源已有91人学习下载对掌握网络服务搭建常用操作、排查配置冲突等实践场景具有不错的参考价值。1. 实验四FTP服务器及WWW服务器配置分享先搞清楚这两个服务到底在解决什么问题“实验四FTP服务器及WWW服务器配置分享.pdf”是典型实验课产物很多人照着 PDF 敲完命令交差时才发现既没传过文件也没打开过页面。FTP 和 WWW 服务器配置是两个完全不同但经常被绑在一起练手的任务FTP 负责把文件从本地传到服务器WWW 负责让任意一台浏览器能读到服务器上的文件。对做 Linux 实验的学生来说这个实验能帮你建立“服务端-客户端”的完整链路意识对刚接触内网文件共享的运维来说这套东西不装重型工具也能快速应急。下面从最小可用配置开始把每一步踩过的坑说清楚。2. 搭建 FTP 服务器用 vsftpd 跑通最小可用配置FTP 服务端实现很多Linux 发行版默认仓库里最常见的组合是 vsftpd。很多教程会推荐 proftpd 或 Pure-FTP但对实验四这种只需要“能登录、能上传、能下载”的场景vsftpd 是投入产出比最高的选择。先讲为什么选它再给出能直接照抄的最小配置。2.1 为什么选 vsftpd 而不是 proftpd 或 Pure-FTPvsftpd 包小默认配置的安全倾向是“拒绝匿名写、拒绝 root 登录”对实验环境来说其实是优点。proftpd 的配置风格接近 Apache灵活性高但学习成本也高Pure-FTP 擅长虚拟用户和数据库认证但搭建时还要额外配用户库。vsftpd 的配置集中在/etc/vsftpd.conf一个文件管完所有行为排错路径短。对实验课而言还有一个很现实的原因vsftpd 在 Ubuntu、Debian、CentOS 的软件源里都能一条命令装好没有第三方依赖不需要处理“教程是 CentOS 7 而我用的是 Ubuntu”这种环境差异。这种“黑匣子”最小化的好处是出了问题你能很快定位到配置项而不是怀疑库装错了。常见做法是在装好后先备份原始配置因为发行版默认的vsftpd.conf里有一堆注释模板直接在原文件上改容易改花眼。备份之后把非注释配置精简到十几行反而更好维护。我一般还会顺手查看dpkg -L vsftpd | grep conf确认配置文件和示例文件都放在哪。2.2 最小安装、备份与首次启动先装包改配置再启动。下面是以 Ubuntu/Debian 为例的完整命令# 更新索引并安装 sudo apt update sudo apt install -y vsftpd # 备份默认配置 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak # 编辑配置 sudo vim /etc/vsftpd.conf安装完成后服务不会立刻启动因为新版 vsftpd 在启动时会检查配置是否合法。先把配置改成下面这段最小可用的内容再启动更省事listenYES listen_ipv6NO anonymous_enableNO local_enableYES write_enableYES local_umask022 dirmessage_enableYES xferlog_enableYES xferlog_file/var/log/vsftpd.log chroot_local_userYES allow_writeable_chrootYES pam_service_namevsftpd配置完成后重启并设置开机自启sudo systemctl restart vsftpd sudo systemctl enable vsftpd sudo systemctl status vsftpd这段配置的含义要拆开说。listenYES让 vsftpd 以独立监听模式运行不交给 systemd socket 转发listen_ipv6NO避免双栈监听冲突这是实验环境里最常见的多占用问题之一。anonymous_enableNO关闭匿名登录避免有人把文件传到公共目录后无法清理。local_enableYES表示允许系统本地用户登录write_enableYES是能上传的前提。local_umask022决定新建文件权限是 755、目录是 644这样 WWW 服务才能读。chroot_local_userYES把用户限制在自己的家目录里防止登录后看到别人的文件。allow_writeable_chrootYES是配合前一项的新版 vsftpd 不允许在 chroot 环境下家目录可写但实验里本地用户经常直接在 home 下建站这一项可以暂时放开。启动后先看端口有没有监听ss -tlnp | grep :21这一步能排除“服务没起来”和“端口被占用”两类问题。如果看不到监听多半是配置里listenNO和listen_ipv6NO同时出现或者日志里有500 OOPS提示。CentOS/RHEL 上还要注意 SELinux如果端口监听正常但客户端始终连不上在启用 SELinux 的环境里先执行getenforce看状态再决定是否放行ftpd_full_access。2.3 三个必调参数write_enable、chroot 和被动端口范围实验四里你会不止一次因为下面三个参数怀疑人生。第一个是write_enableYES。很多教程前面的部分都能通上传时客户端却报 550 Permission denied。550不是文件系统权限不足而是 vsftpd 本身不允许写入。先确认这个参数是 YES再去看目录权限不要一上来就 chmod 777。第二个是chroot_local_userYES。从安全角度看它很好但如果你给用户开了一个可写家目录vsftpd 新版本会直接拒绝启动提示500 OOPS: vsftpd: refusing to run with writable root inside chroot()。解决方式有两个要么在配置里加allow_writeable_chrootYES要么让家目录不可写在下面建一个真正存放文件的子目录。我推荐后者因为这更接近生产环境里“FTP 根目录只读子目录才可写”的做法。第三个容易被忽略是pasv_min_port和pasv_max_port。很多实验跑在虚拟机或校园网 NAT 后面FTP 登录能成功但列目录或传文件时卡死。原因是 FTP 主动模式的数据连接没法从外部建立而被动模式默认使用的端口段没有被防火墙放行。建议在配置里加两行pasv_enableYES pasv_min_port30000 pasv_max_port30100然后把这个端口段在防火墙里放行。另外如果服务器有多个内网 IP最好同时指定pasv_address服务器可被客户端访问的IP否则客户端拿到的是错误的 IP。这个参数在云主机场景尤其重要。2.4 匿名访问的边界什么时候才需要打开 anonymous_enable实验课常见的需求是“每个人都能上传一份作业”于是很多同学直接打开anonymous_enableYES结果发现匿名用户只能上传或只能下载再想删文件、覆盖文件时一堆权限报错。这是匿名 FTP 的天然边界匿名用户对应系统账户ftp它的主目录在/srv/ftp而 WWW 服务对/srv/ftp的访问权限又往往不够。我的建议是实验阶段优先用本地用户。给每个同学创建一个系统用户这样登录行为会记在vsftpd.log里权限也更容易管理。之后系统用户登录时FTP 的根目录锁定在该用户的家目录你可以把家目录软链到/var/www下实现“上传即发布”。匿名访问更适合公开下载一些体积不小的软件包允许匿名用户只读/srv/ftp即可不需要打开写权限。如果实验要求必须支持匿名上传记得把/srv/ftp的属主改成ftp并关闭chroot_local_user对匿名用户的影响。更稳妥的方案是单独配置一个/etc/vsftpd.anonymous.conf再通过vsftpd的多实例启动但这对实验来说过于复杂一般不建议。3. 搭建 WWW 服务器Apache 还是 Nginx虚拟主机怎么选做 FTP 实验的人一般会顺手做 WWW 实验因为两个服务配合起来才能演示“文件上传后别人通过网页访问”。WWW 服务器的选择比较微妙多数教材都写 Apache但实际生产环境 Nginx 的占比更高。下面区分实验场景再给出两类服务的配置模板。3.1 先分清静态站点和动态站点实验四需要哪一个FTP 服务器配置完成后你的服务器已经有了“接收文件”的能力。WWW 服务器要解决的是“别人怎么浏览这些文件”。如果实验只要求放一个index.html或者提供文件下载这是静态站点场景Nginx 和 Apache 都能胜任Nginx 的高并发优势在单机测试中看不出来但配置语法更直观。如果实验要求 PHP 动态页面比如写一个用 PHP 接收表单的页面Apache 搭配libapache2-mod-php是更顺滑的路线因为 Nginx 需要额外配 PHP-FPM多一层调试步骤。判断标准很简单看实验 PDF 里给出的命令行。出现apt install apache2居多出现apt install nginx也不少。我一般会两种都装一遍用同一台机器的不同端口或不同域名跑因为在“FTP 上传的页面如何被 WWW 读取”这个问题上两个服务暴露出来的权限坑略有不同多装一次能加深理解。3.2 Apache 最小虚拟主机配置与目录授权安装 Apache 后默认站点会指向/var/www/html。实验四通常要求配置一个自定义站点因此建议新建单独目录和虚拟主机文件而不是直接改默认 Default 配置。步骤如下# 安装 Apache sudo apt install -y apache2 # 创建站点目录并写入测试页 sudo mkdir -p /var/www/example echo h1WWW Server OK/h1 | sudo tee /var/www/example/index.html # 创建虚拟主机配置 sudo tee /etc/apache2/sites-available/example.conf EOF VirtualHost *:80 ServerName example.test DocumentRoot /var/www/example Directory /var/www/example Options Indexes FollowSymLinks AllowOverride All Require all granted /Directory /VirtualHost EOF # 启用站点并重载 sudo a2dissite 000-default.conf sudo a2ensite example.conf sudo systemctl reload apache2这里最关键的是Directory段。新手常犯的错是只改DocumentRoot忘记给新目录加访问权限结果Require all granted没生效Apache 默认拒绝外部访问浏览器直接 403。Options Indexes允许目录没有默认页面时列出文件列表这对 FTP 上传的文件共享非常有用如果你不想暴露文件可以删掉Indexes。ServerName example.test是虚拟主机名。如果本机没有 DNS可以修改自己电脑的 hosts 文件或者在浏览器里直接用http://服务器IP/访问。此时请求头里的 Host 是 IPApache 会匹配第一个 VirtualHost所以我把000-default.conf禁用避免出现“配置了 example.test 但用 IP 访问到的却是默认页面”的困惑。修改配置后务必执行apache2ctl configtest它比systemctl reload更早告诉你语法错误的位置。3.3 Nginx 方式把根目录指向 FTP 用户的家目录实现上传即发布如果你的实验环境是 Ubuntu 24.04或者你更熟悉 Nginx可以用另一个思路不把站点放在/var/www直接让 Nginx 的root指向 FTP 用户家目录下的www子目录。这样用户通过 FTP 传上去的index.html刷新浏览器立刻可见。# 安装 Nginx sudo apt install -y nginx # 假设 FTP 用户是 ftpuser且它家目录下已经有 www 目录 sudo mkdir -p /home/ftpuser/www # 创建 Nginx 站点配置 sudo tee /etc/nginx/sites-available/ftp-site EOF server { listen 8080; server_name _; root /home/ftpuser/www; index index.html; autoindex on; } EOF # 启用站点 sudo ln -s /etc/nginx/sites-available/ftp-site /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx为什么监听 8080 而不是 80因为我已经在前面章节装过 Apache或者实验环境里还有别的 80 端口监听Nginx 直接绑定 80 会报address already in use。server_name _是匹配所有未命中域名的请求也就是直接用 IP 访问也可以。autoindex on;开启目录列表这样访问http://IP:8080/时能看到 FTP 上传的所有文件比一个个输入路径方便。Nginx 的nginx -t是配置检查命令很多习惯改完直接reload的人会因为少这一步而把错误配置加载上去。nginx -t至少能帮你发现大括号不匹配、分号缺失这类语法错误。另外Nginx 默认的sites-enabled是软链机制如果你在sites-available里写了配置但忘了做软链reload也不会报错但站点就是访问不到。3.4 为什么 WWW 工作进程不能随便以 root 运行无论 Apache 还是 Nginx安装后都会自动创建www-data用户或nginx用户作为工作进程。这是安全设计即使站点被攻击攻击者拿到的也只是低权限 shell而不是 root。但在 FTP 与 WWW 联调时这个设计会带来权限摩擦——FTP 用户ftpuser上传的文件默认权限是644属主是ftpuserWWW 工作进程以www-data身份读取时只要目录对other有r-x权限就能读。问题是家目录本身可能是750www-data既不属于ftpuser组又不在other的权限范围内于是浏览器 403。换句话说FTP 的权限链是“用户写文件”WWW 的权限链是“服务进程读文件”两条链交汇时不能简单地把www-data加进ftpuser组更不能把家目录 chmod 777。比较稳妥的做法是单独准备一个站点目录用 ACL 授权具体在下一章展开。4. FTP 和 WWW 联调目录权限与“上传即发布”的完整链路这一章把前面两台“看起来各自为政”的服务真正接起来。实验四最常要求的场景是用 FTP 客户端登录服务器上传一个 HTML 文件到指定目录然后浏览器访问 WWW 服务器能看到这张页面。这个场景不复杂但目录结构、权限模型、防火墙端口这三件事少做一件都会让你怀疑配置重复了。4.1 目录结构设计把 FTP 根目录和 Web 根目录合并到同一处先做一次减法不要让 FTP 根目录是家目录WWW 根目录是/var/www因为文件传输后还要拷贝一遍实验里容易漏。正确的结构是让 FTP 用户的家目录里有一个子目录www同时设置目录的属主为ftpuser:ftpuser并把www-data用户加入读取组结果如下# 如果还没有这个用户就创建 sudo useradd -m -d /home/ftpuser ftpuser sudo passwd ftpuser # 创建 www 子目录并设置基本权限 sudo mkdir -p /home/ftpuser/www sudo chown ftpuser:ftpuser /home/ftpuser/www sudo chmod 750 /home/ftpuser/www这里我特意选了750而不是常见的755。原因在于other没有任何权限这样服务器上其他非相关用户无法浏览该目录WWW 服务进程的读取权限则通过 ACL 单独授予而不是依赖other。这块要放在vsftpd的chroot_local_userYES环境下FTP 用户登录后看到/home/ftpuser就是根然后进入www子目录上传文件目录结构非常干净。有些教程会让你把/var/www/html软链到/home/ftpuser/www这也行但要注意软链会让 Apache 的Options FollowSymLinks变成必要条件而且 Nginx 默认禁用对软链的访问控制可能带来额外坑。不如直接改站点配置里的root或DocumentRoot让 Web 服务的根目录本身就是/home/ftpuser/www。4.2 权限模型让 www-data 能读但不给它写权限把 Web 根目录指向 FTP 用户目录后www-data进程需要能读取其中的文件但最好不要有写权限否则一旦 Web 服务被拿 shell攻击者可以在 FTP 区放恶意脚本。使用 ACL 是比chmod更精细的做法# 给 www-data 用户递归读执行权限 sudo setfacl -R -m u:www-data:rx /home/ftpuser/www # 给 www-data 用户默认 ACL这样以后 FTP 上传的新文件也会继承 sudo setfacl -R -d -m u:www-data:rx /home/ftpuser/www # 检查 ACL 是否生效 sudo getfacl /home/ftpuser/www第一行setfacl -R -m是修改现有文件的 ACL第二行-d是设置默认 ACL之后在目录里新建的文件会自动继承这条规则。这一步非常重要因为它避免了两个典型问题一是你每次新上传的文件属主仍是ftpuser不会自动获得www-data读取权限二是不用把ftpuser的组改成www-data从而把家目录整个暴露给 Web 进程。如果你以前用过useradd -g www-data ftpuser这种方式会产生新的问题FTP 用户主组变成www-data后/home/ftpuser目录如果还是750other无法进入但www-data会拥有所有文件的写权限。这不符合最小权限原则所以我一般不用改主组这个方法。4.3 从 FTP 上传到 HTTP 访问的完整验证流程改完 ACL 后正式验证整个链路。使用lftp客户端而非图形化 FTP 工具因为脚本里能清楚看到每条命令是否成功# 安装 lftp 客户端 sudo apt install -y lftp # 用 ftpuser 登录并把本地 index.html 上传到 www 目录 lftp -u ftpuser,你的密码 127.0.0.1 -e put /tmp/index.html -o /www/index.html; quit # 查看 FTP 日志确认上传记录 tail -f /var/log/vsftpd.log # 用 curl 从 WWW 服务器读取刚才上传的文件 curl -I http://127.0.0.1:8080/index.htmlcurl -I只获取响应头关注HTTP/1.1 200 OK。如果返回403说明 Web 进程读不了文件如果返回404说明 root 路径没对上。这两类问题一个指向权限一个指向配置排查路径完全不同。上传时-o /www/index.html里的路径参考的是 FTP 用户登录后的根目录也就是家目录如果你写的是-o /index.html文件会落在/home/ftpuser/index.html而不是www子目录。这个差别在实验里特别容易让你误以为“上传成功了但网页不更新”。如果你在 Windows 上用 FileZilla 测试注意设置本地站点目录和远程目录远程目录直接填/www不要填绝对路径/home/ftpuser/www因为 FTP 登录后已经被 chroot 到家目录了。4.4 常见误用别把整个家目录当 Web 根目录更不要 chmod 777有同学为了省事把/home/ftpuser整个设为 Web 根目录再chmod -R 777 /home/ftpuser。这样确实能访问但代价是服务器上其他用户能读到 FTP 用户的隐私文件Web 进程也能写任意文件。一旦实验环境被扫描器盯上三分钟就能帮你挂一个挖矿脚本。还见过把/var/www/html设成777给 FTP 用户写入权限的。这种做法在实验题里可能过关但到了生产环境就是重大事故。正路是FTP 用户的写入范围用目录属主控制WWW 进程的读取范围用 ACL 或user:group控制两组权限不要混成一个777。如果嫌 ACL 繁琐也可以退而求其次sudo chown -R ftpuser:www-data /home/ftpuser/www然后chmod 750www-data组成员可读ftpuser属主可写。这是没装acl包时的应急方案缺点是组权限对目录内所有文件生效灵活性不如 ACL。5. 配置排查FTP 和 WWW 服务器最常踩的 5 个坑下面几条是做过很多次实验后总结出的高频问题按“现象-原因-解决”的顺序写。遇到翻车先对着自己的日志和网络状态看不要急着重装服务。5.1 FTP 登录报 530 Login incorrect但账号密码明明是对的现象在 Linux 本机或者 Windows 客户端用正确的用户名密码登录FTP 客户端回显530 Login incorrect或者系统日志里出现多条pam_unix(vsftpd:auth): authentication failure。原因多数情况不是密码错误而是 PAM 模块不允许该账号登录。比如实验用户使用了nologin作为登录 shell或者/etc/pam.d/vsftpd配置里要求用户必须存在于/etc/shells列表。有的发行版默认pam_service_namevsftpd但/etc/pam.d/vsftpd里的策略比 Debian 严格导致纯系统用户被拒。解决先用getent passwd 用户名确认账号存在再看该用户的 shell 是否在/etc/shells中。如果不需要用户 SSH 登录可以把 shell 改成/bin/bash虽然不严谨但实验够用或者在/etc/vsftpd.conf里保留pam_service_namevsftpd同时确认/etc/pam.d/vsftpd只包含pam_unix.so配置。改完重启vsftpd再试不要只改密码。FileZilla 如果设置了“要求加密”而服务器只支持明文 FTP也可能出现登录后立刻断开但那个报错会是530之前先出现AUTH TLS相关提示别混淆。5.2 启动 vsftpd 直接报 500 OOPS: vsftpd: refusing to run with writable root inside chroot()现象systemctl start vsftpd后服务处于 failed 状态日志里出现500 OOPS且指向 chroot。原因chroot_local_userYES启用后vsftpd 要求 chroot 根目录通常就是家目录不可写。很多发行版默认把家目录权限设置为755但如果之前手动chmod 777 /home/ftpuser或者用useradd时家目录被创建成可写就会触发这个保护机制。解决不要简单关掉chroot_local_user。推荐执行sudo chmod 755 /home/ftpuser然后在里面创建真正的数据子目录www并为它设置750和 ACL。如果实在想保持家目录可写就临时加allow_writeable_chrootYES但你要清楚这会降低 chroot 的隔离效果实验交差后最好再收紧。5.3 FTP 上传成功浏览器访问 WWW 却返回 403 Forbidden现象用 lftp 或 FileZilla 上传index.html成功curl http://127.0.0.1:8080/index.html返回403Nginx 错误日志里出现directory index of /home/ftpuser/www/ is forbidden。原因403 表示 Web 进程能到达目录但没有读取该文件或目录的权限。最常见是/home/ftpuser家目录权限为750且属主组是ftpuserwww-data既不在组里也没有other的r-x或者 SELinux 开启httpd_sys_content_t标签没打上去。解决先用namei -l /home/ftpuser/www/index.html逐层检查所有中间目录的权限再用sudo setfacl -R -m u:www-data:rx /home/ftpuser/www补齐 Web 进程读权限。如果是 CentOS/RHEL 且启用了 SELinux执行sudo restorecon -Rv /home/ftpuser/www或者用setsebool -P httpd_read_user_content 1。不要直接用chmod -R 777来绕过你会失去排错线索。5.4 FTP 客户端能登录但列目录或传大文件时卡住、超时现象FileZilla 显示“正在连接”很快通过输完密码也能拿到欢迎语但列表命令一直转圈过一会提示连接超时大文件上传尤其明显。原因FTP 协议在数据传输阶段会额外建立一个数据连接。如果客户端使用被动模式现在默认都是服务器需要监听一段随机端口并让客户端能连上。你只放行了 21 端口没有放行配置中的pasv_min_port到pasv_max_port。解决按照 2.3 节在配置中固定被动端口段然后在 Ubuntu 上执行sudo ufw allow 21/tcp sudo ufw allow 30000:30100/tcpCentOS/RHEL 用sudo firewall-cmd --permanent --add-port30000-30100/tcp sudo firewall-cmd --permanent --add-port21/tcp sudo firewall-cmd --reload改完防火墙systemctl restart vsftpd。还要检查云安全组或虚拟机的 NAT 规则——很多人不是不会设置本地防火墙而是忘记云控制台安全组放行。另外打开pasv_address的配置要注意如果你在 NAT 后面需要设置pasv_address你的公网IP否则客户端拿到的数据连接地址是内网 IP依然连接不上。5.5 Apache 和 Nginx 同时装80 端口被占导致重启失败现象先装了 Apache再装 Nginxsystemctl start nginx报bind() to 0.0.0.0:80 failed (98: Address already in use)Apache 也同时挂了。原因两个 Web 服务都试图绑定 80 端口这属于武器冲突。有人会选择停用其中一个服务但实验四要求你同时能看到两种服务器的效果。解决给其中一个换端口。Nginx 站点配置里把listen 8080;写入 server 块然后nginx -t systemctl reload nginx。或者更干净的做法是让 Apache 监听 8080Nginx 保留 80这样两个服务都可以启动。修改完成后用ss -tlnp | grep :80和ss -tlnp | grep :8080分别验证各自的监听端口。这个坑看似低级但如果你先启动 Apache后启动 Nginx很容易被“明明改了配置却不见生效”骗到——改完后必须 reload而 reload 失败时 systemd 会把旧进程保留导致你以为配置没生效。6. 验证与进阶从“能打开页面”到“能正常维护”到这里FTP 和 WWW 已经能协同工作了但实验四往往还有个隐藏分是否能说清楚服务运行状态、文件是否真的同步、日志在哪里看。下面分享一个我习惯用的验证顺序。先验证 FTP 服务本身用lftp上传一个带时间戳的文件然后确认/var/log/vsftpd.log里出现UPLOAD记录。再验证 WWW 服务curl -I http://127.0.0.1:8080/时间戳文件名看看是不是 200。最后看两个服务的进程和端口状态systemctl status vsftpd nginx ss -tlnp | grep -E :21|:8080如果想把“上传到 FTP 目录”和“WWW 发布”分成两个目录用同步脚本是常见的进阶做法。比如用户先上传到/home/ftpuser/incoming再通过一个定时任务同步到/var/www/pub从而实现审核后再发布。脚本很简单#!/bin/bash rsync -av --delete /home/ftpuser/incoming/ /var/www/pub/搭配 cron 每小时同步一次或者用inotifywait做实时同步。这样做的意义是FTP 用户不再拥有 Web 目录的直接写权限安全性更高也符合“上传区”和“发布区”分离的生产思路。另一个容易被忽略的习惯是定期清理 FTP 日志和 Web 访问日志。/var/log/vsftpd.log不会自动压缩跑一个学期能到几百 MBNginx 的access.log会更夸张。可以简单配置logrotate或至少知道du -sh /var/log/*看看哪个文件在膨胀。不然实验还没交磁盘先满了。我自己做这套实验时最深刻的教训是所有“诡异”问题几乎都出在权限和防火墙而不是配置语法。所以我现在每搭好一个服务固定执行三步systemctl status看进程ss -tlnp看端口getfacl看目录权限。这三步过后再让浏览器去访问基本不会再有黑匣子式的玄学故障。希望帮到你。本文还有配套的精品资源点击获取
返回列表