Nginx+MariaDB環境でWordpressを動かす(Ubuntu18.04編)
2019-03-26
2020-03-28
こんにちは。今回のテーマは「Nginx+MariaDB環境でWordpressを動かす(Ubuntu18.04編)」です。最近本ブログの姉妹サイトとなるブログを立ち上げました。その際にVPS上でnginx+php-fpmにてwordpressにてブログを構築しましたので記事にしておきます。 ちなみに新ブログは「Django学習帳」というサイトです。もう少し内容がまとまったら堂々と宣伝予定です。 [adsense02] 【目次】 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を導入する方法 [adsense]