Tutorial

Ubuntu 20.04にLAMPスタックでWordPressをインストールする方法

UbuntuWordPressLAMP StackUbuntu 20.04

はじめに

WordPressは、今日インターネット上でサイトやブログを作成するのに非常に人気のあるオープンソース技術です。 コンテンツ管理システム(Content Management System: CMS)を使用するサイトの63%が採用するWordPressサイトは、現在オンラインになっているサイトの36%を占めています。

WordPressにアクセスする方法はたくさんありますが、中にはセットアッププロセスが複雑なものもあります。このチュートリアルは、アンマネージドクラウドサーバーにコマンドラインを介してWordpressインスタンスをインストール・管理したいユーザーを対象とします。このアプローチは、既製のWordPressインストールよりも多くのステップを要しますが、管理者はWordPress環境の管理を強化できます。

既製WordPressインストールの利用を検討する場合は、DigitalOceanマーケットプレイスで入手可能なワンクリックアプリを使えば、サーバーを強化する際にWordPressのインストールから始められます。

ニーズと目的によって、もっと適した他のオプションが見つかるかもしれません。オープンソースソフトウェアであるWordPressは、自由にダウンロードしてインストールできますが、サイトで利用可能にする場合は、クラウドインフラとドメイン名の購入が必要になります。サーバー側でWordPressをインストール・セットアップする場合はこのガイドの続きに従って進めます。

このチュートリアルでは、LAMP(Linux、Apache、MySQL、PHP)スタックを使用します。これは、Linuxオペレーティングシステム、Apache Webサーバー、MySQLデータベース、PHPプログラミング言語によりWordPressをサポートするサーバーアーキテクチャのひとつの選択肢です。ここではUbuntu 20.04サーバーにLAMPスタックでWordPressをインストール・セットアップします。

前提条件

このチュートリアルを完了するには、事前にUbuntu 20.04サーバーにアクセスし、次の手順を完了しておく必要があります。

  • Ubuntu 20.04初期サーバーセットアップガイドに従ってサーバーをセットアップし、root以外のsudoユーザーがあることを確認します。
  • LAMPガイドに従ってLAMPスタックをインストール・設定します。
  • サイトの保護:WordPressはユーザーの入力を受け入れ、ユーザーデータを保管するので、セキュリティレイヤーを設けることが重要です。TLS / SSLは、接続を安全にするためにサイトからのトラフィックを暗号化できる技術です。この要件を満たすために利用可能なオプション2つを以下に挙げます。 
    • ドメイン名がある場合…無料で信頼できる証明書を提供するLet’s Encryptを使用してサイトを保護します。Let’s Encryptガイド - Apache編に従って設定してください。
    • ドメインがない場合…この設定を単にテストや個人的な目的のみで使用する場合は、代わりに自己署名証明書が使用できます。これにより、同じタイプの暗号化が行われますが、ドメイン検証は行われません。自己署名SSLガイド - Apache編に従ってセットアップします。

セットアップ手順が完了したら、sudoユーザーとしてサーバーにログインし、以下に進みます。

ステップ1 — WordPress用のMySQLデータベースとユーザーの作成

最初のステップは準備になります。WordPressは、MySQLを使用してサイトとユーザーの情報を管理・保存します。MySQLはすでにインストールされていますが、WordPressで使用するデータベースとユーザーを作成する必要があります。

開始するには、このコマンドを入力してMySQL root(管理)アカウントにログインします。(サーバーのrootユーザーではないことに注意してください)。

  • mysql -u root -p

ソフトウェアをインストールしたときに、MySQL rootアカウントに設定したパスワードの入力を求められます。

:MySQLデータベースにrootでアクセスできない場合、sudoユーザーとして次のようにデータベースにログインして、rootユーザーのパスワードを更新できます。 

  • sudo mysql -u root

MySQLプロンプトが表示されたら、rootユーザーのパスワードを更新します。ここでは、new_passwordを、自身で選択した強力なパスワードに変更します。

  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

一旦EXITで抜け、次のコマンドでパスワードを使用してデータベースに再度ログインします。

  • mysql -u root -p

データベース内に、WordPressが制御する専用のデータベースを作成します。名前は何でも構いませんが、このガイドではwordpressと名付けます。次のように入力してWordPress用のデータベースを作成します。

  • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注:MySQLステートメントはすべて、文末にセミコロン(;)が必要です。問題が発生した際は、セミコロンがあることを確認してください。

次に、新しいデータベースの操作専用の、新たなMySQLユーザーアカウントを作成します。管理とセキュリティの観点から、機能を特化したデータベースとアカウントを作成することをお勧めします。このガイドではwordpressuserという名前を使用しますが、必要に応じて自由に変更してください。

このアカウントを作成し、パスワードを設定し、作成したデータベースへのアクセスを許可します。それには次のコマンドを入力します。データベースユーザーの強力なパスワードpasswordを忘れずに選択してください。 

  • CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

次に、wordpressuserがセットアップ済データベースにフルアクセスできる必要があることをデータベースに知らせます。

  • GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';

これで、WordPress専用にデータベースとユーザーアカウントが作成されました。現在のMySQLインスタンスに、最近行った変更について知らせるために、権限をフラッシュします。

  • FLUSH PRIVILEGES;

次のように入力してMySQLを終了します。

  • EXIT;

次のステップでは、サーバーのPHP拡張機能をダウンロードして、WordPressプラグインの基盤をいくつか作成します。

ステップ2— 追加のPHP拡張機能のインストール

LAMPスタックをセットアップする際、PHPとMySQLを通信させるために必要最小限の拡張機能をインストールしました。WordPressとそのプラグインの多くは、追加のPHP拡張機能を活用しています。

WordPressで使用する最も一般的なPHP拡張機能をダウンロード・インストールするには、次のコマンドを実行します。    

  • sudo apt update
  • sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

これで、WordPressサイトに追加プラグインをインストールする下準備が整います。

注:各WordPressプラグインにはそれぞれ要件があります。PHPパッケージの追加インストールが必要な場合もあります。PHPの要件を確認するには、プラグインドキュメントをチェックします。利用可能であれば、上記のようにaptでインストールできます。

これらの新しい拡張機能をロードするにはApacheを再起動する必要があります。次のセクションでApacheでさらに設定を加えるので、それまで待つことも、今再起動してPHP拡張プロセスを完了することもできます。

  • sudo systemctl restart apache2

ステップ3 — Apacheの設定を調整して.htaccessの上書きと書き換えを許可する

次に、Apache設定を若干変更します。前提条件のチュートリアルに従えば、/etc/apache2/site-able/ディレクトリにサイトの設定ファイルがあるはずです。

このガイドでは、/etc/apache2/sites-ability/wordpress.confを例に挙げますが、適宜設定ファイルのパスを変更してください。また、/var/www/wordpressをWordPressインストールのrootディレクトリとして使用します。自身の設定で指定したWeb rootを使用します。LAMPチュートリアルに従った場合、どちらのインスタンスもwordpressではなくドメイン名になるかもしれません。

注:デフォルト設定に000-default.confを(Web rootには/var/www/htmlを)使用しているかもしれません。このサーバーでホストするのがひとつのサイトだけなら、このまま使用しても構いません。そうでない場合は、必要な設定を1サイト1ファイルに論理的に分割した方がよいでしょう。

パスが識別されたので、続けて.htaccessを操作し、Apacheがディレクトリごとに設定変更を処理できるようにします。

.htaccess 上書きを 有効にする

現在、.htaccessファイルの使用は無効になっています。WordPressとWordPressプラグインの多くは、Webサーバーの動作をディレクトリ内で調整するためにこれらのファイルを広範囲に使用します。

nanoのようなテキストエディターでサイトのApache設定ファイルを開きます。

  • sudo nano /etc/apache2/sites-available/wordpress.conf

.htaccessファイルを有効にするには、ドキュメントrootをポイントするDirectoryブロック内でAllowOverrideディレクティブを設定します。設定ファイルのVirtualHostブロック内に、次のテキストブロックを追加します。必ず正しいWeb rootディレクトリを使用してください。

/etc/apache2/sites-available/wordpress.conf
<Directory /var/www/wordpress/>
    AllowOverride All
</Directory>

完了したら、ファイルを保存して閉じます。nanoの場合は、CTRL + Xキーを同時に押し、続けてYENTERキーを押します。

リライトモジュールを有効にする

次に、WordPress パーマリンク機能を使用できるように、mod_rewriteを有効にします。

  • sudo a2enmod rewrite

次の2つの例のように、投稿に人間が読みやすいパーマリンクを付けられるようになります。

http://example.com/2012/post-name/
http://example.com/2012/12/30/post-name

a2enmodコマンドは、Apache設定で指定されたモジュールを有効にするスクリプトを呼び出します。

変更を有効にする

行った変更を実装する前に、次のテストを実行して構文エラーがないことを確認します。

  • sudo apache2ctl configtest

出力は次のようになります。

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

1行目を非表示にするには、メイン(グローバル)Apache設定ファイル/etc/apache2/apache2.confServerNameディレクティブを追加するだけです。 ServerNameはサーバーのドメインかIPアドレスになります。ただし、これはメッセージでしかなく、サイトの機能に影響ありません。出力にSyntax OKが含まれていれば、続行する準備が整っています。

Apacheを再起動して変更を実装します。このチュートリアルの前のステップで再起動したとしても、ここで再起動してください。

  • sudo systemctl restart apache2

次に、WordPress本体をダウンロードしてセットアップします。

ステップ4 —WordPressのダウンロード

サーバーソフトウェアが設定されたので、WordPressをダウンロードしてセットアップできます。特にセキュリティ上の理由から、サイトからWordPressの最新バージョンを入手することをお勧めします。

書き込み可能なディレクトリ(/tmpのような一時保管ディレクトリを推奨)に移動し、圧縮リリースをダウンロードします。

  • cd /tmp
  • curl -O https://wordpress.org/latest.tar.gz

圧縮ファイルを解凍して、WordPressディレクトリ構造を作成します。

  • tar xzvf latest.tar.gz

これらのファイルを一時的にドキュメントrootに移動します。その前に、ダミーの.htaccessファイルを追加して、WordPressが後で使用できるようにします。

次を入力してファイルを作成します。

  • touch /tmp/wordpress/.htaccess

また、サンプル設定ファイルを、WordPressが実際に読み込むファイル名にコピーします。

  • cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

upgradeディレクトリを作成して、ソフトウェアの更新後にWordPressが独自にこれを実行しようとしたときに権限の問題が発生しないようにします。

  • mkdir /tmp/wordpress/wp-content/upgrade

これでディレクトリの内容全体をドキュメントrootにコピーできるようになりました。ソースディレクトリの最後にピリオドを使用して、隠しファイル(作成したばかりの.htaccessファイルなど)を含むディレクトリ内のすべてをコピーすることを示します。

  • sudo cp -a /tmp/wordpress/. /var/www/wordpress

/var/www/wordpressディレクトリをサーバーにセットアップしたディレクトリに変更するようにします。

ステップ5 — WordPressディレクトリの設定

WebベースのWordPressセットアップを実行する前に、WordPressディレクトリ内のアイテムをいくつか調整します。

所有権と権限の調整

合理的なファイルの権限付与と所有権の設定は、成し遂げなければならない重要な手順です。

まず、すべてのファイルの所有権をwww-dataユーザーとグループに付与します。これはApacheWebサーバーが実行するユーザーです。Apacheは、サイトを提供して自動更新するためにWordPressファイルを読み書きできる必要があります。

ファイルの所有権を変更するchownコマンドで、所有権を更新します。サーバーの関連ディレクトリをポイントしてください。

  • sudo chown -R www-data:www-data /var/www/wordpress

次に、次の2つのfindコマンドを実行して、WordPressの各ディレクトリとファイルに適切な権限を設定します。

  • sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
  • sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

これらは、WordPressでの作業を効果的にする許可セットである必要があります。 ただし、プラグインや手順によっては追加の調整が必要になることに注意してください。

WordPress設定ファイルのセットアップ

ここで、メインのWordPress構成ファイルにいくつかの変更を加える必要があります。

ファイルを開くと、最初のタスクは、秘密の鍵を調整してインストールするためのセキュリティレベルを提供します。ファイルを開くとき、最初のタスクは、秘密鍵をいくつか調整して、インストールにセキュリティレベルを付与することです。 WordPressはこれらの値用に秘密鍵ジェネレーターを備えているため、自身で適切な値を考え出す必要はありません。これらは内部でのみ使用されるため、ここで複雑で安全な値を使用しても、使いやすさを損なうことはありません。

WordPress秘密鍵ジェネレーターから安全な値を取得するには、次のコマンドを実行します。

  • curl -s https://api.wordpress.org/secret-key/1.1/salt/

次のような一意の値が返されます。

警告!毎回一意の値を要求することが重要です。以下の値をコピーしないでください。

Output
define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

これらは、設定ファイルに直接貼り付けて安全なキーを設定できる設定行です。今受け取った出力をコピーします。

次に、WordPress設定ファイルを開きます。

  • sudo nano /var/www/wordpress/wp-config.php

それらの設定のサンプル値を含むセクションを検索します。

/var/www/wordpress/wp-config.php
. . .

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

. . .

これらの行を削除し、コマンドラインからコピーした値を貼り付けます。

/var/www/wordpress/wp-config.php
. . .

define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');

. . .

次に、ファイルの先頭にあるデータベース接続設定の一部を変更します。MySQL内で設定したデータベース名、データベースユーザー、および関連するパスワードを変更します。

もう1つの変更は、WordPressがファイルシステムへの書き込みに使用するメソッドの設定です。Webサーバーに必要な場所に書き込む許可を既に与えているため、ファイルシステムメソッドを明示的に「direct」ポートに設定できます。現在の設定でこれを設定しないと、特定のアクションを実行するときに、WordPressからFTP資格情報の入力を求められます。

この設定は、データベース接続設定の下、またはファイル内の他の場所に追加できます。

/var/www/wordpress/wp-config.php
. . .

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );


. . .

define('FS_METHOD', 'direct');

完了したら、ファイルを保存して閉じます。

ステップ6 —Webインターフェイスを介したインストールの完了

サーバーの設定が完了したので、Webインターフェースを介したインストールを完了します。

Webブラウザで、サーバーのドメイン名またはパブリックIPアドレスに移動します。

https://server_domain_or_IP

使用する言語を選択します。

WordPress言語選択

次に、メインのセットアップページが表示されます。

WordPressサイトの名前を選択し、ユーザー名を選択します。セキュリティ上の理由から一般的な「admin」などではなく、ユニークなユーザー名を選択するようお勧めします。強力なパスワードが自動的に生成されます。このパスワードを保存するか、別の強力なパスワードを選択してください。

メールアドレスを入力し、検索エンジンがサイトのインデックスを作成しないようにするかどうかを選択します。

WordPressセットアップのインストール

クリックして移動すると、ログインを促すページが表示されます。

WordPressログインプロンプト

ログインすると、WordPress管理ダッシュボードが表示されます。

WordPressログインプロンプト

この時点で、WordPressウェブサイトの設計に着手できます。WordPressを使用するのが初めての場合、インターフェイスを探索して新しいCMSを理解します。

まとめ

おめでとうございます。WordPressがインストールされ、使用できる状態になりました。

一般的な次のステップは次の通りです。

  • Settings > Permalinksより、WordPressの投稿のパーマリンク設定を選択する。
  • Appearance > Themesより、テーマを選択する。
  • Plugins > Add Newより、新しいプラグインをインストールして、サイトの機能を強化する。
  • 他のユーザーとコラボレーションする場合はUsers > Add Newより、ユーザーを追加する。

WordPressをインストールする別の方法について新たなリソースを探す、異なるサーバーディストリビューションにWordPressをインストールする方法やWordPressのインストールを自動化する方法、WordPress Community tagをチェックしてWordPressサイトをスケールする方法について学習する。

Creative Commons License