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

Ubuntu Server 16.04(amd64, Raspi)、LEMP(Nginx + MariaDB + php7.0-fpm)環境にDrupal 8をインストール

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

今回はUbuntu 16.04のLEMP環境にDrupalをインストールしたいと思います。

LEMP環境構築については、下記のページで書いています。

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

LEMP(nginx, mariadb or mysql, php7.0-fpm)はインストールした上で、以下のパッケージをインストールします。

sudo apt install php7.0-mysql php7.0-xml php7.0-gd

これで十分だと思いますが、過不足があればインストール時に警告されるので、その時追加でインストールしたら良いと思います。

データベースの作成

MariaDBにDrupal用のデータベースを作成します。MySQLでも操作は全く同じです。

以下、passwordの箇所は任意のパスワードに変更してください。

sudo mysql -uroot -p
...
MariaDB [(none)]> create database drupal;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user drupaluser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on drupal.* to drupaluser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye

Drupal本体のダウンロード、解凍

公式サイトから最新版を落としてきます。

ここでは、/var/www/drupal-(バージョン)がDrupalのルートディレクトリになるようにします。

バージョンは僕が作業した日付の最新版なので、最新版のバージョンに適宜書き換えてください。

cd /var/www
sudo wget https://ftp.drupal.org/files/projects/drupal-8.1.3.tar.gz
sudo tar xf drupal-8.1.3.tar.gz
sudo rm drupal-8.1.3.tar.gz

また、ドキュメントルートとなるディレクトリの所有者を変更します。

ユーザーはここではwww-dataにしていますが、余裕があれば適切に設定してください。

sudo chown -R www-data:www-data drupal-8.1.3

Nginxの設定

Nginxの設定をします。

以下はほとんどNginxのドキュメントのパクリです。一部PHPが動作するように書き換えましたが。

最初2行のサーバ名とドキュメントルートは適宜書き換えてください。

sudo vi /etc/nginx/sites-available/drupal
server {
    server_name example.com;
    root /var/www/drupal-8.1.3;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.1.0/24;
        deny all;
    }
    location ~ \..*/.*\.php$ {
        return 403;
    }
    location ~ ^/sites/.*/private/ {
        return 403;
    }
    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }
    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }
    location / {
        # try_files $uri @rewrite; # For Drupal <= 6 try_files $uri /index.php?$query_string; # For Drupal >= 7
    }
    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }
    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }
    # Fighting with Styles? This little gem is amazing.
    location ~ ^/sites/.*/files/styles/ { 
        try_files $uri @rewrite;
    }
    # Handle private files through Drupal.
    location ~ ^/system/files/ { 
        try_files $uri /index.php?$query_string;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

書き終えたら、sites-enableにシンボリックリンクを貼ってバーチャルホストとして登録します。

sudo ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enable/drupal

ここまで来たら、以上の設定が正しいか確認します。

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

上のようにOKと出たら、正しく設定できています。

もしエラーが出たら、行数が表示されるので、その箇所を書き換えましょう。

最後にnginxを再起動して設定を反映させます。

sudo systemctl restart nginx

サイトにアクセス、インストール

実際にサイトにアクセスして、インストールしていきます。

クライアント機のブラウザのアドレスバーに、先ほどnginxの設定ファイルに書いたアドレスを入力し、アクセスします。

無事アクセスできれば以下のような画面が見えるはずなので、画面に従ってインストールしましょう。

Screenshot from 2016-07-06 19-24-48