Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
前回は Web Application Gallery の概要についてご紹介しました。今回は Web Application Gallery への登録手順 3つのうち、最初の「OSS アプリのパッケージング」方法を WordPress 3.1 英語版のパッケージを例にご紹介申し上げます。
なお、パッケージングについての詳しい解説は下記URL に記載しています。
<Package an Application for the Windows Web Application Gallery: 英語>
https://learn.iis.net/page.aspx/578/package-an-application-for-the-windows-web-application-gallery/
■ パッケージング概要
パッケージは zip ファイル形式で、その中に下記のものが含まれます。
- アプリケーション フォルダー:OSS アプリケーションのフォルダー
- manifest.xml: インストールの指示内容を記載
- parameters.xml: インストール時にユーザーに入力させるパラメーターを記載
- install.sql : データベースユーザーのアクセス権設定に関するSQL のスクリプト。定型
WordPress 3.1 英語版のパッケージの場合 wordpress-3.1-IIS.zip がパッケージで、その中は下記のようになっています。
これから、zip ファイルに含まれる各項目について紹介してまいります。
■ アプリケーション フォルダー の構成
アプリケーション フォルダーは OSS アプリケーションのフォルダーそのものになります。WordPress 3.1 英語版の場合、下記の図のように「wordpress」フォルダーに WordPress 3.1 英語版のファイルをそのまま格納します。
■ manifest.xml の作成
manifest.xml はインストールの指示内容を記載します。具体的には、Web サイト、アクセス権、データベーススクリプト、ファイルコピーの4つについて設定が可能です。以下のWordPress 3.1 英語版の manifest.xml をもとに説明します。
<MSDeploy.iisApp> <iisApp path="wordpress"/> <dbmysql path="install.sql" /> <setAcl path="wordpress/wp-content" setAclUser="anonymousAuthenticationUser" setAclAccess="Modify" /> <alias from="wordpress/wp-config-sample.php" to="wordpress/wp-config.php" /> </MSDeploy.iisApp> |
図 WordPress 3.1 英語版の manifest.xml
Web サイトの設定
Web サイトの設定には、<iisApp> タグを使用します。
- pathの値は、アプリケーションフォルダー名をそのまま入れてください。
アクセス権の設定
アクセス権の設定には、<setAcl> タグを使用します。
- path の値は、フォルダー、ファイル名どちらでも結構ですが、アプリケーションフォルダー名から記述してください。
- setAclUser の値は anonymousAuthenticationUser を指定してください。
- アクセス権を setAclAccess で設定しますが、下記を参考にして指定してください。
Linux | Windows |
0 | なし |
1 | Execute |
2 | Write |
3 | Write,Execute |
4 | Read |
5 | ReadAndExecute |
6 | Read,Write |
7 | Modify |
データベーススクリプトの設定
インストール時にデータベースが作成されますが、その後のデータベーススクリプトを実行したい場合に使用します。MySQL をデータベースとして使用する場合、<dbmysql path="install.sql" /> の記載のみで結構ですが、他にスクリプトを追加したい場合は、<dbmysql path="install2.sql" /> のようにmanifest.xml に追加してください。
* SQL Server の場合は <dbfullsql> タグを使用します。
ファイルコピーの設定
Config のサンプルファイルをコピーして使用する場合等、ファイルをコピーする場合には、<alias> タグを使用します。from と to にファイル名を入力します。ファイル名はアプリケーションフォルダー名から記述してください。
■ parameters.xml の作成 (UTF-8 で保存してください)
parameters.xml はインストール時にユーザーに入力させるパラメーターを記載します。パラメーターはいくつも設定可能ですが、Web サイト、アクセス権、データベースは必ず設定します。以下のWordPress 3.1 英語版の parameters.xml をもとに説明します。
<parameters> <!—- Web サイトのパラメーター --> <parameter name="AppPath" defaultValue="Default Web Site/wordpress" tags="iisapp"> <parameterEntry type="ProviderPath" scope="iisapp" match="wordpress" /> </parameter> <!—- アクセス権のパラメーター --> <parameter name="SetAclParameter1" defaultValue="{AppPath}/wp-content" tags="Hidden"> <parameterEntry type="ProviderPath" scope="setAcl" match="wordpress/wp-content$" /> </parameter> <!—- アクセス権データベース作成用のパラメーター –-> <parameter name="DbServer" defaultValue="l27.0.0.1" tags="MySQL,dbServer" /> <parameter name="DbName" defaultValue="wordpress" tags="MySQL,dbName"> <parameterValidation type="RegularExpression" validationString="^\w{1,16}$" /> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbName" /> </parameter> <parameter name="DbUsername" defaultValue="wordpressuser" tags="MySQL,DbUsername"> <parameterValidation type="RegularExpression" validationString="^\w{1,16}$" /> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbUsername" /> </parameter> <parameter name="DbPassword" tags="New,Password,MySQL,DbUserPassword"> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbPassword" /> </parameter> <parameter name="DbAdminUsername" defaultValue="root" tags="MySQL,DbAdminUsername" /> <parameter name="DbAdminPassword" tags="Password,MySQL,DbAdminPassword" /> <parameter name="Connection String" defaultValue="Server={DbServer};Database={DbName};uid={DbAdminUsername};Pwd={DbAdminPassword};" tags="Hidden,MySQLConnectionString,Validate,MySQL"> <parameterEntry type="ProviderPath" scope="dbmysql" match="install.sql" /> </parameter> <!—- WebMatrix の発行用のパラメーター –-> <parameter name="Automatic Database Server PHP File" defaultValue="define('DB_HOST', '{DbServer}');" tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_HOST', '[^']*'\);" /> </parameter> <parameter name="Automatic Database Name PHP File" defaultValue="define('DB_NAME', '{DbName}');" tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_NAME', '[^']*'\);" /> </parameter> <parameter name="Automatic Database Username PHP File" defaultValue="define('DB_USER', '{DbUsername}');" tags="Hidden,MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_USER', '[^']*'\);" /> </parameter> <parameter name="Automatic Database Password PHP File" defaultValue="define('DB_PASSWORD', '{DbPassword}');" tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_PASSWORD', '[^']*'\);" /> </parameter> <!—- OSS アプリケーション独自のパラメーター ––> <parameter name="Key1" friendlyName="Unique Key for Passwords" description="Unique phrase used to strengthen your password." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" match="(?<='AUTH_KEY',[ ]+')put your unique phrase here" scope="wordpress\\wp-config.php" /> </parameter> <parameter name="Key2" friendlyName="Unique Key for Secure Passwords" description="Different unique phrase used to strengthen SSL passwords." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=SECURE_AUTH_KEY',[ ]+')put your unique phrase here" /> </parameter> <parameter name="Key3" friendlyName="Unique Key for Authentication" description="Different unique phrase used to strengthen authentication." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=LOGGED_IN_KEY',[ ]+')put your unique phrase here" /> </parameter> <parameter name="Key4" friendlyName="Second Unique Key for Authentication" description="Another unique phrase used to strengthen authentication." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=NONCE_KEY',[ ]+')put your unique phrase here" /> </parameter> </parameters> |
図 WordPress 3.1 英語版の parameters.xml(コメント欄は削除、<parameter> タグは一部移動)
Web サイトのパラメーター
Web Platform Installer でインストールする際に Web サイトを変更する事ができるため、Web サイトのパラメーターの記述は必須となります。
Web サイトのパラメーターは、下記のように記述します。(1) の値は、manifest.xml の欄で説明した <iisApp> タグの path の値を記述してください。WordPress 3.1 英語版では、「wordpress」となります。なお、<parameterEntry> タグの match の値は正規表現で記述可能です。
<parameter name="AppPath" defaultValue="Default Web Site/ (1) " tags="iisapp"> <parameterEntry type="ProviderPath" scope="iisapp" match=" (1) " /> </parameter> |
アクセス権のパラメーター
Web サイトの値を変更するとアクセス権の対象となるフォルダーも変更となるため、アクセス権のパラメーターの記述は必須となります。
アクセス権のパラメーターは下記のように記述します。(2) の値は、manifest.xml の欄で説明した <setAcl> タグの path の値ですが、Web サイトのところは {AppPath} と記述してください。WordPress 3.1 英語版では、「{AppPath}/wp-content」となります。(3) の値は、manifest.xml の欄で説明した <setAcl> タグの path の値をそのまま記述してください。WordPress 3.1 英語版では、「wordpress/wp-content」となります。
なお、<parameter> タグの tags=”Hidden” とする事で、このパラメーターをユーザーが直接入力できないようにする事ができます。、<parameterEntry> タグの match の値にある「$」は正規表現の「文字列の終端」を意味します。
<parameter name="SetAclParameter1" defaultValue=" (2) " tags="Hidden"> <parameterEntry type="ProviderPath" scope="setAcl" match=" (3) $" /> </parameter> |
データベースの作成用パラメータ
Web Platform Installer でインストールする際に OSS アプリケーション用のデータベースを作成しますので、下記のパラメーターの記述は必須となります。WordPress 3.1 英語版をベースとした場合の変更箇所は下記になります。
- <parameter> タグ 「DbName」と「DbUsername」の defaultValue の値は必須で変更してください。
- <parameter> タグ内に <parameterValidation> タグを記載すると入力規則が有効になります。必要に応じて追加、削除してください。
<parameter name="DbServer" defaultValue="l27.0.0.1" tags="MySQL,dbServer" /> <parameter name="DbName" defaultValue="wordpress" tags="MySQL,dbName"> <parameterValidation type="RegularExpression" validationString="^\w{1,16}$" /> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbName" /> </parameter> <parameter name="DbUsername" defaultValue="wordpressuser" tags="MySQL,DbUsername"> <parameterValidation type="RegularExpression" validationString="^\w{1,16}$" /> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbUsername" /> </parameter> <parameter name="DbPassword" tags="New,Password,MySQL,DbUserPassword"> <parameterEntry type="TextFile" scope="install.sql" match="PlaceholderForDbPassword" /> </parameter> <parameter name="DbAdminUsername" defaultValue="root" tags="MySQL,DbAdminUsername" /> <parameter name="DbAdminPassword" tags="Password,MySQL,DbAdminPassword" /> <parameter name="Connection String" defaultValue="Server={DbServer};Database={DbName};uid={DbAdminUsername};Pwd={DbAdminPassword};" tags="Hidden,MySQLConnectionString,Validate,MySQL"> <parameterEntry type="ProviderPath" scope="dbmysql" match="install.sql" /> </parameter> |
WebMatrix の発行用のパラメータ
WebMaMatrix で発行する時に必要となるパラメーターの記述です。こちらも必須のパラメーターになります。OSS アプリのインストール時にデータベースが作成される時に使用したパラメータの値をコンフィグファイル(例:wp-config.php)に書き込むために必要なパラメーターになります。
WordPress 3.1 英語版をベースとした場合の変更箇所は下線をひいています。
- 各 <parameter> タグの defaultValue の値はコンフィグファイルに書き込まれる値にしてください。{}の中には先程説明したデータベース作成用のパラメータの名前を入力してください。defaultValue には 例えば{DbServer} だけでなく、その値が含まれる行全体を記述してください。
- <parameterEntry> タグ内の scope の値はコンフィグファイルの名前にしてください。正規表現で記述可能です。
- <parameterEntry> タグ内の match の値は defaultValue の値を正規表現で記述してください。
<parameter name="Automatic Database Server PHP File" defaultValue="define('DB_HOST', '{DbServer}'); " tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_HOST', '[^']*'\); " /> </parameter> <parameter name="Automatic Database Name PHP File" defaultValue="define('DB_NAME', '{DbName}'); " tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_NAME', '[^']*'\); " /> </parameter> <parameter name="Automatic Database Username PHP File" defaultValue="define('DB_USER', '{DbUsername}'); " tags="Hidden,MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_USER', '[^']*'\); " /> </parameter> <parameter name="Automatic Database Password PHP File" defaultValue="define('DB_PASSWORD', '{DbPassword}'); " tags="Hidden, MySQL"> <parameterEntry type="TextFile" scope="wp-config.php$" match="define\('DB_PASSWORD', '[^']*'\); " /> </parameter> |
WordPress 3.1 英語版の場合、上述のように記載する事で Web Platform Installer でのインストール時、および WebMatrix の発行コマンドを使用時にwp-config.php の下記の値が自動的に更新されます。
/** MySQL hostname */ define('DB_HOST', 'localhost'); define('DB_NAME', 'database_name_here'); /** MySQL database username */ define('DB_USER', 'username_here'); /** MySQL database password */ define('DB_PASSWORD', 'password_here'); |
図 WordPress 3.1 英語版の wp-config.php(一部抜粋)
OSS アプリケーション独自のパラメータ
OSS アプリのインストール時に、アプリ独自のパラメーター値をコンフィグファイルへの書き込む必要がある場合には、OSS アプリケーション独自のパラメータを記述する事ができます。記述方法は先程の WebMatrix 発行用のパラメーターとほぼ同じですが、ユーザーが入力する必要のあるパラメーターのため、<parameter> タグの tags の値が NoStore である事と、<parameterValidation> を利用可能である点が異なります。
WordPress 3.1 英語版の場合は下記のようになります。
<parameter name="Key1" friendlyName="Unique Key for Passwords" description="Unique phrase used to strengthen your password." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" match="(?<='AUTH_KEY',[ ]+')put your unique phrase here" scope="wordpress\\wp-config.php" /> </parameter> <parameter name="Key2" friendlyName="Unique Key for Secure Passwords" description="Different unique phrase used to strengthen SSL passwords." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=SECURE_AUTH_KEY',[ ]+')put your unique phrase here" /> </parameter> <parameter name="Key3" friendlyName="Unique Key for Authentication" description="Different unique phrase used to strengthen authentication." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=LOGGED_IN_KEY',[ ]+')put your unique phrase here" /> </parameter> <parameter name="Key4" friendlyName="Second Unique Key for Authentication" description="Another unique phrase used to strengthen authentication." defaultValue="put your unique phrase here" tags="NoStore"> <parameterValidation type="RegularExpression" validationString="^[^'\\]+$" /> <parameterEntry type="TextFile" scope="wordpress\\wp-config.php" match="(?<=NONCE_KEY',[ ]+')put your unique phrase here" /> </parameter> |
WordPress 3.1 英語版の場合、上述のように記載する事で Web Platform Installer でのインストール時に wp-config.php の下記の値が自動的に更新されます。
define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); |
図 WordPress 3.1 英語版の wp-config.php(一部抜粋)
■ install.sql の作成
install.sql は、OSS アプリケーションのインストール時に作成されるデータベースのアクセス権設定に関するSQL のスクリプトを記述します。こちらは定型ですので下記をコピー&ペーストしてください。
USE PlaceholderForDbName; DROP PROCEDURE IF EXISTS add_user ; CREATE PROCEDURE add_user() BEGIN DECLARE EXIT HANDLER FOR 1044 BEGIN END; GRANT ALL PRIVILEGES ON PlaceholderForDbName.* to 'PlaceholderForDbUsername'@'localhost' IDENTIFIED BY 'PlaceholderForDbPassword'; FLUSH PRIVILEGES; END ; CALL add_user() ; DROP PROCEDURE IF EXISTS add_user ; |
以上で、OSS アプリケーションのパッケージング作業は完了です。続いては、パッケージのテスト作業をご紹介します。
武田正樹