Ubuntu で WordPress のインストール

Ubuntu 24.04 LTS に WordPress 最新版をインストールする方法。Apache2、MariaDB 10.11、PHP 8.3 の環境構築から、データベース作成、WordPress ファイル配置、Apache 設定、wp-config.php 設定までを解説する。Let's Encrypt を用いたHTTPS化手順も含む。セキュリティに関する設定にも言及する。

この記事で使用する設定値は次の通りである。

目次

サイト内の関連ページ

関連する外部ページ

前準備

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

端末で次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -yV upgrade

Apache2, MariaDB, PHP のインストールと設定

  1. 端末を開く
  2. Apache2, MariaDB, PHP のインストール

    Ubuntu 24.04 LTS の標準リポジトリでは MariaDB 10.11PHP 8.3 が提供される。どちらも WordPress 最新版の動作要件を満たす。

    sudo apt -y install apache2 mariadb-server mariadb-client unzip
    sudo apt -y install libapache2-mod-php php-mysql php-cli php-common php-curl php-gd php-intl php-mbstring php-soap php-xml php-zip
    
  3. MariaDB の設定
    1. 「sudo mariadb-secure-installation」の実行

      root パスワードの設定、匿名ユーザの削除、テストデータベースの削除などを対話形式で行う。

      sudo mariadb-secure-installation
      
    2. データベースシステム管理者の設定、その他
  4. PHP についての設定

    /etc/php/8.3/apache2/php.ini を編集する。date.timezone の行を次のように書き換える

  5. Apache2 の再起動

    /etc/php/8.3/apache2/php.ini を書き換えたら、Apache2 を再起動する。

    sudo systemctl restart apache2.service
    
  6. ファイアウォール (UFW) の設定

    外部からの HTTP/HTTPS アクセスを許可するため、UFW が有効な場合は Apache Full プロファイルを許可する。

    sudo ufw allow 'Apache Full'
    
  7. Apache2 の確認

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

    次のような画面が開けば問題ない。

  8. MariaDB の確認

    端末で次のコマンドを実行する。エラーメッセージが出なければ問題ない。sudo 経由の接続では OS の認証(unix_socket)が使われるため、パスワードの入力を求められた場合は Ubuntu のパスワードを入力する。

    sudo mariadb
    \q
    

WordPress用データベースの作成

  1. 端末を開く
  2. MariaDB に接続する
    sudo mariadb
    
  3. データベース作成コマンド

    データベース名: WP_database

    キャラクタセット: utf8mb4、照合順序: utf8mb4_general_ci

    ユーザ名: WP_dbuser

    「<パスワード>」のところは適切にパスワードを設定すること。権限は WordPress の動作に必要な範囲にとどめるため、with grant option は付けない。

    create database WP_database character set utf8mb4 collate utf8mb4_general_ci;
    create user 'WP_dbuser'@'localhost' identified by '<パスワード>';
    grant all privileges on WP_database.* to 'WP_dbuser'@'localhost';
    flush privileges;
    exit;
    

WordPressのダウンロードと設定

  1. WordPress の Web ページを開く

    https://wordpress.org

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

    latest.zip」と表示されているファイル名、あるいは先ほど確認したファイル名に読み替える。ファイルとディレクトリの所有者を www-data に変更し、ディレクトリは 755、ファイルは 644 に設定する。

    unzip latest.zip
    sudo mv wordpress /var/www/html/wp
    sudo chown -R www-data:www-data /var/www/html/wp
    sudo find /var/www/html/wp -type d -exec chmod 755 {} \;
    sudo find /var/www/html/wp -type f -exec chmod 644 {} \;
    
  6. /etc/apache2/sites-available/wordpress.conf の新規作成

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

    <VirtualHost *:80>
         ServerAdmin webmaster@localhost
         DocumentRoot /var/www/html/wp/
         ServerName example.com
         ServerAlias www.example.com
    
         <Directory /var/www/html/wp/>
            Options +FollowSymlinks
            AllowOverride All
            Require all granted
         </Directory>
    
         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
  7. /etc/apache2/sites-available/wordpress.conf の有効化と、rewrite モジュールの有効化

    設定ファイルを編集・有効化したら、Apache2 を再起動する。rewrite モジュールは WordPress のパーマリンク機能で使用する。

    sudo a2ensite wordpress.conf
    sudo a2enmod rewrite
    sudo systemctl restart apache2.service
    
  8. Apache2 の動作確認

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

    次のような画面が開けば問題ない。

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

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

      「<パスワード>」のところは先ほど設定したパスワードをそのまま書く。認証用ユニークキー(AUTH_KEY など)は、公式の生成ページ https://api.wordpress.org/secret-key/1.1/salt/ で取得した値を貼り付ける。公開するサイトでは WP_DEBUG を false に設定する。HTTPS を設定した後は FORCE_SSL_ADMIN を true にすると、管理画面への接続が HTTPS に限定される。

      // ** Database settings ** //
      /** The name of the database for WordPress */
      define('DB_NAME', 'WP_database');
      
      /** Database username */
      define('DB_USER', 'WP_dbuser');
      
      /** Database password */
      define('DB_PASSWORD', '<パスワード>');
      
      /** Database hostname */
      define('DB_HOST', 'localhost');
      
      /** Database charset to use in creating database tables. */
      define('DB_CHARSET', 'utf8mb4');
      
      /** The database collate type. */
      define('DB_COLLATE', 'utf8mb4_general_ci');
      
      /**#@+
       * Authentication unique keys and salts.
       * https://api.wordpress.org/secret-key/1.1/salt/ で生成した値に置き換える
       */
      define('AUTH_KEY',         'put your unique phrase here');
      define('SECURE_AUTH_KEY',  'put your unique phrase here');
      define('LOGGED_IN_KEY',    'put your unique phrase here');
      define('NONCE_KEY',        'put your unique phrase here');
      define('AUTH_SALT',        'put your unique phrase here');
      define('SECURE_AUTH_SALT', 'put your unique phrase here');
      define('LOGGED_IN_SALT',   'put your unique phrase here');
      define('NONCE_SALT',       'put your unique phrase here');
      
      /**#@-*/
      
      /** 公開するサイトでは false に設定する */
      define('WP_DEBUG', false);
      
      // HTTPS を設定した後、管理画面を HTTPS に限定する場合は次の行を有効にする
      // define('FORCE_SSL_ADMIN', true);
      
    3. wp-config.php のアクセス権の設定

      wp-config.php にはデータベースのパスワードが書かれている。所有者と Web サーバのみが読めるように設定する。

      sudo chown www-data:www-data /var/www/html/wp/wp-config.php
      sudo chmod 640 /var/www/html/wp/wp-config.php
      

WordPress のインストール

  1. Web ブラウザで http://localhost/wp を開く。
  2. 日本語」を選ぶ。「続ける」をクリックする。
  3. サイトのタイトル、WordPress のユーザ名、パスワード、電子メールアドレスを設定する。ユーザ名は admin などの推測されやすい名前を避け、パスワードは十分な長さのものを設定する。「WordPress をインストール」をクリックする。
  4. 「成功しました!」と表示されるので確認する。「ログイン」をクリックしてログイン画面に進む。
  5. いま設定したユーザ名、パスワードでログインする。
  6. ダッシュボードが表示される。

Let's Encrypt に関する設定

HTTPS 化には、ドメイン名(example.com など)がこのサーバの IP アドレスに解決され、外部から 80 番ポートに接続できることが必要である。

  1. 端末を開く
  2. certbot のインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install certbot python3-certbot-apache
    
  3. SSL/TLS 証明書の取得

    example.com」と 「www.example.com」のところは、サイト名に合わせて設定すること。 対話形式の設定で「2: Redirect」を選ぶと、HTTP から HTTPS へのリダイレクトが設定される。

    sudo certbot --apache -m admin@example.com -d example.com -d www.example.com
    
  4. certbot による VirtualHost 設定の確認

    certbot は、既存の /etc/apache2/sites-available/wordpress.conf に HTTPS へのリダイレクト設定を追加し、HTTPS 用の設定ファイル /etc/apache2/sites-available/example.com-le-ssl.conf を生成する。

    生成された /etc/apache2/sites-available/example.com-le-ssl.conf の内容は次のようになる。

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

    更新のテストを実行する。Let's Encrypt の証明書の有効期間は90日で、certbot は有効期限の30日前から更新を試みる。

    sudo certbot renew --dry-run
    
  6. 自動更新の確認

    apt でインストールした certbot では、systemd のタイマーによる自動更新が設定される。次のコマンドで設定状況を確認できる。

    systemctl status certbot.timer