レンタルサーバではじめるモダンなDrupal8環境

目的

Composerを使ってDrupalを管理したいし、できる環境を見つけておきたい。

けど、レンタルサーバってそれぞれ制約が違う
ソースコードで全てを管理しておけば楽なのでそうしたい。
中級者向けくらいの記事かなと思ってます。

レンタルサーバ探し

AWSとかHerokuとか使えばいいんだけど、そうじゃないケースもあったので探して見ました。最初の候補はさくらインターネットでスタンダードプランを試したけど、Drupal8が素直にインストールできなさそうだったのでやめた。サーバの制約で.htaccessとかを書き換えるとかはないかな。
次はXserver。結論から言えばここを試用中で、その詳細は以下から。

Xserverで環境設定とDrupalのインストール

大前提としてまず、DrupalはPHPのパッケージマネージャーのComposerから管理できます。Using Composer to manage Drupal site dependencies | Drupal.org
不要な人には不要だと思うけど、僕は必須だと思ってます。

早速SSHで繋いで確認するとcomposerが使える

$ composer -V
Composer version 1.2.1 2016-09-12 11:27:19

phpのバージョンは古め

$ php -v
PHP 5.4.16 (cli) (built: Aug 11 2016 21:24:59) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies

Composer経由でDrupalをインストールするも失敗

$ composer create-project drupal-composer/drupal-project:8.x-dev hogehoge --stability dev --no-interaction
Installing drupal-composer/drupal-project (8.x-dev 3b9ee0d3a1c9363d53fc6da4111701269496e9ca)
  - Installing drupal-composer/drupal-project (8.x-dev 3b9ee0d)
    Cloning 3b9ee0d3a1c9363d53fc6da4111701269496e9ca

Created project in hogehoge
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - drupal/console 1.0.0-rc9 requires php ^5.5.9 || ^7.0 -> your PHP version (5.4.16) does not satisfy that 
    (長いので以下省略)

対応策

direnv

direnvはディレクトリごとに環境変数を設定できる便利なツール。これを使って、php5.6へのパスを通した。direnv/direnv: Unclutter your .profile

/usr/bin//opt/以下に他のバージョンのPHPも入っているので、direnvを利用してそれらを使うことにした。

$ cat .envrc 
PATH_add ./hogehoge/vendor/bin
PATH_add /opt/php-5.6.24/bin

おまけ

また、ホームディレクトリ以下のbinにもパスが通っているからディレクトリを作り最新版のcomposerをインストールした。

まとめ

以上でXserverでもDrupalをComposerで管理できるようになった。(パチパチ)
尚、今回の作業はおそらくサポート対象外となるであろうものが含まれるので試される方は注意されたい。

Comments