WordPress 3.4 がリリースされた。テーマも更新されているのでまずは家のテスト環境のバージョンアップを試みたけれどダッシュボードには「最新バージョンの WordPress をお使いです。」と表示され、何度「もう一度確認する」ボタンを押してもダメ。最新版を見つけられないようだ。
自動更新のための要件を確認してそう言えば SELinux を有効にしていたことを思い出す。/var/log/messages を見ると案の定エラーメッセージ。
Jun 15 20:27:07 myserver kernel: [ 2036.676475] type=1400 audit(1339759627.861:98): avc: denied { name_connect } for pid=22550 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket
更新をチェックするためのソケットを作成できなかったみたい。auditd が動いていなかったので動かして audit.log にエラーを吐き出させて、以下を実行し対策のヒントにする。
# tail /var/log/audit/audit.log | audit2allow -a -w
今回は boolean を設定して対処。
# setsebool -P httpd_can_network_connect 1
これで httpd は TCP セッションを張れるようになったけど今度は更新実行したときに「要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります」という見慣れないメッセージが表示される。どうやらファイルのパーミッションの問題らしい。
# chown -R apache /usr/share/wordpress-ja
で、あとは SELinux のタイプを設定しなければならないのだけれど、ここら辺で力尽きた。
# setenforce 0
後でまた有効化するので許してね。というわけで WordPress の更新は完了。
追記) バージョンアップに必要なパーミッションを運用時にも設定するかという問題なので、これでも良いような気がしてきた。