WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FTPのProvisioning

次にFTP仮想ディレクトリを作成します。
FTPはWebサイトのようにホストヘッダーなどでサイト判別することができないので、IISではルートのFTPサイト配下に仮想ディレクトリを配置することでマルチユーザーに対応することができます。
これらホスティング仕様設定に関しては、別コーナーにて後ほど紹介するつもりです。
 

Dim objAppPools As New DirectoryEntry("IIS://localhost/MSFTPSVC/1/ROOT")
Dim objAppPool As DirectoryEntry = objAppPools.Invoke("Create", "IIsFtpVirtualDir", "NewUser")
objAppPool.Invoke("Put", "Path", "C:\WebSite\NewSite")
objAppPool.Invoke("Put", "AccessFlags", 3) '1 + 2 AccessRead + AccessWrite
objAppPool.Invoke("SetInfo"
 

Webサイトのように複雑は設定はありません。


スポンサーサイト

IISのProvisioning

これから紹介するのはIIS6.0に対してのプロビジョニングです。
IISにサイトを作成する場合一般的にはIISの管理ツールによりGUIベースで行うことが可能です。
ですが、ホスティングサーバーとして使用する場合には、自動的にそれらの設定を完了させるといった要件が発生します。
 
Webサイトを作成する場合、IISに対して働きかけるプロバイダが2種類あります。
1つはWMI(Windows Management Instrumentation)、もう1つはADSI(Active Directory Service Interfaces)です。
当初、両方のインターフェースを用いた方法をご紹介しようと考えていたのですが、WMIのサイト作成時のプロパティー設定においてバグと思われる部分があり、その回避方法が確認できておりません。
ですので、ここではADSIに限定してご紹介しようと思います。
まずはじめは、Webサイトの作成からです。
 

Imports System.IO
Imports System.DirectoryServices

'Webサイトの元となるディレクトリを作成

Dim strDirectoryPath As String = "C:\WebSite\NewSite"
If Not System.IO.Directory.Exists(strDirectoryPath) Then
    Directory.CreateDirectory(strDirectoryPath)
End If

'アプリケーションプールの作成
Dim objAppPools As New DirectoryEntry("IIS://localhost/W3SVC/AppPools")
Dim objAppPool As DirectoryEntry = objAppPools.Invoke("Create", "IIsApplicationPool", "新しいアプリケーションプール")
objAppPool.Invoke("Put", "AppPoolIdentityType", 3)
objAppPool.Invoke("Put", "WAMUserName", "Account")
objAppPool.Invoke("Put", "WAMUserPass", "Password")
objAppPool.Invoke("SetInfo")

'IISWebサービスの取得
Dim objWebService As New System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC")

'新規サイトIDを取得
Dim intNewSiteID As Integer = 1
Dim objSite As System.DirectoryServices.DirectoryEntry
For Each objSite In objWebService.Children
    If objSite.SchemaClassName = "IIsWebServer" Then
        Dim intSiteID As Integer = Convert.ToInt32(objSite.Name)
        If intSiteID >= intNewSiteID Then intNewSiteID = intSiteID + 1
    End If
Next

'Webサイトの作成
Dim objNewSite As DirectoryEntry = objWebService.Invoke("Create", "IIsWebServer", intNewSiteID)
objNewSite.Invoke("Put", "ServerComment", "新しいサイト")
objNewSite.Invoke("Put", "ServerBindings", New Object() {"192.168.0.1:80:www.win1.jp"}) 
objNewSite.Invoke("Put", "KeyType", "IIsWebServer")
objNewSite.Invoke("Put", "ServerState", 2)
objNewSite.Invoke("Put", "ServerAutoStart", 1)
objNewSite.Invoke("Put", "AppPoolId", "新しいアプリケーションプール")
objNewSite.Invoke("SetInfo")

'Webサイト詳細設定
Dim objVirtualDir As DirectoryEntry = objNewSite.Children.Add("Root", "IISWebVirtualDir")
objVirtualDir.Invoke("Put", "AppIsolated", 2)
objVirtualDir.Invoke("Put", "Path", "C:\WebSite\NewSite")
objVirtualDir.Invoke("Put", "AccessFlags", 513) '1 + 512 AccessRead + AccessScript
objVirtualDir.Invoke("Put", "AuthFlags", 3) '1 + 2 AuthAnonymous + AuthBasic
objVirtualDir.Invoke("Put", "AppRoot", "LM/W3SVC/" & intNewSiteID & "/Root")
objVirtualDir.Invoke("Put", "AppFriendlyName", "既定のアプリケーション")
objVirtualDir.Invoke("SetInfo"
 

 

以上でWebサイトが作成されます。

余談ですが、なぜ、WMI、ADSIの二通りの方法があるのかといいますと、IIS5.0の時代ではWMI自体は存在したものの、IISに対するプログラム的は働きかけは、ActiveDirectoryを実装しはじめたWindows2000のLDAP情報にアクセスする方法と同様に、ADSIを介して行うのが一般的な方法でした。 
その後、IIS6.0(WindowsServer2003)の時代になり、Windowsの管理を統合的に行うためのインタフェースとしてWMIが本格的に実装されるとともに、IISの管理もWMIから行うことが可能になったのです。
従って、「IISのWebサイト作成」に関しては、現時点では二つのインターフェースはほぼ同様の機能を提供することができるものの、トータル的なサーバー管理といった面から見れば、WMIによるプロビジョニングが今後一般的な手法となると思われます。
(参考:ADSI プロバイダと IIS WMI プロバイダの比較
私的な好みとしてはWMIを用いた方法で統一したいと思うのですが、前述の問題があり残念です。
WMIを用いたサイト作成方法もいずれ紹介できればと思います。


Provisioning Introduction

はじめに・・・
「Provisioning(プロビジョニング)」聞きなれない言葉ではないでしょうか。
直訳すると「供給・準備」といった意味となります。
Windows Serverの分野においてはサーバーに対してのボリュームの割り当てやサービスセットアップといった意味になります。
ここでは、ホスティング分野におけるプロビジョニング、すなわちWebサイト、メールボックス、アプリケーションセットアップに焦点を当てWindows Serverに対してどのような設定を行うのか、といった内容でプログラム的要素を踏まえて掲載して行きたいと思います。
 
このセクションにおいて掲載する内容により、以下のプロビジョニングを完了することができます。

-Webサイトの作成
-FTPサイトの作成
-ユーザーアカウントの作成
-Windows SharePointのインストール
-FrontPage Server Extensionのインストール
-DNSレコードの登録

※注
プログラム内容に関してはごく基本的内容にとどめており、エラー処理やロールバックなどは省略しています。

必要環境:
・ドメイン参加済みのWindows Server 2003 or 2008
・IIS6.0 or IIS7.0
・Windows Sharepoint Service 2.0 or 3.0
・DNSサービス
・.NET Framework1.1 or 2.0以上
・Visual Studio 2003 or 2005 or 2008

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。