Skip to content
Kurisu
Go back

LNMP 源码编译与 DVWA 靶场部署:一堂课踩完的所有坑

之前写过 phpStudy 搭 DVWA双靶场踩坑,这篇是课堂版:源码编译路线的 LNMP。坑比一键面板多得多,但正因为源码装,才把 Linux 服务管理的底层机制讲透了。

0x01 SSH 连不上:由底向上的排查链

远程连接失败时的标准排查顺序(网络 → 服务 → 策略):

ping <IP>                    # 1. 网络通不通
systemctl status sshd        # 2. 服务起没起
ss -tlnp | grep 22           # 3. 端口听没听(没装 net-tools 用 ss)

逐层拆弹:

还有一个隐蔽坑:MySQL 曾因注册表/服务文件里服务名拼接错误多了非法参数导致自启动失效——现象像端口问题,根因是配置文件,遇到”服务莫名起不来”要去看服务定义本身。

0x02 源码编译 Nginx:为什么 systemctl 管不了它

# 依赖先行:gcc / make / pcre / zlib
./configure --prefix=/usr/local/nginx
make && make install

源码安装绕过了包管理器,也绕过了系统服务管理——/usr/lib/systemd/system/ 里根本没有它的 service 单元文件。课堂由此引出了 systemctl 的运行机制(这是本篇最值钱的知识点):

配置改完必须 reload:./nginx -s reload——改完不重启等于白改

0x03 PHP-FPM:9000 端口联动

Nginx 只分发静态内容,PHP 请求要转发给 PHP-FPM:

  1. 修改 php-fpm.conf 让它监听 127.0.0.1:9000
  2. Nginx 的 server 块里把 .php 请求 fastcgi_pass 127.0.0.1:9000
  3. 排错第一招永远是 ss -tlnp | grep 9000 看 FPM 活没活。

后来 Docker 环境里 PHP 版本不对,就是靠改回这里把流量从容器切回本地 9000 的——/usr/local/nginx/conf/nginx.conf 里指向哪个 9000,决定了 PHP 跑在谁身上。

0x04 MySQL/MariaDB 与 DVWA 部署

apt install mariadb-server
mysql_secure_installation    # root 初始化

DVWA 部署三步:源码放 Web 根目录 → 改 config/config.inc.php 的数据库连接 → 访问 setup 页初始化。课堂现场踩的坑:

0x05 Docker/Podman 入门定位

课程对容器的定位很务实:大三大二按需掌握,先会用再理解。

0x06 服务管理的通用心智模型

把这篇的底层逻辑串起来:Linux 上一切服务 = 一个可执行文件 + 一份描述它的配置

这个模型后面在 CS 服务端部署(Ubuntu + JDK + 手动启动 teamserver)、提权(服务路径劫持)里全都复用到了。

相关旧文


Share this post:

Previous Post
JeecgBoot 双防线 SQLi 绕过实战:关键词黑名单 + Druid Wall 下的布尔盲注
Next Post
渗透入门第一课:法规红线、HTTP 协议与 Burp Suite 抓包的全流程