WordPressをRaspbian(buster)へ構築した際のメモ
WordPressのシステム要件であるPHP7.4をインストールする。ただし、Raspbian(buster)のリポジトリには7.3までしか存在しないため、SURY PPAリポジトリからインストールする。 まず、SURY PPAリポジトリを使用するため必要なパッケージをインストールする。
$ sudo apt install lsb-release apt-transport-https ca-certificates
PHPのGPGキーを取得する。
$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
SURY PPAリポジトリ情報を追加する。
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
deb https://packages.sury.org/php/ buster main
aptのパッケージ情報を更新し、インストール可能なPHPバージョンを確認する。
$ sudo apt-get update -y $ sudo apt-get upgrade $ sudo apt -a list php7.4
PHP7.4をインストールする。
$ sudo apt-get install php7.4 $ php -v
WordPressに必要なPHPモジュールをインストールする。
$ sudo apt-get install php7.4-curl php7.4-json php7.4-mbstring php7.4-mysql php7.4-imagick php7.4-xml php7.4-zip php7.4-intl
$ sudo apt-get install php7.4-fpm
PHPの設定を行う。
$ vi /etc/php/7.4/apache2/php.ini
[mbstring] ; language for internal character representation. ; This affects mb_send_mail() and mbstring.detect_order. ; http://php.net/mbstring.language mbstring.language = Japanese
memory_limit = 128M
post_max_size = 40M
upload_max_filesize = 30M
Apacheで稼働しているPHPバージョンを、phpinfoで確認する。
<?php phpinfo(); ?>
Apacheで有効になっているモジュールを確認する。
$ ls -l /etc/apache2/mods-available/php* /etc/apache2/mods-enabled/php*
古いバージョンが有効であれば無効化し、PHP7.4を有効化する。
$ sudo a2dismod php7.3.conf php7.3.load $ sudo a2enmod php7.4.conf php7.4.load $ ls -l /etc/apache2/mods-available/php* /etc/apache2/mods-enabled/php*
Apacheを再起動し、新しいモジュールを有効化する。
$ sudo systemctl restart apache2 $ sudo systemctl status apache2
モジュールのバージョンは、phpinfoで確認する。
Apacheをマルチドメイン構成にしているので、該当のドメイン設定ファイルを編集する。
$ su vi /etc/apache2/sites-available/domain2.com
ServerName domain2.com
Apacheへのアクセスでファイル名が省略された時にデフォルトでindex.phpが選択されるように設定する。
$ sudo vi /etc/apache2/mods-available/dir.conf
index.phpを最初に設定する。
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
Apacheの有効なモジュールにrewrite_moduleがあることを確認する。
$ sudo apache2ctl -M (snip) rewrite_module (shared)
有効でない場合は有効化する。
$ sudo a2enmod rewrite
新たに有効化した場合はApacheを再起動する。
$ sudo systemctl restart apache2 $ sudo systemctl status apache2
$ sudo apt install mariadb-server-10.3
$ sudo mysql_secure_installation (snip) Set root password? [Y/n] Y (snip) Remove anonymous users? [Y/n] Y (snip) Disallow root login remotely? [Y/n] Y (snip) Remove test database and access to it? [Y/n] Y (snip) Reload privilege tables now? [Y/n] Y (snip)
$ sudo mysql -u root -p (snip) MariaDB [(none)]> grant all privileges on *.* to root@localhost identified by 'Password' with grant option; (snip) MariaDB [(none)]> flush privileges; (snip) MariaDB [(none)]> quit
DB接続を確認する。
$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2026 Server version: 10.3.38-MariaDB-0+deb10u1 Raspbian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> quit Bye $
$ mysql -u root -p Enter password: (snip) MariaDB [(none)]> CREATE DATABASE db_wordpress; (snip) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | db_wordpress | | information_schema | | performance_schema | +--------------------+ 4 rows in set (0.002 sec) MariaDB [(none)]> quit Bye $
WordPresssサイトから最新版をダウンロードし、Document Rootに展開します。
$ wget https://ja.wordpress.org/latest-ja.tar.gz $ ls -l $ tar tvzf latest-ja.tar.gz $ tar xvzf latest-ja.tar.gz $ cp -R wordpress/* /var/www/html/wordpress/ $ sudo chown -R www-data:www-data /var/www/html/wordpress/
インストールスクリプトを使ってセットアップします。
https://ドメイン名/wp-admin/install.php
<VirtualHost *:80> ServerName www.domain2.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/www.domain2.com <Directory /var/www/html/www.domain2.com> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =www.domain2.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.domain2.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/www.domain2.com <Directory /var/www/html/www.domain2.com> 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/www.domain2.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.domain2.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>