LAMPを導入したUbuntuServerにWordPressをインストールする方法【16.04】

サムネイル:"BLOG"と書かれた積み木

仮想マシンのUbuntuServerにWordPressをインストールする記事も今回で3つめになります。
前回までに、仮想マシンにLAMP環境を整え、アクセスするとHTMLファイルが表示できるようにしました。

仮想マシンのUbuntu ServerにLAMP環境を整える方法【16.04】

今回は、WordPressのインストールから、WebブラウザでアクセスしてWordPressを表示できるようにします。

困ったら、WordPressのCodex(コーデックス)を参照するのも大切です。
書き込むのなら、印刷するのも良さそう。

このページを印刷しておくと、インストールの間、手元に置けて便利です。

環境・ソフトウェアなど

ホストOS:Ubuntu 16.04 LTS (64bit)
VirtualBox:5.1.14
(2017年8月10日現在、5.1.26)
ゲストOS:UbuntuServer 16.04 (64bit)

WordPress:4.8.1(2017年8月12日現在)

まずは、WordPressをダウンロードするところから始めていきます。

最新版のWordPressをダウンロード

SSHで仮想マシンにログインして作業を進めます。

最新版のWordPressを指定のディレクトリにダウンロードし(Fig1)、展開(解凍)します。
「/var/www/html」ディレクトリにダウンロードします(Fig2)。
この場合、作成したWordPressのURLは「192.168.56.101/wordpress/」になります。
(このとき、このwordpressディレクトリを、「サブディレクトリ」といいます)

phpファイルのテストも兼ねているのでhtmlディレクトリの中にwordpressディレクトリを置いていますが、「192.168.56.101/」でWordPressにアクセスしたい場合は、ディレクトリの保存、及び展開する場所を変える必要があります。

【参考】
WP★サブディレクトリにインストールしたWordPressをルートディレクトリに表示する方法

【htmlディレクトリに移動するコマンド】
$ cd /var/www/html

【最新版のWordPressをダウンロードするコマンド】

$ sudo wget http://ja.wordpress.org/latest-ja.tar.gz
Fig1.最新版のWordPressをコマンドでダウンロード
Fig1.最新版のWordPressをコマンドでダウンロード

5年ほど前にダウンロードしたときはファイル名にバージョン番号が入っていましたが、「latest(最新)」で統一されているのは便利ですね。
モダンブラウザのようなGUIじゃないとバージョンを確認できないから、「CUIのサーバしかない環境だとどうするんだ?」って思った頃がありました。

Codexには「wordpress.org/latest.tar.gz」とありますが、これは英語版です。
一度やらかしました

また、「多言語対応」なのですが、インストール後の設定画面では英語しか選択できず、インストールをやり直すことになりました(Fig2)。
必ず日本語版をダウンロードしましょう。

【WordPress日本語ローカルサイト】
日本語 — WordPress

Fig2.英語しか選択できない英語版WordPress
Fig2.英語しか選択できない英語版WordPress

圧縮ファイルを展開する

ダウンロードに成功したら、WordPressのアーカイブファイルが存在するハズです。
【ディレクトリの中身を表示するコマンド】
$ ls -al
(「/var/www/html」ディレクトリに移動している場合)

次は、アーカイブファイルを解凍しましょう。
【アーカイブを展開するコマンド】
$ sudo tar -xzvf latest-ja.tar.gz

「tar」コマンドは、アーカイブの作成(圧縮)と展開(解凍)を行います。
「-xzvf」というオプションを見ていきましょう。

  • 「-x」:展開・抽出(解凍)を行う
  • 「-z」:gzip形式を圧縮・解凍する
  • 「-v」:処理したファイルを詳しく出力する
  • 「-f」:処理する対象(ファイル)を指定する

なお、圧縮するには「-c」オプションを使います。
「-x」とは対の関係ですね。

【参考】
Linux基本コマンドTips(40):tarコマンド――アーカイブファイルを作成する/展開する – @IT

実行すると、/var/www/html/ディレクトリにwordpressディレクトリが作成されます(Fig3)。

Fig3.展開されたwordpressディレクトリ
Fig3.展開されたwordpressディレクトリ

WordPressのインストール

WordPress用のデータベースを作成

Codexには、3つの選択肢が示されています。
cPanel、PHPmyadomin、MySQLが挙げられますが、MySQL以外は試したことがありません。
MySQLでの手順を紹介しますが、それ以外の方法は調べてください。

▼MySQLにログインする
LAMPのインストール、もしくはMySQLを個別にインストールした際に決めたパスワードが必要になります。

また、いくつかの重要な情報を控えておく作業もあります。
あらかじめ決めておくとスムーズに進むでしょう。
・データベース名
・MySQLユーザ名
・MySQLパスワード

【MySQLにログインするコマンド】
$ mysql -u (ルートユーザ名) -p
(ここでの例は、アカウント名:root、パスワード:rootpassになります)

ログインが完了すると、MySQLのプロンプトに切り替わります。

▼WordPress用のデータベースを作成する
データベースを作成するにあたって、「データベース名」が必要になります。
(ここでは、「wordpress」にしています)

【新規にデータベースを作成するSQLコマンド】
mysql> CREATE DATABASE 【データベース名】;
末尾のセミコロンを忘れずに。

▼MySQLのユーザを作成する
【MySQLユーザを作成するSQLコマンド】
mysql> GRANT ALL PRIVILEGES ON 【データベース名】 .*TO "【MySQLユーザ名】"@"【ホスト名】"
> IDENTIFIED BY "【MySQLパスワード】";

(ここでは、ユーザ名を「wpdbadmin」、パスワードを「wpdbpass」にしてあります(Fig4))

ホスト名の直後に区切っていますが、1行で書いても実行されます。
長過ぎるので区切っているのでしょう。

ここでは、ホスト名は「localhost」が入ります。

Fig4.SQL文のサンプル
Fig4.SQL文のサンプル

実行したコマンドを反映させるために、「FLUSH」構文を使います。

FLUSH ステートメントは、MySQL に利用された様々な内部キャッシュをクリアー、または再ロードします。FLUSH を実行するためには、RELOAD 権限を持つ必要があります。

【MySQLのキャッシュをクリア、リロードするSQLコマンド】
mysql> FLUSH PRIVILEGES;
スペルミスに注意しましょう。
FLESHではなく、FLUSHです。ちなみに、フレッシュ(新鮮)は「FRESH」。

最後に、MuSQLからログアウトします。
【MuSQLからログアウトするコマンド】
mysql> EXIT

これで、WordPress用のデータベースを作成できました。

wp-configの作成と編集

wp-config.phpファイルは、データベースのや秘密鍵などの情報を持ちます。
展開したファイルの中には存在せず、wp-config-sample.phpから作成することになります。
なので、ここではコピーとリネームを行います。

▼wp-config.phpの作成
「cp」コマンドを使うことで、コピーとリネームを行うことができます。
そのために、wordpressディレクトリの中に移動しましょう。

【現在の居場所を表示するコマンド】
$ pwd

「html」ディレクトリにいるなら、wordpressディレクトリに移動する必要があります。

【wordpressディレクトリに移動するコマンド】
$ cd wordpress/

wp-config-sample.phpが存在するかどうか、「ls」コマンドで見てみましょう。
wp-config-sample.phpがあるなら、コピーとリネームを行います。

【ファイルをコピー・リネームするコマンド】
$ sudo cp wp-config-sample.php wp-config.php

サンプルファイルをA、wp-config.phpをBとすると、「AをBという名前でコピーする」を解釈できます。
「ls」コマンドを使うと、リネームされたwp-config.phpが存在するハズです(Fig5)。

Fig5.cpコマンドで生成されたwp-config.phpファイル
Fig5.cpコマンドで生成されたwp-config.phpファイル

▼wp-config.phpの編集
viエディタを使って、先ほど入力したデータベースの情報や公開鍵を入力していきます(Fig6)。
編集が怖い人は、FTPで送り込んでもいいでしょう。

この例では、以下のフレーズを入力しています。
DB_NAME:wordpress
DB_USER:wpdbadmin
DB_PASSWORD:wpdbpass
DB_HOST:localhost

DB_CHARSET:UTF-8
DB_COLLATE:(空欄)

Fig6.wp-config.phpの編集
Fig6.wp-config.phpの編集

認証ユニークキーは、ランダムな文字列を生成してくれるサイトを利用します。
これに関しては、Codexの方が詳しいと思います。

NOTE:viエディタでコピー&ペーストを行いたい場合、「Shiftキー + Insertキー」を使用してください。
(実は、私たちが知らないだけで、Windowsでも「Shift+Insert」を使えます。15へぇ)

【参考】
wp-config.php の編集 – WordPress Codex 日本語版

データベースの接頭辞もここで編集できます。
テスト環境なので変更しませんが、セキュリティのためには変更した方がいいようです。
(Xserverでは、自分でデータベースを作成しない限り接頭辞はデフォルトになります)

【番外】viでの操作ミスの対処

インストールのガイドからは離れますが、少しviエディタでの失敗談を紹介させてください。
当時はまだviに慣れてなくて、正しく保存されずにエラー(E325)を出したことがありました(Fig7)。

異常終了した際にバックアップ(スワップ)ファイルが作成され、それを復元(Recover)するかどうかを訊かれます(Fig8)。
指示された方法では復元できず、不要なファイルが残っているのも気持ち悪いので、削除する方法を試みました。

Fig7.viエディタの操作ミスによるエラー
Fig7.viエディタの操作ミスによるエラー
Fig8.生成されたバックアップファイル(拡張子swp)
Fig8.生成されたバックアップファイル(拡張子swp)

バックアップファイルは「隠しファイル」なので、lsコマンドにオプションを指定する必要がありました。
【隠しファイルも含めてディレクトリの中身を表示するコマンド】
$ ls -al

リストの中に、「wp-config.php.swp」がありました。
削除するには「rmコマンド」を使いますが、工夫する必要があります。
隠しファイルを削除するには、ファイル名の先頭に「.(ドット)」を付け加えます(Fig9)。
【隠しファイルを削除するコマンド】
$ sudo rm -v wp-config.php.swp

Linuxのコマンドは「成功しても沈黙を貫く」場合があります。
「-v」オプションを指定することで、結果を表示させられます。

Fig9.rmコマンドで隠しファイルを削除する
Fig9.rmコマンドで隠しファイルを削除する

ここでもう一度リストを表示させたところ、今度は「wp-config.php.swo」が作られていました。
拡張子「swo」もバックアップファイルの模様。
これも同じように削除して、作業に戻りました。

閑話休題。

サーバにWordPressのインストール

wp-config.phpの編集が終わったので、WordPressのインストールへ進みましょう。
仮想マシンのサーバにブラウザでアクセスします。
設定が同じなら、「192.168.56.101/wordpress/wp-admin/install.php」です。

あとは、サイト名やユーザ名を任意に入力してください。
インストールが終わればダッシュボードが表示されるハズです。

これで仮想マシンのUbuntuServerにWordPressをインストールできました。

インストール後の作業

インストールは終わりましたが、サーバの設定でいくつかトラブルに遭うことが予想されます。
というか、トラブルに遭います。
「FTPの情報を求められた」とか、「パーマリンクを変更すると404になる」とか。
その辺りの情報も書いておくので、参考になれば幸いです。

【+α】FTP情報の入力を回避する方法

WordPressのインストールが終わったら、本体やプラグインのアップデートをしたいと思うでしょう。
おそらく、FTPの情報を求められるハズです。
しかし、「管理者に問い合わせろ」と言われても自分自身が管理者だし、そんなものはありません。

これは、WordPressディレクトリの所有者が適切でないために、情報の入力が求められているものです。
その条件とは、「Wordpressのディレクトリのownerがphp(httpd)実行ユーザと同一であること」です。

WordPressでは、「wp-admin/includes/file.php」で以下のように一時ファイルの作成と、そのファイルのownerとphp実行者が同じかを判定して、同じであれば、Wordpress配下のフォルダに、アップグレードするために必要なファイルを作成したり、更新したりしても問題ないと判断します。

適切な所有者は「www-data」です。
「chown」(change owner)コマンドでwordpressディレクトリの所有者を変更します(Fig10)。
【wordpressディレクトリの所有者とグループを変更するコマンド】
$ sudo chown -R www-data:www-data wordpress

(このコマンドをそのまま使う場合、「/var/www/html」ディレクトリに移動してから実行してください)

「ls -al」コマンドで変更されていればOKです(Fig)。

Fig10.wordpressディレクトリの所有者を変更する
Fig10.wordpressディレクトリの所有者を変更する

【+α】パーマリンクの変更を適用する方法

パーマリンクの設定を変更することで、記事のURLを変更することができます。
変更というより、実際はWordPress内部で変換されています。
なので、変換ができないと、デフォルトのパーマリンク以外ではページを表示することができずに404のエラーになります。

解決するにはhttpd.confを編集する……と言いたいところですが、それはCentOSでの話。
Ubuntuでは編集するファイルが違います。
(解説記事でもOSを明記しないから混乱することもしばしば)

Ubuntuでは、「/etc/apache2/apache2.conf」ファイルになります。
以下の内容を、「 ~ 」の下に追記します(Fig11)。


<Directory /var/www/html/wordpress>
     AllowOverride All
</Directory>
Fig11.apache2.confを編集
Fig11.apache2.confを編集

mod_rewriteモジュールを有効化します。
【mod_rewriteを有効化するコマンド】
$ sudo a2enmod rewrite

mod_rewriteを有効化すると、apacheの再起動を要求されます。

【apacheを再起動するコマンド】
$ sudo service apache2 restart

これでパーマリンクを変更すると、無事にページが表示されます。

仮想マシンでWordPressをインストールした場合、ほとんどと言っていいほど、この問題に遭遇します。
私は5年前から、WordPressをインストールする度に繰り返しています。
(WordPressがフロントエンドなら、ダッシュボードから全部設定させてくれよと思ったりします……)

【参考】
WordPressのパーマリンクが表示されないときの解決法(ubuntu × apache2) – Qiita