6
9月
2022
在 Linux Mint 21 上重新安装 Apache2 Web 服务器并安装 PHP 8.1
16:34

在 Linux Mint 21 上重新安装 Apache2 Web 服务器并安装 PHP 8.1

6 9月 2022 16:34

在切换到基于 Ubuntu jammy 软件包基础的 Linux Mint 21“Vanessa”后,Apache2 停止运行。
下面描述了我如何恢复 Web 服务器。

启动 Apache2 Web 服务器时出现问题

问题如下 - 重新安装 Linux Mint 后,“apache2”服务未启动:
sudo服务apache2启动
apache2.service 作业失败,因为控制进程退出并出现错误代码。
有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xeu apache2.service”。
日志显示该服务未找到 /etc/apache2/apache2.conf 配置文件。

尝试通过重新安装来修复它没有导致任何结果:
sudo apt-get 更新 && sudo apt-get 清除 apache2 && sudo apt-get 安装 apache2

另外,完全卸载 Apache2 后,旧安装的“which apache2”的痕迹仍然存在

  • 应该输出一个空行,但输出不同,指向 /usr/sbin 文件夹。

解决问题

1)删除旧版本

sudo apt-get purge apache2

2)清除之前安装的痕迹

sudo apt-get autoremove
sudo rm /usr/sbin/apache2

3)添加PPA存储库 “ondrej/apache2” 并更新包缓存:

! 评论。 如果操作系统是 Debian,则默认情况下没有“apt-add-repository”命令。

仅在Debian上,其他不需要先运行:

sudo apt-get install software-properties-common
sudo apt-get update

在 Ubuntu 和 Linux Mint 上:

sudo apt-add-repository ppa:ondrej/apache2
sudo apt-get 更新

4)安装Apache2

sudo apt-get install apache2

5)检查配置

sudo apache2ctl configtest

错误信息:
AH00558:apache2:无法可靠地确定服务器的完全限定域名(使用 127.0.0.1)。 全局设置“ServerName”指令以抑制此消息

您需要在配置文件的“ServerName”指令中指定Web服务器的名称或IP地址

sudo nano /etc/apache2/apache2.conf

在靠近文件开头的位置添加以下行

ServerName linux-pc

其中 linux-pc 是终端中 @ 符号之后显示的名称

保存配置 Ctrl+O、Ctrl+X

6)启动Apache2服务:

sudo service apache2 start

7) 通过打开浏览器并访问地址来检查 Web 服务器的运行情况,始终添加 http:// 前缀

例如,http://linux-pc

8) 在“/etc/apache2/sites-available”文件夹中配置虚拟主机

示例测试文件(内容无注释 grep -v "^[[:blank:]]#" test.conf ):

<VirtualHost *:80>
ServerName test
ServerAdmin webmaster@localhost
DocumentRoot /home/user/test/
<Directory "/home/user/test">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/errortest.log
CustomLog ${APACHE_LOG_DIR}/accesstest.log combined
</VirtualHost>

9) 从sites-enabled目录创建软链接:

cd /etc/apache2/sites-enabled

sudo ln -s ../sites-available/test.conf test.conf

我们检查:

ls -l

10)在hosts文件中添加别名

须藤纳米 /etc/hosts

127.0.0.1 test

Ctrl+O、Ctel+X

12)重新读取配置或者重启Apache2服务,如下:

sudo service apache2 reload

13) 我们通过访问 http://test 检查网站的运行情况

14) 如果显示文件的内容而不是 PHP 工作的结果(因为该站点是 PHP 语言),

您需要重新安装 Apache2 的 PHP 模块

首先,让我们找出哪些适用于 Apache2 的 PHP 模块可供安装:

apt-cache search libapache2-mod-php*

例如,Apache2有模块:php 7.4和php8.1

接下来,我们决定该项目需要什么 php。 例如,如果Twig模板引擎是旧版本,则选择7.4,否则选择8.1

libapache2-mod-php8.1 - 嵌入 HTML 的脚本语言,在服务器端执行(Apache 2 模块)
libapache2-mod-php7.4 - 过渡包

我首先安装适当版本的php和命令行的php。

sudo apt-get install php8.1 php8.1-cli

如果有多个并行配置和 php 版本,我将 php 8.1 指定为“master"

sudo update-alternatives --config php

我删除了 libapache2-mod-php8.1 模块 连同 libapache2-mod-php这个技巧解决了很多问题):

sudo apt purge libapache2-mod-php8.1 libapache2-mod-php

我立即只安装_一个_模块 libapache2-mod-php8.1:

sudo apt install libapache2-mod-php8.1

我们允许使用以下命令启动 Apache 的 php8.1 模块:

sudo a2enmod php8.1

控制台显示模块注册成功的消息

Considering dependency mpm_prefork for php8.1:

Considering conflict mpm_event for mpm_prefork:

Considering conflict mpm_worker for mpm_prefork:

Module mpm_prefork already enabled

Considering conflict php5 for php8.1:

Module php8.1 already enabled

15) 打开网站http://test。 如果出现问题,请检查日志

su -
cd /var/log/apache2
tail errortest.log

16) 程序需要调试。 通常,错误与旧版本框架(供应商)与新版本 php 8.1 不兼容有关。
其他问题本地解决,在PHP程序代码中,根据目录下的日志分析 /var/log/apache2


22 年 11 月 22 日更新:在 Apache2 Web 服务器中启用 PHP 8.1

如果apt升级命令显示Apache2中的PHP 8.1默认未启用

NOTICE: Not enabling PHP 8.1 FPM by default.

NOTICE: To enable PHP 8.1 FPM in Apache2 do:

NOTICE: a2enmod proxy_fcgi setenvif

NOTICE: a2enconf php8.1-fpm

NOTICE: You are seeing this message because you have apache2 package installed.

在 Apache2 中启用 PHP 8.1:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm
sudo systemctl reload apache2

检查 PHP 版本:

php --version

“PHP 8.1 FastCGI进程管理器”服务状态:

systemctl status php8.1-fpm

phpinfo() 命令的结果;
PHP Version 8.1.2-1ubuntu2.8



相关出版物