Fermer

avril 3, 2019

Comment exécuter Sitefinity à partir d'un conteneur


Dans ce billet expérimental, nous examinerons les avantages de l’exécution de Sitefinity dans un conteneur Windows, ainsi que ses limitations. Continuez votre lecture pour un guide pas à pas.

Mise en route avec Containers et Sitefinity

Les premières étapes d'un projet sont toujours les plus difficiles et le but de ce court article est de vous aider à démarrer: donner DevOps les bases pour lancer l'expérimentation et étudier les avantages de l'exécution de Progress Sitefinity dans des conteneurs Windows. Le blog décrit quelques informations de base sur les conteneurs et explique comment créer une image Docker pouvant être utilisée pour exécuter Sitefinity 11.2

. Remarque : Bien que ce soit possible, il s'agit d'un article expérimental et non d'un support officiel. Sitefinity en ce moment.

Définition des conteneurs

La manière la plus simple d’envisager les conteneurs est qu’ils ressemblent beaucoup à des machines virtuelles (VM), à la différence principale qu’ils partagent le même noyau de système d’exploitation. S'il est nécessaire de lancer 10 instances d'une application donnée, il suffit de fournir 10 copies des fichiers de l'application et un ordinateur virtuel. Ou bien, il pourrait y avoir plusieurs applications différentes en NLB (équilibrage de la charge réseau) sur seulement deux ordinateurs virtuels. S'ils utilisaient plutôt des ordinateurs virtuels, ils auraient besoin de créer deux instances du même ordinateur virtuel pour chaque application, contenant le même système d'exploitation, ainsi que les dépendances d'exécution et les fichiers d'application.

C'est le principal avantage de l'utilisation des conteneurs rapide et de l'utilisation des ressources . De plus, les conteneurs améliorent la fiabilité et la permettant ainsi un transfert d'applications plus robuste entre environnements (dev / staging / live). Vous pouvez lire plus spécifiquement pour Windows sur le site de Microsoft ou dans ces deux blog posts .

Avantages et inconvénients de l'utilisation de conteneurs

Il existe un certain nombre de avantages de l’utilisation des conteneurs, mais aussi quelques inconvénients dont vous devez tenir compte:

+ déploiement rapide

+ utilisation des ressources

+ portabilité – déploiement agnostique de l’environnement (l’application est livrée avec tous les éléments dépendants – plus aucun travail sur mes problèmes de machine)

+ outils sophistiqués pour l'orchestration – Docker Swarm, Kubernetes

– courbe d'apprentissage initiale

– technologie relativement nouvelle

Termes importants à connaître pour le développement à l'aide de conteneurs

: Système informatique physique ou virtuel configuré avec la fonction Conteneur Windows

Docker est l'un des outils permettant de créer et de gérer des images de conteneur. Comme tout autre conteneur, un conteneur Windows peut être géré avec Docker.

Sandbox : Il s'agit de l'instance de conteneur en cours d'exécution. Il repose sur une image et enregistre toutes les modifications apportées au système de fichiers, au registre, etc., dans un calque séparé, sans altérer l'image d'origine.

Image de conteneur : Tout conteneur en cours d'exécution (bac à sable) peut avoir son état configuré actuel est sauvegardé dans une nouvelle image, qui peut ensuite être utilisée pour générer de nouvelles instances de conteneur en cours d'exécution. Une autre façon de créer des images consiste à utiliser de manière déclarative un fichier Docker, qui effectue les mêmes opérations: il démarre un bac à sable, applique les modifications et les enregistre dans une nouvelle image.

Image du système d'exploitation conteneur : chaque image du conteneur Windows est basé sur l'une des images fournies par Microsoft.

Guide étape par étape: Exécution de Sitefinity à partir d'un conteneur Docker

Remarque: Si vous utilisez Symantec Endpoint Protection, vous ne pourrez peut-être pas vous connecter au serveur. conteneur sauf s'il est désinstallé. Pour en savoir plus sur ce problème cliquez ici .

Créons une image qui sera utilisée pour créer des conteneurs sur lesquels héberger Sitefinity. La version de l'hôte de conteneur que j'utilise est Windows 10 1809 et la version de Docker Desktop est 2.0.0.3 (31259).

Note: Après avoir installé Docker Desktop, vous devez passer aux conteneurs Windows en tant que Sitefinity. nécessite un noyau Windows.

  1. Créez un répertoire de travail appelé «docker-test».
  2. Créez le script PowerShell qui configurera l'instance IIS sur le conteneur pour pouvoir héberger Sitefinity – créez un fichier nommé «docker-test iis-config.ps1. ”
        
         Import-Module ServerManager; 
    Ajouter-WindowsFeature "FileAndStorage-Services";
    Ajouter-WindowsFeature "Storage-Services";
    Ajouter-WindowsFeature "Web-Server";
    Ajouter à WindowsFeature "Web-WebServer";
    Ajouter-WindowsFeature "Web-Common-Http";
    Ajouter-WindowsFeature "Web-Default-Doc";
    Ajouter-WindowsFeature "Navigation-Web-Navigateur";
    Ajouter-WindowsFeature "Erreurs Web-Http";
    Ajouter-WindowsFeature "Contenu Web-Statique" "
    Ajouter-WindowsFeature" Santé-Web ";
    Ajouter-WindowsFeature" Journalisation Web-Http " ";
    Ajouter-WindowsFeature" Web-Request-Monitor ";
    Ajouter-WindowsFeature" Web-Performance ";
    Ajouter-WindowsFeature" Web-Stat-Compression ";
    Ajouter à WindowsFeature" Web -Security ";
    Ajoutez-WindowsFeature" Filtrage Web ";
    Ajoutez-WindowsFeature" Web-App-Dev ";
    Ajoutez-WindowsFeature" Web-Net-Ext45 ";
    Ajoutez-WindowsFeature "Web-Asp-Net45";
    Ajoutez-WindowsFeature "Web-ISAPI-Ext";
    Ajoutez-WindowsFeatu re "Filtre Web-ISAPI";
    Ajoutez-WindowsFeature "Outils de gestion Web";
    Ajoutez-WindowsFeature "Outils de script Web";
    Ajoutez-WindowsFeature "Service de gestion Web" ;
    Ajouter-WindowsFeature "NET-Framework-45-Core";
    Ajouter-WindowsFeature "NET-Framework-45-ASPNET";
    Ajouter-WindowsFeature "NET-WCF-HTTP-Activation45"; [
    Ajouter-WindowsFeature "RSAT";
    Ajouter-WindowsFeature "RSAT-Role-Tools";
    Ajouter-WindowsFeature "RSAT-AD-Tools";
    Ajouter-WindowsFeature "RSAT-AD-PowerShell" ;
    Ajouter-WindowsFeature "Telnet-Client";
    Ajouter-WindowsFeature "PowerShellRoot";
    Ajouter-WindowsFeature "PowerShell";
    Ajouter-WindowsFeature "WAS";
    Ajouter à WindowsFeature " WAS-Process-Model ";
    Ajouter-WindowsFeature" WAS-Config-APIs ";
    Ajouter-WindowsFeature" WoW64-Support ";

    $ sharepath =" C: inetpub wwwroot "
    $ Acl = Get-ACL $ SharePath
    # dans le but de tester, nous accordons à l'emplacement du site un accès complet à tous les utilisateurs de la suite. ainer, cela devrait être remplacé par l'identité du pool d'applications et uniquement pour AppData
    $ AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ("tout le monde", "complet", "ContainerInherit, Objectinherit", "aucun", "Allow")
    $ Acl.AddAccessRule ($ AccessRule)
    Set-Acl $ SharePath $ Acl

        

  3. Créez ensuite un fichier nommé “docker-test Dockerfile” – il sera utilisé pour créer des images de manière déclarative.
     FROM microsoft / windowsservercore: 1809
    Coquille ["powershell"]
    
    COPY iis-config.ps1 iis-config.ps1
    RUN Add-WindowsFeature Web-Server; 
        Installation-WindowsFeature NET-Framework-45-ASPNET; 
        Installez-WindowsFeature Web-Asp-Net45; 
        Invoke-WebRequest -UseBasicParsing 
            -Uri "https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe" "
            -OutFile "C:  ServiceMonitor.exe"; 
        "c:  iis-config.ps1";
    
    EXPOSE 80 

    La ligne ci-dessous indique que l'image que nous allons créer sera basée sur l'image Server Core OS version 1809 (Windows Server sans interface graphique).

        

     FROM microsoft / windowsservercore: 1809 

    Ceci copie le script que nous avons créé précédemment dans le système de fichiers image.

        

     COPY iis-config.ps1 iis-config.ps1 

    Ceci exécute les commandes PowerShell qui installent IIS et ASP.NET, télécharge également l'outil ServiceMonitor.exe et exécute notre script iis-config à la fin. [19659038] Note: N'oubliez pas qu'ils installeront les versions .NET et ASP.NET fournies avec Windows. Dans le cas de 1809, il s'agit de .NET4.7.2. Si vous devez installer une version différente, vous devez télécharger le package manuellement et l'installer.

        

        

     RUN Add-WindowsFeature Web-Server; 
        Installation-WindowsFeature NET-Framework-45-ASPNET; 
        Installez-WindowsFeature Web-Asp-Net45; 
        Invoke-WebRequest -UseBasicParsing 
            -Uri "https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe" "
            -OutFile "C:  ServiceMonitor.exe"; 
        "c:  iis-config.ps1"; 

    ServiceMonitor.exe est téléchargé car il doit être exécuté lors de l'exécution du conteneur basé sur cette image. Il a besoin d'un processus long, sinon, lorsque le conteneur sera exécuté, il se fermera tout simplement.

        

  4. À la fin, nous demandons au conteneur qui sera basé sur cette image de démarrer ce processus lors de son exécution.
        
     INTRYPOINT ["C:\ServiceMonitor.exe", "w3svc"]  

        

  5. Enfin, construisez l'image avec la commande ci-dessous. Notez le "point" à la fin de la commande – cela signifie que le répertoire de travail en cours sera utilisé pour rechercher le fichier docker et d'autres fichiers nécessaires:
        
     docker build -t sitefinity-image. 

    Maintenant que nous avons l'image, nous pouvons l'utiliser pour créer des conteneurs et exécuter différentes applications Sitefinity.

        

  6. Dans Powershell, créez le conteneur:
        
     docker create --name MyNewSitefinityContainer sitefinity-image 

    puis copiez tous les fichiers de l'application Web dans le répertoire du site du conteneur (il est important que le chemin source se termine par . Pour copier uniquement les fichiers de la source).

        

     docker cp SitefinityWebAppFolderLocalPath . MyNewSitefinityContainer: / c: / inetpub / wwwroot  

        

  7. Ensuite, démarrez le conteneur:
        
     docker démarre MyNewSitefinityContainer  

        

  8. Une fois le conteneur démarré, exécutez cette commande pour obtenir l'adresse IP:
        
     docker inspecter --format = "{{. NetworkSettings.Networks.nat.IPAddress}}" MyNewSitefinityContainer  

        

  9. Accédez au site Web du conteneur à l'aide de son adresse IP.

Notes finales sur l'approche conteneur

Remarque: Comme il est facile de l'ignorer, je tiens à souligner à nouveau que si vous utilisez Symantec Endpoint Protection, peut ne pas être en mesure de se connecter au conteneur à moins que celui-ci ne soit désinstallé. Pour en savoir plus sur ce problème cliquez ici .

En fonction des ressources affectées au conteneur et de la vitesse de la base de données, l'application pourrait être plus lente à s'initialiser que si elle était exécutée localement. Vous devez accéder à la base de données du serveur SQL via le réseau en utilisant l’adresse de votre hôte et créer un utilisateur distant utilisé par l’application Sitefinity.

Pour les besoins du test, nous copions manuellement les fichiers de l’application Web après la création du conteneur. Ce processus pourrait être optimisé avec un script dans le conteneur qui s'exécuterait au démarrage et tenterait d'extraire l'application Web à partir d'une URL, puis de démarrer ServiceMonitor.exe. L'URL peut être transmise à l'instance de conteneur en tant que variable d'environnement. De cette manière, le simple fait de générer le conteneur avec une URL donnée en tant que variable d’environnement se chargera des étapes manuelles après la création de celle-ci.

Les prochaines étapes

Essayez-le et dites-nous comment le déploiement de Sitefinity dans un conteneur vous a été réservé. Si vous avez des commentaires sur cet article expérimental, n'hésitez pas à le partager dans les commentaires ci-dessous ou sur notre Feedback Portal .

Veuillez noter que cet article a été publié en mai 2018, et a été actualisé et mis à jour pour plus de précision et de clarté.




Source link