ウェブサイト検索

Ubuntu 16.04にLEMPを使ってWordPressをインストールする方法


Ubuntu 16.04を使用していませんか?別のバージョンやディストリビューションを選択してください。

紹介

WordPressはインターネット上で最も人気のあるCMS(コンテンツ管理システム)です。 MySQLのバックエンドとPHPの処理を用いて、柔軟なブログやウェブサイトを簡単にセットアップできます。 WordPressは素晴らしい普及を見せており、迅速にウェブサイトを立ち上げるための優れた選択肢です。 セットアップ後は、ほぼすべての管理がウェブフロントエンドを通じて行えます。

このガイドでは、Ubuntu 16.04サーバーにLEMPスタック(Linux、Nginx、MySQL、PHP)上でWordPressインスタンスを設定することに焦点を当てます。

前提条件

このチュートリアルを完了するには、Ubuntu 16.04サーバーへのアクセスが必要です。

このガイドを始める前に、以下のタスクを実行する必要があります:

  • サーバーに sudo ユーザーを作成します: このガイドの手順は、sudo 権限を持つ非ルートユーザーを使って完了します。sudo 権限を持つユーザーは、私たちの Ubuntu 16.04 初期サーバー設定ガイドに従って作成できます。
  • LEMPスタックをインストールする: WordPressが正しく動作するためには、ウェブサーバー、データベース、およびPHPが必要です。LEMPスタック(Linux、Nginx、MySQL、およびPHP)を設定することで、これらすべての要件が満たされます。このガイドに従って、ソフトウェアをインストールし、構成してください。
  • SSLでサイトを保護する: WordPressは動的コンテンツを提供し、ユーザー認証と認可を処理します。TLS/SSLは、サイトからのトラフィックを暗号化して接続を安全にする技術です。SSLの設定方法は、サイトのドメイン名があるかどうかによって異なります。

    • ドメイン名をお持ちの場合… サイトを保護する最も簡単な方法は、無料の信頼できる証明書を提供するLet’s Encryptを利用することです。これを設定するには、Nginx用のLet’s Encryptガイドに従ってください。
    • ドメインをお持ちでない場合… この設定をテストや個人的な使用のためだけに使用する場合は、自己署名証明書を使うことができます。これにより、同様の暗号化が提供されますが、ドメインの検証は行われません。設定を行うために、Nginx向けの自己署名SSLガイドに従ってください。

設定手順が完了したら、sudo ユーザーとしてサーバーにログインし、以下を続けてください。

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

私たちが最初に行うステップは、準備的なものです。WordPressは、サイトやユーザー情報を管理およびストレージするためにMySQLを使用します。MySQLはすでにインストールされていますが、WordPressが使用するためのデータベースとユーザーを作成する必要があります。

始めるには、このコマンドを入力してMySQLのroot(管理者)アカウントにログインします:

  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. GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

あなたは今、WordPress専用に作成されたデータベースとユーザーアカウントを持っています。最近行った変更を現在のMySQLインスタンスが認識できるように、権限をリフレッシュする必要があります。

  1. FLUSH PRIVILEGES;

MySQLから退出するには、次のように入力します:

  1. EXIT;

ステップ2:Nginxの設定を調整してWordPressを正しく処理できるようにする

次に、Nginxサーバーブロックファイルにいくつかの小さな調整を加えます。

デフォルトのサーバーブロックファイルをsudo権限で開くには、次のようにします:

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

メインの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

ステップ3:追加のPHP拡張をインストールする

LEMPスタックを設定する際、PHPがMySQLと通信するためには非常に最小限の拡張セットのみが必要でした。WordPressとその多くのプラグインは、追加のPHP拡張を利用します。

WordPressで使用するための最も人気のあるPHP拡張機能をダウンロードしてインストールするには、次のように入力します:

  1. sudo apt-get update
  2. sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

ノート

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

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

  1. sudo systemctl restart php7.0-fpm

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

サーバーソフトウェアの設定が完了したので、WordPressをダウンロードしてセットアップできます。特にセキュリティの観点から、常に公式サイトから最新バージョンのWordPressを取得することが推奨されています。

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

  1. cd /tmp
  2. curl -O 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

私たちはまた、upgrade ディレクトリを作成できるので、WordPressがソフトウェアの更新後に自分でこれを行う際に、権限の問題に直面しないようになります:

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

さて、ディレクトリの全内容を私たちのドキュメントルートにコピーすることができます。私たちは、権限が維持されるようにするために -a フラグを使用しています。私たちのソースディレクトリの最後にドットを付けて、ディレクトリ内のすべてのファイル、隠しファイルを含めてコピーすることを示しています。

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

ステップ5:WordPressディレクトリを設定する

WebベースのWordPress設定を行う前に、WordPressディレクトリ内のいくつかの項目を調整する必要があります。

所有権と権限の調整

私たちが達成する必要がある重要なことの1つは、合理的なファイルの権限と所有権を設定することです。通常のユーザーとしてこれらのファイルに書き込みができる必要があり、ウェブサーバーも正しく機能するために特定のファイルやディレクトリにアクセスし、調整できる必要があります。

私たちは、ドキュメントルート内のすべてのファイルの所有権を自分のユーザー名に割り当てることから始めます。このガイドではユーザー名としてsammyを使用しますが、あなたのsudoユーザーの名前に合わせて変更してください。グループの所有権をwww-dataグループに割り当てます:

  1. sudo chown -R sammy:www-data /var/www/html

次に、ドキュメントルート内の各ディレクトリにsetgidビットを設定します。これにより、これらのディレクトリ内で作成された新しいファイルは、親ディレクトリのグループ(私たちが設定したwww-data)を継承し、作成ユーザーのプライマリグループではなくなります。これは、コマンドラインでディレクトリ内にファイルを作成するたびに、ウェブサーバーがそれに対してグループ所有権を持つことを確認するためです。

私たちは、次のように入力することでWordPressインストール内のすべてのディレクトリにsetgidビットを設定できます:

  1. sudo find /var/www/html -type d -exec chmod g+s {} \;

いくつかの他の細かい権限を調整します。まず、ウェブインターフェースがテーマやプラグインの変更を行えるように、wp-contentディレクトリにグループ書き込みアクセスを与えます:

  1. sudo chmod g+w /var/www/html/wp-content

このプロセスの一環として、これらの2つのディレクトリ内のすべてのコンテンツに対して、ウェブサーバーに書き込みアクセスを付与します。

  1. sudo chmod -R g+w /var/www/html/wp-content/themes
  2. sudo chmod -R g+w /var/www/html/wp-content/plugins

これは始めるための合理的な権限セットであるべきです。一部のプラグインや手順は追加の調整が必要になるかもしれません。

WordPressの設定ファイルの設定

さて、主要なWordPressの設定ファイルにいくつかの変更を加える必要があります。

ファイルを開くと、最初に行うべき作業は、インストールのセキュリティを提供するためにいくつかの秘密鍵を調整することです。WordPressは、これらの値のための安全なジェネレーターを提供しているので、自分で良い値を考え出す必要はありません。これらは内部でのみ使用されるため、複雑で安全な値をここに持っていても使いやすさに悪影響はありません。

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

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

あなたはこのようなユニークな値を取得します:

警告

毎回ユニークな値を要求することが重要です。下に表示されている値をコピーしないでください!

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/html/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がファイルシステムに書き込むために使用すべきメソッドを設定することです。ウェブサーバーに必要な場所に書き込む権限を与えたので、ファイルシステムメソッドを「直接」に明示的に設定できます。この設定を現在の設定で行わないと、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: ウェブインターフェイスを通じてインストールを完了する

サーバーの設定が完了したので、ウェブインターフェースを通じてインストールを完了できます。

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

http://server_domain_or_IP

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

次に、主要な設定ページに移動します。

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

メールアドレスを入力し、検索エンジンにサイトをインデックス登録しないようにするかどうかを選択してください:

先に進むと、ログインを促すページに移動します:

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

WordPressのアップグレード

WordPressのアップグレードが利用可能になると、現在の権限ではインターフェースを通じてそれらをインストールすることができなくなります。

ここで選択した権限は、アップグレードの際の99%において、セキュリティと使いやすさの良いバランスを提供することを目的としています。しかし、ソフトウェアが自動的に更新を適用するには、少し制限が厳しすぎます。

更新が利用可能になったら、再びあなたのsudoユーザーとしてサーバーにログインします。ウェブサーバープロセスにドキュメントルート全体へのアクセスを一時的に与えます:

  1. sudo chown -R www-data /var/www/html

さて、WordPressの管理パネルに戻り、更新を適用してください。

完了したら、セキュリティのために再び権限をロックしてください:

  1. sudo chown -R sammy /var/www/html

これは、WordPress自体にアップグレードを適用する際にのみ必要です。

結論

WordPressはインストールされ、使用準備が整っています! よくある次のステップは、投稿のパーマリンク設定を選択すること(設定 > パーマリンクで見つかります)や、新しいテーマを選ぶこと(外観 > テーマにあります)。 もしこれが初めてのWordPressの使用であれば、インターフェースを少し探索して新しいCMSに慣れてください。

関連記事: