前回まででネットワークとサーバを用意しました。今回はWordPressをインストールしていきます。最後にはhttpとグローバルIPアドレスでWordPressにアクセスできるところまでやっていきます。

WordPressをインストールするには、Web、アプリケーション、データベースが必要です。よってまずはこれらをインストール、設定します。

流れ

  1. Web、PHPのインストールと動作確認
  2. データベースのインストールとデータベース設定
  3. WordPressのインストール、動作確認

Web, PHPのインストールと動作確認

現在インストールされているパッケージを最新にアップデートしていきます。

アップデートと反映

$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo reboot

Webサーバを作るには一般的にApacheかnginxというソフトウェアを使います。昔はApacheが主流でしたが、今はnginxがよく使われます。

nginxのインストール

$ sudo apt install nginx -y
$ ps -ef | grep apache2 
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-04-18 06:09:05 UTC; 42s ago
       Docs: man:nginx(8)
   Main PID: 1875 (nginx)
      Tasks: 2 (limit: 1141)
     Memory: 6.1M
        CPU: 24ms
     CGroup: /system.slice/nginx.service
             ├─1875 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─1878 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

PHPのインストール

WordPressを動かすにはPHPが必要です。よってPHPをインストールしていきます。PHPはいろんなパッケージがあり、本当に必要なパッケージが分かりづらいです。

$ sudo apt install php php-fpm php-mysql -y
もしインストールできない場合は、再度 sudo apt upgrade -y を実行する

$ sudo systemctl start php8.1-fpm
$ sudo systemctl status php8.1-fpm
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-04-18 06:10:58 UTC; 16s ago
       Docs: man:php-fpm8.1(8)
    Process: 12141 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81 (code=exited, status=0/>
   Main PID: 12138 (php-fpm8.1)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 1141)
     Memory: 7.4M
        CPU: 42ms
     CGroup: /system.slice/php8.1-fpm.service
             ├─12138 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─12139 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
             └─12140 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">

apache2 削除

もともとApacheがインストールされているため、これを削除します。

$ sudo apt remove apache2 -y
$ sudo apt purge apache2 -y
$ sudo rm -rf /etc/apache2

nginx再起動

念のため、nginxを再起動します。

$ sudo systemctl restart nginx

nginx設定

wordpressを動かせるようにnginxの設定をしていきます。nginxはsites-availableディレクトリに設定ファイルの本体を置き、実際に有効化する設定ファイルのリンクをsites-enableディレクトリに置きます。

$ sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
$ sudo vi /etc/nginx/sites-available/wordpress

IPアドレスを自分の環境に合わせて書き換えてください。それぞれの意味はググってください

ポイントだけ解説します。
listen : ポート番号
root : コンテンツ(今回はWordPress)を配置するディレクトリ

server {
   listen 80;
   listen [::]:80;

   server_name <IPアドレス>;

   root /var/www/wordpress;
   index index.php index.html;

   location / {
       try_files $uri $uri/ =404;
   }

   location ~ \\.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php8.1-fpm.sock;
   }

	 # A long browser cache lifetime can speed up repeat visits to your page
   location ~* \\.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
   }
}

PHP動作確認

nginxとphpが連携しているか確認します。そのためにまずディレクトリを作ります。

$ sudo mkdir /var/www/wordpress

テスト用のPHPファイルを作成します。

$ sudo vi /var/www/wordpress/info.php

info.php

<?php phpinfo();

nginxを再起動する

$ sudo systemctl restart nginx

ブラウザで下記URLにアクセスする
PHPの情報が出力されたらOK

http://<IPアドレス>/info.php

データベースのインストールと設定

前回まででWebとアプリケーション(PHP)のインストールと設定が終わりました。

今回はデータベースです。データベースソフトウェア(mysql)をインストールする

$ sudo apt install mysql-server mysql-client -y

データベースとユーザを作成するため、データベースにログインする

$ sudo mysql -u root -p
Enter password:

wordpress用のデータベースとユーザを作成する

CREATE DATABASE wordpress CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* to 'wpuser'@'localhost';

先ほど作成したデータベースとユーザがあることを確認する

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| wpuser           | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

mysql> quit

WordPressをインストールする

Webとアプリケーション(PHP)、データベースが終わりました。これでWordPressをインストールできるようになったので、やっていきます。

動作確認のために作成したフォルダを削除する

$ sudo rm -rf /var/www/wordpress

wordpressをダウンロードして解凍する

$ cd /var/www/
$ sudo wget <https://ja.wordpress.org/latest-ja.tar.gz>
$ sudo tar -xzvf latest-ja.tar.gz

wordpressの設定ファイルを編集する

wordpressからデータベースに接続するための設定をする

$ cd /var/www/wordpress/
$ sudo mv wp-config-sample.php wp-config.php
$ sudo vi /var/www/wordpress/wp-config.php

データベースに接続するために必要な情報を書いていきます。これらはデータベースのセクションで設定したものを入力していきます。

wp-config.php

/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wordpress' );

/** データベースのユーザー名 */
define( 'DB_USER', 'wpuser' );

/** データベースのパスワード */
define( 'DB_PASSWORD', 'password' );

ファイルやフォルダのアクセス権を設定し、nginxを再起動する

$ sudo chown -R www-data:www-data /var/www/wordpress
$ sudo systemctl restart nginx

ブラウザでアクセスする

http://<ipアドレス>/

ログインして下記のような画面が表示されればOK

[ツール]-[サイトヘルス]へ移動

サイトヘルスで致命的な問題が1件あることを確認します。

詳細な内容を確認するとPHPモジュールが足りないと言われます。

足りないphpモジュールをインストールする

$ sudo apt install php-curl php-dom php-imagick php-gd php-mbstring php-zip php-intl -y

インストール後にブラウザを更新してサイトヘルスを確認

良好になっていればOK

WordPressをインストールしてアクセスできるようになりました