Drupal 8.7.4をさくらのクラウドのDebian 9.9上でセットアップしてみた

今風にやるなら、コンテナで作って上げるのだろうが、私はまだサーバー上で一から設定を行っている。

まず、さくらのクラウドの管理画面から、Debian 9.9.0 64bitのインスタンスを立ち上げ、コンソールから、まずユーザー(poc)を登録、sudoグループへの追加、ssh経由でのrootログインの禁止など一定のセキュリティ対策を実施する(ここでの記載は省略)。以下は、sshでの接続で行う。

サーバーのインスタンスが立ち上がったら、DNSにAレコードを登録する。私の場合は、お名前.comを利用している。今回はpoc.ulslab.netに割り振られたipアドレスを登録した。DNSは反映までに時間がかかるので、このタイミングでやっておくのが良い。

最初は、環境の更新とaptitude、vim、mysql-server、apache2のインストールを行う。suして管理者権限で実行した。

apt-get update
apt-get install -y aptitude
aptitude -y install vim
aptitude -y install mysql-server
aptitude -y install apache2
apt-get upgrade

ついで、php7.3のインストールとcomposer他のインストールを行う。同じくsuして管理者権限で実行。Debian 10になると、aptitude -y install php7.3より前は不要になる予定。

apt-get install -y apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt-get update
aptitude -y install php7.3
apt-get upgrade
aptitude -y install curl
curl -sS https://getcomposer.org/installer|php
mv composer.phar /usr/local/bin/composer
aptitude -y install php7.3-xml php7.3-mbstring php7.3-mysql php-dom php7.3-gd php7.3-curl
aptitude -y install zip unzip

ここまでで、drupalのインストールの準備はほぼ整ったが、php.iniの以下の2つのパラメータを修正した。/etc/php/7.3/cli/php.iniと/etc/php/7.3/apache2の2ファイルを修正する必要がある。

post_max_size = 128M
upload_max_filesize = 128M

次にmysqlでユーザーを登録し、databaseを作成し、ユーザーに操作権限を与える。引き続きsu状態で実行する。

mysql
MariaDB [(none)]> create user poc@localhost identified by 'pocpass';
MariaDB [(none)]> create database pocdb;
MariaDB [(none)]> grant all on pocdb.* to poc@localhost;

これで、mysqlのユーザーpocとデータベースpocdbが登録された。

通常ユーザーに戻って、私の場合は、自分のホームディレクトリの下にdrupalのサブディレクトリを作成している。cdしてmkdir drupalして、cd drupalする。

いよいよDrupalのインストールをする。

composer create-project drupal-composer/drupal-project:8.x-dev mydrupal --no-interaction

これで走らせたディレクトリの直下にmydrupalというディレクトリができ、その中にDrupalのコードが作成される。Web経由でセットアップする時に、www-dataというユーザーで実行されるため、必要な権限を付加してやる必要がある(恐らくdrupal-composereのバグ)。

cd mydrupal
mkdir config
sudo chgrp www-data config
chmod g+w config

次いで、apache2の設定を行う。ここから、再びsu状態で行う。

cd /etc/apache2/sites-available
cp 000-default.conf poc.conf
vim poc.conf

2か所を以下のように編集する。サーバー名とディレクトリの最上部を設定している。それ以外にClean URLに対応するために一部追加する。

9c9
<       #ServerName www.example.com
---
>       ServerName poc.ulslab.net
12c12
<       DocumentRoot /var/www/html
---
>       DocumentRoot /var/www/html/poc
28a29,31
> <Directory /var/www/html/poc>
>         AllowOverride ALL
> </Directory>

設定が終わったら、apacheに構成ファイルを認識させ、DrupalのディレクトリをシンボリックリンクでDocumentRootに一致させる(a2enmod rewriteはやらなくても進められるが、結局やる事になるので呪文だと思ってやって頂きたい)。

a2ensite poc.conf
a2enmod rewrite
systemctl reload apache2
cd /var/www/html
ln -s /home/poc/drupal/mydrupal/web poc

ここまでできたら、poc.ulslab.netにWebで接続すれば、初期セットアップを始めることができる。初期セットアップを以下のようにコマンドで行うことも出来る。

sudo -uwww-data vendor/drush/drush/drush site:install --db-url=mysql://poc:pocpass@localhost/pocdb --account-name=poc --account-mail=contact@ulslab.com --site-mail=contact@ulslab.com --account-pass=pocpoc --site-name=poc --locale=ja

セットアップを終えて、ログインすると無事初期画面が立ち上がる。
http://poc.ulslab.net/admin/reports/status
を見ると、エラーメッセージが出ているので、最後の仕上げに~/drupal/mydrupal/web/sites/default/settings.phpに以下の手順で手を入れて、設定完了。

cd ~/drupla/mydrupal/web/sites/default
vim settings.php
chmod 444 settings.php

vim settings.phpでは、最後に

 $settings['trusted_host_patterns'] = [
   '^poc\.ulslab\.net$',
 ];

を加えれば良い。これによってエラーも消える。

蛇足だが、追加でよく使うModuleとThemeをコマンドで追加する手順を例示で紹介しておく。

composer require drupal/admin_toolbar drupal/bootstrap
sudo -uwww-data vendor/drush/drush/drush pm:enable admin_toolbar
sudo -uwww-data vendor/drush/drush/drush theme-enable bootstrap
sudo -uwww-data vendor/drush/drush/drush config-set system.theme default bootstrap -y
sudo -uwww-data vendor/drush/drush/drush cache:rebuild

改めて、書いてみると、結構手順は長い。

この後、大抵の場合は、certbotでSSLの設定をして、メール配送の設定まではまず間違いなく必要になる。しかし、それでもDebianのインストールを起点として作業していくと原理が分かってくるところが良い。Clean URLは結構難しい。

タグ