ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux下XAMPP集成环境安装配置与DVWA靶场搭建实战

Linux下XAMPP集成环境安装配置与DVWA靶场搭建实战 做本地开发免不了跟运行环境打交道尤其当你想快速搭一套 PHP MySQL 的实验环境时手动编译安装每一个组件真的能把耐心磨没。XAMPP 这个老牌的集成环境套件就是专门解决这个痛点的它把 Apache、MariaDBMySQL、PHP 和 Perl 打包在一起解压就能用省掉了大量环境配置的折腾。这次我在 Linux 上实际安装配置了 xampplinux_v174beta11 这个版本整个过程踩了一些坑也摸索出一些值得记录的细节整理出来希望对你有参考价值。如果你只是需要在本地快速起一个 Web 服务、跑跑开源程序或者像后面会提到的 DVWA 这类靶场环境XAMPP 会让你少走很多弯路。不过这套工具尤其是 beta 版本也有一些隐藏的毛病需要提前规避。这篇博文会从下载校验讲起一路到安装、启动、配置、调优最后用 XAMPP 搭建一个 DVWA 靶机来验证整条链路内容偏实操有细节有参数也有我实际遇到过的坑和排查思路。1. 为什么选择 XAMPP本地集成环境的核心优势1.1 从零散组件到开箱即用的转变很多人在 Linux 上配 Web 开发环境时第一反应是装 LAMP也就是 Linux Apache MySQL PHP。听起来挺常规但实际操作中要处理的事远不止“装四个东西”这么简单。你得先安装 Apache 源码或包再编译 PHP 扩展匹配它还要单独初始化 MySQL 数据库随后处理各种目录权限和配置文件。一套走下来少说半天遇到版本冲突可能一整天就耗进去了。XAMPP 解决的就是这个效率问题。它在 Linux 下统一安装在/opt/lampp目录把所有组件打包到一个独立目录里不和系统自带的 PHP、MySQL 冲突。组件之间的预配置也提前完成了比如 Apache 加载 PHP 模块、MySQL 初始化数据目录这类关键步骤安装完成后基本可以直接启动服务。这一点对初学者特别友好你不需要理解每一个原理先把环境跑起来再慢慢研究内部机制。1.2 版本策略与适用范围这次安装的是 xampplinux_v174beta11从命名就能看出来这是一个 beta 预发布版本。Beta 版本通常用于测试新功能或新版本组件的兼容性适合喜欢尝鲜、或者需要验证某个特定新特性的开发者。但如果你是想要一个稳定可靠、用于日常开发或生产的平台我建议你还是去官网下载正式版别碰 beta。原因很简单beta 版本组件的内部结构或配置路径可能和正式版有差异你按网上教程配置时可能会莫名踩坑。比如这次我安装的版本里PHP 模块路径和部分配置文件默认值就和我之前用的正式版不一样如果你拿着旧教程硬套很容易卡壳。所以我的建议是如果你只是学习安装配置、跑个简单的项目选正式版如果你就是想验证新版本特性或者本身对 XAMPP 内部结构已经比较熟悉再考虑用 beta 版。我这次使用的版本号偏新配置过程中也验证了不少新细节下面都会讲到。1.3 安装 XAMPP 的三大注意事项在正式开始之前有三个点必须提前说明必须用 root 权限安装安装器需要向/opt/lampp写入文件、创建系统用户没有 root 权限会直接失败。我建议在终端里使用su切换或sudo提权来执行。注意端口占用XAMPP 默认启用 80HTTP和 443HTTPS端口以及 3306MySQL。如果你的机器上已经装了 Nginx、Apache 或其他数据库服务安装前要检查并释放端口否则启动时会冲突。不建议用于公网生产环境XAMPP 默认配置偏向开发便利安全限制相对宽松。如果要部署到公网必须修改默认密码、限制访问 IP甚至要重新配置大部分安全项。这一点下面会单独说。2. 安装前的环境准备与文件校验2.1 查看系统架构与依赖XAMPP 针对 64 位 Linux 系统提供了单独的安装包所以先确认你的系统架构是 x86_64 还是 arm64。我这次是在一台 x86_64 的 CentOS 7 虚拟机里装的理论上 Debian/Ubuntu 系也同样适用但依赖略有不同。查看命令很简单uname -m # 输出 x86_64 表示 64 位 cat /etc/os-release # 查看发行版信息除了架构还需要确认系统里有没有装glibc、libstdc这类基础运行库。XAMPP 的安装包依赖这些库来启动安装图形界面和后端服务。如果安装时提示缺少共享库你可以先通过系统包管理器补充安装。比如 Debian/Ubuntu 系统sudo apt-get update sudo apt-get install -y libstdc6 libglib2.0-0 libx11-6CentOS/RHEL 系统sudo yum install -y libstdc libX112.2 下载与校验安装包XAMPP 官方提供 Linux 安装脚本命名方式通常是xampp-linux-x64-版本号-installer.run。我使用的这个 beta 版本文件名里对应的版本号是v174beta11你可以到官网的下载页面找到对应链接。下载方式推荐直接用wget命令行这样可以在服务器或虚拟机里直接拉取不用先下载到本地再上传wget https://www.apachefriends.org/xampp-files/版本号/xampp-linux-x64-版本号-installer.run下载完成后先校验文件完整性。XAMPP 官网同时提供 SHA256 校验值用下面的命令生成本地文件的哈希值跟官网对照一样就代表文件没损坏sha256sum xampp-linux-x64-版本号-installer.run这一步别偷懒。我遇到过下载一半断掉的情况直接安装会报 “无法解压” 或 “文件格式错误”排查半天才发现是压缩包损坏。校验一下省下的都是时间。2.3 安装文件授权XAMPP 的安装器是一个.run可执行脚本默认下载下来可能是没有执行权限的。安装前先给它加上可执行权限chmod x xampp-linux-x64-版本号-installer.run然后你会看到文件权限从-rw-r--r--变成-rwxr-xr-x说明已经可以去运行它了。这一步不做后面执行时会直接提示Permission denied。3. XAMPP 安装全过程实录3.1 命令行安装步骤XAMPP 的安装程序提供了图形向导和命令行两种安装方式。在服务器环境或没有图形界面的 Linux 上推荐用命令行模式运行。虽然 XAMPP 官方并没有单独的静默安装参数但实际上直接执行.run文件后会调用一个图形化向导。如果你的环境没有图形桌面可以用--mode unattended这样的参数跳过交互。但需要注意XAMPP 过去的安装器对无人值守模式支持得比较有限不同版本差异较大。根据我的实际操作经验最稳妥的方式是直接用 root 权限执行安装脚本然后在图形界面里点下一步。如果是在 headless 服务器环境可以借用xvfb之类的虚拟显示工具或者直接手动解包安装。不过对于绝大多数开发者来说本机装有桌面环境直接执行安装向导是最省力的sudo ./xampp-linux-x64-版本号-installer.run安装向导启动后界面会提示你选择安装路径默认是/opt/lampp。这里我强烈建议你保持默认不要改到自定义位置。原因有三点XAMPP 的环境变量、启动脚本和服务文件都默认写死在/opt/lampp路径下。官方文档和绝大多数网络教程都默认你安装在/opt/lampp改路径后排查问题时参考经验会受限。未来升级或卸载时官方脚本也是按/opt/lampp定位文件的。安装过程大约需要 1 到 3 分钟取决于你的磁盘读写速度。安装完成后向导会提示你启动控制面板或直接运行服务。3.2 安装后的目录结构安装完成后XAMPP 的所有文件都会集中在/opt/lampp下。理解这个目录结构对你后面的配置和排障至关重要。我列一下最关键的几个子目录目录/文件作用说明/opt/lampp/lampp核心管理脚本用于启动、停止、重启整个环境/opt/lampp/htdocsApache 默认的 Web 根目录放网站文件的地方/opt/lampp/etc/httpd.confApache 主配置文件/opt/lampp/etc/php.iniPHP 配置文件/opt/lampp/etc/my.cnfMariaDBMySQL配置文件/opt/lampp/etc/extra/httpd-vhosts.conf虚拟主机配置文件/opt/lampp/modulesApache 动态模块目录/opt/lampp/logs各种日志文件排障时重点看这里可以看到所有配置文件和目录都被约束在/opt/lampp内这种做法最大的好处是当你不再需要 XAMPP 时直接删除整个目录即可系统里基本不会留下残留的进程或依赖。3.3 首次启动与基础验证安装完成后的第一步是启动服务命令很简单sudo /opt/lampp/lampp start启动成功后它会输出类似Starting XAMPP for Linux 17.4-beta11...的信息。如果你一切正常可以看到 Apache 和 MariaDB 都显示出ok状态。启动之后验证一下三个基本项目# 1. 查看进程是否存在 ps aux | grep -E apache|mysql # 2. 检查端口监听状态 netstat -tlnp | grep -E :80|:443|:3306如果你在本机装有防火墙记得放行这几个端口。CentOS 7 里默认是 firewalld可以用sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --permanent --add-port443/tcp sudo firewall-cmd --permanent --add-port3306/tcp sudo firewall-cmd --reloadUbuntu 上如果有 ufw用sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 3306/tcp然后打开浏览器访问http://localhost能看到 XAMPP 默认的欢迎页就是安装成功的标志。4. 核心组件配置与运行调优4.1 Apache 配置要点Apache 的主配置在/opt/lampp/etc/httpd.conf。第一次打开这个文件你可能会被它的长度吓到但实际需要改的地方就那么几个。端口修改默认监听 80 端口如果你要改成 8080搜索Listen 80这一行改成Listen 8080然后还要同步修改ServerName和如果有虚拟主机的话对应的VirtualHost端口。修改完后重启 Apachesudo /opt/lampp/lampp restartWeb 根目录默认的htdocs目录就是/opt/lampp/htdocs。想改到自定义位置搜索DocumentRoot这一行把它指向你选择的目录同时还需要同步修改该目录下的Directory指令确保它有AllowOverride All和必要的执行权限。DocumentRoot /home/user/www Directory /home/user/www Options Indexes FollowSymLinks AllowOverride All Require all granted /Directory改完这些配置Apache 才能正常读取新目录。如果你只改了DocumentRoot却没改Directory通常会遇到 403 Forbidden 错误这算是新手最容易踩的坑。虚拟主机配置本地开发时我强烈建议你用虚拟主机来隔离不同项目。XAMPP 已经提供了一个现成的配置文件/opt/lampp/etc/extra/httpd-vhosts.conf但默认没有启用。需要先在httpd.conf里找到这一行并去掉注释#Include etc/extra/httpd-vhosts.conf去掉#后在httpd-vhosts.conf里添加虚拟主机规则。比如我要加一个myproject.local的站点VirtualHost *:80 ServerAdmin adminmyproject.local DocumentRoot /opt/lampp/htdocs/myproject ServerName myproject.local ServerAlias www.myproject.local ErrorLog logs/myproject-error.log CustomLog logs/myproject-access.log common /VirtualHost这是一个很典型的配置。ServerName用来指定访问的域名DocumentRoot指向你的项目目录ErrorLog单独记录错误日志。然后在本机的/etc/hosts文件里加一行127.0.0.1 myproject.local重启 Apache 后直接访问http://myproject.local就能跳到对应项目。开发多个项目时这个方法非常好用各项目互不干扰。4.2 MariaDB 初始化与 root 密码修改XAMPP 安装完成后MariaDB 的 root 用户默认是没有密码的而且只允许本机连接。这当然方便但也带来了安全风险。尤其你要把服务开放给局域网内其他机器测试时不设密码等于裸奔。先进入数据库命令行sudo /opt/lampp/lampp start /opt/lampp/bin/mysql -u root这里注意XAMPP 的 MySQL 客户端和管理工具也在/opt/lampp/bin目录下系统自带的mysql命令可能会指向另一个版本最好用全路径或把/opt/lampp/bin加入系统 PATH。进入 MySQL 后修改 root 密码ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES; EXIT;修改完密码后重启 MariaDB 使配置生效sudo /opt/lampp/lampp restart重启后再连接数据库就必须带密码了/opt/lampp/bin/mysql -u root -p这里有一个很重要的细节很多 PHP 项目包括 DVWA的连接配置里会写数据库用户名和密码改完 root 密码后必须同步修改项目配置否则网站会报“数据库连接失败”。新建专用数据库用户为了安全我建议你不要用 root 来跑业务项目而是为每个项目单独建一个用户。比如给 DVWA 建一个用户CREATE USER dvwalocalhost IDENTIFIED BY dvwa_password; GRANT ALL PRIVILEGES ON dvwa.* TO dvwalocalhost; FLUSH PRIVILEGES; EXIT;这样做的好处是即使某个项目被攻击攻击者拿到的数据库权限也仅限于一个库不至于把整台服务器的数据库都拖走。4.3 PHP 配置与扩展启用PHP 配置文件在/opt/lampp/etc/php.ini。初次启动后你可能需要调整以下几个参数主要是为了开发时的调试便利错误显示开发环境建议打开错误显示方便排查代码问题display_errors On display_startup_errors On搜索这两个配置项确认是On而不是Off。如果你希望同时把错误记录到日志里还可以开启log_errors On error_log /opt/lampp/logs/php_error.log上传大小限制默认的上传文件大小是 2M有时候不够用。搜索以下两个配置项并修改upload_max_filesize 64M post_max_size 68M扩展启用XAMPP 默认已经启用了 MySQL、cURL、OpenSSL 等常见扩展。如果你发现缺少某个扩展可以在/opt/lampp/etc/php.ini里搜索extension相关行去掉需要的扩展前面的注释并重启 Apache。比如extensionmysqli extensioncurl extensiongd修改 PHP 配置后必须重启 Apache 才能生效sudo /opt/lampp/lampp restart实际开发中常遇到的问题是修改了php.ini预览页面却没变化最后发现忘了重启 Apache这种低级错误我也犯过很多次。5. 基于 XAMPP 搭建 DVWA 的扩展实战5.1 DVWA 是什么为什么要用它DVWADamn Vulnerable Web Application是一个故意设计成充满漏洞的 PHP 靶场应用用来学习和测试 Web 安全技术比如 SQL 注入、XSS 攻击、文件上传漏洞等。它和学习攻击手段相辅相成主要用于合法的安全教学环境跟 XAMPP 配合可以快速在本地起一个实验环境。需要说明的是DVWA 这类靶场程序存在大量已知漏洞绝对不能部署到公网只能在完全可控的本地或隔离环境里运行否则等于把一台不设防的机器暴露给攻击者。DVWA 官方也声明它只能用于合法的安全测试与学习场景。5.2 部署流程第一步下载 DVWA 源码。如果你已经安装了 Git直接 clonecd /opt/lampp/htdocs sudo git clone https://github.com/digininja/DVWA.git或者下载 ZIP 并解压到/opt/lampp/htdocs/DVWA目录。解压后确认目录名是DVWA否则访问路径会多出一层。第二步修改配置文件。DVWA 提供了一个示例配置文件config/config.inc.php.dist你需要复制一份并重命名为config.inc.phpcd /opt/lampp/htdocs/DVWA sudo cp config/config.inc.php.dist config/config.inc.php sudo vim config/config.inc.php在文件里修改数据库连接信息改成前面创建的用户名和密码$_DVWA[ db_server ] 127.0.0.1; $_DVWA[ db_database ] dvwa; $_DVWA[ db_user ] dvwa; $_DVWA[ db_password ] dvwa_password;第三步设置 DVWA 的当前安全等级建议初始设为low目的是体验完整的漏洞利用流程。修改配置$_DVWA[ default_security_level ] low;第四步在浏览器里访问http://localhost/DVWA/setup.php页面底部会有一个创建数据库的按钮。点击后 DVWA 会自动创建数据库和初始化表。如果页面提示某些 PHP 功能未启用比如allow_url_fopen或者某个扩展没开启你需要回到/opt/lampp/etc/php.ini里开启对应配置然后重启 Apache 再来刷新。第五步登录 DVWA 默认账号。默认用户名是admin密码是password。登录后你就可以开始各种安全测试了。5.3 DVWA 配置过程中的坑初次连接 DVWA 时最常见的报错是 “Access denied for user dvwalocalhost”这通常是因为你配置的用户名/密码跟数据库里的实际用户不一致或者该用户没有对dvwa库的权限。解决办法就是回到 MySQL用前面提到的GRANT语句重新授权然后再刷新 setup 页面。另一个常见的坑是 DVWA 页面提示PHP function allow_url_include is disabled。这是因为 DVWA 部分漏洞练习依赖这个配置需要在php.ini里开启allow_url_include On修改后重启 Apache再回到 setup 页面刷新配置检查项就会全部通过。6. 常见问题与排查技巧实录6.1 端口占用与无法启动这是 Linux 下用 XAMPP 最常遇到的问题。启动时如果报port 80 already in use说明系统里已经有一个进程占用了 80 端口。先用命令查看是谁占的sudo netstat -tlnp | grep 80 sudo lsof -i:80常见元凶是系统自带的 httpd 服务。CentOS 里可以先停掉系统 Apache 再启动 XAMPPsudo systemctl stop httpd sudo systemctl disable httpd如果你不想停掉系统服务那就改 XAMPP 的端口按 4.1 节的方法把Listen 80改成其他端口比如 8080。MySQL 端口同理如果提示 3306 被占用多半是系统里已经安装了 MySQL 或 MariaDB 服务。可以手动停掉或者修改/opt/lampp/etc/my.cnf里的端口配置。6.2 权限与 SELinux 问题XAMPP 安装到系统后你在htdocs里新建目录和文件时可能会遇到无法访问或 403 的情况。首先确认文件权限sudo chmod -R 755 /opt/lampp/htdocs/DVWA这里要记住Apache 运行的用户是daemon或nobody如果你把文件属主设为 root并且权限不够Apache 就读不到。最简单的办法是把项目目录组权限放开或者在开发环境直接设置成777。当然如果要部署到生产环境权限策略完全不同需要单独讨论。在启用了 SELinux 的系统上问题会更复杂。CentOS 7 默认 SELinux 是 enforcing 模式XAMPP 安装完访问页面可能直接无法显示。最省事的方案是在开发机上把它暂时设置成 permissivesudo setenforce 0但要注意生产环境不能这么干。如果你必须保留 SELinux你需要为/opt/lampp目录设置正确的文件上下文标签。具体命令可以参考 Apache 相关的 SELinux 策略。6.3 修改 MySQL 密码后无法连接改密码后项目连接数据库时报错这在 4.2 节已经提到大概率是项目配置文件没有同步。排查顺序是确认数据库密码是否改对了用/opt/lampp/bin/mysql -u root -p手动登录测试。检查项目配置文件里的db_password等字段是否更新为最新密码。确认项目使用的用户是否存在于数据库中并且授权目标不是别的库。这条排查思路适用于所有基于 PHP MySQL 的项目。6.4 快速重置 XAMPP 的方法配置改坏了怎么办最简单粗暴的办法是重置。先停止服务sudo /opt/lampp/lampp stop然后备份/opt/lampp/etc目录再删除整个/opt/lampp目录重装。不过更轻量的方式是直接把/opt/lampp/etc下的配置文件和/opt/lampp/var/mysql数据库数据目录备份后删除然后重新执行一次安装脚本就能得到一个全新环境。6.5 常见问题速查表现象可能原因解决办法启动时报端口被占用系统服务占用了 80/443/3306停止对应服务或修改 XAMPP 端口访问站点返回 403目录权限不足或虚拟主机配置错误检查Directory指令和文件权限MySQL 连接拒绝用户名/密码错误或端口被系统数据库占用手动连接测试检查项目配置释放端口PHP 页面源码被浏览器显示Apache 未正确加载 PHP 模块重启 XAMPP检查httpd.conf中LoadModule php行修改 php.ini 后不生效没重启 Apache运行/opt/lampp/lampp restart7. 最后补充安装后的一些实用心得说起安装配置这一整套流程我最有感触的一点是XAMPP 治好了我在本地环境搭建上的“精神内耗”。以前在 Linux 上弄个 PHP 环境装依赖、编译、调错误没两三个小时起不来。现在几分钟部署完立刻能写代码、跑项目效率完全是两个量级。而且/opt/lampp这个独立目录的结构设计很清爽不管是备份、迁移还是卸载都比系统级安装的 LAMP 方便太多。不过 beta 版本的使用还是要多留个心眼。我之前在这个版本上遇到过lampp restart偶尔丢进程的情况后来发现是启动脚本在快速连续重启时的时序问题多等几秒再操作就正常了。所以如果你用的是 beta 版遇到莫名奇妙的偶发问题先别怀疑配置等几秒重试一次很多时候问题就自己消失了。对于新手我的建议是先跑通默认配置再研究怎么调整。不要一上来就改一堆参数出了问题都不知道从哪一步开始排查。等你熟悉了 XAMPP 的结构、理解了启动脚本和配置文件之间的关系再慢慢按需定制那时候你会觉得这套环境用起来确实是顺手得很。
返回列表