私のブログはCMSの1つであるWordPressで運営しているのですが、WordPressより拡張性が高そうなDrupalというCMSがあるとのことで、どんなものか見てみたくなってしまった結果、環境作ってみることにしました。
今回はGCP上にGCE立てて動かしてみようと思って作ってみたのですが、お金がかかってしまうのを後で思い出し、パソコン上に仮想環境作ってそこに構築するというのもの試してみました。
せっかく両方試したので両方書くことにしました(欲張りっっ)
ベースは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つです。
- 名前:このインスタンス名を付けます。なんの環境かわかりやすいようdrupal-battanとしました。
- リージョンとゾーンを決めます。速度を求めるなら日本、安さを選ぶなら米国がいいでしょう。ゾーンはどこでもよいです。
- シリーズは一番安い「N1」にしました。
- マシンタイプは「g1-small」にしました。今回はDrupalとデータベースを同じマシンにインストールするので、これより最小スペックの「f1-micro」だとメモリが足らなくてDrupal動かないかもしれません。
- 最後にこのインスタンスを動かした場合の値段を確認します。
次にブートディスクを選択します。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の管理者ユーザのパスワードを入力します。
パスワードの入力後は自動で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.ORGDebian 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.orgHey, 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 時点)。
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
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"
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ライブラリが足りていないみたいですが、面倒くさかったので強行突破します。やり方分かる方いましたらコメント欄に記載して頂けると嬉しいです。
Drupalのデータベース指定
さきほど作成したデータベースのデータベース名、接続ユーザとパスワードを指定します。本来はDrupalからの接続に使う専用ユーザを作るべきですが、今回は割愛します。
自動インストール~サイト設定
あとは自動でインストールしてくれるので待つのみです。
自動インストールは助かりますよね~
インストールが終わると、最後はDrupalのサイト情報設定です。
サイト名や管理者ユーザの登録を行います。
Drupalサイト完成!
できたーーー!! 動いたー!
半日かかった。ところどころハマったし。こんなことなら素直にXAMPP使っておけばよかったのかもしれないけど、全部自分で寄せ集めて環境を作りたい気分だったんです・・・
これでばったん技術ブログのDrupal版完成です。WordPressより拡張性があるみたいですが、その実力は如何ほどか・・・(続く・・・?)
せっかくなのでDrupalの管理画面のスクショ残して置きます。うん、なんかいろいろできそう!
Drupalでなにか作ってみたい!と思った方にオススメの書籍です。
コメント