Implementación de la aplicación en Azure App Service mediante FTP/S
En este artículo se muestra cómo usar FTP o FTPS para implementar la aplicación web, el back-end de la aplicación móvil o la aplicación de API en Azure App Service.
El punto de conexión FTP/S de la aplicación ya está activo. No se necesita ninguna configuración para habilitar la implementación de FTP/S.
Nota:
Cuando la autenticación básica de FTP está deshabilitada, la implementación de FTP/S no funciona y no se puede ver o configurar las credenciales de FTP en el Centro de implementación de la aplicación.
Obtención de credenciales de implementación
Siga las instrucciones de Configuración de credenciales de implementación para Azure App Service para copiar las credenciales del ámbito de aplicación o establecer las credenciales del ámbito de usuario. Puede conectarse al punto de conexión FTP/S de la aplicación mediante cualquiera de esas credenciales.
Cree el nombre de usuario de FTP con el siguiente formato, según su elección del ámbito de las credenciales:
Ámbito de aplicación Ámbito de usuario <app-name>\$<app-name>
<app-name>\<deployment-user>
En App Service, el punto de conexión FTP/S se comparte entre las aplicaciones. Dado que las credenciales de ámbito de usuario no están vinculadas a un recurso específico, el nombre de la aplicación se debe anteponer al nombre de usuario del ámbito de usuario, tal como se mostró anteriormente.
Obtención del punto de conexión FTP/S
En la misma página de administración de la aplicación en la que ha copiado las credenciales de implementación [Centro de implementación>FTP Credentials (Credenciales de FTP)], copie el Punto de conexión de FTPS.
Implementación de archivos en Azure
- Desde el cliente de FTP (por ejemplo, Visual Studio, Cyberduck o WinSCP), use la información de conexión recopilada para conectarse a la aplicación.
- Copie los archivos y la estructura de directorio correspondiente al directorio /site/wwwrooten Azure (o el directorio /site/wwwroot/App_Data/Jobs/ para WebJobs).
- Vaya a la dirección URL de la aplicación para comprobar que la aplicación se está ejecutando correctamente.
Nota
A diferencia de las implementaciones basadas en Git y de la implementación de ZIP, la implementación de FTP no admite la automatización de la compilación, como:
- restauraciones de dependencias (por ejemplo, automatizaciones de NuGet, NPM, PIP y Composer)
- compilación de archivos binarios de .NET
- generación del archivo web.config (aquí se muestra un ejemplo de Node.js)
Genere estos archivos necesarios de forma manual en la máquina local e impleméntelos luego junto con la aplicación.
Aplicación de FTPS
Para mejorar la seguridad, permita FTP a través de TLS/SSL únicamente. También puede deshabilitar FTP y FTPS si no utiliza la implementación de FTP.
En la página de recursos de la aplicación de Azure Portal, seleccione Configuración>Configuración general en el panel de navegación izquierdo.
Para deshabilitar FTP sin cifrar, seleccione Solo FTPS en Estado FTP. Para deshabilitar completamente tanto FTP como FTPS, seleccione Deshabilitado. Cuando termine, seleccione Guardar. Si usa Solo FTPS debe exigir TLS 1.2, o cualquier versión posterior; para ello, navegue a la página Configuración de TLS/SSL de la aplicación web. TLS 1.0 y 1.1 no son compatibles con Solo FTPS.
¿Qué ocurre con mi aplicación durante la implementación?
Todos los métodos de implementación admitidos oficialmente realizan cambios en los archivos de la carpeta /home/site/wwwroot de la aplicación. Estos archivos se usan para ejecutar la aplicación. Por tanto, se puede producir un error en la implementación debido a archivos bloqueados. Es posible que la aplicación también se comporte de forma impredecible durante la implementación porque no todos los archivos se hayan actualizado al mismo tiempo. Este comportamiento no es deseable en una aplicación orientada al cliente. Hay varias formas de evitar estos problemas:
- Ejecute la aplicación directamente desde el paquete ZIP, sin descomprimirlo.
- Detenga la aplicación o habilite el modo sin conexión durante la implementación. Para más información, consulte Deal with locked files during deployment (Tratamiento de archivos bloqueados durante la implementación).
- Realice la implementación en un espacio de ensayo con el intercambio automático activado.
Solución de problemas de implementación de FTP
- ¿Cómo se solucionan los problemas de implementación de FTP?
- No puedo usar FTP y publicar mi código. ¿Cómo se resuelve este problema?
- ¿Cómo me conecto a FTP en Azure App Service con el modo pasivo?
- ¿Por qué se produce un error en mi conexión al intentar conectarse a través de FTPS mediante cifrado explícito?
- ¿Cómo puedo determinar el método que se usó para implementar mi instancia de Azure App Service?
¿Cómo se solucionan los problemas de implementación de FTP?
El primer paso para solucionar los problemas de implementación de FTP es aislar los de implementación de los de la aplicación en tiempo de ejecución.
Un problema de implementación suele terminar en la ausencia de archivos o en la implementación de archivos incorrectos en la aplicación. Puede solucionar el problema al investigar la implementación FTP o seleccionar una ruta de implementación alternativa (como el control de código fuente).
Los problemas de aplicación en tiempo de ejecución suelen provocar la implementación del conjunto de archivos correctos en la aplicación, pero un comportamiento incorrecto de esta. Esto se puede solucionar si nos centramos en el comportamiento del código en tiempo de ejecución e investigamos las rutas de acceso con error concretas.
Para determinar un problema de implementación o de tiempo de ejecución, consulte Deployment vs. runtime issues (Problemas de implementación frente a los de tiempo de ejecución).
No puedo usar FTP y publicar mi código. ¿Cómo se resuelve este problema?
Compruebe que ha escrito el nombre de host y las credenciales correctos. Compruebe también que los siguientes puertos FTP de la máquina no estén bloqueados por firewall:
- Puerto de conexión de control de FTP:
- Puerto de conexión de datos de FTP: 989, 10001-10300
¿Cómo me conecto a FTP en Azure App Service con el modo pasivo?
Azure App Service permite la conexión activa y pasiva. Se recomienda el modo pasivo, ya que las máquinas de implementación suelen estar protegidas por firewall (del sistema operativo o como parte de una red particular o profesional). Consulte un ejemplo en la documentación de WinSCP.
¿Por qué se produce un error en mi conexión al intentar conectarse a través de FTPS mediante cifrado explícito?
FTPS permite establecer la conexión segura TLS de forma explícita o implícita.
- Si se conecta con el cifrado implícito, la conexión se establece a través del puerto 990.
- Si se conecta con cifrado explícito, la conexión se establece a través del puerto 21.
El formato de dirección URL que usa puede afectar al éxito de la conexión y también depende de la aplicación cliente que use. El portal muestra la dirección URL como ftps://
, pero tenga en cuenta:
- Si la dirección URL usada comienza por
ftp://
, la conexión está de forma implícita en el puerto 21. - Si la dirección comienza por
ftps://
, la conexión es implícita y se da a través del puerto 990.
Asegúrese de no mezclar ambas, por ejemplo, intentar conectarse a ftps://
y usar el puerto 21, ya que no se podrá conectar, incluso si desea realizar el cifrado explícito. Esto se debe a que una conexión explícita se inicia como conexión FTP sin formato antes del método de autenticación.
¿Cómo puedo determinar el método que se usó para implementar mi Azure App Service?
Puede averiguar cómo se implementó una aplicación comprobando la configuración de la aplicación. Si la aplicación se implementó mediante una dirección URL de paquete externo, verá la configuración de WEBSITE_RUN_FROM_PACKAGE
en la configuración de la aplicación con un valor de dirección URL. O bien, si se implementó mediante la implementación de archivo zip, debería ver la configuración de WEBSITE_RUN_FROM_PACKAGE
con un valor de 1
. Si la aplicación se implementó mediante Azure DevOps, verá el historial de implementación en el portal de Azure DevOps. Si se usó Azure Functions Core Tools, debería ver el historial de implementación en Azure Portal.