LAMPとゆかいな仲間たち-WordPress編
WordPress編とあるが続きはないし、他もない。単発の記事である。さて、ローカル環境にLAMPとWordPressをインストールするという記事は多くみられる。だがどれも本当にインストールするまでであり、そこからWordPressにアクセスして使える状態かというとそうならない。
LAMPのインストールだって大変なのだ。MariaDBサーバーにログインできない、PhpMyAdminだってインストールして、http://localhost/phpmyadmin/としてもアクセスできないこともある。はじめての人にはなかなかハードルが高い。
記事は最初にLAMPとWordPressをインストールし、その後に発生する問題点を解消するという手順で書いていく。これは必ず発生する問題であり、つまずく原因にもなっている。
結局、XAMPPでいいやとかWordPressだけだからLocalを使えばいいやということになる。LAMPをインストールしたあとだと、XAMPPやLocalとの共存だって大変なのだよ。
記事の対象
なにがなんでもLAMPをインストールしてWordPressを使いたいというユーザー。
Linuxデスクトップ環境
記事を書くにあたって使用した環境は以下のとおり。
Linux Mint 20.3 Xfce Edition
LAMPのインストール
LAMPのインストールは、「Linux Mint 20.3 MATE / Xfce インストール後にやっていること」からLAMPのインストール部分を抜粋したものである。PhpMyAdminはインストールしない。ターミナルからMariaDBにログインしてCREATE DATABASE文でデータベースを作るだけだからだ。必要があればDBeaverをインストールすればいい。なお、Apach2eWebサーバーおよびMariaDBサーバーはインストール後はすでに起動した状態となっている。
// すでにインストールされているものもあるが、インストールされていないときのため sudo apt install ca-certificates apt-transport-https lsb-release gnupg curl nano unzip -y // PHPのリポジトリの登録と更新 sudo add-apt-repository ppa:ondrej/php sudo apt update // Apache2Webサーバーのインストール sudo apt install apache2 -y // PHP8.1のインストール sudo apt install php8.1 php8.1-cli php8.1-common php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-xsl php8.1-zip php8.1-bz2 libapache2-mod-php8.1 php8.1-xdebug php8.1-bcmath -y // MariaDBサーバーとクライアントのインストール // 山形大学のミラーサイトは新バージョン対応時、一時的にアクセスできないことがある sudo apt-get install software-properties-common dirmngr apt-transport-https sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.8/ubuntu focal main' sudo apt update sudo apt install mariadb-server mariadb-client -y // MariaDBサーバーの構成 // rootのパスワードの変更以外はすべてEnter sudo mysql_secure_installation // 確認 mariadb -u root -p ログインできなければ sudo mariadbでアクセスして以下のSQLを実行 UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket'; FLUSH PRIVILEGES; exit
Apache2Webサーバーのルートディレクトリの変更
Apache2Webサーバーのルートディレクトリは/var/www/html以下になる。アクセスするにはRoot権限が必要になり、直接読み書きすることができない。Visual Studio Codeをルート権限で起動しようとしても怒られるだけなので推奨できない。どうするかというと、Root権限以外の場所にフォルダを作成し、そのフォルダをルートディレクトリに変更する。
ルートディレクトリフォルダの作成
homeディレクトリ内にwwwという草が生えたフォルダを作成する。ターミナルを起動して以下のコマンドを実行する。ターミナルを起動した段階でhomeディレクトリになっているのでcdなどで移動する必要はない。
mkdir www
ルートディレクトリの変更
フォルダを作成したらルートディレクリを変更しよう。変更する設定ファイルは、apache2.confおよび000-default.confの2つである。最初にapache2.confから設定する。
cd /etc/apache2 sudo nano apache2.conf
変更する箇所(170行目付近)を以下のように変更する。変更したらCtrl+Oで保存する。終了はCtrl+Xである。
変更前 <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 変更後 # <Directory /var/www/> <Directory /home/ユーザー名/> # ※Linuxインストール時に入力したユーザー名 Options Indexes FollowSymLinks # AllowOverride None AllowOverride All Require all granted </Directory>
apache2.confの設定が終わったら、000-default.confの設定を変更して保存する。
cd /etc/apache2/sites-available sudo nano 000-default.conf
変更する箇所(12行目付近)を以下のように変更する。
変更前 DocumentRoot /var/www/html 変更後 # DocumentRoot /var/www/html DocumentRoot /home/ユーザー名/www # ※Linuxインストール時に入力したユーザー名
変更したらApache2Webサーバーを再起動する。
sudo systemctl restart apache2
ルートディレクトリにアクセスできるかどうか確認
wwwフォルダ内にテスト表示用のindex.htmlを作成して、http://localhost/でアクセスして確認してみよう。
touch index.html nano index.html 入力内容 <!DOCTYPE html> <html lang="ja"> <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>Demo</title> </head> <body> <h1>Hello, World!</h1> </body> </html>
ブラウザを起動してhttp://localhostでアクセスして、以下のように表示されれば、ルートディレクトリの変更がきちんと行われている。
データベースの作成
WordPressが使用するデータベースを作成する。MariaDBにログインして、CREATE DATABASE文でデータベースを作成する。名前は何でもよい。ここではそのままwordpressとしている。
mariadb -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 32 Server version: 10.8.3-MariaDB-1:10.8.3+maria~focal mariadb.org binary distribution 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)]> createt database wordpress;
WordPressのダウンロードと解凍
ダウンロードはWordPressの公式サイトからできるが、ここではターミナルからダウンロードしよう。ターミナルを起動してwwwフォルダに移動する。
cd www
wgetコマンドでWordPressをダウンロードして解凍する。
wget https://ja.wordpress.org/latest-ja.tar.gz tar xvf latest-ja.tar.gz rm latest-ja.tar.gz
解凍すると、wordpressというフォルダが作成されている。フォルダ名は任意なものに変更できる。ここでは短くwpとした。次にwp-config-sample.phpの名前を変更して内容を設定して保存する。
mv wordpress wp cd wp mv wp-config-sample.php wp-config.php 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', '**********' );
WordPressのインストール
ブラウザを起動してhttp://localhost/wp/でアクセスする。
インストール画面が表示されたら、各項目を設定していこう。設定したら[WordPressをインストール]をクリックして、インストールを開始する。インストールは数秒で終わる。[ログイン]をクリックしてWordPressへログインしよう。
野を越え山を越えでここまでやってきて、WordPressをインストールできた。ほとんどのインストールを紹介する記事は、このあとログインしてダッシュボード画面が表示されて終わりである。
インストール後の解決すべき問題
WordPressのインストールは以上で終わりだが、WordPressを使うまでに問題を抱える。以下の3つの問題がそうである。どういった問題なのか紹介し、その後に解決の方法を提示することにする。苦難の道はまだまだ続くのである。
FTP情報の要求
実際はこんな画面にならない。どこか設定がおかしいのである。次は、プラグインをWP Multibyte Patchをインストールしてみよう。
また、FTP情報が要求される。ちなみに[続行]をクリックしてもムダである。FTP情報の要求は、検索すれば出てくるので解決は簡単である。
記事が更新不可
今度は記事を作成してみよう。
記事の保存や更新ができない。この「更新に失敗しました。返答が正しいJSON レスポンスではありません。」という問題は、検索しても原因がいろいろありすぎて試してもなかなか解決しない。一番の悩みどころである。レンタルサーバー上では同じApache2を使用しているにも関わらずこういったことは起きていないのである。どこかに問題がありそうだ。
フォルダに対する書き込み不可
ダッシュボードからサイトヘルスを見てみる。改善は無視して「情報」にあるサイトヘルス情報だ。「ファイルシステムパーミッション」をみてみると、すべて書き込み不可となっている。
このほかにも、パーマリンクの変更で次のようなことも起きる。書き込みできないことによる問題である。
インストールしただけでは全く使い物にならないのである。これはWordPressの問題ではない。ユーザー側の設定不足が原因なのである。ローカル環境にインストールするのは骨が折れるってもんだ。だから、XAMPPやMAMP、Localにいっちゃうんだよね。
問題を解決する
問題点は3つ。FTP情報の要求、記事の更新不可、フォルダに対する書き込み不可である。これらをそれぞれ解決していこう。
FTP情報の要求
wp-config.phpに下記の一行を追加する。個人的に追加する位置は44行目と46行目との間にしている。
define( 'FS_METHOD', 'direct' );
記事の更新不可
rewrite_modが有効になっていないことが原因なので、これを有効にして、Apache2Webサーバーを再起動する。
sudo a2enmod rewrite sudo systemctl restart apache2
フォルダに対する書き込み不可
全フォルダおよびファイルのパーミッションを変更する。この変更はローカル環境限定であり、決して本番サーバーに対して行ってはならない。パーミッション設定については「WordPress ファイルパーミッションの変更」をよく読んで理解しておくこと。
cd find www -type d -exec chmod 707 {} \; find www -type f -exec chmod 606 {} \;
これで更新や記事の投稿、プラグインの導入が正常にできるようになる。Apache2に対する設定は記述ミスがあったり、コマンドの実行ミスがあるとApache2が正しく動作しないので気をつける。
さて、これで終わりである…ではない。最後に言っておくことがある。もうひとつのサイトを作るためにフォルダを作成して追加したとしよう。FTP情報の要求とフォルダに対する書き込み不可の問題が発生する。なので、サイトを追加したら、上記の方法で問題を解決しなければならない。
以上。
追記 (2022/06/10)
それでも「更新に失敗しました。返答が正しいJSON レスポンスではありません。」が表示される場合は、[設定]→[パーマリンク]でパーマリンクを変更して[変更を保存]してみる。エラーとならず保存できれば、解消しているはずである。