2017年6月27日火曜日

CentOS Composerを使ってdrupal8をインストール Composerのインストール

drupalを扱うのに
drush   (細かいことはできないがシンプルで使いやすい。普段のアップデートとかに便利。本体のダウンロード、データベースの作成も含めたインストールもできる。)
Drupal Console (スクリプト通りにインストールさせられる。同じ環境を数多く作りたいとか、少しずつ設定を変えてインストールしたいとか、そういうのに便利なのかな。あとは、サイトを数多く管理している人には便利なのかもしれない。)
composer  (phpのツール。pearのようなもの。依存関係を解決してインストールするもの。drupalも含めた広い範囲の依存関係を解決しながらインストールできる。)    
がある。

で、今回、
Composerを使ってdrupal8をインストールする。

主にdrupalサイトのUsing Composer to manage Drupal site dependenciesを見ながらやった。

最初にcomposerのインストールから、
(getcomposer.orgのダウンロードページ、その中のCommand-line installationに説明がある。)
適当なディレクトリで
composerのインストーラーをcomposer-setup.phpという名前にしてネットからコピー。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

インストーラーを実行して実行ファイルを作成する。
php composer-setup.php

いらなくなったcomposer-setup.phpを削除する。
php -r "unlink('composer-setup.php');"

/usr/local/bin/にcomposerという名前で移し、どこからでも使えるようにする。
mv composer.phar /usr/local/bin/composer

最後に動作確認(composerのバージョンなどの表示)
composer

--------------------------------------------------------------------------------------
drupal8のインストール

Available starting templates
featuredrupal-composer/drupal-projectdrupal/drupal ^8.3.0
open sourceyesyes
directory structuredocroot is subdirdocroot is repo root
installer-paths configyesyes
repositories configyesyes
updates scaffold filesyesno
includes drushyesno
includes drupal consoleyesno
This table is from "Using Composer to manage Drupal site dependencies" of drupal's site.

表にあるように
drupal-composer/drupal-project
(ドキュメントルート下のwebといサブディレクトリにdrupalコアがインストールされる。)
drupal/drupal
(ドキュメントルートにdrupalのコアがインストールされる。)
の2種類のインストール方法がある。

とりあえず、drupal-composer/drupal-projectの方をやってみる。
下のコマンドでサイトがダウンロードされる。
composer create-project drupal-composer/drupal-project:8.x-dev /var/www/html/hogedru --stability dev --no-interaction

rootで進めると
Do not run Composer as root/super user! See https://getcomposer.org/root for details
といわれるが、ルートを抜けれるように止まるオプションがあるわけでもなく、どんどんインストールが進む。インストール後に所有者をapacheなどにしておけばいいのかな。
Package operations: 102 installs, 0 updates, 0 removals
と、結構な数がインストールされた。
/var/www/html/hogedru
にcomposer.jsonやdrushディレクトリ、その他が作られている。
/var/www/html/hogedru/web
がdrupal8のドキュメントルートになっている。


composer.jsonを見てみると、
drupal.orgのリポジトリURLが追加されている。

    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],


下の2行は、安定板がなければ、開発版を使う。安定板があれば安定板を優先して使う。という意味。devの他にはstable, RC, beta, alpha。
"minimum-stability": "dev",
    "prefer-stable": true,

スクリプトの実行。
pre-install、pre-update、post-install、post-updateの中で好きなタイミングでスクリプトを書いて実行できる。

   "scripts": {
        "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold",
        "pre-install-cmd": [
            "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
        ],
        "pre-update-cmd": [
            "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
        ],
        "post-install-cmd": [
            "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
        ],
        "post-update-cmd": [
            "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
        ]
    },


インストールパスを指定する。
"extra": {
        "installer-paths": {
            "web/core": ["type:drupal-core"],
            "web/libraries/{$name}": ["type:drupal-library"],
            "web/modules/contrib/{$name}": ["type:drupal-module"],
            "web/profiles/contrib/{$name}": ["type:drupal-profile"],
            "web/themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/contrib/{$name}": ["type:drupal-drush"]


ここで、インストール。
今、/var/www/html/hogedruの下にwebディレクトリがあって、それがdrupal8のルートになっている。

/var/www/html/hogedru
で、
composer install
すると、
composer.jsonの記述に従ってダウンロード、インストールされる。

その後、drushのインストールか、手動でmysqlデータベースを作って、いつものdrupal8インストール作業を開始する。

hogedruをルートとしたサイトが作られたのかと思ったが、hogedru/web/の中にdrupal本体が入っている。どういうこと?やってみないとわからない。

drupal/drupalのインストールは
composer create-project drupal/drupal /var/www/html/hogedru
こっちの場合は、htmlディレクトリにdrupalドキュメントルートhogedruが作られる。
これもインストール後にドキュメントルートにいろいろなファイルが作られる。
余計なファイルはいらないというのであれば、composerを使ってのインストールはやめた方がいいかもしれない。

-------------------------------------------------------------------------------------
composerを使ってモジュール、テーマをセットする。

composer require drupal/<modulename>
例えば:  composer require drupal/token

すると自動でcomposer.jsonがアップデートされる。

{
    "require": { 
        "drupal/token": "1.x-dev"
    }

composerはモジュールをダウンロードするけど、インストールはしない。
有効にするにはdrushを使うこと。
drush en <modulename> -y
モジュールのステータスを見るには
drush pm-list
を使うこと。
-------------------------------------------------------------------------------------
drupalでComposerを使ってみて。
まだよくわかっていない時点での感想。

使った感じではdrush8だけを使った方がシンプルでいいのかなぁ。
drupal8になってモジュールの互換性などを検証してインストールすることがdrush8でできないから、そういうところでcomposerを使う。ということになるのか?

同じ構造のdrupalの複製を簡単に作れる。というところがいいのかなぁ。composer.jsonに構造を書いて
composer install
で作って、それをコピーペーストして・・・。(そういう使い方でちゃんと使えるのかどうかは未検証。)

それで、それをdrushを使ってデータベースの設定とdrupal本体の最終インストールを自動で行う。

ちょこちょことモジュールを変えていろいろと試したいときは、いちいちモジュールをダウンロードして、インストールしてとやるよりは時間はかからないよなぁ。

--------------------------------------------------------------------------------------

----上の事を書き出す前にここに書いたこと。
今、drupal8のインストールをcomposerでやってみようと思ってネットで調べ始めた。

調べる前は、drupal7からdrupal8になってSymfonyが採用されたのでdrushと同じようなものが平行して開発されていて、それがComposerというもの。と思っていたのだけど、どうやらComposerって、phpのComposerの事を言っているんだよなぁ。とわかってきた。(後述: ComposerとConsoleを混同していた。ConsoleがSymfony用に開発されたものらしい。)

最初は、phpのComposerとdrupalのComposerは別物なのに名前が一緒か?と思っていたけど、同一の物だった。

とにかくComposerはphpのライブラリとかツール間の依存関係を調べてインストールすることのできるツールだから、drupal8もphpだし、symfonyなども含めた広い範囲でコントロールできるから便利に使いましょう。ということらしい。
Composer開発者側からしたら、drupal用の依存関係ものはデフォルトで入れる予定はないだろうから、そこは、drupalの開発側
がdrupal用のリポジトリを作って、それをComposerに組み込んで使うようにしているらしい。

drushの事もちょっと前にインストールしたばかりで何も知らないけど、drushはdrupalように開発されたものだから、それはそれで便利な機能もあるんでしょう。
なんてったって、composerは、yumみたいに依存関係とインストール専門らしいし・・・。できることは限られているし。




0 件のコメント:

コメントを投稿