Apache2 如何修复';(38)函数未实现:AH00141:无法初始化随机数生成器';在将Apache从2.4.18升级到2.4.46之后?

Apache2 如何修复';(38)函数未实现:AH00141:无法初始化随机数生成器';在将Apache从2.4.18升级到2.4.46之后?,apache2,upgrade,Apache2,Upgrade,我有一个运行着Ubuntu 16.04、Apache 2.4.18、PHP7.3和7.4、PHP-FPM、PHPfastCGI、MPM事件的系统 我想升级到最新的Apache版本(2.4.46-2+ubuntu16.04.1+deb.sury.org+3 amd64[可从:2.4.18-2ubuntu3.17升级]),如下所示: 添加apt存储库-y ppa:ondrej/apache2 apt更新 apt get--仅升级安装apache2 服务apache2重新启动 apache2.serv

我有一个运行着Ubuntu 16.04、Apache 2.4.18、PHP7.3和7.4、PHP-FPM、PHPfastCGI、MPM事件的系统

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

添加apt存储库-y ppa:ondrej/apache2

apt更新

apt get--仅升级安装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在Ubuntu上将apache升级到2.4.46版后,我也遇到了同样的问题。我发现它是内核版本

我知道我做了
apt升级
,内核应该是最新版本,也在运行
sudo更新grub
向我显示了更新的版本,但运行
uname-r
时显示了非常旧的内核

经过一个长时间的调查,花了几乎一整天的时间,尝试了我在网上找到的关于升级Ubuntu内核的一切——我发现是Digitalocean,不是我。旧版本使用外部托管内核—因此,无论您在环境中执行什么操作,它都将使用外部内核。解决办法是:

如果您确实在Digital ocean control panel中的水滴设置中看到下拉和更改按钮,那么您的内核是外部管理的。在下拉列表中键入“grub”并选择GRUBLOADERV0.2,按下“更改”按钮&就这样

现在,您需要关闭并重新打开服务器,但在此之前,我建议运行以下命令:
sudo-apt-get-update
sudo-apt-get-upgrade

上述升级将更新整个系统。要仅更新内核,请运行上面的update命令,然后执行以下操作:
sudo-apt-get-upgrade-linux-image-generic

现在关闭(
sudo电源关闭
或从DigitalOcean接口关闭电源,但最好从CLI关闭)。请注意,在这种特殊情况下,重新启动是不够的,需要完全关闭(感谢@gauss256的评论)。然后从digital ocean接口重新启动,启动后您应该会看到一个新的内核版本

提示-您可能希望在重新启动后删除旧的内核文件,这可以通过以下方式完成:
sudo apt get purge$(dpkg--list | grep-P-o“linux image-\d\S+”| grep-v$(uname-r | grep-P-o“+\d”)

可能相关:tl;dr:您的内核可能没有启用
getrandom
syscall。我面临同样的问题。也许值得在上创建一个问题,但16.04将在3周后结束。。。升级ubuntu的安装和使用canonical提供的软件包可能是值得的。谢谢你,可能为我节省了几个小时。一个细节:更改内核后,仅重新启动是不够的。您必须关闭(通过
sudo关机
),然后登录Digital Ocean console让您的液滴重新通电。您欢迎,并更正-需要关机,重新启动是不够的