Drupalの初回デプロイメント#
1. 準備を整えましょう#
初回のデプロイメントを成功させるためには、DrupalプロジェクトがLagoon化されていることと、Lagoonでプロジェクトをセットアップしていることを確認してください。そうでない場合でも心配はいりません!ステップバイステップガイドを参照してください。
2. プッシュ#
Lagoon を利用している場合、デプロイ用に設定されたブランチに push することで新しいデプロイを作成できます。
新しいコードをpushする必要がない場合でも心配はいりません、以下のコマンドを実行できます。
プッシュが実行されると、Gitホスティングが設定済みのWebhookを介してLagoonに通知します。
すべて正常であれば、設定済みのチャットシステムに通知が表示されます。(設定についてはLagoon管理者に問い合わせてください):
この通知は、Lagoonがコードのデプロイを開始したことを示しています。デプロイ時間は、コードベースのサイズとコンテナの数によって数秒かかります。しばらくお待ちください。現在の状況を確認したい場合は、Lagoonのビルドとデプロイプロセスを参照してください。
デプロイの進行状況は、LagoonUIでも確認できます。(URLがわからない場合は、Lagoon管理者に問い合わせてください)
3. 失敗#
.lagoon.yml
ファイルで定義されているデプロイ後処理タスクによっては、drush updb
やdrush cr
などのタスクを実行している可能性があります。これらのDrushタスクは、環境内にデータベースが存在することを前提としていますが、デプロイ直後では当然ながらデータベースは存在しません。この問題を解決する方法を次に説明します。
4. ローカルデータベースをリモートのLagoon環境に同期#
Lagoonは完全なDrushサイトエイリアスをサポートしており、ローカルデータベースとリモートのLagoon環境を同期させることができます。
警告
次のステップの前に、pygmyに公開キーを登録する必要があるかもしれません。
Permission denied (publickey)
などのエラーが発生した場合、こちらのドキュメントを参照してください:pygmy - sshキーの追加
まずは、Drush サイトエイリアスを確認してみましょう:
このコマンドを実行すると、現在デプロイ済みの環境が取得されます(最新の状態は、develop
ブランチにプッシュした時点のものと仮定します):
これにより、ローカルデータベース(Drushではサイトエイリアス@self
で表されます)とリモートデータベース(@develop
)を同期することができます。
次のような結果が表示されるはずです:
[drupal-example]cli-drupal:/app$ drush sql-sync @self @develop
You will destroy data in ssh.example.com/drupal and replace with data from drupal.
Do you really want to continue? (y/n): y
Starting to dump database on Source. [ok]
Database dump saved to /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz [success]
Starting to discover temporary files directory on Destination. [ok]
You will delete files in drupal-example-develop@ssh.example.com:/tmp/drupal_20180227_075815.sql.gz and replace with data from /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz
Do you really want to continue? (y/n): y
Copying dump file from Source to Destination. [ok]
Starting to import dump file onto Destination database.
さて、再度デプロイを試してみましょう。今度は空のプッシュです:
今度はすべて正常に動作するはずです:
通知内のリンクをクリックすると、Drupalサイトがすべての機能を備えてロードされた状態を確認できます。おそらくまだ画像は表示されていませんが、それはステップ5で処理します。
デプロイが依然として失敗する場合は、詳細情報を確認するためにログリンクをクリックしてください。
5. ローカルファイルをリモートのLagoon環境に同期#
おそらく予想通りですが、Drushを使って同期できます:
次のような表示が出るはずです:
[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files
You will delete files in drupal-example-develop@ssh.example.com:/app/web/sites/default/files and replace with data from /app/web/sites/default/files/
Do you really want to continue? (y/n): y
しかし、場合によっては、このように正しく表示されないこともある:
[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files
You will delete files in drupal-example-develop@ssh.example.com:'/app/web/%files' and replace with data from '/app/web/%files'/
Do you really want to continue? (y/n):
この理由は、Drupalがファイルディレクトリのパスを解決できないためです。これはおそらく、Drupalが完全設定されていないか、データベースが存在しないことが原因です。回避策としてはdrush rsync @self:sites/default/files @develop:sites/default/files
を使用できます。しかし、実際にはローカルとリモートの Drupal を確認することをお勧めします (drush status
コマンドを使用して、ファイルディレクトリが正しく設定されているかどうかを確認できます)
6. 完了#
Lagoonがビルドとデプロイを完了すると、チャットシステムに次のような2回目の通知が送信されます。:
通知は次のような内容を示しています:
- デプロイされたプロジェクト
- デプロイされたブランチとGit SHA
- ビルドとデプロイのログへのリンク
- 環境にアクセスできるすべてのルート(URL)へのリンク
これで作業は完了です! DevOpsを簡単にできるようにすることが私たちの目標です。
しかし、他のブランチや本番環境はどうなるのでしょうか?#
Lagoonの優れた点は、まったく同じ方法で処理できることです。本番環境ブランチとして定義したブランチ名をプッシュすると、そのブランチがデプロイされます。
デプロイの失敗#
デプロイが失敗しましたか? 心配しないでください。ヘルプを用意しています:
- エラー通知内の
logs
リンクをクリックします。デプロイプロセスでどこで失敗したかがわかります。 - 問題が解決できない場合は、Lagoon管理者に連絡してください。サポートいたします!