我有一个运行系统,包括 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 [可升级自:2.4.18-2ubuntu3.17]),如下所示:
添加 apt-存储库 -y ppa:ondrej/apache2
易于更新
apt-get --only-upgrade 安装 apache2
服务 apache2 重新启动
apache2.service 的作业失败,因为控制进程退出并出现错误代码。有关详细信息,请参阅“systemctl status apache2.service”和“journalctl -xe”。
日志控制-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-get upgrade
并且内核应该是最新版本,并且也在运行sudo update-grub
向我展示了较新的版本,但正在运行uname -r
显示非常旧的(3.x)内核。
经过几乎一整天的长时间调查并尝试了我在网上找到的有关升级 Ubuntu 内核的所有内容 - 我发现这是 Digitalocean,而不是我。旧的 Droplet 使用外部管理的内核 - 因此无论您在环境中做什么,它总是采用外部内核。解决方案在这里:https://www.digitalocean.com/docs/droplets/how-to/kernel/grubloader/#switch
如果您确实在数字海洋控制面板的 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") )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)