kusanagi provisionでWebサイトをプロビジョンする

謝 永佳

Webサイトを公開するために必要なKUSANAGIコマンドの紹介と解説。プロビジョニング作業を行う「kusanagi provision」コマンドは、Webサーバーの基本設定やパッケージのダウンロード、データベースの作成などを行います。WordPress、MovableType、Drupal、LAMP(LEMP)、Perl CGIのプロビジョニングに対応。規定のオプションに加えて、利用を予定しているプロビジョニングの種類毎に指定できるオプションも紹介します。具体的なコマンドラインオプションの使用例と、プロビジョニング後に生成されるファイルやフォルダの詳細な解説も提供しています。

前回はkusanagi initの解説をしましたが、その続きにWebサイトを外部からアクセスさせるためにプロビジョニング作業が必要です。その作業で行うコマンドはkusanagi provisionコマンドになります。

kusanagi provisionコマンドはWebサーバーの基本設定や必要なパッケージのダウンロードと設置、データベースの作成の作業を行うコマンドです。
現在kusanagi provisionでサポートしているプロビジョンニングの種類はWordPress、MovableType、Drupal、LAMP(LEMP)、Perl CGIになります。

各種類プロビジョン時に指定必要なオプションと種類毎に指定できるオプション、プロビジョニング後に設置されたファイルやフォルダについて解説します。

では、早速ですがコマンドのオプションの紹介に入りたいと思います。

必須のコマンドラインオプション

プロファイル名

オプション: profile

/home/kusanagiに指定したプロファイル名と同じ名前のフォルダが作成されます。
プロファイル名に指定できる文字は「A~Z、a~z、0~9、.、_、-」です。文字列の長さは3~24文字である必要があります。

プロビジョニングの種類

オプション: --wp、--WordPress、--lamp、--LAMP、--fcgi、--FCGI、--mt、--MT、--MovableType、--drupal、--Drupal

プロビジョニングできる種類によって指定するオプション

  • WordPressを利用する場合オプションに --wp もしくは --WordPress を指定してください。
  • MovableTypeを利用する場合オプションに --mt もしくは --MT もしくは --MovableType を指定してください。
    「KUSANAGI」でMovable Type を簡単セットアップの動画も参考にしてください。
  • Drupalを利用する場合オプションに --drupal もしくは --Drupal を指定してください。
  • LAMP もしくは LEMPを利用する場合オプションに --lamp もしくは --LAMP を指定してください。
  • Perl CGIを利用する場合オプションに --fcgi もしくは --FCGI を指定してください。(LAMP もしくは LEMPとしても動作します。)

ホスト名

オプション: --fqdn ホスト名

こちらのオプションはプロビジョンされたプロファイルに外部からのアクセス用のホスト名を指定します。
APEXを指定した場合、自動的にwwwのサブドメインが追加されます。
※APEXはサブドメインを含まない、ドメイン自体のことです。例:kusanagi.tokyo

データベース名

オプション: --dbname データベース名

プロビジョンされたプロファイル用の新規作成データベースの名前です。
データベース名に指定できる文字は「A~Z、a~z、0~9、.、_、-」です。文字列の長さは3~64文字である必要があります。

データベースユーザー名

オプション: --dbuser データベースユーザー名

上記で作成されたデータベースにアクセスするためのユーザー名になります。
ユーザー名に指定できる文字は「A~Z、a~z、0~9、.、_、-」です。文字列の長さは3~16文字である必要があります。

データベースユーザーのパスワード

オプション: --dbpass パスワード

上記で設定したデータベースユーザーのパスワードになります。
データベースユーザーのパスワードに指定できる文字は「A~Z、a~z、0~9、.、!、#、%、+、_、-」です。文字列の長さは8文字以上である必要があります。

Let’s Encrypt のSSL証明書

オプション: --email --noemail/--no-email

プロビジョン時に一緒にLet’s Encrypt のSSL証明書も発行したい場合、「--email メールアドレス」を入力してください。
※事前にホスト名が外部サーバーからアクセスできるように設定が必要です

オプション --noemail もしくは --no-email を指定するとLet’s Encrypt のSSL証明書を発行しません。

共通の追加オプション

明示的にwwwつきのホスト名(FQDN)を追加

オプション: [--with-www]

オプション--fqdnに設定されたFQDNの前に更にサブドメインwwwを追加する場合、こちらのオプションを指定できます。
例: --fqdn example.kusanagi.tokyo --with-www
  プロビジョン時に上記のようなオプションを指定すると
  FQDNはexample.kusanagi.tokyoとwww.example.kusanagi.tokyoにプロビジョンされます。

プロビジョニングの種類関連の追加オプション

プロビジョニングの種類によって、追加で指定できるオプションです。
指定しなかったらデフォルト値が設定されます。

WordPress言語の設定(WordPress)

オプション: [--wplang {en_US|ja}]
デフォルトは ja です

WordPressの利用言語を指定できます。
他の言語もしくは英語で設定したい場合、 en_US を指定し、WordPressのインストール時に言語を選択できるようになります。

WordPressバージョンの設定(WordPress)

オプション: [--wpversion WordPressバージョン]
デフォルトは latest です。

最新版以外のWordPressをインストールしたい場合、こちらのオプションで指定できます。
例:「--wpversion 5.9.5」で指定したら、WordPress 5.9.5がインストールされます。

Drupalのバージョンの設定(Drupal)

オプション: [--drupalversion Drupalバージョン]
デフォルトは 9 です。

指定できるバージョンは9もしくは10になります。

Movable Typeのパッケージの設定(Movable Type)

オプション: [--package パッケージ名]
デフォルトはなしです。

指定しなかった場合は、プロビジョニング後に手動でMovable Type のアプリケーションを配置する必要があります。
MovableTypeのパッケージダウンロードはライセンスの購入が必要のため、
ご自身でライセンスを購入後にパッケージをダウンロード、サーバーにアップロードし、オプション --package でパッケージのファイル名を指定してください。
パッケージの形式はzip、tar.gzの両方に対応しています。

これでkusanagi provisionコマンドオプションを一通り紹介しました。
では、実際に一回プロビジョンしてみましょう。

モデルケース

WordPressを利用するWebサイトをプロビジョンします。

$kusanagi provision --wp --fqdn wordpress.localhost-test.com --dbuser wp-user --dbname wp-dbname --dbpass パスワード --no-email wp-example
Target directory is /home/kusanagi/wp-example.
provision mariadb completed.
provision db completed.
--2023-02-20 18:17:43--  https://ja.wordpress.org/latest-ja.zip
Resolving ja.wordpress.org (ja.wordpress.org)... 198.143.164.252
Connecting to ja.wordpress.org (ja.wordpress.org)|198.143.164.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25242251 (24M) [application/zip]
Saving to: '/tmp/wp_dl_dir.baVueQ/wordpress.zip'

     0K .......... .......... .......... .......... ..........  0%  283K 87s
     ~~~略~~~
 24650K                                                       100% 1213G=8.0s

2023-02-20 18:17:52 (3.02 MB/s) - '/tmp/wp_dl_dir.baVueQ/wordpress.zip' saved [25242251/25242251]

Success: Shuffled the salt keys.
reload completed.
Provisioning of wp-example completed. Access wordpress.localhost-test.com and install wp.
provision completed.

provision completed.と表示されたら、プロビジョンが完了です。

サイトにアクセスするとWordPressのインストール画面が表示されます。

WordPressインストール画面

プロビジョン後にどういうフォルダやコンフィグなどが作成されたかも確認してみましょう。

Webサーバーの関連コンフィグ

$ ls -l /etc/opt/kusanagi/httpd/conf.d/wp-example.*
-rw-r--r--. 1 root root 2097 2月 20 18:17 /etc/opt/kusanagi/httpd/conf.d/wp-example.conf

$ ls -l /etc/opt/kusanagi/nginx/conf.d/wp-example.*
-rw-r--r--. 1 root root 1757 2月 20 18:17 /etc/opt/kusanagi/nginx/conf.d/wp-example.conf
-rw-r--r--. 1 root root 1310 2月 20 18:17 /etc/opt/kusanagi/nginx/conf.d/wp-example.wp.inc

httpdとnginxの設定フォルダに上記の関連コンフィグファイルが追加されました。
WordPressをプロビジョンしたのため、/etc/opt/kusanagi/nginx/conf.d/wp-example.wp.incに追加されましたが、
プロビジョニングの種類により追加されるファイルが違います。

  • WordPressの場合:/etc/opt/kusanagi/nginx/conf.d/プロファイル名.wp.inc
  • MovableTypeの場合:/etc/opt/kusanagi/nginx/conf.d/プロファイル名.mt.inc
  • Drupalの場合:/etc/opt/kusanagi/nginx/conf.d/プロファイル名.drupal.inc
  • LAMPの場合:/etc/opt/kusanagi/nginx/conf.d/プロファイル名.lamp.inc
  • FASTCGIの場合:/etc/opt/kusanagi/nginx/conf.d/プロファイル名.fcgi.inc

今回、中身の確認は割愛をします。

プロファイル関連フォルダ

/home/kusanagi/プロファイル名で確認すると下記のフォルダが作成されています。

$ ls -l /home/kusanagi/wp-example/
合計 12
drwxrwxr-x. 5 kusanagi www 4096 2月 20 18:17 DocumentRoot
drwxr-xr-x. 4 root root 32 2月 20 18:17 log
drwxr-xr-x. 2 kusanagi kusanagi 34 11月 15 15:15 settings
drwxr-xr-x. 2 kusanagi kusanagi 30 2月 20 18:17 tools
-r--r-----. 1 kusanagi www 4151 2月 20 18:17 wp-config.php

各フォルダの役割

「settings、tools」の2つのフォルダはWordPressをプロビジョンした時のみ生成されます。

  • DocumentRoot:Webサイトからアクセスのルートフォルダになります(今回はWordPressのファイルが配置されます)
  • log:httpdとnginxのアクセスログなどを格納するフォルダになります。
  • settings:KUSANAGI最適化関連の設定
  • tools:KUSANAGIツール

KUSANAGIを利用してWebサイトを公開しているなら、kusanagi provisionは必ず利用されるコマンドと思います。
プロビジョニング後にWebサイトが動作していることはサイトにアクセスすればすぐ確認できるが、実際のプロビジョン時にそのオプションはどういう時に使用するか、プロビジョン後にどういうフォルダやファイルが作成されるかの参考になればよいと思います。

<< kusanagi initでKUSANAGIの初期設定を簡単に実行するkusanagi ratelimit で行うDoS攻撃対策解説 >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解