メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

チュートリアル: Amazon Linux を使った WordPress ブログのホスティング

次の手順では、お客様の Amazon Linux インスタンスで、WordPress ブログのインストール、構成を実行し、安全性を確立します。このチュートリアルは、WordPress ブログをホストするウェブサーバーを完全に制御する (これは従来のホスティングサービスでは一般的なことではありません) という点で、Amazon EC2 を使用するための優れた手引きになります。

サーバーに対するソフトウェアパッケージの更新とセキュリティパッチの維持は、お客様の責任となります。ウェブサーバー構成との直接的な対話操作を必要としない、より自動化された WordPress をインストールする場合、AWS CloudFormation サービスは、迅速に始められる WordPress テンプレートを提供します。詳細については、AWS CloudFormation ユーザーガイド の「ご利用開始にあたって」を参照してください。Windows インスタンスで WordPress ブログをホスティングする場合は、Windows インスタンスの Amazon EC2 ユーザーガイドDeploying a WordPress Blog on Your Amazon EC2 Windows Instance を参照してください。データベースが分離された高可用性のソリューションが必要な場合は、AWS Elastic Beanstalk 開発者ガイド の「高可用性の WordPress ウェブサイトをデプロイする」を参照してください。

重要

これらの手順は Amazon Linux で使用するためのものです。その他のディストリビューションの詳細については、各ドキュメントを参照してください。このチュートリアルの多くの手順は、Ubuntu インスタンスには使用できません。Ubuntu インスタンスでの WordPress のインストールについては、Ubuntu のドキュメントで「WordPress」を参照してください。

前提条件

このチュートリアルでは、「チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール」のすべての手順に従って、PHP と MySQL をサポートする機能的なウェブサーバーを含む Amazon Linux インスタンスを起動したことを前提としています。このチュートリアルでは、セキュリティグループで HTTP および HTTPS トラフィックを許可するように設定する手順や、ウェブサーバー用にファイルアクセス許可が正しく設定されていることを確認する手順も示します。まだそうしていない場合は、「チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール」を参照してこれらの前提条件を満たした後、このチュートリアルに戻って WordPress をインストールします。セキュリティグループへのルール追加の詳細については、セキュリティグループへのルールの追加 を参照してください。

Elastic IP アドレス (EIP) は、WordPress ブログのホストに使用しているインスタンスに関連付けることを強くお勧めします。これにより、インスタンスのパブリック DNS アドレスが変更されて、インストールが破損することを防止できます。ドメイン名を所有していてそのドメインをブログに使用する場合、EIP アドレスをポイントするようにドメイン名の DNS レコードを更新できます (これを行うには、ドメイン名レジストラに問い合わせてください)。実行中のインスタンスに関連付けられた EIP アドレスを無料で 1 つ取得できます。詳細については、「Elastic IP アドレス」を参照してください。

ブログのドメイン名がまだない場合は、Amazon Route 53 にドメイン名を登録し、インスタンスの EIP アドレスをドメイン名に関連付けることができます。詳細については、Amazon Route 53 開発者ガイドの「Amazon Route 53 を使用したドメイン名の登録」を参照してください。

WordPress のインストール

インスタンスに接続して、WordPress インストールパッケージをダウンロードします。

To download and unzip the WordPress installation package

  1. Download the latest WordPress installation package with the wget command. The following command should always download the latest release.

    Copy
    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz --2013-08-09 17:19:01-- https://wordpress.org/latest.tar.gz Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250 Connecting to wordpress.org (wordpress.org)|66.155.40.249|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 4028740 (3.8M) [application/x-gzip] Saving to: latest.tar.gz 100%[======================================>] 4,028,740 20.1MB/s in 0.2s 2013-08-09 17:19:02 (20.1 MB/s) - latest.tar.gz saved [4028740/4028740]
  2. Unzip and unarchive the installation package. The installation folder is unzipped to a folder called wordpress.

    Copy
    [ec2-user ~]$ tar -xzf latest.tar.gz [ec2-user ~]$ ls latest.tar.gz wordpress

To create a MySQL user and database for your WordPress installation

Your WordPress installation needs to store information, such as blog post entries and user comments, in a database. This procedure helps you create a database for your blog and a user that is authorized to read and save information to that database.

  1. Start the MySQL server.

    Copy
    [ec2-user ~]$ sudo service mysqld start
  2. Log in to the MySQL server as the root user. Enter your MySQL root password when prompted; this may be different than your root system password, or it may even be empty if you have not secured your MySQL server.

    重要

    If you have not secured your MySQL server yet, it is very important that you do so. For more information, see To secure the MySQL server.

    Copy
    [ec2-user ~]$ mysql -u root -p Enter password:
  3. Create a user and password for your MySQL database. Your WordPress installation uses these values to communicate with your MySQL database. Enter the following command, substituting a unique user name and password.

    Copy
    mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password'; Query OK, 0 rows affected (0.00 sec)

    Make sure that you create a strong password for your user. Do not use the single quote character ( ' ) in your password, because this will break the preceding command. For more information about creating a secure password, go to http://www.pctools.com/guides/password/. Do not reuse an existing password, and make sure to store this password in a safe place.

  4. Create your database. Give your database a descriptive, meaningful name, such as wordpress-db.

    注記

    The punctuation marks surrounding the database name in the command below are called backticks. The backtick (`) key is usually located above the Tab key on a standard keyboard. Backticks are not always required, but they allow you to use otherwise illegal characters, such as hyphens, in database names.

    Copy
    mysql> CREATE DATABASE `wordpress-db`; Query OK, 1 row affected (0.01 sec)
  5. Grant full privileges for your database to the WordPress user that you created earlier.

    Copy
    mysql> GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost"; Query OK, 0 rows affected (0.00 sec)
  6. Flush the MySQL privileges to pick up all of your changes.

    Copy
    mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec)
  7. Exit the mysql client.

    Copy
    mysql> exit Bye

To create and edit the wp-config.php file

The WordPress installation folder contains a sample configuration file called wp-config-sample.php. In this procedure, you copy this file and edit it to fit your specific configuration.

  1. Copy the wp-config-sample.php file to a file called wp-config.php. This creates a new configuration file and keeps the original sample file intact as a backup.

    Copy
    [ec2-user ~]$ cd wordpress/ [ec2-user wordpress]$ cp wp-config-sample.php wp-config.php
  2. Edit the wp-config.php file with your favorite text editor (such as nano or vim) and enter values for your installation. If you do not have a favorite text editor, nano is much easier for beginners to use.

    Copy
    [ec2-user wordpress]$ nano wp-config.php
    1. Find the line that defines DB_NAME and change database_name_here to the database name that you created in ステップ 4 of To create a MySQL user and database for your WordPress installation.

      define('DB_NAME', 'wordpress-db');
    2. Find the line that defines DB_USER and change username_here to the database user that you created in ステップ 3 of To create a MySQL user and database for your WordPress installation.

      define('DB_USER', 'wordpress-user');
    3. Find the line that defines DB_PASSWORD and change password_here to the strong password that you created in ステップ 3 of To create a MySQL user and database for your WordPress installation.

      define('DB_PASSWORD', 'your_strong_password');
    4. Find the section called Authentication Unique Keys and Salts. These KEY and SALT values provide a layer of encryption to the browser cookies that WordPress users store on their local machines. Basically, adding long, random values here makes your site more secure. Visit https://api.wordpress.org/secret-key/1.1/salt/ to randomly generate a set of key values that you can copy and paste into your wp-config.php file. To paste text into a PuTTY terminal, place the cursor where you want to paste the text and right-click your mouse inside the PuTTY terminal.

      For more information about security keys, go to http://codex.wordpress.org/Editing_wp-config.php#Security_Keys.

      注記

      The values below are for example purposes only; do not use these values for your installation.

      define('AUTH_KEY',         ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-');
      define('SECURE_AUTH_KEY',  'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg');
      define('LOGGED_IN_KEY',    'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3');
      define('NONCE_KEY',        'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj');
      define('AUTH_SALT',        'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h');
      define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv');
      define('LOGGED_IN_SALT',   ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/');
      define('NONCE_SALT',       '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. Save the file and exit your text editor.

To move your WordPress installation to the Apache document root

Now that you've unzipped the installation folder, created a MySQL database and user, and customized the WordPress configuration file, you are ready to move your installation files to your web server document root so you can run the installation script that completes your installation. The location of these files depends on whether you want your WordPress blog to be available at the root of your web server (for example, my.public.dns.amazonaws.com) or in a subdirectory or folder (for example, my.public.dns.amazonaws.com/blog).

  • Choose the location where you want your blog to be available and only run the mv associated with that location.

    重要

    If you run both sets of commands below, you will get an error message on the second mv command because the files you are trying to move are no longer there.

    • To make your blog available at my.public.dns.amazonaws.com, move the files in the wordpress folder (but not the folder itself) to the Apache document root (/var/www/html on Amazon Linux instances).

      Copy
      [ec2-user wordpress]$ mv * /var/www/html/
    • OR, to make your blog available at my.public.dns.amazonaws.com/blog instead, create a new folder called blog inside the Apache document root and move the files in the wordpress folder (but not the folder itself) to the new blog folder.

      Copy
      [ec2-user wordpress]$ mkdir /var/www/html/blog [ec2-user wordpress]$ mv * /var/www/html/blog

重要

セキュリティ上の理由から、次の手順にすぐに進まない場合は、Apache ウェブサーバー (httpd) を直ちに停止してください。インストールを Apache ドキュメントルートに移動すると、WordPress インストールスクリプトは保護されなくなり、Apache ウェブサーバーが実行している場合、攻撃者はブログへのアクセス権を取得する可能性があります。Apache ウェブサーバーを停止するには、sudo service httpd stop コマンドを入力します。次の手順に移動する場合、Apache ウェブサーバーを停止する必要はありません。

To allow WordPress to use permalinks

WordPress permalinks need to use Apache .htaccess files to work properly, but this is not enabled by default on Amazon Linux. Use this procedure to allow all overrides in the Apache document root.

  1. Open the httpd.conf file with your favorite text editor (such as nano or vim). If you do not have a favorite text editor, nano is much easier for beginners to use.

    Copy
    [ec2-user wordpress]$ sudo vim /etc/httpd/conf/httpd.conf
  2. Find the section that starts with <Directory "/var/www/html">.

    <Directory "/var/www/html">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.4/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks
    
        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        #
        AllowOverride None
    
        #
        # Controls who can get stuff from this server.
        #
        Require all granted
    </Directory>
  3. Change the AllowOverride None line in the above section to read AllowOverride All.

    注記

    There are multiple AllowOverride lines in this file; be sure you change the line in the <Directory "/var/www/html"> section.

    AllowOverride All
  4. Save the file and exit your text editor.

To fix file permissions for the Apache web server

Some of the available features in WordPress require write access to the Apache document root (such as uploading media though the Administration screens). The web server runs as the apache user, so you need to add that user to the www group that was created in the LAMP web server tutorial.

  1. Add the apache user to the www group.

    Copy
    [ec2-user wordpress]$ sudo usermod -a -G www apache
  2. Change the file ownership of /var/www and its contents to the apache user.

    Copy
    [ec2-user wordpress]$ sudo chown -R apache /var/www
  3. Change the group ownership of /var/www and its contents to the www group.

    Copy
    [ec2-user wordpress]$ sudo chgrp -R www /var/www
  4. Change the directory permissions of /var/www and its subdirectories to add group write permissions and to set the group ID on future subdirectories.

    Copy
    [ec2-user wordpress]$ sudo chmod 2775 /var/www [ec2-user wordpress]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  5. Recursively change the file permissions of /var/www and its subdirectories to add group write permissions.

    Copy
    [ec2-user wordpress]$ find /var/www -type f -exec sudo chmod 0664 {} \;
  6. Restart the Apache web server to pick up the new group and permissions.

    Copy
    [ec2-user wordpress]$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]

To run the WordPress installation script

  1. Use the chkconfig command to ensure that the httpd and mysqld services start at every system boot.

    Copy
    [ec2-user wordpress]$ sudo chkconfig httpd on [ec2-user wordpress]$ sudo chkconfig mysqld on
  2. Verify that the MySQL server (mysqld) is running.

    Copy
    [ec2-user wordpress]$ sudo service mysqld status mysqld (pid 4746) is running...

    If the mysqld service is not running, start it.

    Copy
    [ec2-user wordpress]$ sudo service mysqld start Starting mysqld: [ OK ]
  3. Verify that your Apache web server (httpd) is running.

    Copy
    [ec2-user wordpress]$ sudo service httpd status httpd (pid 502) is running...

    If the httpd service is not running, start it.

    Copy
    [ec2-user wordpress]$ sudo service httpd start Starting httpd: [ OK ]
  4. In a web browser, enter the URL of your WordPress blog (either the public DNS address for your instance, or that address followed by the blog folder). You should see the WordPress installation screen.

    http://my.public.dns.amazonaws.com
    
                        Wordpress installation screen
  5. Enter the remaining installation information into the WordPress installation wizard.

    Field Value
    Site Title Enter a name for your WordPress site.
    Username Enter a name for your WordPress administrator. For security purposes, you should choose a unique name for this user, because it will be more difficult to exploit than the default user name, admin.
    Password Enter a strong password, and then enter it again to confirm. Do not reuse an existing password, and make sure to store this password in a safe place.
    Your E-mail Enter the email address you want to use for notifications.
  6. Click Install WordPress to complete the installation.

これで、WordPress ブログにログインして、エントリの投稿を開始することができます。

次のステップ

最初の WordPress ブログをテストした後、構成を更新するかどうかを検討します。

カスタムドメイン名を使用する

EC2 インスタンスの EIP アドレスに関連付けられたドメイン名がある場合、EC2 パブリック DNS アドレスの代わりにその名前を使用するようにブログを設定できます。詳細については、http://codex.wordpress.org/Changing_The_Site_URL を参照してください。

ブログの構成

読者にパーソナライズされた体験を提供するため、さまざまなテーマプラグインを使用するようにブログを設定できます。ただし、インストールプロセスで問題が発生してブログ全体が失われることがあります。インストール中に問題が発生した場合もブログを復元できるように、テーマやプラグインを員ストーする前にインスタンスのバックアップ Amazon マシンイメージ (AMI) を作成しておくことを強くお勧めします。詳細については、「独自の AMI の作成」を参照してください。

容量の拡大

WordPress ブログが人気になり処理能力やストレージを増やす必要がある場合は、次のステップを検討してください。

WordPress の詳細

WordPress の詳細については、http://codex.wordpress.org/ にある WordPress Codex ヘルプ文書を参照してください。 インストールのトラブルシューティングについては、http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems にアクセスしてください。WordPress ブログのセキュリティ向上の詳細については、http://codex.wordpress.org/Hardening_WordPress にアクセスしてください。WordPress ブログを最新状態に維持する方法についての詳細は、http://codex.wordpress.org/Updating_WordPress にアクセスしてください。

ヘルプ! パブリック DNS 名が変更されたため、ブログが壊れました

WordPress のインストールは、EC2 インスタンスのパブリック DNS アドレスを使用して自動的に設定されます。インスタンスを停止および再開した場合、パブリック DNS アドレスが変更され (Elastic IP アドレスに関連付けられている場合を除く)、ブログが存在しなくなった (または別の EC2 インスタンスに割り当てられた) アドレスにあるリソースを参照することになるため、ブログは機能しなくなります。問題と考えられるいくつかの解決策の詳細については、http://codex.wordpress.org/Changing_The_Site_URL で説明されています。

WordPress のインストール時にこの状況が発生した場合、WordPress の wp-cli コマンドラインインターフェイスを使用する以下の手順でブログを復元できる可能性があります。

To change your WordPress site URL with the wp-cli

  1. Connect to your EC2 instance with SSH.

  2. Note the old site URL and the new site URL for your instance. The old site URL is likely the public DNS name for your EC2 instance when you installed WordPress. The new site URL is the current public DNS name for your EC2 instance. If you are not sure of your old site URL, you can use curl to find it with the following command.

    Copy
    [ec2-user ~]$ curl localhost | grep wp-content

    You should see references to your old public DNS name in the output, which will look like this (old site URL in red):

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. Download the wp-cli with the following command.

    Copy
    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. Search and replace the old site URL in your WordPress installation with the following command. Substitute the old and new site URLs for your EC2 instance and the path to your WordPress installation (usually /var/www/html or /var/www/html/blog).

    Copy
    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. In a web browser, enter the new site URL of your WordPress blog to verify that the site is working properly again. If it is not, see http://codex.wordpress.org/Changing_The_Site_URL and http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems for more information.