開発者でも何でもない素人によるサイト

ubuntu16.04,LEMP(Nginx + MariaDB + PHP7.0-fpm)環境にWordpressをインストール

  • このエントリーをはてなブックマークに追加

今回はLEMP環境に定番のCMS、Wordpressをインストールする方法を紹介したいと思います。

なお、毎度のことですが、このブログは素人が趣味でググりながら試行錯誤して動かした、というものです。したがって、趣味でいろんなサービスをセルフホスティングしたい方のヒントになればと書いています。

大きな間違いは無いと思って書いていますが、失敗が許されない方は、参考リンクを参照するなり、更に調べるなどしてください。

なお、今回の環境は以下のとおりです。

LEMP環境の構築は、aptで入れたものをそのまま使います。
迷う方は、一応記事を書いているので、 こちらを参考にしてください(ラズパイの記事ですが、普通のamd64でも同じです)。

必要なパッケージのインストール

LEMPの基本パッケージに加えて、以下を追加でインストールします。

sudo apt install php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-xml php7.0-xmlrpc

データベースの準備

Wordpress用のデータベースを用意します。
MariaDBでもMySQLでも操作は同じです。

まず以下のコマンドでデータベースにログインします。
(環境によってはsudoを先頭につけないとログイン出来ないかもしれません)

mysql -uroot -p

ログイン出来たら、「wordpress」という名前のデータベースと「wpuser」というユーザーを作成します。
パスワードは任意のものを決めてください。

create database 'wordpress';
create user 'wpuser'@'localhost' identified by 'パスワード';

エラーなく作成できたら、「wpuser」に「wordpress」への権限を与えます。

grant all privileges on wordpress.* to 'wpuser'@'localhost' identified by 'さっき決めたパスワード';

エラーがなければOKです。
以下のコマンドで権限を反映させ、MySQLをログアウトします。

flush privileges;
quit;

Nginxの設定

webサーバ(Nginx)の設定ファイルを編集します。
以下、vi(vim)の操作になれない場合はviをnanoで置き換えてください。
また、サイトのURLはここではhttp://example.comと想定してserver_nameの箇所を書いています。
もしサイト名が未定の場合は仮にIPアドレスを書いておいても良いです。

sudo vi /etc/nginx/sites-available/default

以下はDigitalOceanにあったチュートリアルをほぼそのまま持ってきたものです。

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

root /var/www/wordpress;
index index.php index.html index.htm index.nginx-debian.html;

server_name example.com;

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

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

location ~ /\.ht {
    deny all;
}
}

とりあえず、この設定で動作するはずです。以下のコマンドで設定ファイルが正しいか確認します。

sudo nginx -t

OKとかSuccessfulとか出たら、Nginxを再起動して設定を反映させます。

sudo systemctl restart nginx

しかしこの設定だけだとパーマリンクの設定に対応していなかったり、セキュリティ的にも不十分だと思います(configファイルとか)。

この投稿に沿って、動作がとりあえず確認出来たら、参考になりそうなリンクを貼っておくので、各自設定を煮詰めてください。

「Ubuntu Nginx Wordpress」と検索すれば山ほど事例があります(英語が多いですが)。

wordpress本体の配置

あとはWordpress本体をダウンロードして配置するだけです。
本家版と各種ローカライズの設定が施された日本語版の両方がありますが、今回は手軽に日本語版を入れます。
以下のコマンドで最新の日本語版をwebルートの親ディレクトリに落とし、解凍します。

cd /var/www
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
sudo tar xf latest-ja.tar.gz

展開が終わると、/var/www/内にwordpressというディレクトリができていると思います。
この段階では所有者がrootになっていると思うので、nginxの実行ユーザが読み取れるよう所有者を変更します。

sudo chown -R www-data:www-data wordpress

本来はwww-dataグループにwordpress用のユーザを作成して、所有者にしたほうが良いと思いますが、ひとまずこの設定にしておきます。

ファイアウォールの開放

素人がはまりがちなのがファイアウォールの開放です。 Ubuntuのiptablesフロントエンド、ufwを利用している場合、以下のコマンドでポートを開放します
(ufwについては過去に取り上げています)。

sudo ufw allow http

クライアントからアクセス、初期設定

あとはクライアントからブラウザでサーバにアクセスして、初めのほう設定したデータベースの設定などを入力すればOKです。

素人がつまづきやすいポイント

執筆中…