WordPressにプラグインがインストールできなくてSELinuxの設定を見直した話

このブログを作るにあたって、サーバ構築の勉強も兼ねてテスト環境をLAMPで用意することにしました。今まではwordpressのテスト環境はMAMPでお手軽に作ってたんですけど。それさえどうやって設定したかはすっかり忘れましたけど。

プラットホームはHyper-V上にインストールしたCentOS7。Apache入れてmySQL入れてPHP入れて、なんやかんやでwordpressインストール。

で、プラグイン周りは先に本番サーバの方でせっせと入れてたので、環境移そうとAll-In-One WP Migratorを使うことに。

以前はDuplicatorを使ってたんですけど、あれってWPインストール前に使うやつでしたね。久々すぎてすっかり忘れてて、先にインストールしちゃったからこのチョイス。

エクスポートは問題なく終わり、ローカル環境側でもAll-In-One WP Migratorをインストール…と思ったら。

FTP接続認証という、初めての画面に遭遇しました(スクショ撮るの忘れた…)。

ウェブサーバにはFTPも必須なのかしら?とかいう全然論理的じゃない発想でvsftpdをインストールしてログインを試みるも、失敗。(もっともこれはFTPの設定がマズかったのもあるのかもしれませんが)

途方に暮れてGoogle先生に聞きながら、いろんなことをやってみました。

最終的にSELinuxの設定がちゃんとできていなかったことが原因でした。そこへ至るまでに行ったことを備忘録としてメモします。


スポンサーリンク

1.wp-config.phpに追記

wp-config.phpでファイル転送をFTP経由しない設定を入れてみました。

define('FS_METHOD','direct');

これによりFTP認証画面は出なくなりました。やったー!これでインストールできる!と思いきや。

「インストールに失敗しました」

……なんなん。

2.フォルダの所有者をApacheに変更

エラーの詳細を見ると書き込み権限がないことが原因のようだったので、フォルダの所有者をApacheユーザに変更。一部のフォルダだけでいいんだとは思いますが、ルートフォルダから再帰的に全部変えました。

#chown -R apache:apache /var/www/html

よし完璧!と思いきや。

「インストールに失敗しました」

orz


スポンサーリンク

3.フォルダのパーミッションをゆるゆるに変更

書き込みにいってるのはもしかしてApacheユーザじゃないのか??と疑問符を飛ばしながら(頭沸騰しかけてたので発想がおかしい)、よろしい、ならば権限全解放だ。ということで

#chmod -R 777 /var/www/html

という雑極まりないコマンドを実行!テスト環境だからね!これで権限ないとか言わせねえ!!

「インストールに失敗しました」

な ん で な ん

4.SELinuxの設定を変更

権限777でもダメなら何か他のファクターも働いてるのだろうか…と、手を替え品を替えGoogle先生に聞きまくること数十分。

なんだか「SELinux」という単語がちらちら見える。

いや、OSインストール〜各サーバ設定方法を調べているときにも見えていたんです。SELinux。

SELinuxとはrootが全権限を持っているってまずくない?という発想のもと、「この場合はこのユーザにこの権限を与える」といった細かい権限制御を行ってセキュリティを強化する機能だそうです。最近のLinuxではデフォルトでオンになっています。

こちらのページ【Apache に関する SELinux の設定 (CentOS)】を参考に以下のコマンドを打ち込みました。

#restorecon -R /var/www

すると…プラグインがインストールできました!!

restoreconコマンドってなに

restoreconコマンドは、SELinuxのセキュリティコンテキストが間違っていた場合に、正しい設定を付与してくれるコマンドだそうです。

本来Apacheをインストールした際、公開ディレクトリ以下には正しいコンテキストが設定されるはずなのですが、そうなっていなかったと。

こちらのページがわかりやすかったです↓
ファイル作成時に付与されるSELinuxのセキュリティコンテキスト

心当たりはあります。最初にwordpressを設置した際、root権限でmvしていたんですよね。だから手順2でファイル所有者を確認した際もrootだったし、ブラウザからのインストールも失敗していたのでした。自鯖にwordpressをインストールする際は、このあたりを踏まえれば権限やセキュリティコンテキスト的に正しい手順があるのかな?とは思いますが、また一からやり直してみる気力はありません…。気が向いたら、そのうち。

なんにせよ、正しく動くようになってよかったよかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*