Apache 从 2.4.18 升级到 2.4.46 后如何修复“(38)未实现的功能:AH00141:无法初始化随机数生成器”?

问题描述 投票:0回答:2

我有一个运行着 Ubuntu 16.04、Apache 2.4.18、PHP 7.3 和 7.4、PHP-FPM、PHP FastCGI、MPM 事件的系统。

我想升级到最新的Apache版本(2.4.46-2+ubuntu16.04.1+deb.sury.org+3 amd64 [upgradable from: 2.4.18-2ubuntu3.17])如下:

add-apt-repository -y ppa:ondrej/apache2

适度更新

apt-get --only-upgrade 安装 apache2

服务apache2重启

apache2.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xe”。

journalctl -xe

apachectl[9010]: [:crit] [pid 9013] (38)Function not implemented: AH00141: Could not initialize random number generator

我检查并安装了 /dev/random 和 /dev/urandom。 内核:4.4.0-042stab141.2 和 libc6:2.23-0ubuntu11.2

apache2 upgrade
2个回答
4
投票

在 Ubuntu 上将 apache 升级到版本 2.4.46 后也发生在我身上。我发现它是内核版本。

我知道我做了

apt-get upgrade
内核应该是最新版本,也在运行
sudo update-grub
向我展示了较新的版本,但运行
uname -r
显示了非常旧的内核。

经过几乎一整天的长时间调查并尝试了我在网上找到的关于升级 Ubuntu 内核的所有内容 - 我发现它是 Digitalocean,而不是我。旧的 droplets 使用外部托管内核——所以无论你在你的环境中做什么,它总是使用外部内核。解决方案在这里: https://www.digitalocean.com/docs/droplets/how-to/kernel/grubloader/#switch

如果您确实在 Digital ocean 控制面板的 droplet 设置中看到下拉和更改按钮,那么您的内核是外部管理的。在该下拉列表中键入“grub”并选择 GrubLoader v0.2,按“更改”按钮就可以了!

现在你需要关闭并重新打开你的服务器,但在你这样做之前我建议运行以下命令:

sudo apt-get update
sudo apt-get upgrade

以上升级将更新整个系统。要仅更新内核,请运行上面的更新命令,然后:

sudo apt-get upgrade linux-image-generic

现在关闭(

sudo poweroff
或从 DigitalOcean 界面关闭电源,尽管首选从 CLI 执行)。请注意,在这种特殊情况下重启是不够的,需要完全关闭(感谢@gauss256 的评论)。然后从数字海洋界面重新启动它,启动时你应该看到一个新的内核版本。

提示 - 你可能想在重启后删除旧的内核文件,这可以通过以下方式完成:

sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )


0
投票

debian中只需要执行:

sudo apt-get upgrade linux-image-generic

然后您必须检查这产生的输出,它移动旧内核并配置新的可用内核以供系统使用,并将 grub 作为主要内核。

如果看到,可以重新启动,请仔细检查。 然后在系统重启后执行以下命令后:

uname -r
sudo service apache2 restart
systemctl status apache2.service

你应该看到你正在运行新的内核版本并且 apache 确实重新启动成功,没有“无法初始化随机数生成器”的问题。

希望这对 Debian 用户也有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.