Scripts de PowerShell para automatizar la configuración de Web Deploy
La versión v2.1 de Web Deploy instala varios scripts de PowerShell que facilitan la configuración del servidor IIS para que los usuarios puedan publicarlo mediante Web Deploy. En esta página se muestra cómo usar estos scripts para crear un sitio de publicación predeterminado, habilitar la publicación para un sitio y un usuario nuevos o existentes, crear bases de datos SQL o MySQL de publicación o configurar reglas de delegación, todo ello mediante PowerShell.
Los scripts que usará son:
- SetupSiteForPublish.ps1
- CreateSqlDatabase.ps1
- CreateMySqlDatabase.ps1
- AddDelegationRules.ps1
Requisitos
El servidor debe tener un sistema operativo que incluya IIS7; es decir, Windows Server 2008 o Windows Server 2008 R2. Debe ser administrador de la máquina.
Asegúrese de que se cumplen las siguientes condiciones:
- PowerShell2 debe estar instalado (esto está integrado en Windows Server 2008 R2); para Windows Server 2008, puede obtener PowerShell2 como actualización desde aquí: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. Puede ser necesario reiniciar.
- El rol Servidor web (IIS) debe estar habilitado en el Administrador del servidor.
- El servicio de rol Servicio de administración web de IIS ("Servicio de administración") debe estar habilitado en el Administrador del servidor
- Para usar los scripts de la base de datos de PowerShell, el servidor debe tener acceso a una base de datos SQL o MySQL. Los Objetos de administración de SQL Server también deben instalarse para SQL.
- Web Deploy debe instalarse con el componente Integración del servicio de administración. (Para que esta opción aparezca en el instalador de Web Deploy, el servicio de administración web debe habilitarse primero).
Instrucciones generales de PowerShell
Abra la ventana de comandos de PowerShell.
Haga clic en el icono de PowerShell de la barra de tareas o haga clic en Inicio, escriba PowerShell y seleccione Windows PowerShell.
(Icono azul)Asegúrese de que la directiva de ejecución permite ejecutar scripts.
Escriba «Get-ExecutionPolicy». Si es Restringido (el valor predeterminado), debe restablecer a una configuración más permisiva, como al escribir "Set-ExecutionPolicy AllSigned". La configuración AllSigned permitirá ejecutar scripts firmados, pero se le solicitará en caso de que no sean de confianza
Para obtener más información sobre la ejecución de la configuración de directiva, consulte Uso del cmdlet Set-ExecutionPolicy.
Cambie al directorio de scripts de Web Deploy.
- Escriba
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
(pero reemplace por%programfiles%
la ruta de acceso real, comoC:\Program Files
).
- Escriba
Use el script SetupSiteForPublish para crear un sitio web de publicación predeterminado (sin bases de datos)
Ejecute el script SetupSiteForPublish.ps1 sin argumentos:
Para qué sirve:
El script crea un usuario y un sitio para la publicación que no es de administrador y guarda la información del perfil de publicación en un archivo del escritorio. En concreto, crea un sitio denominado WDeploySite con la raíz del sitio físico en %systemdrive%\inetpub\WDeploySite
. El sitio tendrá un grupo de aplicaciones coincidente, WDeployAppPool, y se asignará al puerto 8080 de forma predeterminada (o el siguiente puerto disponible si otro sitio usa 8080). El script también crea un usuario de Windows local no administrador llamado WDeploySiteuser y concede a ese usuario las ACL de control total del usuario en la carpeta WDeploySite y los permisos del administrador de IIS en el sitio. La información de configuración se guarda en el escritorio en un archivo denominado WDeploy.PublishSettings: WebMatrix (o potencialmente Visual Studio) puede consumir este archivo para publicarlo en el sitio. Este perfil NO contiene ninguna información de publicación de base de datos en este momento.
Habilite la publicación de Web Deploy para cualquier sitio y usuario mediante el script SetupSiteForPublish:
Script: SetupSiteForPublish.ps1
Descripción: para un sitio y una cuenta de usuario especificados, permite que el usuario especificado publique en el sitio especificado. El script crea la cuenta de usuario, el sitio y el grupo de aplicaciones; establece las ACL de directorio y los permisos del Administrador de IIS para el sitio; y guarda la información de configuración en un archivo.
Parámetros:
Nombre | Descripción | Valor predeterminado | Notas |
---|---|---|---|
siteName | Nombre del sitio. Si el sitio no existe, se creará. | WDeploySite | |
sitePhysicalPath | Ubicación de archivo físico para el contenido del sitio. Si el directorio no existe, se creará. | %systemdrive%\inetpub\WDeploySite |
|
siteAppPoolName | Nombre del grupo de aplicaciones que se asociará al sitio. Si el grupo de aplicaciones no existe, se creará. | WDeployAppPool | Se recomienda dedicar un grupo de aplicaciones por sitio. |
sitePort | Puerto para los enlaces del sitio. | Primer puerto entre 8080-8200 que no está en uso por otro sitio. | Es posible que se requiera una regla de firewall para abrir el puerto para el tráfico remoto. |
deploymentUserName | Nombre del usuario al que se va a conceder acceso al sitio. Si el usuario no existe, se creará un usuario que no sea administrador. | WDeploySiteuser | |
deploymentUserPassword | Contraseña del usuario de implementación. Si no se especifica una contraseña, se generará una automáticamente y se guardará en el archivo de configuración. | [generada automáticamente] | |
managedRunTimeVersion | Si se especifica, intentará establecer la versión en tiempo de ejecución especificada para el grupo de aplicaciones. Si no se encuentra una versión en tiempo de ejecución coincidente, se usarán los valores predeterminados del grupo de aplicaciones. | Valores predeterminados del grupo de aplicaciones | Formato de ejemplo "v2.0" o "v4.0" |
publishSettingSavePath | Directorio existente donde se guardará el archivo de configuración. | Escritorio del usuario actual | Debe ser un directorio existente. Si el directorio especificado no existe, se producirá un error. |
publishSettingFileName | Nombre del archivo de configuración, incluida la extensión. | WDeploy.PublishSettings | Recuerde incluir la extensión. Si el archivo ya existe, se sobrescribirá la información del sitio en él. |
Ejemplos:
Habilite la publicación de un usuario existente en un sitio existente (la contraseña no se guardará en el archivo de configuración):
.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Habilite la publicación para un nuevo usuario en un nuevo sitio, con un nombre personalizado y una ubicación para el archivo de configuración de publicación:
.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings
El archivo PublishSettings también contiene la nueva contraseña de usuario. Tenga en cuenta que los campos de cadena de conexión están vacíos: se pueden rellenar manualmente o puede agregarlos al perfil mediante los scripts de generación de bases de datos:
<?xml version="1.0" encoding="utf-8"?>
<publishData>
<publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>
Creación de una base de datos SQL para una cuenta de publicación mediante el script CreateSqlDatabase
Script: CreateSqlDatabase.ps1
Descripción: crea una base de datos, un inicio de sesión, un usuario de base de datos con permisos db_owner para la base de datos y guarda la información de cadena de conexión correspondiente en un archivo de configuración.
Parámetros:
Nombre | Descripción | Valor predeterminado | Notas |
---|---|---|---|
databaseName | Nombre de la nueva base de datos que se va a crear. | wDeploySqldb | |
databaseUserName | Nombre del usuario y el inicio de sesión de la base de datos. | wdeploySqlUser | Especifique un nuevo usuario por vez, o puede acabar restableciendo la contraseña de inicio de sesión de un usuario e invalidando las credenciales de conexión anteriores del usuario. |
databaseUserPassword | Contraseña para el usuario de la base de datos y el inicio de sesión. Si no se especifica ninguna contraseña, se generará una automáticamente. | [generada automáticamente] | En algunos casos, la contraseña generada automáticamente puede contener caracteres que provocan problemas con determinados clientes de publicación. Considere la posibilidad de modificar el script si usa el script para la creación automatizada de bases de datos. |
databaseAdminUser | Nombre de usuario del administrador de SQL Server (normalmente "sa"). | OBLIGATORIO | |
databaseAdminPassword | Contraseña de la cuenta de administrador de SQL Server. | OBLIGATORIO | |
sqlServerInstanceName | Ubicación de SQL Server. | .\SQLExpress |
General
publishSettingSavePath | Directorio existente donde se guardará el archivo de configuración. | Escritorio del usuario actual | Debe ser un directorio existente. Si el directorio especificado no existe, se producirá un error. |
---|---|---|---|
publishSettingFileName | Nombre del archivo de configuración, incluida la extensión. | WDeploy.PublishSettings | Recuerde incluir la extensión. Si el archivo ya existe, se sobrescribirá la información del sitio en él. |
Ejemplos:
Cree una base de datos con el usuario mediante los valores predeterminados (base de datos SQLExpress local):
.\CreateSqlDatabase.ps1
Cree una base de datos y agregue la información de la cadena de conexión al archivo c:\profiles\UserA.PublishSettings
de configuración de publicación existente:
PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Creación de una base de datos MySQL para una cuenta de publicación mediante el script CreateMySqlDatabase
Script: CreateMySqlDatabase.ps1
Descripción: crea una base de datos, un usuario de base de datos con todos los privilegios de la base de datos (en localhost) y guarda la información de la cadena de conexión en un archivo de configuración
Parámetros:
Nombre | Descripción | Valor predeterminado | Notas |
---|---|---|---|
databaseName | Nombre de la nueva base de datos que se va a crear. | WDeployDb | |
databaseUserName | Nombre del usuario de la base de datos. | WDeployUser | |
databaseUserPassword | Contraseña para el usuario de la base de datos y el inicio de sesión. Si no se especifica ninguna contraseña, se generará una automáticamente. | [generada automáticamente] | En algunos casos, la contraseña generada automáticamente puede contener caracteres que provocan problemas con determinados clientes de publicación. Considere la posibilidad de modificar el script si usa el script para la creación automatizada de bases de datos. |
databaseAdminUser | Nombre del administrador de la base de datos, normalmente "raíz". | OBLIGATORIO | Si no se proporciona, se le pedirá este parámetro |
databaseAdminPassword | Contraseña de la cuenta de administrador del servidor. | OBLIGATORIO | Se le pedirá un valor para este parámetro si no proporciona uno. |
serverHostName | Ubicación de servidor MySQL | localhost | *vea la nota bajo la tabla |
General:
publishSettingSavePath | Directorio existente donde se guardará el archivo de configuración. | Escritorio del usuario actual | Debe ser un directorio existente. Si el directorio especificado no existe, se producirá un error. |
---|---|---|---|
publishSettingFileName | Nombre del archivo de configuración, incluida la extensión. | WDeploy.PublishSettings | Recuerde incluir la extensión. Si el archivo ya existe, se sobrescribirá la información del sitio en él. |
*Si especifica un valor que no sea localhost para serverHostName y no modifique los permisos para el usuario, ya que es posible que el usuario no pueda acceder a su base de datos. De forma predeterminada, los permisos concedidos en este script proporcionan al usuario de la base de datos acceso desde la máquina local. Si el servidor de bases de datos no está hospedado en la misma máquina, se debe modificar la sección de concesión de permisos del script de PowerShell para conceder permisos más generales, como cambiar la siguiente línea del script para permitir el acceso desde cualquier máquina:
Línea de permisos de script predeterminada:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"
Línea de permisos de script modificada:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"
Ejemplos:
Cree una base de datos con el usuario con los valores predeterminados:
.\CreateMySqlDatabase.ps1
Cree una base de datos y agregue la información de la cadena de conexión al archivo c:\profiles\UserA.PublishSettings
de configuración de publicación existente:
.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Configurar reglas de delegación para el servidor mediante el script AddDelegationRules
Script: AddDelegationRules.ps1
Descripción: el instalador ejecuta automáticamente este script en el momento de la configuración durante una instalación completa, pero si no ha realizado una instalación completa o desea reparar las reglas en cualquier momento, puede volver a ejecutar este script AddDelegationRules.
Parámetros:
Nombre | Descripción | Valor predeterminado | Notas |
---|---|---|---|
elevatedUsername | Nombre de la cuenta de usuario a la que se concederá acceso de escritura al archivo applicationHost.config del servidor. Este usuario se usará como usuario de ejecución en las reglas appPoolPipeline, appPoolNetFx y createApp. | WDeployUser | Crea solo un usuario local de Windows y no funcionará si la configuración compartida está habilitada. La contraseña de esta cuenta de usuario se restablecerá si el script se ejecuta una segunda vez. |
elevatedPassword | Se genera automáticamente si no se especifica. | [generada automáticamente] | |
adminUsername | Nombre de una cuenta de usuario administrador que se usará como usuario de ejecución en la regla recycleApp. | WDeployAdmin | Crea solo un usuario local de Windows y no funcionará si la configuración compartida está habilitada. La contraseña de esta cuenta de usuario se restablecerá si el script se ejecuta una segunda vez. |
adminPassword | Se genera automáticamente si no se especifica | [generada automáticamente] | |
ignorePasswordResetErrors | Modificador. Si elevated/adminUsername hace referencia a una cuenta existente, este modificador permite que el script restablezca la contraseña de la cuenta. | [omitido: restablecimiento de contraseñas de usuario no permitido] | El restablecimiento de una contraseña de usuario puede dar lugar a que el usuario pierda acceso a los datos. Este modificador debe usarse con precaución. Para obtener más información, vea https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Tenga en cuenta también que la nueva contraseña de usuario no se almacena y no se puede recuperar más adelante. |