序章

WordPressは、世界で最も人気のあるコンテンツ管理システム(CMS)およびブログプラットフォームです。 WordPressを使用すると、Webサイトをすばやく構成およびカスタマイズできるため、コンテンツを追加したり、視覚要素を簡単に調整したりできます。

このガイドでは、コンテンツを提供するためにNginxを使用してFreeBSD10.1マシンにWordPressをインストールします。 Nginxは、多数の同時接続を効率的に処理する強力なWebサーバーです。 これを、このガイドで設定するWordPressインストールのベースとして活用します。

前提条件と目標

このガイドを完了するために、サーバーを準備するために実行する必要のあるいくつかの準備手順があります。

このガイドのコンポーネントを、構成済みのFEMP(FreeBSD、Nginx、MySQL、およびPHP)スタックに追加します。 FreeBSD 10.1サーバーでNginx、MySQL、およびPHPをセットアップする方法については、ガイドこちらをご覧ください。

Nginx、MySQL、およびPHPをサーバーにインストールして構成したら、このガイドを続けることができます。 このガイドの目標は、FreeBSDサーバーに最新バージョンのWordPressをインストールすることです。

FreeBSDのpkgコマンドを介してインストール可能な既存のWordPressパッケージがありますが、現在はPHPバージョン5.4に依存しており、今後はセキュリティアップデートのみを受信します。 その完全な寿命は2015年9月になります。

私たちのサイトが長期間サポートを受けるベースで構築されることを保証するために、プロジェクトのサイトから最新バージョンのWordPressをダウンロードしてインストールし、PHPバージョン5.6を使用して動的コンテンツを処理します。

WordPressに必要な追加のPHP拡張機能をインストールする

FEMPガイドでFreeBSDサーバーにPHPをセットアップするときに、php56パッケージとphp56-mysqlパッケージをインストールして、PHPインスタンスが必要に応じてMySQLデータベースからデータをクエリできるようにしました。

これは、PHPをさまざまな異なるアプリケーションのベースとして使用できるようにするために必要な最小限の構成を表しています。 WordPressはphp56-mysqlパッケージを使用しますが、コア機能の多くを実装するためにいくつかの追加の拡張機能も必要です。

幸い、これらはpkgコマンドを使用して簡単にインストールできます。 次のように入力して、必要な拡張機能をダウンロードしてインストールします。

sudo pkg install php56-xml php56-hash php56-gd php56-curl php56-tokenizer php56-zlib php56-zip

インストールの完了後、デフォルトのtcshシェルを使用している場合は、シェルが新しいファイルを見つけられるように再ハッシュを開始します。

rehash

インストールしたパッケージはすべてPHP拡張機能です。 PHP-FPMインスタンスでこれらの新しい拡張機能を使用するには、プロセスを再起動する必要があります。

sudo service php-fpm restart

これが完了したら、データベースの構成を開始できます。

MySQLデータベースの作成と構成

WordPressには、サイトのコンテンツとユーザーデータを保存するためにSQLスタイルのデータベースが必要です。 以前のガイドでMySQLをインストールしたので、そのようなデータベースを作成してアクセスを提供するために必要なツールがあります。

まず、mysqlコマンドを使用して、データベースシステムに対して管理ユーザーとして認証する必要があります。

mysql -u root -p

前のガイドで構成したMySQLrootユーザーのパスワードの入力を求められます(mysql_secure_installationスクリプトの実行中)。 正しいパスワードを入力すると、MySQLプロンプトが表示されます。

最初に行うことは、WordPressインスタンスのデータベースを作成することです。 これは好きなように呼び出すことができますが、セマンティックで覚えやすいため、このガイドではデータベース名wordpressを使用します。

CREATE DATABASE wordpress;

上記のコマンドで問題が発生した場合は、ステートメントの最後にセミコロン(;)が付いていることを確認してください。 SQLクエリ言語では、すべてのステートメントがセミコロンで終わる必要があります。

データベースを作成したら、次のステップは、データベースへのアクセスに使用する専用ユーザーを作成することです。 MySQL内にデータを格納するアプリケーションごとに個別のMySQLユーザーを作成して利用することをお勧めします。 これにより、セキュリティ問題の範囲を最小限に抑えることができます。

このガイドでは、新しいユーザーwordpressuserを呼び出し、サーバー自体から発信された接続に対してのみ有効になるようにアクセス制限を構成します。 また、ユーザーのパスワードを設定します。

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

上記のコマンドのpasswordコンポーネントを安全なパスワードに変更することを忘れないでください。 この値は後で覚えておく必要があります。

これで、WordPressのインストールに必要な2つのMySQLコンポーネントが作成されました。 ただし、それらはまだ接続されていません。 新しいユーザーにWordPressデータベースへのアクセスを許可して、サイトのデータを設定および管理できるようにする必要があります。 これを行うには、次のように入力します。

GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;

これで、新しいユーザーは、構成したデータベースにアクセスできます。 現在実行中のMySQLのインスタンスにこれらの新しい変更を知らせるには、特権テーブルをフラッシュする必要があります。

FLUSH PRIVILEGES;

最後に、次のように入力して、MySQLプロンプトを終了し、通常のシェル環境に戻ることができます。

exit

データベースとユーザーの準備ができたので、実際のWordPressファイルをダウンロードして構成できます。

WordPressをダウンロードして構成する

インストールに使用するために、プロジェクトのWebサイトから最新バージョンのWordPressをダウンロードします。 セキュリティアップデートの可能性があるため、常に最新バージョンのWordPressを使用することが非常に重要です。

WordPressチームは、常に最新バージョンをサイトの/latest.tar.gzのアーカイブにパッケージ化することで、これを簡単にしています。 FreeBSD fetchユーティリティを使用して、これをホームディレクトリにダウンロードできます。

cd ~
fetch http://wordpress.org/latest.tar.gz

ファイルがダウンロードされたら、tarコマンドを使用してWordPressファイルとディレクトリ構造を抽出できます。

tar xzvf latest.tar.gz

作成されるディレクトリはwordpressと呼ばれます。 .tar.gzアーカイブを削除してから、そのディレクトリに移動して、構成を開始できるようにします。

rm latest.tar.gz
cd wordpress

内部には、インストールのテンプレートとして使用できるサンプル構成ファイルがあります。 WordPressによって読み取られるwp-config.phpファイル名にファイルをコピーします。

cp wp-config-sample.php wp-config.php

これで、編集用にファイルを開いて、前のセクションで設定したMySQLデータベースとユーザーのアクセス資格情報を構成できるようになりました。

vi wp-config.php

内部には、WordPressがMySQLシステムに正しく接続して利用するために変更する必要のある3つの値があります。 DB_NAME変数は、作成したMySQLデータベースの名前を定義し、DB_USERは作成したユーザーに設定し、DB_PASSWORDはユーザーのパスワードを含むように変更する必要がありますそのユーザー用に選択:

. . .

/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

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

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

. . .

これらの値の変更が終了したら、ファイルを保存して閉じます。

次に、WordPressのインストールを/usr/local/wwwディレクトリにコピーして、さまざまなサイトファイルを保存します。 rsyncユーティリティを使用します。これにより、移動中に特定のファイル属性を維持できます。

sudo rsync -avP ~/wordpress /usr/local/www

次に、WordPressファイルの所有者を調整して、Webサーバーが適切な場所で変更を行えるようにする必要があります。 私たちのWebユーザーとグループはどちらもwwwと呼ばれています。

sudo chown -R www:www /usr/local/www/wordpress

WordPressファイルが正しい構成で配置されたので、Nginx構成を変更できます。

Nginxを構成する

前回のガイドでは、デフォルトのNginx Webページを提供するようにNginxを設定し、PHPリクエストをPHP-FPMインスタンスに渡すように構成しました。 これにより、WordPressに必要な構成にほとんどの道をたどることができます。

sudo権限でNginx構成ファイルを開き、変更を加えます。

sudo vi /usr/local/etc/nginx/nginx.conf

前回のガイドの指示に従った場合、ファイルは次のようになります(わかりやすくするために以下のコメントを削除しました)。

user  www;
worker_processes  2;
error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  example.com www.example.com;
        root /usr/local/www/nginx;
        index index.php index.html index.htm;

        location / {
            try_files $uri/ $uri/ =404;
        }

        error_page      500 502 503 504  /50x.html;
        location = /50x.html {
            root /usr/local/www/nginx-dist;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include fastcgi_params;
        }
    }
}

WordPressが正しく機能するようにするには、2つの調整を行う必要があります。

まず、WordPressファイルは/usr/local/www/wordpressディレクトリにあるため、ドキュメントルートを調整する必要があります。

server {

    . . .

    root /usr/local/www/wordpress;

    . . .

}

他に必要な変更は、location /ブロック内のtry_filesディレクティブです。 現在、構成はNginxに最初にファイルとしてリクエストを見つけようとするように指示しています。 一致するファイルが見つからない場合は、要求に一致するディレクトリを見つけようとします。 これで結果が得られない場合、Nginxはリソースが見つからなかったことを示す404エラーを発行します。

これを変更して、404エラーで終了するのではなく、リクエストがindex.phpファイルに書き換えられるようにする必要があります。 元のリクエストと引数はクエリパラメータとして渡されます。 try_filesディレクティブを次のように変更することで、これを構成できます。

server {

    . . .

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    . . .

}

終了すると、構成ファイルは次のようになります。

user  www;
worker_processes  2;
error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  example.com www.example.com;
        root /usr/local/www/wordpress;
        index index.php index.html index.htm;

        location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        error_page      500 502 503 504  /50x.html;
        location = /50x.html {
            root /usr/local/www/nginx-dist;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include fastcgi_params;
        }
    }
}

上記の変更が完了したら、ファイルを保存して閉じます。

これで、新しい変更を実装するためにNginxを再起動できます。 まず、構文が正しいことを再確認します。

sudo nginx -t

エラーが見つからない場合は、サービスを再起動します。

sudo service nginx restart

Webインターフェイスを介したインストールの完了

これで、WordPressのインストールがサーバー側で完全に構成されました。 Webブラウザーを使用して、残りのプロセスを完了することができます。

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

http://example.com

WordPressは最初にどの言語を使用したいかを尋ねます:

WordPress select language

選択すると、WordPressのインストールをセットアップするための初期構成ページが表示されます。

WordPress installation

サイトの名前を入力し、サイトの管理に使用するユーザー名を選択します。 サイトのパスワードを選択して確認し、連絡可能なメールアドレスを入力する必要があります。 最後のオプションは、検索エンジンがサイトにインデックスを付けることを許可するかどうかに関する選択です。

選択したら、ページの下部にある[WordPressのインストール]ボタンをクリックします。 選択したクレデンシャルを使用してサイトにサインインするように求められます。

ログインすると、新しいWordPressインストールの管理パネルが表示されます。

WordPress admin interface

このインターフェイスを使用して、新しいコンテンツを投稿したり、サイトの外観を変更したり、プラグインをインストールして構成したりして、追加機能を利用できます。

結論

これで、Nginx、MySQL、およびPHPに支えられた新しいWordPressインストールが稼働しています。 WordPressは非常に強力で、好みに応じてさまざまな種類のコンテンツを表示できます。 WordPressを初めて使用する場合は、オプションのテーマとプラグインを確認することから始めてください。