Ideal Reality

パソコンのある生活を良くするためのサイト

Raspberry Pi (Raspbian)上にNginxを使ったWordPressサーバーを構築する

Raspberry Pi 4を自宅サーバーにしようとしている人多いのではないでしょうか。僕もサーバーをCentOS 8にアップデートしている際、このサイトをRaspberry Pi 4で運用していました。

基本的にはここと同じなのですが、インストールするパッケージ名やユーザー名、必要な設定などが微妙に違うので、別記事に残しておきます。

ちなみに、こちらではRaspbian Busterを使用しています。違うバージョンのRaspbian Stretchなどでは設定が異なるのでご注意ください。

スポンサーリンク

Nginx

インストール・設定

Nginxをインストールし、起動します。

sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

インストール及び起動が成功していると、この状態でサーバーにブラウザから繋ぐとNginxのページが開かれます。

ただ、このページはWordpressを運用する上で必要ないので、Nginxへ接続できることを確認できたらオフにします。

sudo nano /etc/nginx/nginx.conf

/etc/nginx/nginx.confをスーパーユーザーのエディタで開き、include /etc/nginx/sites-enabled/*;の先頭に#を付けてコメントアウトしてください。編集が終わったら保存してエディタを終了してください。

#	include /etc/nginx/sites-enabled/*;

Let’s Encryptの設定

Let’s Encryptを使えば無料でWebサイトをTLS(SSL)に対応させることができます。対応させた方が絶対にいいので、Wordpressを入れる前に設定してしまいます。

certbotのインストール

TLSの証明書の取得にはcertbotを利用するので、こちらをインストールします。

sudo apt install certbot

Nginxの設定

certbotの認証にはWebサーバーが必要です。certbot自体Webサーバーとしての機能を持っているのですが、これを使うにはNginxを止める必要があります。また、Let’s Encryptの証明書の有効期限は90日なので定期的に更新が必要で、その都度Nginxを終了するのも不格好なので、今回は常に起動しているNginxをcertbotに利用させる形をとります。

sudo mkdir /var/www/certbot

certbot用のディレクトリを用意したら、

sudo nano /etc/nginx/conf.d/wordpress.conf

nginxフォルダのconf.d内にwordpress.confを生成する形でテキストエディタを開き、

server {
	listen 80;
	server_name _;
 
	location / {
		return 444;
	}
 
	location ^~/.well-known {
		alias /var/www/certbot/.well-known;
	}
}

以上の内容で保存したら

sudo systemctl restart nginx

Nginxを再起動してください。ちなみに、これは初めてcertbotで認証するための一時的な設定なので、あとで書き換えます。

認証

例えば、サーバーのドメインがexample.com、サーバー管理者のメールアドレスがaddress@example.comなら、

sudo certbot certonly --webroot --webroot-path /var/www/certbot --domain example.com --email address@example.com --non-interactive --agree-tos --no-eff-email

上記の例だと、/etc/letsencrypt/live/example.comというフォルダ内に認証鍵がダウンロードされます。

自動更新

certbotを利用すると、自動更新用のsystemd.timerが有効化されていると思うので、何もしなくて大丈夫です。

pi@raspberrypi:~ $ systemctl list-timers
NEXT                         LEFT         LAST                         PASSED       UNIT                         ACTIVATES
Thu 2020-04-02 12:50:16 JST  8h left      n/a                          n/a          certbot.timer                certbot.service

一応確認だけしておいた方がいいかも。

PHP

PHP本体と、必要なモジュールをインストールするだけで大丈夫です。

sudo apt install php php-fpm php-mysql php-json php-mbstring php-gd

CentOSではnginxとphpのユーザーが違って合わせなければいけませんでしたが、Raspbianの場合、デフォルトで両方ともwww-dataという共通のユーザーに設定されているので、何もする必要ありません。

スポンサーリンク

MariaDB

インストール・起動

以下のコマンドでインストールと起動を行ってください。

sudo apt install mariadb-client mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb

rootユーザーパスワード設定

MariaDB(MySQL)ではユーザーを作成し、ユーザーごとにデータベースへのアクセス権限を設定できます。その中でもrootユーザーはすべてのデータベースにアクセスできる権限を持つのですが、初期状態ではrootユーザーにパスワードが設定されていないので、設定します。

sudo mysql -u root

上のコマンドでMariaDBのrootユーザーにログインし、ターミナルの先頭がMariaDB [(none)]>に変わったら

update mysql.user set password=password('任意のroot用パスワード') where user = 'root';
flush privileges;
exit;

以上3つのコマンドを入力してください。もちろん任意のroot用パスワードは自分で決めたパスワードにしてください。

WordPress用のユーザー・データベースを作成

WordPressがデータを保存する場所と、Wordpressからデータベースにアクセスするためのユーザーを作成します。この記事ではデータベースをwp_databaseという名前で、ユーザーをwp_userという名前で作ります。

mysql -u root -p

こちらのコマンドでMariaDBのrootユーザーにログインしたら、

create database wp_database;
grant all privileges on wp_database.* to wp_user@localhost identified by '任意のwp_user用のパスワード';
exit;

これらのコマンドでデータベースとユーザーを作成してください。こちらでも任意のwp_user用のパスワードは自分で決めたパスワードにするのですが、rootに設定したものとは別のものにすることをお勧めします。

WordPressのインストール

/var/www/wordpressにWordpressを配置します。

ダウンロード・展開

curl -O https://ja.wordpress.org/latest-ja.tar.gzsudo tar -xzvf latest-ja.tar.gz -C /var/wwwsudo chown -R www-data:www-data /var/www/wordpress

WordPressをダウンロードし/var/www/wordpressに展開、所有権をwww-dataに設定します。

Nginxの設定

sudo vi /etc/nginx/conf.d/wordpress.conf

/etc/nginx/conf.d/wordpress.confをエディタで開いて、以下の内容で書き換えてください。

server {
	listen 80;
	server_name _;
 
	location / {
		return 301 https://example.com$request_uri;
	}
 
	location ^~/.well-known {
		alias /var/www/certbot/.well-known;
	}
}
 
server {
	listen 443 ssl;
	server_name example.com;
 
	index index.php index.html;
	root /var/www/wordpress;
 
	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
 
	location ~* /wp-config.php {
		deny all;
	}
	
	location / {
		try_files $uri $uri/ /index.php$is_args$args;	
	}
	
	location ~ \.php$ {
		include fastcgi.conf;
		fastcgi_pass   unix:/run/php/php7.3-fpm.sock;
	}
}

example.comとなっている場所はすべてご自身のドメインに置き換えてください。編集が終わったら以下のコマンドでNginxを再起動してください。

sudo systemctl restart nginx

インストール

ここまで来れば、あとはCentOSと同じです。

ブラウザからサーバーの/wp-admin/install.phpにアクセスしてください。例えば、ドメインがexample.comだとURLはhttps://example.com/wp-admin/install.phpになります。

次に進んで、データベースの設定の画面では以下のようにMariaDBで設定したデーターベース名・ユーザー名・パスワードを指定します。

この記事の通りにしているならばデータベース名はwp_database、ユーザー名はwp_user、パスワードはMariaDBのところで任意のwp_user用パスワードを置き換えたと思うので、そのパスワードを入れてください。

データベースの設定が合っていれば以上の画面になるので、「インストール実行」をしてください。

あとはサイトのタイトルと管理者のユーザーを作って「Wordpressをインストール」

成功したら「ログイン」を押すとログイン画面に移動するので、先ほど作った管理者用のユーザーでログインしてください。

これでインストール完了です。

スポンサーリンク

調整

こちらもCentOSの時と同じですが、Wordpressを動かすのに必要な設定のみを行なっただけで、このままだとページの表示速度は全然よくありません。

調整記事は別途上げるので、完成するまで少しお待ちください。

スポンサーリンク

コメント

投稿されたコメントはありません

名前

コメント

関連する投稿

CentOS 8でNginxを使ったWordPressサーバーを構築する

SlackでURLが展開されないのを修正する

Wordprersにログイン中はGoogle Analyticsを読み込まなくする

SELinux環境でのEWWW Image Optimizer