Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.
  • 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のホスト]/;
    }
trech
Salesforce社が提供するSFA(営業支援)・CRMをもとに、企業の基幹業務・サービス業務を中心としたWEBシステムやスマートフォン等のアプリケーションを受託開発し、その運営保守を行う。
https://trech.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした