Ubuntu 22.04 に LEMP を使用して WordPress をインストールする方法


序章

インターネットで最も人気のあるコンテンツ管理システム (CMS) の 1 つである WordPress を使用すると、ユーザーは、PHP 処理を備えた MySQL バックエンドを使用して、柔軟なブログや Web サイトをセットアップできます。 WordPress は、Web サイトを効率的に立ち上げて実行するための優れた選択肢です。初期設定後、WordPress ウェブサイトのほぼすべての管理は、グラフィカル インターフェイスから実行できます。

このチュートリアルでは、Ubuntu 22.04 サーバー用の LEMP スタック (Linux、Nginx、MySQL、および PHP) に WordPress のインスタンスをセットアップすることに焦点を当てます。

DigitalOcean の Managed Wordpress サービスも使用できます。

前提条件

このチュートリアルを完了するには、Ubuntu 22.04 サーバーにアクセスする必要があります。サーバーに LEMP を使用して WordPress を正常にインストールするには、このチュートリアルを開始する前に、次のタスクも実行する必要があります。

  • サーバーに sudo ユーザーを作成する: このチュートリアルの手順では、sudo 権限を持つ root 以外のユーザーを使用しています。 Ubuntu 22.04 初期サーバー セットアップ チュートリアルに従って、sudo 権限を持つユーザーを作成できます。
  • LEMP スタックをインストールします。WordPress が正しく機能するには、Web サーバー、データベース、および PHP が必要です。 LEMP スタック (Linux、Nginx、MySQL、および PHP) をセットアップすると、これらの要件がすべて満たされます。このチュートリアルに従って、このソフトウェアをインストールして構成してください。

これらのコンポーネントを自分でセットアップするのではなく、DigitalOcean の LEMP ワンクリック インストール アプリを使用して、LEMP スタックが既にインストールされている Ubuntu 22.04 サーバーをすばやくプロビジョニングできます。

ただし、このチュートリアルでは、管理者の sudo ユーザーと、サーバーに Nginx サーバー ブロックが構成されていることを前提としていることに注意してください。サーバーが LEMP ワンクリック アプリでプロビジョニングされている場合でも、Nginx サーバー ブロックの構成の手順 1、2、3、および 5 に従い、PHP プロセッサを使用するように Nginx を構成する必要があります。

  • SSL でサイトを保護する: WordPress は動的コンテンツを提供し、ユーザーの認証と承認を処理します。 TLS/SSL は、サイトからのトラフィックを暗号化して接続を保護できるようにするテクノロジーです。 SSL の設定方法は、サイトのドメイン名を持っているかどうかによって異なります。
    • ドメイン名をお持ちの場合、サイトを保護する最も簡単な方法は、無料の信頼できる証明書を提供する Let’s Encrypt を使用することです。これを設定するには、Nginx の Let’s Encrypt ガイドに従ってください。
    • ドメインを持っておらず、この構成をテスト用または個人用に使用している場合は、代わりに自己署名証明書を使用できます。これは同じタイプの暗号化を提供しますが、ドメインの検証は行いません。 Nginx の自己署名 SSL ガイドに従って設定してください。

    セットアップが完了したら、sudo ユーザーとしてサーバーにログインして続行します。

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

    WordPress は MySQL を使用して、サイトとユーザーの情報を管理および保存します。すでに MySQL はインストール済みですが、WordPress が使用するデータベースとユーザーを作成しましょう。

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

    1. sudo mysql

    MySQL ルート アカウントのパスワードを使用するように認証方法を変更した場合は、代わりに次のコマンドを使用します。

    1. mysql -u root -p

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

    ログインしたら、WordPress が制御できる別のデータベースを作成します。これは好きなように呼び出すことができますが、このガイドではシンプルにするために wordpress を使用します。次のように入力して、WordPress 用のデータベースを作成できます。

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

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

    次に、新しいデータベースを操作するためだけに使用する別の MySQL ユーザー アカウントを作成しましょう。単一目的のデータベースとアカウントを作成することは、管理とセキュリティの観点からは良い考えです。このガイドでは wordpressuser という名前を使用します — 必要に応じて自由に変更してください。

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

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

    これで、WordPress 専用に作成されたデータベースとユーザー アカウントができました。

    データベース タスクが完了したら、次のように入力して MySQL を終了します。

    1. EXIT;

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

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

    LEMP スタックをセットアップするとき、PHP が MySQL と通信できるようにするための最小限の拡張セットが必要でした。 WordPress とそのプラグインの多くは追加の PHP 拡張機能を利用しており、このチュートリアルではさらにいくつか使用します。

    次のように入力して、WordPress で使用する最も一般的な PHP 拡張機能をダウンロードしてインストールしましょう。

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

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

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

    1. sudo systemctl restart php8.1-fpm

    これで、必要なすべての PHP 拡張機能がサーバーにインストールされました。

    ステップ3-Nginxの構成

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

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

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

    開始するには、サイトのサーバー ブロック ファイルを sudo 権限で開きます。

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

    メインの server ブロック内に、いくつかの location ブロックを追加しましょう。

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

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

    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 ファイルに渡されます。

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

    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 をプロジェクトの Web サイトから直接入手することをお勧めします。

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

    1. cd /tmp

    これにより、ディレクトリが一時フォルダーに変更されます。次に、次のコマンドを入力して、WordPress の最新バージョンを圧縮ファイルでダウンロードします。

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

    注: -LO フラグは、圧縮ファイルのソースに直接アクセスするために使用されます。 -L は、リダイレクトの場合にファイルのフェッチが成功することを保証し、-O はリモート ファイルの出力を同じ名前のローカル ファイルに書き込みます。 curl コマンドの詳細については、cURL でファイルをダウンロードする方法を参照してください。

    圧縮ファイルを解凍して、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/wordpress

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

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

    ファイルはサーバーのドキュメント ルートにあり、正しい所有権を持っていますが、追加の構成を完了する必要があります。

    ステップ5-WordPress構成ファイルのセットアップ

    次に、メインの WordPress 構成ファイルにいくつかの変更を加えましょう。

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

    WordPress 秘密鍵ジェネレーターから安全な値を取得するには、次のように入力します。

    1. 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 構成ファイルを開きます。

    1. sudo nano /var/www/your_domain/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');
    
    . . .
    

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

    . . .
    
    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 内で構成された関連パスワードを調整する必要があります。

    他に必要な変更は、WordPress がファイルシステムへの書き込みに使用する方法を設定することです。 Web サーバーに必要な場所への書き込み許可を与えたので、ファイルシステム メソッドを「直接」に明示的に設定できます。現在の設定でこれを設定しないと、いくつかのアクションを実行するときに WordPress が FTP 資格情報を要求する結果になります。この設定をデータベース接続設定の下、またはファイル内の任意の場所に追加します。

    . . .
    
    define( 'DB_NAME', 'wordpress' );
    
    /** MySQL database username */
    define( 'DB_USER', 'wordpressuser' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'password' );
    
    . . .
    
    define( 'FS_METHOD', 'direct' );
    

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

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

    サーバーの構成が完了したので、WordPress の Web インターフェイスからインストールを完了できます。

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

    http://server_domain_or_IP/wordpress
    

    使用する言語を選択してください:

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

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

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

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

    ログインすると、WordPress の管理ダッシュボードに移動します。

    結論

    WordPress をインストールして、すぐに使用できるようにする必要があります。次の一般的な手順として、投稿のパーマリンク設定を選択するか (設定 > パーマリンク で確認できます)、新しいテーマを選択します (外観 > テーマ で選択します)。初めて WordPress を使用する場合は、インターフェイスを少し調べて、新しい CMS に慣れてください。

    WordPress ドロップレットをインストールするためのワンクリック ソリューションを探している場合は、WordPress ワンクリック アプリの詳細をご覧ください。