序章

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

このガイドでは、Debian 10サーバー上のLEMPスタック(Linux、Nginx、MariaDB、およびPHP)にWordPressインスタンスをセットアップすることに焦点を当てます。

前提条件

このチュートリアルを完了するには、Debian10サーバーにアクセスする必要があります。

このガイドを開始する前に、次のタスクを実行する必要があります。

  • サーバー上にsudoユーザーを作成します:このガイドの手順は、sudo権限を持つroot以外のユーザーを使用して完了します。 Debian 10初期サーバーセットアップガイドに従って、sudo権限を持つユーザーを作成できます。
  • LEMPスタックのインストール:WordPressが正しく機能するには、Webサーバー、データベース、およびPHPが必要です。 LEMPスタック(Linux、Nginx、MariaDB、およびPHP)をセットアップすると、これらの要件がすべて満たされます。 このガイドに従って、このソフトウェアをインストールおよび構成します。
  • SSLでサイトを保護する:WordPressは動的コンテンツを提供し、ユーザーの認証と承認を処理します。 TLS / SSLは、接続が安全になるようにサイトからのトラフィックを暗号化できるようにするテクノロジーです。 このチュートリアルでは、ブログのドメイン名があることを前提としています。 Let’s Encryptを使用して、ドメインの無料のSSL証明書を取得できます。 これを設定するには、NginxのLet’sEncryptガイドに従ってください。

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

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

WordPressには、サイトとユーザーの情報を保存および管理するためのMySQLベースのデータベースが必要です。 このセットアップでは、Oracleによる元のMySQLプロジェクトのコミュニティフォークであるMariaDBを使用します。 MariaDBは現在、Debianベースのパッケージマネージャーで利用可能なデフォルトのMySQL互換データベースサーバーです。repossudosystemctl status php * | grepfpmitories。

開始するには、MariaDBルート(管理)アカウントにログインします。 MariaDBがauth_socket認証プラグインを使用するように構成されている場合(デフォルト)、sudoを使用してMariaDB管理者アカウントにログインできます。

  1. sudo mariadb

MariaDBルートアカウントのパスワードを使用するように認証方法を変更した場合は、代わりに次の形式を使用してください。

  1. mariadb -u root -p

MariaDBルートアカウントに設定したパスワードの入力を求められます。

まず、WordPressが制御できる別のデータベースを作成できます。 これには任意の名前を付けることができますが、このガイドでは、わかりやすくするためにwordpressを使用します。 次のように入力して、WordPressのデータベースを作成できます。

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

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

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

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

これで、データベースとユーザーアカウントができました。それぞれ、WordPress用に特別に作成されています。 データベースサーバーの現在のインスタンスが最近行った変更を認識できるように、特権をフラッシュする必要があります。

  1. FLUSH PRIVILEGES;

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

  1. EXIT;

MariaDBセッションが終了し、通常のLinuxシェルに戻ります。

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

LEMPスタックをセットアップするとき、PHPがMariaDBと通信できるようにするために必要な拡張機能のセットはごくわずかでした。 WordPressとそのプラグインの多くは、追加のPHP拡張機能を活用しています。

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

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

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

新しい拡張機能のインストールが完了したら、実行中のPHPプロセッサが新しくインストールされた機能を利用できるように、PHP-FPMプロセスを再起動する必要があります。

  1. sudo systemctl restart php7.3-fpm.service

コマンドの強調表示された部分は、特定のバージョンのPHP-FPMで調整する必要がある場合があります。これは、異なる場合があるためです。 systemctlコマンド内で使用する必要のある正確なサービス名を確認するには、次を使用できます。

  1. sudo systemctl status php* | grep fpm.service

次のような出力が表示されます。

Output
php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled) CGroup: /system.slice/php7.3-fpm.service

強調表示された文字列は、systemctlコマンドを使用してPHP-FPMサービスを管理するときに使用する必要のある名前です。

これで、PHP拡張機能がインストールされました。 次のセクションでは、PHPページの処理にPHP-FPMを使用するようにNginxを構成します。

ステップ3—Nginxを構成する

ここで、Nginxサーバーのブロックファイルにいくつかの小さな調整を加えます。 前提条件のチュートリアルに基づいて、/etc/nginx/sites-available/ディレクトリに、サーバーのドメイン名に応答するように構成され、TLS/SSL証明書で保護されたサイトの構成ファイルが必要です。 ここでは例として/etc/nginx/sites-available/your_domainを使用しますが、必要に応じて構成ファイルへのパスを置き換える必要があります。

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

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

sudo権限でサイトのNginx構成ファイルを開いて開始します。

  1. sudo nano /etc/nginx/sites-available/your_domain

メインのserverブロック内にいくつかのlocationディレクティブを追加する必要があります。 SSL証明書を追加した後、構成に two serverブロックが含まれる場合があります。 その場合は、root /var/www/your_domainおよびその他のlocationディレクティブを含むものを見つけて、そこに変更を実装します。

/favicon.ico/robots.txtへのリクエストに完全に一致するロケーションブロックを作成することから始めます。どちらもリクエストをログに記録する必要はありません。

静的ファイルのリクエストに一致させるために、正規表現の場所を使用します。 これらのリクエストは通常、提供するのに費用のかかるリソースであるため、これらのリクエストのロギングを再度オフにし、高度にキャッシュ可能としてマークします。 この静的ファイルリストを調整して、サイトで使用できる他のファイル拡張子を含めることができます。

/ etc / nginx / sites-available / your_domain
server {
    . . .

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
    . . .
}

既存のlocation /ブロック内で、try_filesリストを調整して、デフォルトオプションとして404エラーを返す代わりに、index.phpファイルに制御が渡されるようにする必要があります。リクエスト引数。

これは次のようになります。

/ etc / nginx / sites-available / wordpress
server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

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

これで、次のように入力して、構文エラーの構成を確認できます。

  1. sudo nginx -t

エラーが報告されなかった場合は、次のように入力してNginxをリロードします。

  1. sudo systemctl reload nginx

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

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

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

書き込み可能なディレクトリに移動し、次のように入力して圧縮リリースをダウンロードします。

  1. cd /tmp
  2. curl -LO https://wordpress.org/latest.tar.gz

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

  1. tar xzvf latest.tar.gz

これらのファイルをドキュメントルートに一時的に移動します。 その前に、サンプル構成ファイルをWordPressが実際に読み取るファイル名にコピーできます。

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

これで、ディレクトリの内容全体をドキュメントルートにコピーできます。 -aフラグを使用して、権限が維持されていることを確認しています。 ソースディレクトリの最後にドットを使用して、非表示のファイルを含め、ディレクトリ内のすべてをコピーする必要があることを示しています。

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

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

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

これで、ファイルはサーバーのドキュメントルートにあり、正しい所有権がありますが、さらにいくつかの構成を完了する必要があります。

ステップ5—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. nano /var/www/your_domain/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');

. . .

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

私たちが行う必要がある他の変更は、WordPressがファイルシステムに書き込むために使用する方法を設定することです。 Webサーバーに必要な場所に書き込む権限を与えたので、ファイルシステムメソッドを明示的に「direct」に設定できます。 現在の設定でこれを設定しないと、いくつかのアクションを実行するときにWordPressがFTPクレデンシャルの入力を求める結果になります。 この設定は、データベース接続設定の下、またはファイル内の他の場所に追加できます。

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

define('DB_NAME', 'wordpress');

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

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

. . .

define('FS_METHOD', 'direct');

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

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

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

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

http://server_domain_or_IP

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

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

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

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

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

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

ダッシュボードから、サイトのテーマの変更とコンテンツの公開を開始できます。

結論

WordPressがインストールされ、使用できる状態になっている必要があります。 次の一般的な手順は、投稿のパーマリンク設定を選択するか(Settings > Permalinksにあります)、新しいテーマを選択する(Appearance > Themesにあります)ことです。 WordPressを初めて使用する場合は、インターフェースを少し調べて新しいCMSに慣れるか、公式ドキュメントのWordPressの最初のステップガイドを確認してください。