支持并发多版本PHP的Linux开发环境#
为了充分利用XenForo框架,您需要搭建一个能够运行XenForo的本地Web服务器,并配备一个能够理解代码并帮助您进行调试的代码编辑器。
幸运的是,现在满足这些需求非常简单,而且完全免费。
以下文档及附带的视频将逐步指导您在基于Ubuntu Linux的系统上安装所需的一切,以便开始开发。
与我们的macOS开发环境类似,此配置将允许您同时运行多个PHP版本,因此您可以在PHP 5.6上运行XenForo 1.5,在PHP 7.4上运行XenForo 2.1,在PHP 8.0上运行XenForo 2.2,而无需在访问特定版本时手动切换PHP版本。
关于我们在此所做的大部分解释可以在我们的macOS指南中找到,因此本文档将非常简短且切中要点。如果您只想获取安装脚本并直接进入配置部分,请点击此处。
使用Apt安装#
本教程基于Ubuntu或Debian系统,但其原理可以应用于任何提供历史PHP软件包的Linux发行版。
APT是Debian系Linux发行版内置的_高级软件包工具_。它使得在Linux上安装预配置软件的工作比以往更加轻松。
添加新的软件源#
首先,我们需要指示Apt使用一些额外的软件源来获取软件包。
在终端中运行以下命令:
#!/bin/bash
# Ubuntu的PHP版本
sudo add-apt-repository -y ppa:ondrej/php
# TablePlus(可选)
wget -O - -q http://deb.tableplus.com/apt.tableplus.com.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://deb.tableplus.com/debian tableplus main"
# ElasticSearch(可选)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
# 获取最新的版本信息并升级现有软件包
sudo apt update -y
sudo apt upgrade -y
如果您使用的是Debian而不是Ubuntu,请忽略ppa:ondrej/php
行,并在运行apt update
之前运行以下命令:
sudo apt-get -y install apt-transport-https lsb-release ca-certificates curl
sudo curl -sSL -o /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
安装软件包#
接下来,我们将安装所需的软件。
#!/bin/bash
# PHP相关
sudo apt install php5.6-fpm -y
sudo apt install php7.4-fpm -y
sudo apt install php8.0-fpm -y
sudo apt install php-pear -y
sudo apt install php-memcache -y
# PHP模块
for module in xdebug imagick gettext gd bcmath bz2 curl dba xml gmp intl ldap mbstring mysql odbc soap zip enchant sqlite3
do
for version in 7.4 5.6 8.0
do
sudo apt install php${version}-${module} -y
done
done
# Apache Web服务器
sudo apt install apache2 -y
# 启用Apache FastCGI / FPM模块
sudo a2enmod proxy_fcgi
# TablePlus(可选)
sudo apt install tableplus -y
# ElasticSearch(可选)
sudo apt install elasticsearch -y
# MariaDB(MySQL)
sudo apt install mariadb-server -y
注意
鉴于脚本中存在for
循环,建议您将上述内容保存到一个名为install.sh
的脚本中,然后运行chmod 700 install.sh
使其可执行,并在终端中运行它。
配置#
安装完所有软件包后,我们需要根据需求进行配置。
MariaDB#
MariaDB / MySQL在安装后需要一些额外的配置。
在终端中运行以下命令:
在此脚本中,接受所有默认选项,但确保您确实设置了root密码。
接下来,使用sudo
运行MySQL客户端:
在获得有效的SQL提示符后,输入以下查询:
现在您可以退出mysql,并且以后不再需要使用sudo
运行MySQL客户端。
Apache#
我们将把所有Apache配置保存在一个文件中。
打开/etc/apache2/sites-enabled/000-default.conf
,并在关闭</VirtualHost>
标签之前添加以下代码。
ServerName localhost
Timeout 3600
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
DocumentRoot "/home/kier/Documents/www"
<Directory "/home/kier/Documents/www">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://localhost:9080"
</FilesMatch>
其中/home/kier/Documents/www
需要替换为您打算存储www文档的路径。
在启动Apache服务之前,请确保该目录存在。
PHP#
我们不需要对Ubuntu/Debian的默认PHP配置进行太多更改,只需修改一些Xdebug指令和php-fpm的运行方式。
Xdebug#
编辑/etc/php/5.6/mods-available/xdebug.ini
,并为Xdebug 2.5.5添加以下内容:
zend_extension = "xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
接下来,编辑/etc/php/7.4/mods-available/xdebug.ini
和/etc/php/5.6/mods-available/xdebug.ini
,并为Xdebug 3.0.x添加以下内容:
zend_extension = "xdebug.so"
xdebug.mode = "debug,develop"
xdebug.discover_client_host = 1
xdebug.client_port = 9000
php-fpm#
将PHP版本号中的小数点去掉,并将结果加上9000,例如5.6变为9056,8.0变为9080,然后在/etc/php/(version)/fpm/pool.d/x.conf
中为PHP 5.6、7.4和8.0创建一个名为x.conf
的文件。
为每个文件添加以下内容:
... 根据每个PHP版本适当更改用户名和90xx端口号。
启动服务#
现在您可以使用新的配置重新启动所有服务:
#!/bin/bash
sudo systemctl restart elasticsearch
sudo systemctl restart mariadb
sudo systemctl restart apache2
sudo systemctl restart php8.0-fpm
sudo systemctl restart php7.4-fpm
sudo systemctl restart php5.6-fpm
现在一切应该都在运行中,因此您可以按照macOS指南中关于同时使用多个PHP版本的说明,将文件放置在您在Apache配置中指定的www
目录中。
资源链接#
总结#
终端命令#
配置MariaDB / MySQL#
以root身份使用sudo运行mysql客户端,然后执行SQL查询以禁用MySQL的插件认证。
编辑Apache VirtualHost#
编辑/etc/apache2/sites-available/000-default.conf
以包含自定义配置。
替换以下文件#
/etc/php/5.6/mods-available/
xdebug.ini
/etc/php/7.4/mods-available/
xdebug.ini
/etc/php/8.0/mods-available/
xdebug.ini
添加以下文件#
重启服务#
使用sudo systemctl restart
重启elasticsearch
、mariadb
、apache2
、php8.0-fpm
、php7.4-fpm
和php5.6-fpm
。
针对PHP版本的.htaccess文件#
以下文件可以放置在Web服务器上的目录中,以使该文件夹中的所有PHP文件使用特定版本的PHP。
将文件从htaccess.txt
重命名为.htaccess
后放置在目标文件夹中。