序章

WordPressは、インターネット上で最も人気のあるコンテンツ管理システム(CMS)です。 これにより、PHP処理を使用してMySQLバックエンドの上に柔軟なブログやWebサイトを設定できます。 WordPressは信じられないほど採用されており、Webサイトをすばやく立ち上げて実行するための優れた選択肢です。 セットアップ後、ほとんどすべての管理はWebフロントエンドを介して実行できます。

このガイドでは、Ubuntu 18.04サーバーのLAMPスタック(Linux、Apache、MySQL、およびPHP)にWordPressインスタンスをセットアップします。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • sudoユーザーによるUbuntu18.04サーバーへのアクセスsudo権限を持つ非rootユーザーを使用して、このガイドの手順を完了します。 Ubuntu 18.04初期サーバーセットアップガイドに従って、sudo権限を持つユーザーを作成できます。
  • LAMPスタックのインストール:WordPressが正しく機能するには、Webサーバー、データベース、およびPHPが必要です。 LAMPスタック(Linux、Apache、MySQL、およびPHP)をセットアップすると、これらの要件がすべて満たされます。 このガイドに従って、このソフトウェアをインストールおよび構成します。
  • SSLでサイトを保護する:WordPressは動的コンテンツを提供し、ユーザーの認証と承認を処理します。 TLS / SSLは、接続が安全になるようにサイトからのトラフィックを暗号化できるようにするテクノロジーです。 SSLの設定方法は、サイトのドメイン名があるかどうかによって異なります。 ドメイン名をお持ちの場合…サイトを保護する1つの方法は、無料の信頼できる証明書を提供するLet’sEncryptを使用することです。 これを設定するには、ApacheのLet’sEncryptガイドに従ってください。 ドメインがなく、この構成をテストまたは個人的な使用にのみ使用している場合は、代わりに自己署名証明書を使用できます。 これは同じタイプの暗号化を提供しますが、ドメイン検証はありません。 Apacheの自己署名SSLガイドに従ってセットアップしてください。

前提条件が完了したら、sudoユーザーとしてサーバーにログインし、手順1に進みます。

ステップ1-WordPress用のMySQLデータベースとユーザーを作成する

最初のステップは準備です。 MySQLはすでにインストールされていますが、WordPressが使用するユーザー情報を管理および保存するためのデータベースを作成する必要があります。 開始するには、次のコマンドを発行してMySQLルート(管理)アカウントにログインします。

  1. sudo mysql

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

ただし、 root ユーザーに対してパスワード認証を有効にしている場合は、次のコマンドを実行し、プロンプトが表示されたらパスワード情報を入力できます。

  1. mysql -u root -p

そこから、WordPressが制御する新しいデータベースを作成します。 これは好きなように呼び出すことができますが、このガイドでは例としてwordpressを使用します。 次のように記述して、WordPressのデータベースを作成します。

  1. CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

注:すべてのMySQLステートメントはセミコロン(;)で終了する必要があります。 問題が発生した場合は、これが存在することを確認してください。

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

次のコマンドを実行して、このアカウントを作成し、パスワードを設定してから、作成したすべてのデータベースへのアクセスを許可できます。 ここで、データベースユーザーの強力なパスワードを選択することを忘れないでください。

  1. GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

このユーザーを作成したら、特権をフラッシュして、MySQLの現在のインスタンスが最近行った変更を認識していることを確認します。

  1. FLUSH PRIVILEGES;

MySQLを終了します。

  1. EXIT;

これで、MySQLにデータベースとユーザーアカウントができました。それぞれがWordPress用に特別に作成されています。

ステップ2–追加のPHP拡張機能をインストールする

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

まず、パッケージリストを更新します。

  1. sudo apt update

次に、WordPressで使用するための最も人気のあるPHP拡張機能のいくつかをダウンロードしてインストールします。

  1. sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

注:各WordPressプラグインには独自の要件があります。 一部の場合、追加のPHPパッケージをインストールする必要があります。 プラグインのドキュメントを確認して、PHPの要件を確認してください。 利用可能な場合は、上記のようにaptを使用してインストールできます。

次のセクションでこれらの新しい拡張機能をロードするには、Apacheを再起動します。 ここに戻って追加のプラグインをインストールする場合は、今すぐApacheを再起動できます。

  1. sudo systemctl restart apache2

次のステップでは、Apache構成にいくつかの調整を加えます。

ステップ3–.htaccessのオーバーライドと書き換えを可能にするようにApacheの構成を調整する

WordPressは、デフォルトで.htaccessファイルを使用して、パーマリンク、プラグイン、リダイレクトなど、サイトの特定の機能を管理します。 Apache Webサーバーは、これらの.htaccess構成ファイルを使用して、Webサーバーが従うルールを作成します。 ただし、Apacheはデフォルトで.htaccessファイルの使用を無効にしているため、それらを有効にするには、WebサイトのApache仮想ホストファイルを更新する必要があります。

有効にするには、Webサイトの仮想ホストファイルを開きます。

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

注:このチュートリアルでは、例として/etc/apache2/sites-available/wordpress.confを使用しますが、必要に応じて構成ファイルへのパスを置き換える必要があります。

さらに、WordPressインストールのルートディレクトリとして/var/www/wordpressを使用します。 独自の構成で指定されたWebルートを使用する必要があります。

000-default.confのデフォルト構成(/var/www/htmlをWebルートとして使用)を使用している可能性もあります。 これは、このサーバーで1つのWebサイトのみをホストする場合に使用できます。 そうでない場合は、必要な構成を論理チャンクに分割することをお勧めします。サイトごとに1つのファイルです。

このファイルを開くと、.htaccessファイルの使用が無効になっていることがわかります。 .htaccessファイルを許可するには、ドキュメントルートを指すDirectoryブロック内でAllowOverrideディレクティブを設定する必要があります。 構成ファイルのVirtualHostブロック内に次のテキストブロックを追加します。 強調表示された例の代わりに独自のWebルートディレクトリを使用していることを確認してください

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

終了したら、ファイルを保存して閉じます。 nanoを使用している場合は、CTRL + XYENTERの順に押すと終了できます。

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

  1. sudo a2enmod rewrite

その後、構成をテストしてこれらの変更を有効にします。 ただし、変更を実装する前に、構文エラーがないことを確認してください。

  1. 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

トップラインを抑制したい場合は、ServerNameディレクティブをメイン(グローバル)Apache構成ファイルの/etc/apache2/apache2.confに追加します。 ServerNameは、サーバーのドメインまたはIPアドレスにすることができます。 ただし、これは単なるメッセージであり、サイトの機能には影響しません。 出力にSyntax OKが含まれている限り、続行する準備ができています。

Apacheを再起動して、変更を実装します。

  1. sudo systemctl restart apache2

次に、WordPress自体をダウンロードして設定します。

ステップ4–WordPressをダウンロードする

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

まず、書き込み可能なディレクトリに変更します。

  1. cd /tmp

次に、以下を実行して圧縮リリースをダウンロードします。

  1. curl -O https://wordpress.org/latest.tar.gz

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

  1. tar xzvf latest.tar.gz

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

次のコマンドを実行してファイルを作成します。

  1. touch /tmp/wordpress/.htaccess

次に、サンプル構成ファイルのコピーを作成し、WordPressが実際に読み取るファイル名であるwp-config.phpという名前を付けます。

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

最後に、upgradeディレクトリを作成します。これにより、WordPressがソフトウェアの更新後に単独でこれを実行しようとしたときに、アクセス許可の問題が発生しなくなります。

  1. mkdir /tmp/wordpress/wp-content/upgrade

これで、ディレクトリの内容全体をドキュメントルートにコピーできます。 ソースディレクトリの最後にドットを使用すると、隠しファイル(作成した.htaccessファイルなど)を含め、ディレクトリ内のすべてをコピーする必要があることを示します。 ここでも、強調表示された例の代わりに、実際のドキュメントルートの名前を使用します。

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

次に、WordPressディレクトリのアイテムを調整および構成する必要があります。

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

WebベースのWordPressセットアップを開始する前に、WordPressディレクトリ内のいくつかの項目を調整する必要があります。

所有権と権限の調整

達成する必要のある大きなことの1つは、適切なファイルのアクセス許可と所有権を設定することです。

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

chownで所有権を更新します。

  1. sudo chown -R www-data:www-data /var/www/wordpress

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

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

これらは、最初に設定された妥当な権限である必要があります。 一部のプラグインと手順では、追加の調整が必要になる場合があります。

WordPress構成ファイルの設定

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

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

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

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

次のような一意の値を受け取ります。

警告:毎回一意の値を要求することが重要です。 以下の例に示す値をNOTコピーしてください。

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構成ファイルを開きます。 以下で強調表示されているように、ファイルパスが独自のドキュメントルート情報と一致していることを確認してください。

  1. 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
. . .

define('DB_NAME', 'wordpress');

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

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

. . .

define('FS_METHOD', 'direct');

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

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

サーバーの構成が完了したので、Webインターフェイスを介してインストールを完了することができます。

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

https://server_domain_or_IP

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

WordPress language selection

次に、メインのセットアップページに移動します。

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

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

WordPress setup installation

先にクリックすると、ログインを求めるページが表示されます。

WordPress login prompt

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

WordPress login prompt

そこから、WordPressサイトの使用とカスタマイズを開始できます。

結論

これで、WordPressが正常にインストールされ、使用できるようになります。 いくつかの一般的な次のステップは、投稿のパーマリンク設定を選択するか(Settings > Permalinksにあります)、または新しいテーマを選択します(Appearance > Themesにあります)。 WordPressを初めて使用する場合は、インターフェイスを少し調べて、新しいCMSについて理解してください。