ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)

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 件のコメント:

コメントを投稿