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

Drupal8環境の作り方(GCP/Ubuntu)

IT
スポンサーリンク

Drupal8環境の作り方

Drupalってなに?

CMSの一つです。CMSとは「Contents Management System:コンテンツ・マネジメント・システム」の略で、一言でいうとWebサイトのコンテンツを簡単に編集して公開するWebシステムです。

有名なものにWordPressワードプレス)があります。Drupalはこれの同じようなものだとイメージしてもらって概ね合っています。

なぜDrupalを使ってみようと思ったのか

普段はWordPressでブログを書いている私ですが、DrupalというCMSがあると小耳に挟んだわけですが、WordPressが小規模サイト向けなのに対してDrupalは中規模以上のサイト向けのCMSらしいのです。

もしかしたらWordPressにない何か素敵な機能があるかもしれないのでちょっと見てみたい、というのと、無いとは思いますが、将来WordPressが開発停止、サポート終了!

なーんてことになったらブログの運営に困ってしまうので、緊急時の乗り換え先として他のCMSもちょっとどんなものか見ておきたい、というわけで、興味を持ってしまったので今回もやっちゃいます。

環境構築!

私がメインブログで使っているエックスサーバーでも使えるみたいなのです。

ただ、今回はちょっと試してみたいだけなのでわざわざ契約するのも面倒というのもあり、普段使ってるGCPを利用してちょっくら作ってみることにしました。

Linuxが動く環境があればよいので、GCPを使わないHyper-V仮想マシン上に構築も同時に試してみました(外部公開したい方はGCPの方で)。

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

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

スポンサーリンク

GCPでVMインスタンス作成

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

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. 最後にこのインスタンスを動かした場合の値段を確認します。動かし続けた場合、今日(2023/01/03)の為替レートだと一ヶ月に2,446円ぐらいかかります。

インターネット上に公開しない、またはしたくない場合や、毎月の支払いをしたくない場合は、クラウドを使わず、自分のパソコン上で動かすこともできます。
やってみたい方は、この章を飛ばして自分のパソコンにLinux環境を構築してから次のDrupalインストールの章から始めてください。

自分のパソコンにLinuxt環境を構築する方法は他の記事で紹介していますので、好きなLinux使ってみてください。参考までにUbuntu20.04LTSのリンク貼っておきますね

次にブートディスクを選択します。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
$ 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 インストール

Drupal公式サイトからダウンロードします。

Access to this page has been denied.

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

GCPで構築する場合は一回パソコンにダウンロードしてからVMにアップロードするのが面倒なので直接ダウンロードしてしまいましょう。

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

Webサーバに設置

ダウンロードした一式を展開してドキュメントルートに配置し、ついでにシンボリックリンクも張っておきます。

$ 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が正しく動作するにはrewrite機能を有効にし、設定の上書き指定が必要です。

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ファイルを有効にする

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

この部分をNoneからAll に書き換えます。

PHP拡張

DrupalはPHPでできていますので、PHPの追加ライブラリが必要とのことです。こちらもインストールします。

拡張機能追加

$ 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インストーラー用の下準備

インストールは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再起動して設定を反映

一回、設定を有効にするため、Apacheを再起動します。

$ sudo service apache2 restart

Webインストーラーを起動

ここからはWebインストーラーを使うため、Webブラウザからサーバーにアクセスします。

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

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

http://34.66.111.23/drupal/

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

警告レベルだったら強引に進んでOKですが、赤いエラーが出ている場合はそれを解消する必要があります。

サイト名を入力します。

CMSの管理画面へのログインアカウント作成です。

ここまでエラー無しでくればゴールは目前です。

スポンサーリンク

Drupalサイト完成!

ゼロからDrupal環境を構築した感想

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

半日かかった。ところどころハマったし。

Drupalをインストールする前のPHP環境構築でちょっと時間かかってしまった。

こんなことなら素直にXAMPP使っておけばよかったのかもしれないけど、全部自分で寄せ集めて環境を作りたい気分だったんさ。今回Perlはいらんかったし。

それにしても疲れた・・・でもできた模様。あとは正式にブログ運用するなら証明書取ってSSL化すればブログ避難先にはなりそう。

WordPressとは勝手が違いそうですが、何をどこで設定できるのか慣れれば使えそうではあります。

Drupal管理画面スクショ

とりあえず環境構築で疲れ切ってしまったので、CMS管理画面のスクショだけ載せておきたいと思います(逃亡フラグ!?)

Drupal8の後継版の9や10も出ているようなので、PVよかったら最新バージョンも試してみようかなーと思います。それではまた!

もっと簡単にDrupalを使ってみたい方はこちら

使ってみたいけど環境構築が難しそう、、、という方にはレンタルサーバーが良いかもしれません。私のメインブログで利用しているエックスサーバーならDrupalも利用できるみたいです。

エックスサーバーならこの記事で紹介しているこの2つの章に該当する手順は省略できるんじゃないかなと思います。

  • 2.GCPでVMインスタンス作成
  • 3.Drupal 8.9.20 インストール前準備

特に3のインストール前準備はMySQLやPHPインストールがあり、バージョンの相性などもありかなり面倒でしたし、正式なブログとして公開するならSSL証明書取得なども自前でやる必要が出てきてしまうのでエックスサーバー上で作ってしまったほうが簡単だと思います。

コメント

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