How to Install WordPress with LEMP on Ubuntu 20.04
序章
現在インターネット上で最も人気のあるコンテンツ管理システム(CMS)の1つであるWordPressを使用すると、ユーザーはPHP処理を備えたMySQLバックエンドを使用して柔軟なブログやWebサイトをセットアップできます。 WordPressは、初心者と経験豊富なエンジニアの間で信じられないほどの採用率を示しており、Webサイトを効率的に稼働させるための優れた選択肢です。 初期設定後、WordPress Webサイトのほとんどすべての管理は、グラフィカルインターフェイスを介して実行できます。これらの機能やその他の機能により、WordPressは拡張性のあるWebサイトに最適です。
このチュートリアルでは、Ubuntu 20.04サーバーのLEMPスタック(Linux、Nginx、MySQL、およびPHP)にWordPressのインスタンスをセットアップすることに焦点を当てます。
前提条件
このチュートリアルを完了するには、Ubuntu20.04サーバーにアクセスする必要があります。 サーバーにLEMPを使用してWordPressを正常にインストールするには、このチュートリアルを開始する前に、次のタスクも実行する必要があります。
- サーバー上にsudoユーザーを作成します:このチュートリアルの手順では、
sudo
権限を持つroot以外のユーザーを使用しています。 Ubuntu 20.04初期サーバーセットアップチュートリアルに従って、sudo
権限を持つユーザーを作成できます。 - LEMPスタックのインストール:WordPressが正しく機能するには、Webサーバー、データベース、およびPHPが必要です。 LEMPスタック(Linux、Nginx、MySQL、およびPHP)をセットアップすると、これらの要件がすべて満たされます。 このチュートリアルに従って、このソフトウェアをインストールおよび構成します。
これらのコンポーネントを自分でセットアップするのではなく、DigitalOceanのLEMPワンクリックインストールアプリでLEMPスタックがすでにインストールされているUbuntu20.04サーバーをすばやくプロビジョニングできます。
ただし、このチュートリアルでは、サーバーに管理sudo
ユーザーとNginxサーバーブロックが構成されていることを前提としていることに注意してください。 LEMPワンクリックアプリでプロビジョニングされたサーバーでも、ステップ1 、 2 、 3 、および
- SSLでサイトを保護する:WordPressは動的コンテンツを提供し、ユーザーの認証と承認を処理します。 TLS / SSLは、接続が安全になるようにサイトからのトラフィックを暗号化できるようにするテクノロジーです。 SSLの設定方法は、サイトのドメイン名があるかどうかによって異なります。
ドメイン名をお持ちの場合、サイトを保護する最も簡単な方法は、無料の信頼できる証明書を提供するLet’sEncryptを使用することです。 これを設定するには、NginxのLet’sEncryptガイドに従ってください。 ドメインがなく、この構成をテストまたは個人的な使用に使用している場合は、代わりに自己署名証明書を使用できます。 これは同じタイプの暗号化を提供しますが、ドメイン検証はありません。 Nginxの自己署名SSLガイドに従ってセットアップしてください。
セットアップが完了したら、sudo
ユーザーとしてサーバーにログインして続行します。
ステップ1—WordPress用のMySQLデータベースとユーザーを作成する
WordPressはMySQLを使用して、サイトとユーザーの情報を管理および保存します。 すでにMySQLがインストールされていますが、WordPressが使用するデータベースとユーザーを作成しましょう。
開始するには、MySQLルート(管理)アカウントにログインします。 MySQLがauth_socket
認証プラグイン(デフォルト)を使用するように構成されている場合、sudo
を使用してMySQL管理者アカウントにログインできます。
- sudo mysql
MySQLルートアカウントのパスワードを使用するように認証方法を変更した場合は、代わりに次のコマンドを使用してください。
- mysql -u root -p
MySQLルートアカウントに設定したパスワードの入力を求められます。
ログインしたら、WordPressが制御できる別のデータベースを作成します。 これは好きなように呼び出すことができますが、このガイドでは簡単にするためにwordpress
を使用します。 次のように入力して、WordPressのデータベースを作成できます。
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
注:すべてのMySQLステートメントはセミコロン(;
)で終了する必要があります。 エラーが発生した場合は、セミコロンが存在することを確認してください。
次に、新しいデータベースを操作するためだけに使用する別のMySQLユーザーアカウントを作成しましょう。 単一目的のデータベースとアカウントを作成することは、管理とセキュリティの観点から良い考えです。 このガイドではwordpressuser
という名前を使用します。必要に応じて、これを自由に変更してください。
次のコマンドでは、アカウントを作成し、パスワードを設定して、作成したデータベースへのアクセスを許可します。 ここで強力なパスワードを選択することを忘れないでください。
-
- CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
-
- GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';
これで、データベースとユーザーアカウントができました。それぞれ、WordPress用に特別に作成されています。
データベースタスクが完了したら、次のように入力してMySQLを終了します。
- EXIT;
MySQLセッションが終了し、通常のLinuxシェルに戻ります。
ステップ2—追加のPHP拡張機能をインストールする
LEMPスタックを設定する場合、PHPがMySQLと通信するために必要な拡張機能のセットはごくわずかです。 WordPressとそのプラグインの多くは、追加のPHP拡張機能を活用しており、このチュートリアルではさらにいくつかを使用します。
次のように入力して、WordPressで使用する最も人気のあるPHP拡張機能のいくつかをダウンロードしてインストールしましょう。
- sudo apt update
- 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プロセッサーが新しくインストールされた機能を利用できるようにします。
- sudo systemctl restart php7.4-fpm
これで、必要なすべてのPHP拡張機能がサーバーにインストールされました。
ステップ3—Nginxを構成する
次に、Nginxサーバーのブロックファイルにいくつかの調整を加えましょう。 前提条件のチュートリアルに基づいて、/etc/nginx/sites-available/
ディレクトリに、サーバーのドメイン名またはIPアドレスに応答するように構成され、TLS/SSL証明書で保護されたサイトの構成ファイルが必要です。 ここでは例として/etc/nginx/sites-available/wordpress
を使用しますが、必要に応じて構成ファイルへのパスを置き換える必要があります。
さらに、このガイドでは、WordPressインストールのルートディレクトリとして/var/www/wordpress
を使用します。 繰り返しになりますが、独自の構成で指定されたWebルートを使用する必要があります。
注: /etc/nginx/sites-available/default
のデフォルト構成(/var/www/html
をWebルートとして使用)を使用している可能性があります。 これは、このサーバーで1つのWebサイトのみをホストする場合に使用できます。 そうでない場合は、必要な構成を論理チャンクに分割することをお勧めします。サイトごとに1つのファイルです。
sudo
権限でサイトのサーバーブロックファイルを開いて開始します。
- 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;
}
. . .
}
終了したら、ファイルを保存して閉じます。
次に、次のように入力して、構文エラーの構成を確認しましょう。
- sudo nginx -t
エラーが報告されなかった場合は、次のように入力してNginxをリロードします。
- sudo systemctl reload nginx
次に、WordPressをダウンロードしてセットアップしましょう。
ステップ4—WordPressをダウンロードする
サーバーソフトウェアが構成されたので、WordPressをダウンロードしてセットアップしましょう。 セキュリティ上の理由から、プロジェクトのWebサイトから最新バージョンのWordPressを直接入手することを常にお勧めします。
書き込み可能なディレクトリに移動し、次のように入力して圧縮リリースをダウンロードします。
- cd /tmp
これにより、ディレクトリが一時フォルダに変更されます。 次に、次のコマンドを入力して、最新バージョンのWordPressを圧縮ファイルでダウンロードします。
- curl -LO https://wordpress.org/latest.tar.gz
注: -LO
フラグは、圧縮ファイルのソースに直接アクセスするために使用されます。 -L
は、リダイレクトの場合にファイルのフェッチが成功することを保証し、-O
は、同じ名前のローカルファイルを使用してリモートファイルの出力を書き込みます。 curl
コマンドの詳細については、cURLを使用してファイルをダウンロードする方法にアクセスしてください。
圧縮ファイルを抽出して、WordPressディレクトリ構造を作成します。
- tar xzvf latest.tar.gz
これらのファイルを一時的にドキュメントルートに移動しますが、移動する前に、サンプル構成ファイルをWordPressが実際に読み取るファイル名にコピーしましょう。
- cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
それでは、ディレクトリの内容全体をドキュメントルートにコピーしましょう。 -a
フラグを使用してアクセス許可が維持されていることを確認し、ソースディレクトリの最後にドットを使用して、ディレクトリ内のすべて(隠しファイルを含む)をコピーする必要があることを示しています。
- sudo cp -a /tmp/wordpress/. /var/www/wordpress
ファイルが配置されたので、www-dataユーザーとグループに所有権を割り当てます。 これは、Nginxが実行されるユーザーとグループであり、Nginxは、Webサイトにサービスを提供し、自動更新を実行するために、WordPressファイルの読み取りと書き込みができる必要があります。
- sudo chown -R www-data:www-data /var/www/wordpress
これで、ファイルはサーバーのドキュメントルートにあり、正しい所有権がありますが、追加の構成を完了する必要があります。
ステップ5—WordPress構成ファイルを設定する
次に、メインのWordPress構成ファイルにいくつかの変更を加えましょう。
ファイルを開くときは、インストールのセキュリティを確保するために、いくつかの秘密鍵を調整することから始めます。 WordPressはこれらの値の安全なジェネレーターを提供するため、自分で値を考え出す必要はありません。 これらは内部でのみ使用されるため、ここで複雑で安全な値を使用してもユーザビリティが損なわれることはありません。
WordPressの秘密鍵ジェネレーターから安全な値を取得するには、次のように入力します。
- curl -s https://api.wordpress.org/secret-key/1.1/salt/
次のような一意の値が返されます。
警告:毎回一意の値を要求することが重要です。 以下に示す値をNOTコピーしないでください!
Outputdefine('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
それらの設定のダミー値を含むセクションを見つけます。 次のようになります。
. . .
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サーバーに必要な場所に書き込む権限を与えたので、ファイルシステムメソッドを明示的に「direct」に設定できます。 現在の設定でこれを設定しないと、いくつかのアクションを実行するときに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がインストールされ、使用できる状態になっている必要があります。 次の一般的な手順は、投稿のパーマリンク設定を選択するか(Settings > Permalinks
にあります)、新しいテーマを選択する(Appearance > Themes
にあります)ことです。 WordPressを初めて使用する場合は、インターフェイスを少し調べて、新しいCMSについて理解してください。
WordPressドロップレットをインストールするためのワンクリックソリューションをお探しの場合は、WordPressワンクリックアプリの詳細をご覧ください。