By | 2017年8月4日

第一回のプログラミングの投稿内容ですが、さっそく環境構築まわりの投稿します。独自でCMSを作ろうかと思いましたが、とりいそぎでWordPressでちゃちゃっとホームページを作ります。構築環境は、Ubuntu 16.04,Nginx 1.10,MariaDB 15.1,PHP 7.0を想定しています。

OS環境

まずはUbuntuのバージョンから。Ubuntuのマイナーバージョン番号って、xx.04 と xx.10 の2つしかないのを最近知りました。
(Ubuntuのリリース月が4月と10月なのでマイナーバージョン番号が04と10なんだと勝手に推測)

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="16.04.1 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.1 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
UBUNTU_CODENAME=xenial

 

各種アプリケーションをインストール

必要なアプリケーションをaptでインストールしていきます。
まずは、

$ sudo apt-get update && sudo apt-get -y upgrade

でリストを最新化します。

Nginxのインストール

これは説明不要だと思います。

$ sudo apt-get -y install nginx

 

MariaDBのインストール

apt経由でインストールするとrootでログインできないというよくわからないバグがあります(後述)。
いったん無視をしてMariaDBをインストールします。

$ sudo apt-get -y install mariadb-server

つぎに

$ sudo mysql_secure_installation

でrootユーザにパスワード設定したり、匿名ユーザー・テストデータベースの削除などを行います。
[Y/n]で問われている内容は基本的にYでよいです。

PHPのインストール

WordPressの動作には、PHP本体のほか、common,gd,fpm,mysql、場合によってmbstringが必要なのでこれらをインストール。

$ sudo apt-get -y install php7.0 php7.0-common php7.0-gd php7.0-fpm php7.0-mysql php7.0-mbstring

インストール直後ではPHPの設定に本番系サーバに不適切な箇所があるので、目的にあわせて変更してください。

WordPressのインストール

WordPressはインストールというよりもダウンロードに近いですが、

$ cd ~/
$ wget -O - 'https://ja.wordpress.org/wordpress-4.6.1-ja.tar.gz' | tar zxvf -

でhomeディレクトリにwordpressというフォルダがあるはずです。
今回は、/var/www/html/wordpress/に移動します。

$ mv ~/wordpress /var/www/html/wordpress/
$ chown -R www-data:www-data /var/www/html/wordpress/
$ chmod -R 755 /var/www/html/wordpress/

でWordPress一式を/var/www/html/wordpress/に移動するとともに、所有者をwww-data、パーミッションを755に設定します。



 

Nginxの設定

/etc/nginx/nginx.confの61行目あたりでinclude /etc/nginx/sites-enabled/*の記載があるとおり、
/etc/nginx/sites-enabled/ディレクトリ内にNginxの設定ファイルを追加します。

$ sudo touch /etc/nginx/sites-enabled/wordpress.conf

作成したwordpress.confを以下の内容にします。

$ cat /etc/nginx/sites-enabled/wordpress.conf

upstream phpfpm70{
  server unix:/var/run/php/php7.0-fpm.sock;
}

server {
  server_name example.com;
  listen 80;

  root /var/www/html/wordpress/;
  index index.html index.htm index.php;

  try_files $uri $uri/ @permalink;

  location ~ (.*)\.php$ {
    if (!-f $request_filename) {
      return 404;
      break;
    }

    fastcgi_index index.php;
    fastcgi_pass phpfpm70;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
  }

  location @permalink {
    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress/index.php;
    fastcgi_pass phpfpm70;
    fastcgi_param QUERY_STRING q=$uri&$args;
  }
}

下記、ちょっとした解説。

・fastcgiのパスをいちいち書くのが面倒くさいのでupstreamで統一化。

upstream phpfpm70{
  server unix:/var/run/php/php7.0-fpm.sock;
}

・Nginxでは.htaccessが使えないのでtry_filesでパーマネント設定できるように設定。

try_files $uri $uri/ @permalink;

・拡張子が.phpのときは、fastcgiを有効化し、URIに基づく物理ディレクトリにファイルがないときは、index.phpにパラメータを渡すようにする。

location ~ (.*)\.php$ {
  if (!-f $request_filename) {
    return 404;
    break;
  }

  fastcgi_index index.php;
  fastcgi_pass phpfpm70;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_script_name;
  include fastcgi_params;
}

location @permalink {
  include fastcgi_params;

  fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress/index.php;
  fastcgi_pass phpfpm70;
  fastcgi_param QUERY_STRING q=$uri&$args;
}

 

MariaDBにWordPressDBを作成する

基本的にはMySQLと同じなので、WordPress用に専用ユーザーとデータベースを作るだけ。
WordPress用のユーザー情報は下記のとおりとします。
※本番系はそれぞれ変更してデータベースとユーザー名・パスワードを作成してください

データベース名 wordpress
ユーザー名 wordpress_user
パスワード Passw0rd!

 

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is xxxx
Server version: 10.0.27-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database wordpress;
Query OK, 1 rows affected (0.01 sec)

MariaDB [(none)]> create user wordpress_user@localhost identified by 'Passw0rd!';
Query OK, 1 rows affected (0.01 sec)

MariaDB [(none)]> grant all privileges on wordpress.* to wordpress_user@localhost;
Query OK, 1 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

あとは、WordPressのインストーラーにもとづいて登録することでダッシュボードが見れるようになったらインストール完了です。