1つのUbuntu マシンで、2つの WordPress 5.1.1 システムを動かす(Apache2 の VirtualHost 機能を利用)

ユースケース:WordPress を使いたい。そして、異なる2つの WordPress システムを運用したい。このとき、マシンは1台で済ませたい。

方針:1つの Ubuntu マシン(IPアドレスは1つ)に、異なる2つのマシン名(www.example.com と www.hoge-client.com)を割り当てる。そのためのドメイン名取得と DNS サーバ設定は、前もって済ませておく。 そして、Webサーバ(Apache2)の側では、リスエスト URL に一方のマシン名(例えばwww.example.com)があれば、ある所定のディレクトリを、 別のマシン名(例えばwww.hoge-client.com)があれば、別の所定のディレクトリを使うというように設定する。 マシン名によって、ディレクトリを変えるために Apache2 の VirtualHost 機能を使う。 あとは、これら2つのディレクトリに、別の WordPress システムをインストールする。

このページでは、すでに WordPress が動いている Ubuntu マシンで、そのWordPressの設定などには手を加えずに、新しくWordPressシステムを動かす手順を説明する.ここでの設定は次の通りです.

目次:

関連する外部ページ

前準備

DNS サーバ

DNS サーバに、次の2つについて登録しておくこと。ドメイン名は前もって取得しておくこと(なので、下にあるマシン名は、そのまま使ってはいけないのは当然です)。

システム、パッケージの更新

端末を開き,次のように操作(端末を開くには,右クリックメニューが便利)

sudo apt -y update
sudo apt -yV upgrade

Apache2, MariaDB, WordPress のインストール

Ubuntu での Apache2, MariaDB, WordPress のインストール手順は、 別ページで説明

WordPress用データベースの新規作成

  1. 端末を開く
  2. MariaDB にログイン
    sudo mysql -u root -p
    (Ubuntu のパスワードを入れる)
    
  3. データベース作成コマンド

    データベース名: added_database

    データベースのキャラクタセット: utf8mb4_general_ci;

    ユーザ名: added_dbuser

    「<パスワード>」のところは適切にパスワードを設定すること

    create database added_database character set utf8mb4 collate utf8mb4_general_ci;
    create user 'added_dbuser'@'localhost' identified by '<パスワード>';
    grant all on added_database.* TO 'added_dbuser'@'localhost' identified by '<パスワード>' with grant option;
    flush privileges;
    exit;
    

WordPress用データベースのダウンロードと設定

  1. WordPress の Web ページを開く

    https://wordpress.org

  2. Download WordPress」をクリック
  3. 最新版のダウンロード
  4. zip ファイルのダウンロードが始まる。ファイル名とディレクトリ名を確認
  5. WordPress の zip ファイルを展開(解凍)

    wordpress-5.1.1.zip」のところは、先ほど確認したファイル名に読み替える

    unzip wordpress-5.1.1.zip
    sudo mv wordpress /var/www/html/added
    sudo chown -R www-data:www-data /var/www/html/added
    sudo chmod -R 755 /var/www/html/added
    
  6. /etc/apache2/sites-available/added-wordpress.conf の新規作成

    hoge-client.com」と 「www.hoge-client.com」のところは、サイト名に合わせて設定すること。

    <VirtualHost *:80>
         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html/added
         ServerName hoge-client.com
         ServerAlias www.hoge-client.com
    
         <Directory /var/www/html/added>
            Options +FollowSymlinks
            AllowOverride All
            Require all granted
         </Directory>
    
         ErrorLog ${APACHE_LOG_DIR}/added-error.log
         CustomLog ${APACHE_LOG_DIR}/added-access.log combined
    </VirtualHost>
    
  7. /etc/apache2/sites-available/added-wordpress.conf の有効化と、rewrite モジュールの有効化
    sudo a2ensite added-wordpress.conf
    sudo a2enmod rewrite
    sudo systemctl restart apache2.service
    
  8. Apache2 の動作確認

    Web ブラウザで http://localhost/added を開く。

    次のような画面が開けば OK

    確認したら Web ブラウザを閉じる

  9. Apache2 の動作確認

    今度は、Web ブラウザで、ServerAlias に指定した http://www.hoge-client.com を開く。

    確認したら Web ブラウザを閉じる

  10. wp-config.php の設定
    1. サンプルファイルのコピー
      sudo cp /var/www/html/wp/wp-config.php /var/www/html/added/wp-config.php
      
    2. /var/www/html/added/wp-config.php を次のように書き換える

      「<パスワード>」のところは先ほど設定したパスワードをそのまま書く

      // ** MySQL settings - You can get this info from your web host ** //
      /** The name of the database for WordPress */
      define('DB_NAME', 'added_database');
      
      /** MySQL database username */
      define('DB_USER', 'added_dbuser');
      
      /** MySQL database password */
      define('DB_PASSWORD', '<パスワード>');
      
      /** MySQL hostname */
      define('DB_HOST', 'localhost');
      
      /** Database charset to use in creating database tables. */
      define('DB_charset', 'utf8mb4');
      
      /** The Database Collate type. Don't change this if in doubt. */
      define('DB_COLLATE', 'utf8mb4_general_ci');
      

WordPress のインストール

  1. Web ブラウザで http://localhost/added を開く。
  2. 日本語」を選ぶ。「続ける」をクリック
  3. サイトのタイトル、WordPress のユーザ名、パスワード、電子メールアドレスを設定。WordPress をインストールする。
  4. 「成功しました!」と表示されるので確認。ログインしてみるために「ログイン」をクリック
  5. いま設定したユーザ名、パスワードでログイン
  6. ダッシュボードが表示される

Let's Enctypt に関する設定(書きかけ)

https://websiteforstudents.com/install-wordpress-on-ubuntu-16-04-17-10-18-04-with-apache2-mariadb-php-7-2-and-lets-encrypt-ssl-tls/

  1. 端末を開く
  2. Apache2, MariaDB, PHP のインストール
    sudo apt -y update
    sudo apt -y install python-certbot-apache
    
  3. SSL/TLS 証明書の取得

    hoge-client.com」と 「www.hoge-client.com」のところは、サイト名に合わせて設定すること。

    「2: Redirect」に設定する

    sudo certbot --apache -m admin@hoge-client.com -d hoge-client.com -d www.hoge-client.com
    
  4. added-wordpress.conf に次を追加する

    hoge-client.com」と 「www.hoge-client.com」のところは、サイト名に合わせて設定すること。

    <VirtualHost *:80>
         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html/added
         ServerName hoge-client.com
         ServerAlias www.hoge-client.com
    
         <Directory /var/www/html/added>
            Options +FollowSymlinks
            AllowOverride All
            Require all granted
         </Directory>
    
         ErrorLog ${APACHE_LOG_DIR}/added-error.log
         CustomLog ${APACHE_LOG_DIR}/added-access.log combined
    </VirtualHost>
    
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =hoge-client.com [OR]
    RewriteCond %{SERVER_NAME} =www.hoge-client.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    
  5. /etc/apache2/sites-available/hoge-client.com-le-ssl.conf の設定

    hoge-client.com」と 「www.hoge-client.com」のところは、サイト名に合わせて設定すること。

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html/added
         ServerName hoge-client.com
         ServerAlias www.hoge-client.com
    
         <Directory /var/www/html/added>
            Options +FollowSymlinks
            AllowOverride All
            Require all granted
         </Directory>
         ErrorLog ${APACHE_LOG_DIR}/added-error.log
         CustomLog ${APACHE_LOG_DIR}/added-access.log combined
    
    SSLCertificateFile /etc/letsencrypt/live/hoge-client.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/hoge-client.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
    </IfModule>
    
  6. 証明書の更新

    次のコマンドを実行.

    sudo certbot renew --dry-run
    
  7. 月に1回の自動更新

    「sudo crontab -e」を実行し、次のように設定

    0 1 * * * /usr/bin/certbot renew & > /dev/null