★★★ Twitterやってます。フォローして頂けると嬉しいです(*^^*) ★★★
この記事にはプロモーションが含まれていることがあります

【完全攻略】Drupal8環境構築(GCP/Ubuntu18.04)

IT

私のブログはCMSの1つであるWordPressで運営しているのですが、WordPressより拡張性が高そうなDrupalというCMSがあるとのことで、どんなものか見てみたくなってしまった結果、環境作ってみることにしました。

今回はGCP上にGCE立てて動かしてみようと思って作ってみたのですが、お金がかかってしまうのを後で思い出し、パソコン上に仮想環境作ってそこに構築するというのもの試してみました。

せっかく両方試したので両方書くことにしました(欲張りっっ)

必要なもの
  • Googleアカウント(GCPを使う場合)
  • Hyper-Vが利用可能なWindowsマシン(仮想マシン上に構築する場合)
  • Linuxの知識が少々(共通)
今回の環境構築で使うソフトのバージョン一覧
  • Debian GNU/Linux 10 (buster)(GCPを使う場合)
  • Ubuntu18.04-LTS(仮想マシン上に構築する場合)
  • Drupal 8.9.20
  • Apache 2
  • MySQL 5.7
  • PHP 7.3

ベースはGCPで構築する場合で書いていますが、ところどころUbuntu18.04だと少し違うのでその部分はこの黄色い枠で補足します。

スポンサーリンク

GCPでVMインスタンス作成

GCPで環境を作ると構築後にインターネットに公開できますが、月々課金が発生します。今回の手順で作成すると毎月1,600円くらい課金されます。無料で試したい方は仮想マシン(Ubuntu18.04)でやってみてください。

仮想マシン(Ubuntu18.04)の場合は、仮想マシンのゲストOSでUbuntu18.04-LTSをセットアップしてください。やり方はこちらで紹介しています。この次の「Drupal 8.9.20 インストール前準備」の章からスタートしてください。

Windows上にそのまま環境構築する方法もありますが、XAMPP入れてしまえばすぐにできちゃいそうなので割愛します。

GCP使う前の準備

GCPを使うには、Googleアカウントの作成とGCPの利用開始登録が必要です。まだ整っていない方はこちらの記事を参考にしてみてください。

VMインスタンス作成

Google Compute Engine(GCE)を使います。GCEのインスタンスを作成することで、GCP上に仮想マシンを作成できます。

GCEのページを開いたら、インスタンスを作成をします。

インスタンス作成画面が表示されます。ここで設定すべき最低限の内容は次の5つです。

  1. 名前:このインスタンス名を付けます。なんの環境かわかりやすいようdrupal-battanとしました。
  2. リージョンとゾーンを決めます。速度を求めるなら日本、安さを選ぶなら米国がいいでしょう。ゾーンはどこでもよいです。
  3. シリーズは一番安い「N1」にしました。
  4. マシンタイプは「g1-smallにしました。今回はDrupalとデータベースを同じマシンにインストールするので、これより最小スペックの「f1-micro」だとメモリが足らなくてDrupal動かないかもしれません。
  5. 最後にこのインスタンスを動かした場合の値段を確認します。

次にブートディスクを選択します。OS、及びLinuxの場合はディストリビューションが選択できます。特に指定がなければDebian GNU/Linuxでよいです。

最後にファイアウォールを開けて作成ボタンを押せばインスタンス作成は終了です。今回は遊び用のDrupal環境を作るのでHTTPも開けていますが、本番サイトやセキュアなDrupal環境を作る場合は、HTTPは開けず、HTTPSだけにしましょう。

インスタンスの作成が無事に終わるとこのような感じでVMインスタンスリストに表示されます。

これで下ごしらえ完了です。

次は、いよいよDrupalのインストール作業に入っていきます。

スポンサーリンク

Drupal 8.9.20 インストール前準備

SSHログイン

仮想マシン(Ubuntu18.04)の場合は、Ubuntuのデスクトップ上で端末を起動してください。

作成したDrupal用のVMインスタンスのSSHボタンをクリックします。

このようにSSHでVMインスタンスにログインできればOKです。

ここからはコマンドをいろいろ入力していきます。

OSアップデート

まずはOSの状態を最新化します。

$ sudo apt update
$ sudo apt upgrade -y

Apache2のインストール

Drupalを動かす土台となるWebサーバには、Apache2を使います。

$ sudo apt install apache2 -y

Apacheが動作しているかcurlで確認します。入っていない場合はインストールします。

$ sudo apt install curl -y

curlが使えるようになったら、Apacheにリクエスト飛ばしてみてください。バージョンによって表示される文字列が違うと思いますが、とりあえずcurlでリクエスト投げてエラーが出てなければインストールできたと思って良いでしょう。

$ curl -sS http://localhost | grep Apache2
    <title>Apache2 Debian Default Page: It works</title>
          Apache2 Debian Default Page
                operation of the Apache2 server after installation on Debian systems.
                Debian's Apache2 default configuration is different from the
                The configuration layout for an Apache2 web server installation on Debian systems is as follows:
                Apache2 package with Debian. However, check <a

MySQL 5.7のインストール

MySQLのダウンロードにwgetを使いますのでインストールしておきます。既にインストール済みの場合は不要です。

$ sudo apt install wget -y

MySQLのバージョンを指定したインストールをしたいので、パッケージ設定ツールをダウンロードします。

$ wget http://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

ダウンロードできたら起動してみます。

$ sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

MySQLの設定画面が開いたら、ubuntu bionic」を選択します。

仮想マシン(Ubuntu18.04)の場合は、これは表示されないので次に進んでください。

次は、MySQL Server & Cluster (Currently selected: mysql-8.0)を選択します。

mysql-8.0が選択されているので、mysql-5.7にカーソルを合わせてEnterキーで決定します。

レントバージョンが、mysql-5.7に変更されていることを確認したら、OKにカーソルを合わせてEnterキーを押して確定します。

バッケージを更新します。

$ sudo apt update

Hit:1 http://packages.cloud.google.com/apt cloud-sdk-buster InRelease
Get:2 http://repo.mysql.com/apt/ubuntu bionic InRelease [19.4 kB]                                                  
Hit:3 http://security.debian.org/debian-security buster/updates InRelease                                          
Hit:4 http://deb.debian.org/debian buster InRelease                 
Hit:5 http://deb.debian.org/debian buster-updates InRelease
Hit:6 http://deb.debian.org/debian buster-backports InRelease
Get:7 http://packages.cloud.google.com/apt google-cloud-packages-archive-keyring-buster InRelease [5553 B]
Hit:8 http://packages.cloud.google.com/apt google-compute-engine-buster-stable InRelease
Get:9 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 Sources [928 B]
Get:10 http://repo.mysql.com/apt/ubuntu bionic/mysql-apt-config amd64 Packages [566 B]
Get:11 http://repo.mysql.com/apt/bionic/mysql-5.7 amd64 Packages [5662 B]
Get:12 http://repo.mysql.com/apt/ubuntu bionic/mysql-tools amd64 Packages [7009 B]
Fetched 39.1 kB in 1s (32.3 kB/s)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.

MySQL5.7がセットされたので、インストールを開始します。

$ sudo apt install mysql-server -y

ここでMySQLの管理者ユーザのパスワードを入力します。

パスワードの入力を求められない場合もあります。その時は、rootのパスワードは未設定状態となります。

パスワードの入力後は自動でMySQLサーバのインストールが始まります。

MySQLサーバのインストールが終わると自動で起動します。念の為、起動しているか確認してみます。

$ sudo service mysql status

このように、active表示になっていれば正常に起動しています。

一応、バージョンが8.0ではなく、5.7がインストールされたか確認してみます。mysqlコマンドで接続して、select @@version;すれば確認できます。

ここで他のバージョンが入ってしまった場合は先の手順で正しく5.7が指定できていないと思われますので、再度確認してやり直してみてください。

$ sudo mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36 MySQL Community Server (GPL)
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.7.36    |
+-----------+
1 row in set (0.00 sec)

mysql> quit
Bye

PHP 7.3のインストール

次は、PHP7.3をインストールします。途中で一回止まりますのが、Enterキーを入力すると走り出します。

$ sudo apt install software-properties-common -y
$ sudo add-apt-repository ppa:ondrej/php 

Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa
You can get more information about the packages at https://deb.sury.org
IMPORTANT: The <foo>-backports is now required on older Ubuntu releases.
BUGS&FEATURES: This PPA now has a issue tracker:

DEB.SURY.ORG
Debian and Ubuntu packaging
CAVEATS: 1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman 2. If you are using apache2, you are advised to add ppa:ondrej/apache2 3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline    or ppa:ondrej/nginx PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/ WARNING: add-apt-repository is broken with non-UTF-8 locales, see
Unable to add PPA Key · Issue #56 · oerdnj/deb.sury.org
Hey, Trying to add the PPA key but it seems to always fail due to the your name in the PPA Key. gpg: requesting key E526...
for workaround: # LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php More info: https://launchpad.net/~ondrej/+archive/ubuntu/php Press [ENTER] to continue or ctrl-c to cancel adding it (ここで一度画面が停止しますので、Enterキーを入力します) gpg: keybox '/tmp/tmpbkn41a1c/pubring.gpg' created gpg: /tmp/tmpbkn41a1c/trustdb.gpg: trustdb created gpg: key 4F4EA0AAE5267A6C: public key "Launchpad PPA for Ondřej Surý" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: no valid OpenPGP data found.

レポジトリの準備などが整ったので、パッケージ情報を更新して、PHP7.3をインストールします。

$ sudo apt update
$ sudo apt install php7.3 -y

PHPのインストールが終わったら、こちらも念の為、バージョンを確認しておきましょう。

$ php -v

ちゃんと7.3が入りました。

スポンサーリンク

Drupal 8.9.20 インストール

公式サイトで好きなバージョンをダウンロードすることができます。今回は8系で一番新しい8.9.20で構築してみたいと思います(2022/01/10 時点)。

Access to this page has been denied.

Drupal 8.9.20を公式サイトから取得

ダウンロードリンクのパスが分かったらwgetで入手します。

$ wget https://ftp.drupal.org/files/projects/drupal-8.9.20.tar.gz

このような感じでダウンロードされればOKです。

Webサーバに設置

Drupal本体のダウンロードができたら、中身をApache2のドキュメントルートに展開します。ドキュメントルートに直接配置してもよいですが、私はこのあと他のバージョンも試したかったのでシンボリックリンクで切り替えできるようにしてみました。

$ sudo tar xfz drupal-8.9.20.tar.gz -C /var/www 
$ cd /var/www/html
$ sudo ln -s ../drupal-8.9.20 drupal
$ ls -l

エンドポイントも設定ファイルも変更せずに切り替えするなら、シンボリックリンクにしておくと簡単です。

Apache設定変更

DrupalはURLを動的に書き換えるrewriteが必須です。Apache2だとシンボリックリンクでオンオフできるようになってるんですね。http.conf周りを探し回ってしまいました。

rewriteを有効にする

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/rewrite.load  rewrite.load

このようにリンクが作成されていれば有効になります。

$ ls -l rewrite*
lrwxrwxrwx 1 root root 30 Jan 10 12:29 rewrite.load -> ../mods-available/rewrite.load

.htaccessファイルを有効にする

Drupalは各ディレクトリ内の.htaccessファイルでいろいろ制御しているので、それらを有効できるようApache2の設定ファイルを変更します。

$ cd /etc/apache2
$ sudo cp -p apache2.conf apache2.conf.org
$ sudo vi apache2.conf

対象のディレクトリを確認して、AllowOverrideをNoneからAllに書き換えます。

PHP拡張

拡張機能追加

次にPHPの拡張機能を追加します。Drupalではこの4つが必要です。

$ sudo apt install php-xml -y
$ sudo apt install php-gd -y
$ sudo apt install php-dom -y
$ sudo apt install php7.3-mysql -y

うまくインストールできない場合は、次のように指定してみてください
sudo apt install php7.3-dom
sudo apt install php7.3-gd

php.ini ファイルの修正

さきほど追加でインストールしたGD2とPDO_MySQLが有効になるよう設定ファイルを書き換えます。手動で書き換えても良いですし、面倒な時はこれを実行すれば自動で書き換えます。

下のコマンドで書き換える場合は、改行せずに一行で投入してください。うまく動かなかったらゴメンナサイ

$ cd /etc/php/7.3/apache2
$ sudo sh -c 'cp -p php.ini php.ini.org && cat php.ini.org | sed -E s/"^;(extension=gd2)"/\\1/ | sed -E s/"^;(extension=pdo_mysql)"/\\1/ > php.ini'

データベース作成

Drupalのデータ格納用データベースを作成します。今回はDRUPAL_DBにしました。任意の名前でOKです。実行するとデータベース管理者のパスワードを聞かれますのでさきほどMySQLサーバインストール時にセットしたパスワードを入力してください。

$ mysql -u root -p -e "CREATE DATABASE DRUPAL_DB"

今回お試し構築なのでデータベース管理者のみで進めますが、Drupalをきちんと運用する場合は、Drupal接続専用ユーザを作成することを推奨します。

Webインストーラー用の下準備

DrupalのインストールはWebブラウザ版を使います。いろいろ操作できるよう下準備をします。

$ cd /var/www/drupal-8.9.20/sites/default
$ sudo cp -p default.settings.php settings.php && sudo chmod 666 settings.php 
$ sudo mkdir -p files/translations && sudo chmod -R 777 files

Apache再起動して設定を反映

Apache2を再起動していままで行った変更を適用します。

$ sudo service apache2 restart

Webインストーラーを起動

Webインストーラー起動

ここからはブラウザでの作業となります。次のURLでアクセスします。

http://〈IPアドレス〉/drupal

今回、私が作った環境では、このURLです。この記事をリリースする頃には潰しちゃってるから接続できないと思いますが、こんな感じのURLですっていうイメージのため一応載せときます。

http://34.66.111.23/drupal/

言語の選択

ここからはブラウザで続きのインストール作業ができます。言語を選択します。

インストールモードの選択

インストールモードが選択できます。標準でよいでしょう。

インストール要件のチェック

UNICODEライブラリが足りていないみたいですが、面倒くさかったので強行突破します。やり方分かる方いましたらコメント欄に記載して頂けると嬉しいです。

ここでエラーが発生する場合

例えばこのような表示が出たりします。この場合は問題を解決するまで先に進めません。ここまで手順どおり進めてきていれば特に問題はでないはずですが、Ubuntu18.04で試した時はPHP拡張のGDにミスがあったようです。

こちらのうまくインストールできない場合のところでバージョン7.3指定でインストールしたら解決できました。

Drupalのデータベース指定

さきほど作成したデータベースのデータベース名、接続ユーザとパスワードを指定します。本来はDrupalからの接続に使う専用ユーザを作るべきですが、今回は割愛します。

自動インストール~サイト設定

あとは自動でインストールしてくれるので待つのみです。

自動インストールは助かりますよね~

インストールが終わると、最後はDrupalのサイト情報設定です。

サイト名や管理者ユーザの登録を行います。

スポンサーリンク

Drupalサイト完成!

できたーーー!! 動いたー!

半日かかった。ところどころハマったし。こんなことなら素直にXAMPP使っておけばよかったのかもしれないけど、全部自分で寄せ集めて環境を作りたい気分だったんです・・・

これでばったん技術ブログのDrupal版完成です。WordPressより拡張性があるみたいですが、その実力は如何ほどか・・・(続く・・・?)

せっかくなのでDrupalの管理画面のスクショ残して置きます。うん、なんかいろいろできそう!

Drupalでなにか作ってみたい!と思った方にオススメの書籍です。

Bitly

コメント

タイトルとURLをコピーしました