Djangoの本番環境でUnicodeEncodeErrorが出る

Pythonが好きでこのサイトもPython製の静的サイトジェネレータPelicanで作っています。Web開発のお仕事も、できればPython製のDjangoを使いたいと思っています。

今回、OSをCentOS7からRockyLinuxに変更するために、VPSをリプレースすることにしました。ファイルの移動やhttpdの設定は完了したはずなのですが、サイトを表示すると、「500 Server Error」という表示が...

apacheのerrorログには何も出力されないため、仕方なくDEBUG = Trueにして見てみたところ、UnicodeEncodeErrorが出ていました。いろいろ調べた結果、この記事にたどり着きました。どうもapacheの言語設定がデフォルトでLANG=Cとなっているみたい。

そこで、以下の手順で、LANG=ja_JP.UTF-8に設定しました。

  • /etc/systemd/system/httpd.service.d/override.confに、以下を記述。
    [Service]
    Environment=LANG=ja_JP.UTF-8
  • sudo systemctl daemon-reload
  • sudo systemctl restart httpd

/usr/lib/systemd/system/httpd.serviceによると、systemctl edit httpdとすれば変更できるとあるのですが、何度やっても一時ファイルを保存するところで、

Editing "/etc/systemd/system/httpd.service.d/override.conf" canceled: temporary file is empty.

とエラーが出てしまったため、override.confを新規作成したら解決できました。

最後に、環境を書いておきます。

  • OS: Rocky Linux 9.2
  • Apache Httpd: 2.4.53
  • Django: 4.2.4
  • Python: 3.11.2