30

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

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

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

4

4 に答える 4

63

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

オプション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.

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

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

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

    netstat -an
    

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

    TCP    0.0.0.0:8172           0.0.0.0:0              LISTENING
    

警告:

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

于 2011-05-16T10:19:23.703 に答える
27

これらは、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)

于 2012-10-04T13:32:38.797 に答える
9

価値のあることとして、私は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:   stevejansen_github@icloud.com
:: 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%

続きを読む:

于 2013-02-28T22:33:20.770 に答える
0

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

まず、Property テーブルでプロパティを見つける必要があります。 ここに画像の説明を入力

プロパティが見つかったら、レジストリ テーブルに移動し、挿入されている場所を見つけます。 ここに画像の説明を入力

于 2016-11-08T15:59:17.930 に答える