ubuntuにWordPressをインストールする。

ubuntu 18.04 LTS にWordPressをインストールする方法です。ubuntuには、Apache、MySQL、PHPがインストールされているものとします。まだインストールされていない場合は「ubuntu 18.04 LTSにLAMPを入れてみる。」を参照してください。

1.ファイルの取得

https://ja.wordpress.org/download/ より「.tar.gz」形式のファイルをダウンロードします。ダウンローロードしたファイルを右クリックして「ここで展開する」を選択し、解凍します。解凍するとwordpressのフォルダができます。

ダウンロードしたファイル:wordpress-4.9.8-ja.tar.gz (2018/8/4時点の最新)

解凍すると「wordpress-4.9.8-ja」フォルダができ、その配下に「wordpress」という名前のフォルダができます。

※ubuntuをインストールすると標準でアーカイブマネージャーがインストールされますので圧縮ファイルを選択して右クリックで解凍できます。ubuntuを最小インストールした場合でもアーカイブマネージャーはインストールされています。

2.wordpressフォルダの配置

wordpressフォルダの配置先を決めます。/var/www/html 配下にwordpressフォルダを配置し、ドキュメントルートとなるように設定します。ドキュメントルートの設定については「Apacheのドキュメントルートの変更」を参照してください。

【注意】
wordpressフォルダを移動(もしくはコピー)した際にwordpressフォルダ、および、配下のファイルの所有者を「www-data」にしておきます。

# chown -R www-data:www-data /var/www/html/wordpress

「www-data」はApacheのことで、Apacheがwordpress配下のファイルを読み込んだり書き込んだりしています。WordPressはたびたびバージョンアップが行われるのですが、更新する際に「www-data」以外だと権限の問題で更新がうまくいきません。

※更新しようとすると「ファイルシステムに接続できませんした。資格情報を確認してください。」とメッセージが出て、FTPで接続するよう促されます。

所有者を「www-data」以外にする場合は「www-data」がファイルに読み書きできるよう権限を付与しておく必要があります。

3.MySQLの設定

MySQLに接続して、wordpress用のデータベースとユーザーを作成します。

(rootユーザで作業します)
# su –
# mysql -u root -p (MySQLにログインします)
Enter password: (パスワードの入力をします)

mysql> create database wordpress;(wordpressという名前のデータベースを作成)
mysql> grant all privileges on wordpress.* to user1@localhost identified by 'password1' with grant option;
(データベースにユーザを作成。ユーザ名:user1、パスワード:password1としています)
mysql> flush privileges; (権限の反映)
mysql> exit (MySQLからログアウト)

※データベース名、ユーザ名、パスワードは適宜、変更してください。

4.wp-config.phpの作成

wp-config-sample.php をコピーして、wp-config.phpを作成します。

# cd /var/www/html/wordpress
# cp wp-config-sample.php wp-config.php
# vi wp-config.php
==============================
(以下のように書き換えます)

// ** MySQL 設定 – この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress'); ←(★データベース名を設定)

/** MySQL データベースのユーザー名 */
define('DB_USER', 'user1'); ←(★ユーザ名を設定)

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password1'); ←(★パスワードを設定)

/** MySQL のホスト名 */
define('DB_HOST', 'localhost'); ←(★そのまま)

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8'); ←(★そのまま)

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', ''); ←(★そのまま)

/**#@+
* 認証用ユニークキー
*
* それぞれを異なるユニーク (一意) な文字列に変更してください。
* {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
* 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
*
* @since 2.6.0
*/
define('AUTH_KEY', 'test'); ←(★なんでもよいので設定する、以下同じ。)
define('SECURE_AUTH_KEY', 'test');
define('LOGGED_IN_KEY', 'test');
define('NONCE_KEY', 'test');
define('AUTH_SALT', 'test');
define('SECURE_AUTH_SALT', 'test');
define('LOGGED_IN_SALT', 'test');
define('NONCE_SALT', 'test');

/**#@-*/

/**
* WordPress データベーステーブルの接頭辞
*
* それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数のwordPress を
* インストールすることができます。半角英数字と下線のみを使用してください。
*/
$table_prefix = 'wp_'; ←(★そのまま)

(wp-config.phpを保存する)
==============================

5.自動インストールの実施

ブラウザで以下のURLにアクセスします。
http://localhost/wp-admin/install.php

問題がなければ「ようこそ」の画面が表示されます。
もし表示がうまくできない場合はドキュメントルートの設定が正しいか確認してみてください。

「ようこそ」の画面が表示されたら、以下のように入力します。

タイトル:(自分の好きなタイトルを入力。あとで管理画面で変更できます)
ユーザ名: user1
パスワード: password1
メール: (自分のメールアドレスを入力)

ローカルPCにWordPressをインストールした場合は「検索エンジンがサイトをインデックスしないようにする」のチェックはつけておきます。

「wordpressをインストール」をクリックします。
インストールが始まり、終了すると「成功しました」のメッセージが表示されます。

以下のURLからWordPressの管理画面(ダッシュボード)にログインできます。
http://localhost/wp-login.php

バーチャルホストの動作をローカル環境で確認する方法

Apacheのバーチャルホストの設定」でバーチャルホストの設定をしましたが、ローカルPCにインストールしたApacheでバーチャルホストが正しく動作しているかの確認方法です(独自ドメインを取得せず、ローカル環境だけでバーチャルホストの確認をしたい場合です)。

ubuntu 18.04 LTS + Apache 2.4.29 の組み合わせです。

バーチャルホストの設定で、以下とした場合。

#バーチャルホストの設定1
<VirtualHost *:80>
        
    ServerName    test.example1.com
        
</VirtualHost>

#バーチャルホストの設定2
<VirtualHost *:80>
        
    ServerName    test.example2.com
        
</VirtualHost>

URLのアクセスは以下となります。

http://test.example1.com/
http://test.example2.com/

ただこのままだと「test.example1.com」はDNSでの名前解決ができずエラーとなってしまいます。そこで名前解決にはDNSではなくhostsファイルを使用するようにします。DNSとhostsファイルの優先順位を確認するため、host.confとnsswitch.confの内容を確認します。

S su –
#
# cd /etc
# cat host.conf
==============================
(host.confの内容)
# The "order" line is only used by old versions of the C library.
order hosts,bind ←※ここを見る
multi on
==============================

# cat nsswitch.conf
==============================
(nsswitch.confの内容)
 :
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname ←※ここを見る
 :
==============================

上記の場合、DNSよりhostsファイルが優先されるようになっています(ubuntuをインストールしたデフォルトの状態は上記になっていると思います)。host.confとnsswitch.confですが、旧版がhost.confで、nsswitch.confに置き換わりつつあるようです。ただ、ubuntuがどちらを見て動作しているかはわからなかったので両方確認してみました。

次に、hostsファイルの設定です。

# cd /etc
# vi hosts
==============================
(hostsファイルに以下を追加する)
127.0.0.1    test.example1.com
127.0.0.1    test.example2.com

(hostsファイルを保存する)
==============================

ここまでの設定が終わればブラウザのURLに「http://test.example1.com/」を入力することで、ローカルPCのApacheにアクセスが行われます。

ちなみに裏の仕組みについてですが、僕の理解の範囲で補足しておきます。

そもそもApacheがServerNameに設定したサーバ名を取得することができるのは、HTTPヘッダにあるHostフィールドにブラウザがリクエスト先のサーバ名を設定して送信しているからです。HostフィールドはHTTP/1.1から追加され、1.1では唯一の必須フィールドとなっています。

「http://www.example1.com/」をブラウザのURLに入力した場合、サーバに対してリクエストが行われるのですが、Hostフィールドには「www.example1.com」が設定されるためサーバ側のApacheはどのサーバ宛て(どのServerName宛て)かを判断できます。