XAMPP

来自 ArchWiki

XAMPP 是一个易于安装的 Apache 发行版,包含 MariaDBPHPPerlProFTPD。它包含:Apache、MariaDB、PHP & PEAR、Perl、ProFTPD、phpMyAdmin、OpenSSL、GD、Freetype2、libjpeg、libpng、gdbm、zlib、expat、Sablotron、libxml、Ming、Webalizer、pdf class、ncurses、mod_perl、FreeTDS、gettext、mcrypt、mhash、eAccelerator、SQLite 和 IMAP C-Client。

安装

安装 xamppAUR 软件包

配置

默认配置应该可以直接使用。XAMPP 各个部分的设置可以通过编辑以下文件完成

  • /opt/lampp/etc/httpd.conf — Apache 配置。例如,您可以更改包含网页源文件的文件夹。
  • /opt/lampp/etc/php.ini — PHP 配置。
  • /opt/lampp/phpmyadmin/config.inc.php — phpMyAdmin 配置。
  • /opt/lampp/etc/proftpd.conf — ProFTPD 配置。
  • /opt/lampp/etc/my.cnf — MySQL 配置。

如果您想设置服务器的安全性,只需运行

# /opt/lampp/xampp security

系统将逐步询问您,为网页访问、phpMyAdmin 的用户 "pma"、MySQL 的用户 "root" 和 ProFTPD 的用户 "daemon" 选择密码。

使用

使用以下命令控制 XAMPP

# /opt/lampp/xampp start,stop,restart

或者,您可以启动停止重启 xampp.service

启动时自动启动

为了在启动时启动 XAMPP,启用 xampp.service

技巧与诀窍

托管 htdocs 目录之外的文件

文档根目录(网站根目录)位于 /opt/lampp/htdocs/。放置在此目录中的所有文件都将由 Web 服务器处理。

要在您的系统上使用 XAMPP 托管其他文件,您可以为 Apache 配置别名。

  • 使用您喜欢的编辑器编辑 Apache 的 /opt/lampp/etc/httpd.conf
  • 找到 DocumentRoot,您将看到类似以下内容
DocumentRoot "/opt/lampp/htdocs"
<Directory "/opt/lampp/htdocs">
    ...    
    ...

</Directory>
  • </Directory> 之后的下一行粘贴此内容
<Directory "/yourDirectory/">
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride All
    Require all granted
</Directory>
  • 接下来找到 <IfModule alias_module>
<IfModule alias_module>

    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar
  ...
</IfModule>
  • 并在 </IfModule> 之前粘贴此内容
Alias /yourAlias /yourDirectory/
  • 接下来找到 <IfModule unixd_module>
<IfModule unixd_module>

  ...  
  ...
    User daemon
    Group daemon
</IfModule>
  • 并将 daemon 更改为 yourUseryourGroup
User yourUser
Group yourGroup
  • 现在不要忘记重启 Apache
# /opt/lampp/xampp restart

这将允许您使用 XAMPP 从您的主目录(或任何其他目录)托管文件。

在上面的示例中,您可以通过将 Web 浏览器指向 localhost/yourAlias 来访问文件。

使用 Xdebug 和 XAMPP 进行调试和性能分析

有关详细说明,请参阅 https://xdebug.org/find-binary.php

您必须首先从同一下载页面下载 XAMPP 开发工具,https://www.apachefriends.org/en/xampp-linux.html[死链 2022-09-23 ⓘ]

将其解压到您的 XAMPP 目录中

# tar xvfz xampp-linux-devel-x.x.x.tar.gz -C /opt

您应该能够成功在您的 xdebug 文件夹中运行 /opt/lampp/bin/phpize

本地测试服务器安全

可以配置 Apache、MySQL 和 ProFTPD,使其仅侦听来自您自己计算机的请求。对于大多数测试系统来说,这很好,并且大大降低了风险,因为这些服务无法从 Internet 访问。

在首次启动 XAMPP 之前,找到并编辑这些文件

对于 Apache,编辑文件 /opt/lampp/etc/httpd.conf/opt/lampp/etc/extra/httpd-ssl.conf。查找以 "Listen" 开头的行,例如

Listen 80

并将它们替换为

Listen 127.0.0.1:80

对于 MySQL,打开文件 /opt/lampp/etc/my.cnf,找到 "[mysqld]" 部分并添加以下行

bind-address=localhost

对于 ProFTPD,在 "DefaultServer" 部分下的 /opt/lampp/etc/proftpd.conf 中添加以下行

DefaultAddress 127.0.0.1
SocketBindTight on

启动服务后,通过转到命令窗口并启动并执行来验证结果

$ ss -tln

本地地址列应始终以 127.0.0.1 或 ::1 开头,永远不要以 0.0.0.0 开头。

手动安装

要手动安装 XAMPP 而不是按照#安装,请从网站下载安装程序,使其可执行,并通过键入以下内容来运行它

# ./xampp-linux-x64-version-installer.run
注意: libxcrypt-compatnet-toolsinetutils 软件包是必需的依赖项,因此请确保在启动 XAMPP 之前安装它们。
提示: 默认情况下,安装程序为其 UI 使用 Qt 后端。如果您希望它使用 GTK 后端,请启动
# ./xampp-linux-x64-version-installer.run --mode gtk

如果您不想使用任何图形界面,并且更喜欢直接从终端安装 XAMPP,请启动

# ./xampp-linux-x64-version-installer.run --mode text

有关更多选项,请以普通用户身份启动

$ ./xampp-linux-x64-version-installer.run --help

您现在可以为 XAMPP 创建一个 systemd 服务

/etc/systemd/system/xampp.service
[Unit]
Description=XAMPP

[Service]
ExecStart=/opt/lampp/xampp start
ExecStop=/opt/lampp/xampp stop
Type=forking

[Install]
WantedBy=multi-user.target

手动移除

如果您是手动安装的 XAMPP,您也需要手动移除它。请务必停止所有 XAMPP 服务。

# /opt/lampp/xampp stop

XAMPP 需要安装的所有文件都位于之前的 /opt/lampp 文件夹中。因此,要卸载 XAMPP

# rm /etc/systemd/system/xampp.service
# rm -r /opt/lampp
注意
  • 在执行此操作之前,请务必备份您的文件(例如 /opt/lampp/htdocs 中的文件)。
  • 如果您创建了符号链接,您可能还需要销毁它们。
  • 如果您安装了软件包,请不要使用此方法;请卸载该软件包。

故障排除

PhpMyAdmin 403 访问被拒绝

如果您的 https://127.0.0.1/phpmyadmin 返回 "403 Access Forbidden",您需要在 /opt/lampp/etc/extra/httpd-xampp.conf 中编辑以下设置

<Directory "/opt/lampp/phpmyadmin">
	AllowOverride AuthConfig Limit
	#Order allow,deny
	#Allow from all
	Require all granted
</Directory>