41
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu 16.04 LTSへWordPressをインストール

Last updated at Posted at 2017-01-09
  • Ubuntu 16.04 LTS へWordPressをインストールした際のメモ。
    • MySQL
    • Apache2
    • PHP7
    • インストール後にIPアドレスを変更し、サイト表示がおかしくなった場合の対処
    • 前段にリバースプロキシがある場合のwp-config.php

sysv-rc-confを導入

$ sudo apt install -y sysv-rc-conf

MySQL

インストール

$ sudo apt install -y mysql-server
$ sudo mysql_secure_installation
  • rootのパスワードを控えておく

セットアップ

  • rootユーザでログイン
$ mysql -u root -p
  • wordpressデータベースを作成する
mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  • サービスを自動起動にする
$ sudo sysv-rc-conf mysqld on

Apache2

インストール

  • WordpressはNginxよりApacheでの構築の方が楽っぽい。
$ sudo apt install -y apache2

PHP

$ sudo apt install -y php libapache2-mod-php php-mysql
  • 必要に応じてPHPのモジュールをインストール
    • php-mbstring: 日本語
    • php-mcrypt: 暗号化
    • php-curl: CURL
    • php-gd: 画像
    • php-xml: XML
$ sudo apt install -y php-mbstring php-mcrypt php-curl php-gd php-xml
  • 動作確認のためのファイルを作成
/var/www/html/info.php
<?php phpinfo();
  • Apacheを再起動
$ sudo systemctl restart apache2
  • サービスを自動起動にする
$ sudo sysv-rc-conf apache2 on
  • PHPの動作を確認
    http://[IP]/info.php

WordPress

Apacheの設定ファイルを変更

  • 設定ファイルをバックアップ
$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.original
  • WordPressのインストール先を追加
/etc/apache2/apache2.conf
<Directory /var/www/html/wordpress>
        AllowOverride All
</Directory>
  • 設定ファイルのチェック
  • Syntax OKの出力を確認
$ sudo apache2ctl configtest
  • mod_rewriteを有効化し、Apacheを再起動
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

WP-CLIインストール

$ cd
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp
$ wp --info

Wordpressのインストール

  • WP-CLIで/var/www/html/wordpressにインストール
$ sudo su -
$ wp core download --locale=ja --path=/var/www/html/wordpress --allow-root
$ touch /var/www/html/wordpress/.htaccess
$ chmod 660 /var/www/html/wordpress/.htaccess
$ cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
$ mkdir /var/www/html/wordpress/wp-content/upgrade
$ sudo chown -R [作業ユーザ名]:www-data /var/www/html/wordpress
$ sudo chmod g+w /var/www/html/wordpress/wp-content
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/themes
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/plugins
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/upgrade
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/languages

wp-config.phpの変更

  • セキュアなランダム文字列の生成し、ファイルを編集する
$ curl -s https://api.wordpress.org/secret-key/1.1/salt/
  • データベース接続を変更
wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
  • プラグイン更新時の問題を回避する
    • この設定が無い場合、プラグインの更新時等にFTPのログイン情報が求められることがある。ここでは、wp-content配下のプラグイン・テーマのディレクトリへのwww-dataユーザへの書き込みを許可しているので、Apacheに直接書き込ませる(FS_METHOD = direct)。
wp-config.php
define('FS_METHOD', 'direct');

WordPress用のApacheバーチャルホスト設定

  • 既存のファイルをコピーして新しいサイトの設定ファイルを作る
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/wordpress.conf

wordpress.confの変更

  • DocumentRoot/var/www/html/wordpressに変更する。
/etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
        # ドメインがある場合は設定する
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/wordpress

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • 設定ファイルのチェック
      - Syntax OKの出力を確認
$ sudo apache2ctl configtest
  • デフォルトのサイトを無効化し、Wordpressのサイトを有効化
$ sudo a2dissite 000-default
$ sudo a2ensite wordpress
$ sudo systemctl restart apache2

インストール後にIPアドレスを変更し、サイト表示がおかしくなった場合の対処

  • インストール先のディレクトリでwpコマンドを利用する
$ cd /var/www/html/wordpress
  • 現在の設定を調べる
$ wp option get home
$ wp option get siteurl
  • wpコマンドで修正する
    • 旧IPアドレスのURLを、新IPアドレスのURLに置換する
$ wp search-replace 'http://[Old Ip Address]' 'http://[New Ip Address]'

リバースプロキシ配下での設定

  • 前段にNginxのリバースプロキシがある想定
    • インターネットからはNginxのリバースプロキシ経由、ローカルネットワークでは直接ホストへ接続するようなケース
    • リバースプロキシから送られるヘッダを利用し、homesiteurlを動的に変更している
wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
    define('WP_HOME', $_SERVER['HTTP_X_FORWARDED_PROTO'] . '://' . $_SERVER['HTTP_X_FORWARDED_HOST']);
    define('WP_SITEURL', $_SERVER['HTTP_X_FORWARDED_PROTO'] . '://' . $_SERVER['HTTP_X_FORWARDED_HOST']);
    if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
        $_SERVER['HTTPS'] = 1;
}
  • ちなみにNginxのWordPressホストへのプロキシ設定
    # HTTP -> HTTPS Redirect
    location / {
        if ($scheme = http) {
            return 301 https://$server_name$request_uri;
        }
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_redirect   http:// https://;
        proxy_pass       http://[WordPressのホスト]/;
    }
41
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?