Drupal を運用しているサイトで、Drupal8 から Drupal9 に順調にアップデートしていたので、そろそろPHPも新しくしようと 7→8 へのアップデートを行いました。apk で 7 の時と同じパッケージを導入して、nginx の config を修正して……とやってどうにか無事に PHP8で動作開始しました。
Alpine Linux の cron
以前、Let’s Encrypt の証明書の取り直しに、certbot から acme.sh を使う方法に変えたという記事を書いたのですが、その後時々動作確認を行っていてちゃんと動いているように思っていました。しかし、それは大きな「勘違い」だったのです……
Let’s Encrypt の設定変更
以前に ACMEv1 問題のことで Alpine Linux のアップグレードをしました。これで安心と思っていたら、なんとこんなメールが……
Hello,
Your certificate (or certificates) for the names listed below will expire in 19 days (on 28 May 20 17:00 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors.
We recommend renewing certificates automatically when they have a third of their
total lifetime left. For Let’s Encrypt’s current 90-day certificates, that means
renewing 30 days before expiration. See
https://letsencrypt.org/docs/integration-guide/ for details.
more…
ようするに、あと19日で証明書の有効期限切れちゃうけど、更新しなくていいの? やり方分からないんだったら以下の説明見てね~、っていう親切なメールです。ウソんっ!? と焦ってコンソールから手動で certbot による更新を試したところ、今度は下のようなエラーが。
An unexpected error occurred:
MemoryError: Cannot allocate write+execute memory for ffi.callback(). You might be running on a system that prevents this. For more information, see https://cffi.readthedocs.io/en/latest/using.html#callbacks
Please see the logfiles in /var/log/letsencrypt for more details.
AlpineでPECL
Drupalにはサーバーの情報をまとめて見せてくれる「サイトの状態」というページがあります。Drupalを構成している本体、Webサーバー、PHP、DBのバージョンなどを表示するだけでなく、それぞれのモジュールの更新状況や、必要な場合には更新のためのリンクも表示してくれるので、サーバーアプリを最新の状態に保つにはとても便利な機能です。
ACMEv1問題とTLS 1.0、1.1問題
久しぶりに IT 関連の話題なのですが、最近は稼働維持だけでほとんどいじっていなかった、Drupal8 勉強用のサーバーで、Let’s Encrypt からメールが届きました。
Hi,
According to our records, the software client you’re using to get Let’s
Encrypt TLS/SSL certificates issued or renewed at least one HTTPS certificate
in the past two weeks using the ACMEv1 protocol. Here are the details of one
recent ACMEv1 request from each of your account(s):
Client IP address: XXX.XXX.XXX.XXX
…
最初の部分だけの抜粋ですが要約すると、証明書を取得する際に使うプロトコルのバージョンを ACMEv2 に移行するから、6月から ACMEv1 使えなくなるから注意してね、ということみたいでした。AlpineLinux は 3.8系だったので、この際にアップグレードしてしまうかと 3.10系にアプグレード。
証明書取得に使う certbot も 0.35.1 になっているので、ACMv2 にも対応しているはずです。とりあえず PostgreSQL のバックアップ取らずにアップグレードかけて Drupal8 の DB飛ばすという間抜け行為さえなければ完璧でした。settings.php 初期化してやり直しましたが、Drupal8 のバージョンも上がって日本語化もインストールウィザードもだいぶ良くなってますね。