Question

J'ai un peu un défi avec une machine Windows 2003 où je dois exécuter l'agent de déploiement Web sur un port qui n'est pas 80. Par défaut, MsDepSvc exposera un point final à l'adresse http: // [serveur ] / MsDeployAgentService qui écoute évidemment implicitement sur le port 80.

Le problème que j'ai est que la machine exécute également le serveur Visual SVN qui utilise le port 80 et en conséquence, le service d'agent de déploiement Web refuse de démarrer. (Au moins c'est la conclusion logique que je peux en tirer.) J'ai une petite application de gestion de SVN sur la même machine que je voudrais publier sur deploy web où l'énigme.

Est-il possible d'exécuter l'agent sur un autre port? Il est évident que si cela était IIS7 nous serions sur 8172 et tout irait bien, mais malheureusement, ce n'est pas le cas ici. Toutes les suggestions?

Était-ce utile?

La solution

Il y a deux façons de le faire:

Option 1: Désinstallez puis réinstallez Spécifier un port différent:

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

La ligne de commande installe le MsDeployAgentService et configure à écouter sur le port 8172 comme sur IIS7.

Option 2: Re-configurer le service existant pour écouter le port 8172:

  1. Arrêter le msdepsvc (net stop msdepsvc)

  2. Modifier la valeur de Registre suivante:

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

    Il va ressembler à quelque chose comme:

    http://+:80/MsDeployAgentService
    

    Modification:

    http://+:8172/MsDeployAgentService
    
  3. Requête HTTP auditeurs:

    httpcfg query urlacl
    

    Votre devriez voir l'entrée suivante dans la liste des résultats:

    URL : http://+:80/MsDeployAgentService/
    ACL : D:(A;;GX;;;NS)
    
  4. Modifier auditeur:

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

    Cela devrait répondre par: HttpDeleteServiceConfiguration completed with 0.

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

    Cela devrait répondre par: HttpSetServiceConfiguration completed with 0.

    L'ACL spécifié dans le commutateur /a doit correspondre à l'ACL indiqué par la commande httpcfg query urlacl

  5. Redémarrer le msdepsvc (net start msdepsvc).

  6. Vous pouvez confirmer que le service est à l'écoute sur le port 8172 en faisant:

    netstat -an
    

    Vous devriez voir:

    TCP    0.0.0.0:8172           0.0.0.0:0              LISTENING
    

Attention:

Je voudrais essayer ceci sur une machine non-production d'abord pour assurer cela fonctionne comme prévu.

Autres conseils

Ce sont les changements que je devais faire pour Windows 7, après la recette de Kev:

Étape 3: netsh http show urlacl

Étape 4: netsh http delete urlacl url=http://+:80/MSDEPLOYAGENTSERVICE/

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

Pour ce que ça vaut, je collais ensemble des conseils solides de Kev dans un script batch pour un guichet unique sur le changement des numéros de port.

:: 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%

En savoir plus:

Il est également intéressant de connaître la magie derrière découvrir ce que la propriété est stockée dans lequel la clé de Registre - entrez Orca.exe - précieux et simple à utiliser l'outil pour la lecture / modification base de données MSI (essayez de ne pas modifier si ).

Tout d'abord, nous devons trouver la propriété dans le tableau de la propriété entrer la description d'image ici

Une fois que la propriété est trouvé, aller à la table de registre et trouver l'endroit où elle est insérée. entrer la description d'image ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top