web-dev-qa-db-ja.com

WebデプロイエージェントはIIS6の80以外のポートで実行できますか?

80以外のポートでWeb配置エージェントを実行する必要があるWindows 2003マシンで少し課題があります。デフォルトでは、MsDepSvcはエンドポイントをhttp:// [server]/MsDeployAgentServiceに公開しますこれは明らかに暗黙的にポート80でリッスンします。

私の問題は、マシンがポート80を使用しているVisual SVN Serverも実行しているため、Web配置エージェントサービスが起動を拒否することです。 (少なくとも、これが私が引き出すことができる唯一の論理的な結論です。)同じマシン上に小さなSVN管理アプリがあり、Webデプロイを介して公開したいので、難問です。

別のポートでエージェントを実行することは可能ですか?明らかにこれがIIS7の場合は8172になり、すべてがうまくいきますが、残念ながらここではそうではありません。助言がありますか?

28
Troy Hunt

これを行うにはいくつかの方法があります。

オプション1:アンインストールして再インストールします別のポートを指定します:

msiexec /I WebDeploy_x86_en-US.msi /passive ADDLOCAL=ALL LISTENURL=http://+:8172/MsDeployAgentService

コマンドラインは、MsDeployAgentServiceをインストールし、IIS7と同様にポート8172でリッスンするように構成します。

オプション2:既存のサービスを再構成してポート8172でリッスンする:

  1. Msdepsvcを停止します(net stop msdepsvc

  2. 次のレジストリ値を編集します。

    HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters\ListenUrl
    

    次のようになります。

    http://+:80/MsDeployAgentService
    

    への変更:

    http://+:8172/MsDeployAgentService
    
  3. クエリHTTPリスナー:

    httpcfg query urlacl
    

    結果に次のエントリが表示されます。

    URL : http://+:80/MsDeployAgentService/
    ACL : D:(A;;GX;;;NS)
    
  4. リスナーを変更します。

    httpcfg delete urlacl /u http://+:80/MsDeployAgentService/
    

    これは次のように応答する必要があります:HttpDeleteServiceConfiguration completed with 0.

    httpcfg set urlacl /u http://+:8172/MsDeployAgentService/ /a D:(A;;GX;;;NS)
    

    これは次のように応答する必要があります:HttpSetServiceConfiguration completed with 0.

    /aスイッチで指定されたACLは、httpcfg query urlaclコマンドによって報告されたACLと一致する必要があります

  5. Msdepsvc(net start msdepsvc)を再起動します。

  6. 次の手順を実行して、サービスがポート8172でリッスンしていることを確認できます。

    netstat -an
    

    次のように表示されます。

    TCP    0.0.0.0:8172           0.0.0.0:0              LISTENING
    

警告:

これを最初に非実稼働マシンで試して、これが期待どおりに機能することを確認します。

62
Kev

これらは、Kevのレシピに従ってWindows7に対して行う必要のある変更です。

ステップ3:_netsh http show urlacl_

ステップ4:_netsh http delete urlacl url=http://+:80/MSDEPLOYAGENTSERVICE/_

netsh http add urlacl url=http://+:8172/MSDEPLOYAGENTSERVICE/ sddl=D:(A;;GX;;;NS)

26
Paul Spaulding

その価値について、私はKevの確かなアドバイスをバッチスクリプトにまとめて、ポート番号の変更に関するワンストップショッピングを行いました。

:: Name:     MsDepSvc.Port.cmd
:: Purpose:  Modifies the TCP/IP port that the Web Deployment Agent Service
::           (MsDepSvc) listens on.  Tested on Win7 Enterprise 32-bit.
:: Author:   [email protected]
:: Revision: January 2013

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

:: variables
SET me=%~n0
SET url=
SET port=
IF NOT "%~1"=="" (
  SET /A port=%~1
)

ECHO %me%: Web Deployment Agent Service (MsDepSvc) port change script

:: default argument values
IF "%port%"=="" (
  SET /A port=8172
  ECHO %me%: INFO - using default port value of 8172
)

SC.EXE query msdepsvc >NUL 2>NUL
IF NOT "%ERRORLEVEL%"=="0" (
  ECHO %me%: ERROR - MsDepSvc not installed
  ECHO %me%: exiting
  EXIT /B 1
)

ECHO %me%: stopping MsDepSvc
NET STOP msdepsvc >NUL 2>NUL

:: check if the default port is set
REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl >NUL
IF NOT "%ERRORLEVEL%"=="0" (
  ECHO %me%: ERROR - MsDepSvc ListenUrl registry key not found
  REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters
  ECHO %me%: exiting
  EXIT /B 2
)

FOR /F "tokens=3" %%I IN ('REG.EXE QUERY HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl ^| FINDSTR ListenUrl') DO (
  SET url=%%I
)
ECHO %me%: INFO - MsDepSvc current reservation is "%url%"

NETSH.EXE http show urlacl "%url%" >NUL
IF NOT "%ERRORLEVEL%"=="0" (
  ECHO %me%: ERROR - reservation for "%url%" not found
  EXIT /B 4
)

:: save the existing urlacl properties for User, Listen, Delegate, and SDDL
FOR /F "tokens=1,* delims=: " %%A IN ('NETSH.exe http show urlacl %url%  ^| FINDSTR "User Listen Delegate SDDL"') DO (
  SET URLACL.%%A=%%B
)

IF NOT DEFINED URLACL.User     ECHO %me%: Failed to read the exising URLACL setting for User     &&GOTO :ERROR
IF NOT DEFINED URLACL.Listen   ECHO %me%: Failed to read the exising URLACL setting for Listen   &&GOTO :ERROR
IF NOT DEFINED URLACL.Delegate ECHO %me%: Failed to read the exising URLACL setting for Delegate &&GOTO :ERROR
IF NOT DEFINED URLACL.SDDL     ECHO %me%: Failed to read the exising URLACL setting for SDDL     &&GOTO :ERROR

ECHO %me%: updating MsDepSvc to listen on port %port%
REG.EXE ADD HKLM\SYSTEM\CurrentControlSet\Services\MsDepSvc\Parameters /v ListenUrl /t REG_SZ /f /d "http://+:%port%/MSDEPLOYAGENTSERVICE/"

ECHO %me%: deleting the existing reservation for MsDepSvc
NETSH.EXE http delete urlacl "%url%" || GOTO :ERROR

ECHO %me%: adding the port %port% reservation for MsDepSvc
NETSH.EXE http add urlacl url=http://+:%port%/MsDeployAgentService/ user="%URLACL.User%" listen="%URLACL.Listen%" delegate="%URLACL.Delegate%" SDDL="%URLACL.SDDL%"  || GOTO :ERROR

ECHO %me%: starting MsDepSvc
NET START msdepsvc >NUL 2>NUL

ECHO %me%: process info for MsDepSvc
QUERY.EXE PROCESS MSDEPSVC.EXE
ECHO.
ECHO %me%: port bindings for MsDepSvc
NETSTAT.EXE -a -n -o | FINDSTR /R "TCP.*:%port%.*LISTENING Proto"
ECHO.
ECHO %me%: finished

:END
ENDLOCAL
ECHO ON
@EXIT /B 0

:ERROR
ECHO %me%: ERROR - exiting with errorlevel %ERRORLEVEL%
ECHO ON
@EXIT/B %ERRORLEVEL%

続きを読む:

7
Steve Jansen

どのレジストリキーにどのプロパティが格納されているかを見つける背後にある魔法を知ることも価値があります Orca.exe -MSIデータベースを読み取り/変更するための非常に貴重で使いやすいツール(ただし、変更しないでください) 。

まず、プロパティテーブルでプロパティを見つける必要があります enter image description here

プロパティが見つかったら、レジストリテーブルに移動して、プロパティが挿入されている場所を見つけます。 enter image description here

0
Ostati