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

Posted

技术标签:

【中文标题】如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?【英文标题】:How to fix '(38)Function not implemented: AH00141: Could not initialize random number generator' after upgrading Apache from 2.4.18 to 2.4.46? 【发布时间】:2021-06-11 11:44:18 【问题描述】:

我有一个运行着 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 install apache2

服务 apache2 重启

apache2.service 的作业失败,因为控制进程以错误代码退出。详见“systemctl status apache2.service”和“journalctl -xe”。

journalctl -xe

apachectl[9010]: [:crit] [pid 9013] (38)函数未实现:AH00141: 无法初始化随机数生成器

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

【问题讨论】:

可能相关:bugs.debian.org/cgi-bin/bugreport.cgi?bug=978045 tl;dr:您的内核可能没有启用getrandom 系统调用。 我面临同样的问题。可能值得在github.com/oerdnj/deb.sury.org/issues 上创建一个问题,但 16.04 将在 3 周内结束生命……升级 ubuntu 安装并使用 canonical 提供的软件包可能值得。 【参考方案1】:

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

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

经过几乎一整天的长期调查并尝试了我在网上找到的关于升级 Ubuntu 内核的所有内容 - 我发现它是 Digitalocean,而不是我。旧的 Droplet 使用外部托管内核 - 因此无论您在环境中做什么,它都将始终使用外部内核。解决方案在这里: 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") )

【讨论】:

谢谢,可能节省了我几个小时。一个细节:更改内核后重新启动是不够的。您必须关闭(通过sudo poweroff)然后登录到 Digital Ocean 控制台才能让您的水滴再次启动。 欢迎您,正确 - 需要关闭电源,重启是不够的

以上是关于如何在将 Apache 从 2.4.18 升级到 2.4.46 后修复“(38) 功能未实现:AH00141: 无法初始化随机数生成器”?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Apache 重定向到 Tomcat?

如何在 Apache 2.4.18 Server 中实现没有 ssl 的 http2

Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长

在将 quasar 升级到 vue 2 到 vue 3 时,找不到 core-js/modules/es.typed-array.at.js 依赖项

WAMP : Forbidden 您无权访问此服务器上的 /。 Apache/2.4.18 (Win64) PHP/5.6.19

从 Apache Spark 分段上传到 Amazon S3