新・LAMPとゆかいな仲間たち-WordPress編

Linux MintでローカルにWordPressの環境を作る方法を「LAMPとゆかいな仲間たち-WordPress編」で紹介したが、今回は「新・LAMPとゆかいな仲間たち-WordPress編」としてManjaro Linux上にWordPressをインストールしてみることにしよう。WordPressのインストールやApache、PHPの設定などすべてターミナルから行うことにする。なお、設定はLinux Mintのやり方をみても、前半部分はあまり参考にならないので注意が必要である。また、ここでのやり方は一例であるとしておく。

LAMPのインストール

LAMPのインストールについては、前記事「Manjaro Linuxにランプを灯す」を読んでいただきたい。

設定の確認と追加

「Manjaro Linuxにランプを灯す」では、PHPの構成を表示するところまでであったが、それだけではWordPressをインストールしても動かすことができない。index.htmlと同じようにindex.phpを自動で認識しないからである。認識させるにはhttpd.confを変更する。

httpd.conf
最初にrewriteモジュールが有効になっているかどうか確認しよう。後述するWordPressインストール後に発生する問題に対処するためである。

sudo nano /etc/httpd/conf/httpd.conf

189行付近にある以下の部分がコメントアウトになっているか確認しておこう。コメントになっているならコメントアウトにする。

LoadModule rewrite_module modules/mod_rewrite.so

次に、279行目付近のドキュメントルートの設定を書き換える。なお、パーミッションの問題からデフォルトのドキュメントルートをそのまま使うことにする。

変更前
AllowOverride None

変更後
AllowOverride All

次にindex.phpを自動認識させるために、291行目付近の内容に追加記述する。

変更前
DirectoryIndex index.html

変更後
DirectoryIndex index.html index.php

ドキュメントルートを変更しない理由

今回は環境上の理由でドキュメントルートを変更しない。理由としては、ドキュメントルートに設定したディレクトリとその上の親ディレクトリに実行権限をつける必要があるからだ。たとえば、randyというユーザー名があるとしよう。ディクトリ指定は/home/randyとなる。この下にwwwというフォルダを作成した場合、ドキュメントルートは/home/randy/wwwとなる。

この場合、randyおよびwwwフォルダに

sudo chmod o+x /home/randy
sudo chmod o+x /home/randy/www

として実行権限をつける必要がある。つけない場合はアクセスすると403となってしまう。wwwフォルダはともかくrandyフォルダに所有者およびそのグループ以外に実行権限をつけるのはセキュリティ上好ましくない。

ただ、外付けや増設した内蔵のSSDなど、他のデバイス上のフォルダをドキュメントルートにする場合はこの限りではない。

設定が反映されるかどうか確認する

さて、変更したらApache2Webサーバーを再起動しておく。

sudo systemctl restart httpd

次に/srv/httpに、以下の内容のindex.phpを作成して、http://localhost/でアクセスできるかどうか確認する。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

以下の内容が表示されたら、変更はできている。

データベースの作成

MariaDBを実行してwordpressというデータベースをCREATE DATABASE文で作成する。これはWordPressインストール時および運用時に使用する。名前は何でもよい。

$ mariadb -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.8.3-MariaDB Arch Linux

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

起動したら以下のSQL構文を入力して実行する。末尾の;(セミコロン)を忘れないようにしたい。

create database wordpress;

WordPressのダウンロードとインストール

ダウンロード
wgetコマンドでWordPressをダウンロードして解凍する。

cd /srv/http
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
sudo tar xvf latest-ja.tar.gz
sudo rm latest-ja.tar.gz

解凍すると、wordpressというフォルダが作成される。フォルダ名は任意なものでよい。ここでは短くwpとした。

sudo mv wordpress wp

所有権の変更
作成したら所有権とアクセス権をユーザー名に変更する。これによって、テーマ作成する際にVisual Studio Codeでアクセスできるようになる。

sudo chown <ユーザー名>:<ユーザー名> wp

wp-config.phpの設定
wp-config-sample.phpの名前を変更して内容を設定して保存する。nanoエディタを使用しているが、見にくい場合は、ファイルマネージャでwpフォルダに移動し、右クリックのコンテキストメニューから「Thunar Root」を選択してRootに変更する。変更したらwp-config.phpをエディタで開けばよい。

cd wp
sudo mv wp-config-sample.php wp-config.php
sudo nano wp-config.php

変更前
define( 'DB_NAME', 'database_name_here' );
/** データベースのユーザー名 */
define( 'DB_USER', 'username_here' );
/** データベースのパスワード */
define( 'DB_PASSWORD', 'password_here' );

変更後
パスワードはアスタリスクで表示しているがmysql_secure_installationで入力したパスワード
を設定する。ちなみにパスワードをナシにすることもできるが、お薦めできない。
define( 'DB_NAME', 'wordpress' );
/** データベースのユーザー名 */
define( 'DB_USER', 'root' );
/** データベースのパスワード */
define( 'DB_PASSWORD', '**********' );

インストール
ブラウザを起動してhttp://localhost/wp/でアクセスする。ここからは、Linux Mint版と同じになる。そちらの記事を参考してもらえればいいが、ここは再掲載しておく。画像もLinux Mint版だがManjaro LinuxのXfceかLinux MintのCinnamonかの違いなので操作自体は変更がない。ただ、一部Manjaro Linuxに合わせて変更している箇所もある。

インストール画面が表示されたら、各項目を設定していこう。設定したら[WordPressをインストール]をクリックして、インストールを開始する。インストールは数秒で終わる。[ログイン]をクリックしてWordPressへログインしよう。

野を越え山を越えでここまでやってきて、WordPressをインストールできた。ほとんどのインストールを紹介する記事は、このあとログインしてダッシュボード画面が表示されて終わりである。

インストール後の解決すべき問題

WordPressのインストールは以上で終わりだが、WordPressを使うまでに問題を抱える。以下の3つの問題がそうである。どういった問題なのか紹介し、その後に解決の方法を提示することにする。苦難の道はまだまだ続くのである。

FTP情報の要求

更新しようとするとFTP情報を要求される

実際はこんな画面にならない。どこか設定がおかしいのである。次は、プラグインをWP Multibyte Patchをインストールしてみよう。

プラグインをインストールしようとするとFTP情報が要求される

また、FTP情報が要求される。ちなみに[続行]をクリックしてもムダである。FTP情報の要求は、検索すれば出てくるので解決は簡単である。

記事が更新不可
今度は記事を作成してみよう。

記事の保存や更新ができない

記事の保存や更新ができない。この「更新に失敗しました。返答が正しいJSON レスポンスではありません。」という問題は、検索しても原因がいろいろありすぎて試してもなかなか解決しない。一番の悩みどころである。レンタルサーバー上では同じApache2Webサーバーを使用しているにも関わらずこういったことは起きていないのである。どこかに問題がありそうだ。

フォルダに対する書き込み不可
ダッシュボードからサイトヘルスを見てみる。改善は無視して「情報」にあるサイトヘルス情報だ。「ファイルシステムパーミッション」をみてみると、すべて書き込み不可となっている。

ファイルパーミッションの書き込み不可

このほかにも、パーマリンクの変更で次のようなことも起きる。書き込みできないことによる問題である。

パーマリンクの変更不可

インストールしただけでは全く使い物にならないのである。これはWordPressの問題ではない。ユーザー側の設定不足が原因なのである。ローカル環境にインストールするのは骨が折れるってもんだ。だから、XAMPPやMAMP、Localにいっちゃうんだよね。

問題を解決する

問題点は3つ。FTP情報の要求、記事の更新不可、フォルダに対する書き込み不可である。これらをそれぞれ解決していこう。

FTP情報の要求
wp-config.phpに下記の一行を追加する。個人的に追加する位置は44行目と46行目との間にしている。

define( 'FS_METHOD', 'direct' );

記事の更新不可
httpd.confでrewrite moduleを有効にしてあるので、sudo a2enmod rewriteというようなコマンドの入力は不要である。それにa2enmodというパッケージはManjaro Linuxにはない。記事が更新不可になるのであれば、パーマリンクを変更してみてエラーがでなければ更新可能になっている。

フォルダに対する書き込み不可
全フォルダおよびファイルのパーミッションを変更する。この変更はローカル環境限定であり、決して本番サーバーに対して行ってはならない。パーミッション設定については「WordPress ファイルパーミッションの変更」をよく読んで理解しておくこと。

cd /srv/http
sudo find wp -type d -exec chmod 707 {} \;
sudo find wp -type f -exec chmod 606 {} \;

これで更新や記事の投稿、プラグインの導入が正常にできるようになる。Apache2Webサーバーに対する設定は記述ミスがあったり、コマンドの実行ミスがあるとApache2Webサーバーが正しく動作しないので気をつける。

さて、これで終わりである…ではない。最後に言っておくことがある。もうひとつのサイトを作るためにフォルダを作成して追加したとしよう。FTP情報の要求とフォルダに対する書き込み不可の問題が発生する。なので、サイトを追加したら、上記の方法で問題を解決しなければならない。

以上。