Nginx+MariaDB環境でWordPressを動かす(Ubuntu18.04編)

こんにちは。今回のテーマは「Nginx+MariaDB環境でWordpressを動かす(Ubuntu18.04編)」です。最近本ブログの姉妹サイトとなるブログを立ち上げました。その際にVPS上でnginx+php-fpmにてwordpressにてブログを構築しましたので記事にしておきます。
ちなみに新ブログは「Django学習帳」というサイトです。もう少し内容がまとまったら堂々と宣伝予定です。


【目次】
php関連ツールのインストール
MariaDBのインストール
MariaDBの準備
WordPressのインストール
nginxの設定
ファイヤーウォールの設定
ブラウザでインストール作業をする

php関連ツールのインストール

筆者はphpが入っていないUbuntu18.04環境でまずphp環境を整える所からスタートしました。以下コマンドで必要なパッケージをインストールしていきます。


$ sudo apt install php-fpm php-mysql php-gd

wordpressはMariaDBで動かす想定なのでphp-mysqlを入れました。また画像切り抜き等でphp-gdが必要になるためインストールしています。

MariaDBのインストール

MariaDBのインストールに関してはUbuntu18.04にMariaDBを導入するを参考に導入して下さい。

MariaDBの準備

WordPressがデータを書き込むためのデータベースを準備しましょう。先のインストールでrootのパスワード設定はされているという想定です。以下コマンドでrootでMariaDBに入ります。


$ mysql -u root -p mysql
# パスワードを入力してログイン

以下はMariaDB内での操作です。


[mysql] create user 'wpuser'@'localhost' identified by '{password}';
[mysql] create database wordpress;
[mysql] grant all on wordpress.* to 'wpuser'@'localhost';

これでwordpressというデータベースを作成しこのDBの全権をwpuser@localhostに与えました。尚、{password}には任意のパスワードを設定して下さい。
※MariaDBのユーザー作成コマンドに誤りがあり修正しました。連絡くれた方、誠にありがとうございます。m(_ _)m

WordPressのインストール

準備が出来ました。ではwordpressをインストールしていきましょう。まずはインストール先のディレクトリを準備します。今回は/var/www/wordpressをwordpress用のドキュメントルートとすることにしました。
尚、今回nginxはwww-dataユーザーで動かす想定とします。また、wordpressのディレクトリ作成作業はsudo権限を持ったユーザーで、ファイルの配置作業はsudo権限のないwebmasterユーザーで行います。


$ sudo mkdir -p /var/www/wordpress
$ sudo chown webmaster:www-data /var/www/wordpress
$ sudo chmod g+w /var/www/wordpress

wordpressディレクトリのグループをwww-dataにしておきます。次にwordpressをダウンロードします。wordpress公式ページにアクセスしてlatest.tar.gzファイルをダウンロードします。


$ su webmaster
$ cd ~/Downloads
$ wget https://ja.wordpress.org/latest-ja.tar.gz
$ tar zxvf latest.tar.gz
$ cd wordpress
$ cp -r * /var/www/wordpress/

これでダウンロードしたwordpressの中身を全て/var/www/wordpress内にコピーしました。ワードプレスの更新などでトラブルが乗じるためwww-dataが書き込めるようにグループへの書き込み権限を付与しておくことをオススメします。


$ cd /var/www/wordpress
$ chmod -R g+w * 

これでwordpressのインストールは完了しました。

nginxの設定

apacheは動作しておらず、nginxがインストールされている想定ですが、もしインストールされていない場合は下記コマンドでインストールします。


$ sudo apt install nginx

今回はUbuntuなのでインストールコマンドで設定と起動までが自動で行われます。

新しく作るWordpressサイト用の設定を書きましょう。


$ cd /etc/nginx/site-available
$ sudo vim wordpress.conf

本番環境での設定例

予めドメインを取得しておきます。また、SSL証明書もcertbotを利用して取得しておきます。もしローカルサーバーで試したみたい場合はこの設定は飛ばして下さい。

以下のようにします。


server {
    listen 80;
    server_name django.kurodigi.com;
    return 301 https://$host$request_uri;
}

server {
	# SSL configuration
	#
	listen 443;
	server_name django.kurodigi.com;

    ssl on;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

	root /var/www/wordpress;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html index.php;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ /index.php?args;
	}

	# pass PHP scripts to FastCGI server
	#
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
	}
}

ローカルサーバーでの設定例

基本的には本番用の設定と変わらないのですが、ドメインの代わりにポートでアクセス出来るようにしています。SSL認証の設定もありません。ポート80でアクセスしても構わない場合は80を設定して下さい。


server {
	listen 8080;

	#root /var/www/html;
	root /var/www/wp;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html index.php;

	server_name _;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		#try_files $uri $uri/ =404;
		try_files $uri $uri/ /index.php?args;
	}

	# pass PHP scripts to FastCGI server
	#
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
	}
}

ここからは本番環境およびローカルサーバーともに共通です。設定が終わったら設定ファイルをリンクを張りnginxを再起動しましょう。


$ sudo ln -s /etc/nginx/site-available/wordpress.conf /etc/nginx/site-enabled/
$ sudo systemctl restart nginx

早速ウェブブラウザで確認したいところですが、ちょっと待って下さい。未だ少し設定が残っています。

ファイヤーウォールの設定

この項はファイヤーフォールを使用していてローカルサーバーでワードプレスを動かす場合に特定のポートを開放する場合のみに必要な動作です。


$ sudo ufw allow 8080

FTPなしでプラグインやテーマをインストールできるようにする。

プラグインのインストールなどでFTPが必要だと言われることがあるのですが、VPSにはセキュリティの観点からFTPは使用不可としています。これではワードプレス上でプラグインがインストールできず不便ですので設定を変更します。


$ cd /var/www/wordpress/
$ vim wp-config.php

以下の行を一行追加します。


define('FS_METHOD', 'direct');

これでFTP経由でなくインストールが出来るようになります。

ブラウザでインストール作業をする

ではサーバーにアクセスしてwordpressのインストール作業を進めましょう。ここから先はブラウザで作業します。ローカルサーバーの場合はサーバーIPの8080ポートに、本番サーバーの場合は設定したドメインでアクセスしましょう。



最後に

数年前まで、Wordpressを動かすにはLAMP環境と言われましたが最近ではNginxの人気もあってNginxで動かすことも珍しく亡くなってきました。今回はつまづきそうなポイントも含めて設定例を示しました。あくまで設定例なので本番などではIPアクセス制限等を加える必要があるとは思いますが、参考になれば幸いと考えております。この記事が何かのお役に立てば幸いです。

【関連記事】
WordPressを新環境へ「まるごと」移転する方法
Linuxローカル環境にWordPressを導入する方法

Sponsored Link


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です