KUSANAGI-Deployコマンド

kusanagi-deploy-client

デプロイ元のKUSANAGI環境で実行するコマンドです。対象はkusanagi targetで表示されるプロファイル名です。

init

デプロイ元のKUSANAGI環境の初期設定を行います。

パラメータ

なし

使用例

# kusanagi-deploy-client init 
Enter the remote host to deploy.(ip or hostname)
192.168.34.21 # デプロイ先のIPアドレスまたはホスト名を入力します。
Re-type remote host to deploy.
192.168.34.21 # 確認の為に再入力します。

INFO: KUSANAGI environment on this client is ready to deploy your application.
INFO: If you check the status, Please run 'kusanagi-deploy-client status' command.

status

デプロイ元のKUSANAGI環境における現在の設定を確認します。

パラメータ

なし

使用例

# kusanagi-deploy-client status 
Configuration file is /root/kusanagi-deploy/client.d/web1.tokyo.conf
INFO: KUSANAGI_DEPLOYED_HOST=192.168.34.21
INFO: KUSANAGI_DEPLOYED_SSHD_PORT=22
INFO: KUSANAGI_DEPLOY_SRC_DIR=/home/kusanagi/web1/DocumentRoot
INFO: authentication key pair exists.

    If you do not add /root/.ssh/kusanagi-deploy-web1.pem.pub to the remote root user's ~/.ssh/authorized_keys.

    If the remote server permit to login as root,
    you can use the following commands.

    e.g.)
      $ ssh-copy-id -f -i /root/.ssh/kusanagi-deploy-web1.pem.pub root@192.168.34.21
      or
      $ ssh-copy-id -f -o "IdentityFile ${Identity file to login as root}" -i /root/.ssh/kusanagi-deploy-web1.pem.pub root@192.168.34.21
      or
      $ cat /root/.ssh/kusanagi-deploy-web1.pem.pub | ssh root@192.168.34.21'cat >> .ssh/authorized_keys'

上記の場合、下記の情報が設定されていることを意味しています。

  • デプロイ先のKUSANAGI環境のIPアドレスが192.168.34.21
  • デプロイ先のKUSANAGI環境のSSHDのポート番号は22
  • デプロイ元のKUSANAGI環境のディレクトリが/home/kusanagi/web1/DocumentRoot
  • キーペアは既に生成されている状態

キーペアのうち、公開鍵がデプロイ先のKUSANAGI環境の/root/.ssh/authorized_keysに追加されていない場合は追加します。
上記の場合、/root/.ssh/kusanagi-deploy-web1.pem.pubという公開鍵が生成されているので、これをデプロイ先のサーバの/root/.ssh/authorized_keysに任意の方法で追加します。
e.g.)ではサンプルとしていくつかの方法を表示しています。

なお、デプロイ先のIPアドレスなど一部の設定情報は/root/kusanagi-deploy/client.d/プロファイル名.confを編集することで変更可能です。

pull [--all|--no-shared]

デプロイ先のKUSANAGI環境から現在のソースコードを取得します。

パラメータ

--all 全てを取得します。パラメータ省略時のデフォルトです。
--no-shared デプロイ先のKUSANAGI環境のsharedディレクトリに含まれているファイルを除外して取得します。

使用例

# kusanagi-deploy-client pull
NOTICE:Source directory on deployment target (192.168.34.21) is /home/kusanagi/web2/DocumentRoot [Y/n]
y
INFO: There is enough disk space for the task. 
receiving incremental file list
created directory /home/kusanagi/web1/20180723-191328
./
.htaccess
index.php
license.txt
# 省略
wp-includes/widgets/class-wp-widget-media-video.php
wp-includes/widgets/class-wp-widget-media.php
wp-includes/widgets/class-wp-widget-meta.php
wp-includes/widgets/class-wp-widget-pages.php
wp-includes/widgets/class-wp-widget-recent-comments.php
wp-includes/widgets/class-wp-widget-recent-posts.php
wp-includes/widgets/class-wp-widget-rss.php
wp-includes/widgets/class-wp-widget-search.php
wp-includes/widgets/class-wp-widget-tag-cloud.php
wp-includes/widgets/class-wp-widget-text.php

Number of files: 1,764 (reg: 1,604, dir: 160)
Number of created files: 1,764 (reg: 1,604, dir: 160)
Number of deleted files: 0
Number of regular files transferred: 1,604
Total file size: 31,697,532 bytes
Total transferred file size: 31,697,532 bytes
Literal data: 31,697,532 bytes
Matched data: 0 bytes
File list size: 24,735
File list generation time: 0.003 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 31,359
Total bytes received: 10,806,502

sent 31,359 bytes  received 10,806,502 bytes  4,335,144.40 bytes/sec
total size is 31,697,532  speedup is 2.92
INFO: Download to /home/kusanagi/web1/20180723-191040.

上記の場合、/home/kusanagi/web1/20180723-191040にデプロイ先のKUSANAGI環境のソースコードがダウンロードされます。

なお、ダウンロード後のファイルパス上のファイルシステム容量が90%を超えると見積もられる場合、下記のメッセージを出し処理を中断します。

# kusanagi-deploy-client pull
NOTICE:Source directory on deployment target (172.16.125.27) is /home/kusanagi/web1/DocumentRoot [Y/n]
y

ERROR: Estimation of disk size on the target host is 97% after a task is completed.
Please make space available more than 10% of disk capacity.

diff

デプロイ元のKUSANAGI環境とデプロイ先のKUSANAGI環境におけるファイルの差分を確認します。

パラメータ

なし

使用例

# kusanagi-deploy-client diff
sending incremental file list
./
wp-config.php
wp-content/
wp-content/replace-class.php
wp-content/themes/twentyseventeen/
wp-content/themes/twentyseventeen/search.php
wp-content/uploads/
wp-content/uploads/.htaccess

sent 68,294 bytes  received 214 bytes  137,016.00 bytes/sec
total size is 30,863,710  speedup is 450.51 (DRY RUN)

    INFO: If you want to compare files like 'git diff' you can use the following commands.

    $ kusanagi-deploy-client pull
    $ diff -ru /home/kusanagi/web1/DocumentRoot /home/kusanagi/web1/%Y%m%d-%H%M%S

kusanagi-deploy-client diffでは差分ファイルのリストのみの表示なので、git diffのようなファイル内差分表示を行いたい場合は、上記で案内されているようにkusanagi-deploy-client pullコマンドとdiffコマンドを組み合わせて実現可能です。

deploy [--dry-run]

デプロイ元のKUSANAGI環境からデプロイ先のKUSANAGI環境へのデプロイを行います。

パラメータ

--dry-run 実際にデプロイを行わずにシミュレーションします。

使用例

# kusanagi-deploy-client deploy 
NOTICE:Source directory is /home/kusanagi/web1/DocumentRoot.
NOTICE:Destination directory on deployment target (192.168.34.21) is /home/kusanagi/web2/releases [Y/n]
y
INFO: There is enough disk space for the task.
sending incremental file list
created directory /home/kusanagi/web2/releases/20180723-200146
./
.htaccess
index.php
# 省略
Number of files: 1,746 (reg: 1,589, dir: 157)
Number of created files: 1,746 (reg: 1,589, dir: 157)
Number of deleted files: 0
Number of regular files transferred: 1,589
Total file size: 30,858,929 bytes
Total transferred file size: 30,858,929 bytes
Literal data: 30,858,929 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 9,973,519
Total bytes received: 31,129

sent 9,973,519 bytes  received 31,129 bytes  4,001,859.20 bytes/sec
total size is 30,858,929  speedup is 3.08
php7 を使用します
完了しました。

INFO: Deployment Success.

なお、デプロイ後のデプロイ先KUSANAGI環境のファイルパス上のファイルシステム容量が90%を超えると見積もられる場合、下記のメッセージを出し処理を中断します。

# kusanagi-deploy-client deploy 
NOTICE:Source directory is /home/kusanagi/web1/DocumentRoot.
NOTICE:Destination directory on deployment target (192.168.34.21) is /home/kusanagi/web2/releases [Y/n]
y

ERROR: Estimation of disk size on the target host is 95% after a task is completed.
Please make space available more than 10% of disk capacity.

kusanagi-deploy-server

デプロイ先のKUSANAGI環境で実行するコマンドです。対象はkusanagi targetで表示されるプロファイル名です。

init

デプロイ先のKUSANAGI環境の初期設定を行います。

パラメータ

なし

使用例

# kusanagi-deploy-server init 
INFO: created /home/kusanagi/web1/releases
INFO: created /home/kusanagi/web1/shared
INFO: created /root/kusanagi-deploy/server.d/web1.conf

INFO: KUSANAGI environment on this server is ready to deploy your application.

status

デプロイ先のKUSANAGI環境のステータスを表示します。

パラメータ

なし

使用例

# kusanagi-deploy-server status 

INFO: Configuration file is /root/kusanagi-deploy/server.d/web1.conf
INFO: KUSANAGI_DEPLOY_PROFILE=web1
INFO: KUSANAGI_DEPLOY_RELEASE_DIR=/home/kusanagi/web1/releases
INFO: KUSANAGI_DEPLOY_SHARED_DIR=/home/kusanagi/web1/shared
INFO: KUSANAGI_DEPLOY_APP=WordPress
INFO: KUSANAGI_DEPLOY_ROOT=/home/kusanagi/web1/DocumentRoot
INFO: DEPLOY_SHARED=wp-content/uploads wp-config.php wp-content/replace-class.php wp-content/advanced-cache.php
  • KUSANAGI_DEPLOY_RELEASE_DIRはファイルの実体が配備されたディレクトリです。
  • KUSANAGI_DEPLOY_SHARED_DIRはデプロイの影響を受けないファイルが置かれるディレクトリです。
  • KUSANAGI_DEPLOY_ROOTはデプロイ先の実体を指すディレクトリです。
  • DEPLOY_SHAREDはKUSANAGI_DEPLOY_ROOTからの相対パスでKUSANAGI_DEPLOY_SHARED_DIRに格納するファイルやディレクトリを意味します。
    /root/kusanagi-deploy/server.d/プロファイル名.confを編集することで変更できますが、kusanagi-deploy-server provision後は編集しないことが推奨されます

provision

デプロイ先のKUSANAGI環境のプロビジョニングを行います。

パラメータ

なし

使用例

# kusanagi-deploy-server provision 
Current deployment profile is 'web1' [Y/n]
y
INFO: created a symbolic link /home/kusanagi/web1/DocumentRoot/wp-content/uploads that points to /home/kusanagi/web1/shared/wp-content/uploads.
INFO: created a symbolic link /home/kusanagi/web1/DocumentRoot/wp-content/replace-class.php that points to /home/kusanagi/web1/shared/wp-content/replace-class.php.
INFO: created a symbolic link /home/kusanagi/web1/DocumentRoot/wp-content/advanced-cache.php that points to /home/kusanagi/web1/shared/wp-content/advanced-cache.php.
php7 を使用します
完了しました。
# ll
INFO: Provisioning has completed.
INFO: /home/kusanagi/web1/DocumentRoot points to /home/kusanagi/web1/releases/20180723-200136.
lrwxrwxrwx. 1 root     root      44  7月 23 21:46 DocumentRoot -> /home/kusanagi/web2/releases/20180723-200136
drwxr-xr-x. 4 kusanagi kusanagi  32  7月  9 16:44 log
drwxr-xr-x. 9 kusanagi kusanagi 167  7月 23 21:43 releases
drwxr-xr-x. 2 kusanagi kusanagi  34  5月  2 23:17 settings
drwxr-xr-x. 3 kusanagi kusanagi  45  7月 20 18:41 shared
drwxr-xr-x. 2 kusanagi kusanagi  30  7月  9 16:44 tools
# ll DocumentRoot/wp-content/
lrwxrwxrwx. 1 root     root      56  7月 23 21:46 advanced-cache.php -> /home/kusanagi/web2/shared/wp-content/advanced-cache.php
-rw-r--r--. 1 kusanagi kusanagi  28  1月  9  2012 index.php
drwxrwxrwx. 4 kusanagi kusanagi 215  4月  4 18:43 languages
drwxr-xr-x. 3 kusanagi kusanagi  83  5月  2 23:17 mu-plugins
drwxrwxrwx. 4 kusanagi kusanagi  81  4月  4 18:43 plugins
drwxr-xr-x. 5 kusanagi kusanagi  88  4月  4 18:43 themes
drwxr-xr-x. 2 httpd    www      168  5月 15 14:32 translate-accelerator
lrwxrwxrwx. 1 root     root      45  7月 23 21:46 uploads -> /home/kusanagi/web2/shared/wp-content/uploads

rollback [release directory]

デプロイ先のKUSANAGI環境の状態を直前のデプロイ状態へと変更します。

パラメータ

リリースディレクトリ名 ロールバックしたい任意のディレクトリ名を指定します。
省略した場合は直前のリリースディレクトリ名が選択されます。

使用例

# ll # 現在の状態を確認
lrwxrwxrwx. 1 root     root      44  7月 23 21:32 DocumentRoot -> /home/kusanagi/web2/releases/20180723-214344
drwxr-xr-x. 4 kusanagi kusanagi  32  7月  9 16:44 log
drwxr-xr-x. 9 kusanagi kusanagi 167  7月 23 21:32 releases
drwxr-xr-x. 2 kusanagi kusanagi  34  5月  2 23:17 settings
drwxr-xr-x. 3 kusanagi kusanagi  45  7月 20 18:41 shared
drwxr-xr-x. 2 kusanagi kusanagi  30  7月  9 16:44 tools
# ls -1 releases/ | sort -r
20180723-214344
20180723-212819
20180723-200146
20180723-200136
20180720-201909
20180719-184008
20180719-171730
# kusanagi-deploy-server rollback 
NOTICE:New release directory is /home/kusanagi/web2/releases/20180723-212819 [Y/n]?
y
php7 を使用します
完了しました。
INFO: rollback to 20180723-212819.
# ll # ロールバックしているか確認
合計 0
lrwxrwxrwx. 1 root     root      44  7月 23 21:35 DocumentRoot -> /home/kusanagi/web2/releases/20180723-212819
drwxr-xr-x. 4 kusanagi kusanagi  32  7月  9 16:44 log
drwxr-xr-x. 8 kusanagi kusanagi 144  7月 23 21:35 releases
drwxr-xr-x. 2 kusanagi kusanagi  34  5月  2 23:17 settings
drwxr-xr-x. 3 kusanagi kusanagi  45  7月 20 18:41 shared
drwxr-xr-x. 2 kusanagi kusanagi  30  7月  9 16:44 tools
# ls -1 releases/ | sort -r
20180723-214344
20180723-212819
20180723-200146
20180723-200136
20180720-201909
20180719-184008
20180719-171730
# kusanagi-deploy-server rollback 20180723-200136
NOTICE:New release directory is /home/kusanagi/web2/releases/20180723-200136 [Y/n]?
y
php7 を使用します
完了しました。
INFO: rollback to 20180723-200136.
# ll # ロールバックしているか確認
合計 0
lrwxrwxrwx. 1 root     root      44  7月 23 21:37 DocumentRoot -> /home/kusanagi/web2/releases/20180723-200136
drwxr-xr-x. 4 kusanagi kusanagi  32  7月  9 16:44 log
drwxr-xr-x. 8 kusanagi kusanagi 144  7月 23 21:35 releases
drwxr-xr-x. 2 kusanagi kusanagi  34  5月  2 23:17 settings
drwxr-xr-x. 3 kusanagi kusanagi  45  7月 20 18:41 shared
drwxr-xr-x. 2 kusanagi kusanagi  30  7月  9 16:44 tools
# ls -1 releases/ | sort -r
20180723-214344
20180723-212819
20180723-200146
20180723-200136
20180720-201909
20180719-184008
20180719-171730