dimanche 12 juillet 2009

MAPILab Stats, MSMQ, et Windows 2008, shake’em baby ;-)

Bonjour,

Depuis notre migration de plateforme (notamment, nous sommes passés de Windows 2003 à 2008), nous n’avions plus de statistiques MAPILab.

Il s’agit d’un outil tierce partie, disponible ici. Nous utilisons une ancienne version qui n’était pas payante à l’époque. C’est un outil très intéressant que je vous invite à tester, il produit des rapports de fréquentation rappelant un peu “Google Analytics”.

Cet outil est présenté sous forme de solution .WSP, et s’appuie sur le composant Microsoft Message Queuing (MSMQ), ainsi qu’une base de données dédiée pour l’historisation des statistiques.

Bref, sous Windows 2008, malgré une réinstallation en bonne et due forme, pas moyen que les messages (à chaque stat tracée un message) entre certaines de nos machines ne parviennent à la Queue dédiée.

La raison est qu’apparemment MAPILabStats for SharePoint ne s’authentifie pas pour émettre les messages, or sur Windows 2008, le comportement par défaut de MSMQ a changé:

Security Enhancements that Affect the Default Behavior of Message Queuing

Notamment on peut y lire:

Default queue permissions for new queues do not grant everyone send access

Previous versions of Message Queuing grant everyone send permissions to newly created public or private queues. Message Queuing 4.0 does not grant everyone send permissions to newly created public and private queues by default except in the following cases:

  • When Message Queuing is installed in workgroup mode (when the directory service integration feature is not installed)
  • When Multicasting support is enabled.
  • When HTTP support is enabled.
  • When the default behavior is overridden with a registry entry as described below.

[…]

To revert Message Queuing behavior to grant everyone send permissions for any newly created public and private queues by default, create the DWORD registry entry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\PermitAnonEveryoneSend and set to a value of 1.

Note

This registry entry will not revert permissions for any queues that were created previously; this will only affect how default send permissions are set for any newly created queues.

 

Une fois la clé de registre créée, j’ai donc du définir une nouvelle Queue spécifique à MAPILab: la fiche Technet le précise, la modification des permissions n’est effective que pour les Queues créées par la suite.

A bientôt…

samedi 4 juillet 2009

Forefront for SharePoint, encore lui :-)

Le client: “Je n’arrive pas à récupérer mon fichier, c’est un ZIP de 40Mo. Je ne comprend pas, avant, j’y arrivais !”.
Moi: “avant quoi ?”
Lui: “avant la nouvelle ferme !”

Alors les différences entre la nouvelle et l’ancienne ferme sont pourtant simples ;-) :

  • Windows 2008 vs. Windows 2003
  • Donc IIS7 vs. IIS6
  • x64 vs. x86
  • Virtuel vs. Physique
  • NLB vs. Standalone
  • Cluster MSCS SQL vs. Standalone
  • et… Forefront for SharePoint vs. Rien du tout.

Je commence à pas mal appréhender ForeFront, vu qu’il a été la cause de la plupart de mes soucis depuis la migration vers notre nouvelle infra. Bingo !

Il existe une limitation de taille de fichier de type archive (ZIP, ARJ, RAR…) qui n’est pas configurable dans l’interface de ForeFront for SharePoint (comme tout un tas d’autres choses d’ailleurs, mais lisez mon post sur le SP3 ForeFront).

Cette taille est un maximum, qui dit à Forefront de rendre la main “Exceedingly Compressed Size”.

La seule solution est d’augmenter ce maximum, en créant la valeur suivante:

  • en x86:

CLE: HKLM\Software\Microsoft\Forefront Server Security\Sharepoint 
VALEUR: DWORD, MaxCompressedArchivedFileSize, 0x3C00000 (pour 60Mo environ, par exemple)

  • en x64:

Idem x86 sauf que l’on se positionne dans le WoW:
CLE: HKLM\Software\Wow6432Node\Microsoft\Forefront Server Security\Sharepoint
VALEUR: DWORD, MaxCompressedArchivedFileSize, 0x3C00000 (pour 60Mo environ, par exemple)

 

Mais ça n’était pas le seul problème, il fallait aussi augmenter la taille de requête IIS7, par défaut limitée à 28Mo (cf. mon autre post à ce sujet).

Bug rigolo: une tâche du Scheduler Windows 2008 à répétition programmée ne s’arrête pas à l’heure de fin

Tout à l’administration de mes machines SharePoint, il se trouve que certains jobs d’administration sont communs à 3 systèmes.

J’ai profité des nouvelles fonctionnalités du Task Scheduler Windows 2008, sur le 1er noeud en créant puis exportant, puis en important ces tâches sur les 2 autres noeuds.

Il se trouvent que certaines de ces tâches sont planifiées comme suit:

“Toutes les 2 heures à partir de 07h00 pendant 720 minutes” (par exemple).

Et bien à 21h00, 23h00, 01h00 etc. la tâche était toujours répétée sur les 2 noeuds ayant reçu la tâche importée.

J’ai cherché lonnnnggtemppps… Pensez-vous un truc aussi simple, ça ne pouvait pas être la faute de Windows. Ah bah si:

KB950035

Ca a bien fait sourire certains de mes collègues…

NB: a priori, il ne fait pas partie du SP2 de Windows 2008.

La virtualisation SharePoint, et quelques points sur le NLB dans VMWare ESX

Ce post n’est pas là pour débattre de l’utilité de la virtualisation, c’est en vogue, et ceux qui industrialisent l’hébergement virtualisé en tirent de nombreux bénéfices:

  • Rationalisation du matériel, idéalement en répartissant les machines selon la charge CPU générée, ou la RAM, ou la criticité.
  • Cluster “physique” indépendant de l’OS pour peu que le réseau et le SAN soient de la partie (bascule automatique de votre machine virtuelle, VM, vers un autre hôte en cas de problème).
  • Evolutivité par simple clic (RAM, réseau, etc.).
  • plein d’autres choses.

Alors pourquoi virtualiser SharePoint ? Question d’affinités, et de retour d’expérience. Pour ma part, après un an en hébergement Simple Farm physique, j’ai préféré offrir de la redondance de services amenée par la Middle Farm (Web, SQL), et virtualiser pour ne pas “gâcher” des machines physiques. En effet, la charge de mes clients ne justifie pas aujourd’hui de dédier du matériel. Mais la redondance est quand même agréable, quiconque vit un disaster recovery comprendra qu’il vaut mieux prendre son temps pour remonter un nœud web ou SQL, que de réinstaller une ferme en catastrophe. Surtout si vous hébergez beaucoup de customisations.

Le matériel utilisé chez nous est de type châssis de lames, aux performances correctes, “gavées” de RAM: 32Go. J’utilise 2 lames pour ma ferme SharePoint, j’ai donc réparti les VM de cette façon:

  • Lame 1
    • Web Front-end 1, 8Go
    • Index/Excel, 16Go
    • SQL 2, 8Go
  • Lame 2
    • Web Front-end 2, 8Go
    • SQL 1, 12Go
    • Web Front-end+Index/Excel pré-production, 8Go
    • Machine vide usage futur, 4Go

J’ai bloqué la répartition automatique de VMWare (en fonction de la charge, de la RAM…) pour que mes VM restent bien réparties de chaque côté. Il serait fâcheux que mes 2 WFE production (en NLB) se retrouvent sur la même lame physique en cas de crash, non ? ;-)

Je n’aime pas virtualiser SQL, je préfère qu’il s’appuie sur des moyens d’accès dédiés à ses données. Vieille réticence peut-être obsolète aujourd’hui, en tout cas j’avais la place et beaucoup de RAM, j’ai donc franchi le pas.

Comme vous pouvez le voir, la répartition de charge CPU est relativement équitable pour la production, en temps normal:

  • Lame 1: Web, Index/Excel
  • Lame 2: Web, SQL

 

Maintenant passons au NLB, plus précisément, le Network Load Balancing de Windows 2008 Server x64 SP1.

  • Rappel des modèles
    • Unicast

Déjà, rappelons que l’Unicast fonctionne en mode “je noie le switch”. C’est à dire que chaque carte réseau va porter une adresse mac unicast de type 02-xx-xx-xx-xx-xx (les xx correspondent aux octets de la mac privée de la carte). Or cela signifie que le switch va devoir diriger le même flux sur 2 ports physiques, pour la plupart des switchs cela signifie “puisque j’ai des doublons, je passe en hub”, d’où la noyade. Il vaut mieux donc dédier un scope réseau pour ce type de NLB.

      • A deux cartes réseau

C’est le matériel recommandé en Unicast. Forcément, vu que la carte qui portera le flux commun sera dédiée au NLB, et ne pourra faire rien d’autre.

      • A une carte réseau

Comme rappelé en mode “2 cartes”, le mode “1 carte” empêche tout accès direct à la machine. Profitons donc de la virtualisation et de ses cartes réseau à 0 euros :-) .

    • Multicast

Le multicast, c’est pareil mais différent. Là, la mac address est de type 03-xx-xx-xx-xx-xx. Cette mac est supposée être stockée dans la table ARP du routeur le plus proche. Or chez nous les services réseau n’ont pas souhaité activer cette possibilité bien que le matériel soit compatible (c’est un point à vérifier).
Il reste donc la solution d’entrer une résolution ARP statique, mais là encore, si votre réseau est complexe (double chaîne avec failover par exemple), créer ce type de règle spécifique est la meilleure façon de l’oublier au fil du temps, et de casser le NLB.

    • IGMP

Je n’ai pas étudié ce mode, j’avoue que je ne l’ai jamais vu en pratique.

 

  • Implémentation dans Windows 2008

Je ne vais pas m’étendre trop sur le sujet de l’installation et de la configuration, il y a sur le net suffisamment de ressources sur ce sujet. Sachez que la console n’a pas changé par rapport à Windows 2003.

Par contre, le NLB virtualisé a fait couler de l’encre sur la KB Microsoft, notamment en environnement Hyper-V, où il faut passer plein de correctifs (si si). Certains s’appliquent aussi à VMWare, bien qu’il ne soit pas forcément mentionné.

Notamment celui-ci: KB953828 “Windows Server 2008 Hyper-V virtual machines generate a Stop error when NLB is configured or when the NLB cluster does not converge as expected”.

Depuis le SP2 de Windows 2008, je ne sais pas où en est la situation, mais je vous recommande de bien tester avant de passer en production, en réalisant de multiples scenarios de perte de machine, de lien réseau, surcharge trafic etc.

  • Spécificités de VMWare

En fait, VMWare n’a rien de tellement spécifique, mais sa configuration réseau peut provoquer des problèmes au NLB Windows si l’on n’y prête pas d’attention. Heureusement, la KB VMWare est très bien documentée sur ces points: Implementing Microsoft Network Load Balancing in a virtualized environment (PDF, ~500ko)..

    • Mode unicast

En résumé, il faut sur la carte virtuelle cluster de chaque machine virtuelle hébergeant le NLB, passer l’option “notify switches” à “no”. J’attend encore l’explication technique détaillée, mais il semblerait que cette option provoque l’envoi de la mac privée de la carte, alors même que le NLB s’efforce de la masquer en se faisant passer pour la mac Unicast (02-xx…).
Voici ce que dit l’aide de VMWare au sujet du paramètre notify switches:

Select Yes or No to notify switches in the case of failover.

If you select Yes, whenever a virtual NIC is connected to the vSwitch or whenever that virtual NIC’s traffic is routed over a different physical NIC in the team because of a failover event, a notification is sent over the network to update the lookup tables on the physical switches. In almost all cases, this is desirable for the lowest latency of failover occurrences and migrations with VMotion.
Do not use this option when the virtual machines using the port group are using Microsoft Network Load Balancing in unicast mode. No such issue exists with NLB running in multicast mode.

    • Mode multicast

Rien de particulier à faire si ce n’est la vigilance sur le matériel réseau en amont de vos machines (cf. le rappel des généralités NLB plus haut).

 

Et le troubleshooting dans tout ça ?

Voici pour l’instant les deux cas que j’ai eu à traiter:

  • En mode unicast à 2 cartes, le cluster NLB converge, mais seule 1 machine reçoit le trafic.

Contexte: 1 VLAN dédié pour le NLB, VLAN public pour l’autre carte réseau.
En fait, lors de la configuration des machines virtuelles, le responsable s’est trompé de réseau, et a présenté à la carte NLB le même VLAN que la carte publique. Ce qui a permis au NLB de converger, mais qui empêchait à la carte de s’identifier auprès du switch en amont, et donc de recevoir du trafic.

  • Tout les soirs à la même heure +/- 10mn, un nœud sort du NLB pour y revenir 10 secondes plus tard.

Sauf que le dernier soir, ça n’a pas re-convergé :-(
Solution: une solution de snapshots était mise en place au niveau de la baie de stockage SAN. Cette solution implique un très léger freeze de la machine virtuelle, qui apparemment désynchronise le heartbeat NLB. En temps normal, la convergence a lieu à nouveau, quelques secondes plus tard. Le soir de l’incident, la convergence NLB web n’a pas eu lieu, et le cluster MSCS SQL a basculé également. Problème réseau en simultané ?
Nous avons depuis désactivé les snapshots (activés sans mon consentement), étant déjà équipés d’une solution de backup 1:1, et de la sauvegarde quotidienne des données SharePoint.

Kerberos dans SharePoint, pourquoi faire ? (et comment faire ?)

Je suis bien le premier à m’être posé la question chez nous, lors de la beta 2 Technical Refresh (oui, ça ne nous rajeunit pas :-) ).

 

  • Pourquoi faire ? Exemple concret: le “double-hop”.

Soit la société Duschmoll Pères & Fils, qui dispose d’une entité sécurité ayant définit une règle de type “toute requête émise vers internet émane d’un utilisateur dûment identifié et authentifié à un instant T”.

La conséquence directe est que le proxy (en général il y en a un, dans ce genre de sociétés) va donc exiger une authentification de la part du client: “qui es-tu, et que viens-tu chercher ?”. Bien jusqu’ici vous suivez :-)

Bon revenons à SharePoint B2TR: souvenez-vous des belles plaquettes commerciales, de la fédération de contenu, des flux RSS internes et externes… “ah” externes avez-vous dit ?

Comment SharePoint pourra-t-il afficher à mon client un flux RSS externe ?

Là mon éminent collègue me dit “boarf y’a qu’a lui donner l’url”. Oui mais non: avec la webpart “visionneuse RSS”, c’est SharePoint qui construit le contenu, et qui va donc le chercher *pour le compte* du client. Conséquence: Error 407: Proxy Authentication Required.

NB: l’histoire dira qu’en fait, même avec Kerberos bien configuré, la visionneuse RSS d’origine marche 1 fois sur 10 :-)

Et oui: ce qu’à fait Sharepoint: il s’est présenté en anonyme. Quelle identité pouvait-il présenter au proxy ? la sienne ? pourquoi pas, mais déjà il faudrait l’obliger à le faire, et d’autre part, ça ne répond pas à l’exigence de sécurité “savoir qui fait quoi sur internet”. OK pourquoi ne présente-t-il pas l’identité du client ?

Car avec une authentification NTLM, niet. NTLM est disons, “point à point”. SharePoint peut vérifier que mon authentification est valide, mais il ne peut la retransmettre à un tiers pour la rejouer.

Tadaaaa, Kerberos est là. Lui permet justement une négociation à 3 avec une information signée, rejouable et certifiée non falsifiée. En clair, le client veut discuter avec SharePoint, ce dernier lui dit “Négocie ! Kerberos ou NTLM ?”, “OK Kerberos, donne moi une seconde”, et le client cherche dans l’annuaire le SPN de SharePoint, par exemple http/monapplication . A partir de là, je passe la technique, mais mon client dispose d’un “ticket”, qu’il va présenter à SharePoint, qui lui-même pourra (s’il est autorisé à déléguer et vers quels services) transférer ce ticket à qui de droit. Dont le proxy :-) Du coup vu du proxy, en Kerberos, c’est l’identité du client (certifié authentique) qui discute, alors que matériellement c’est SharePoint qui envoie les requêtes. Pour le compte du client.

En anglais, la dénomination de ce scenario est le “double-hop”, cela vous permettra d’interroger l’ami Gogol sur le sujet.

C’est clair ? Verbeux, mais clair ? :-)

 

  • Comment faire ? Trêve de bavardages ! de l’action !

Vous allez être déçus: 2 commande, 3 clics et c’est réglé :-)

Il vous faut:

    • tout d’abord l’outil setspn.exe issu des Windows 2003 Server Support Tools.
    • le nom du compte AD identité de l’application pool IIS qui héberge l’application SharePoint à passer en Kerberos.
    • le pouvoir de créer un SPN dans votre AD. Faute de rôle spécifique, soyez Domain Admin :-(

Les étapes:

  1. setspn –A http/monapplication MonDomaine\MonCompteIIS
  2. setspn –A http/monapplication.chezmoi.toto.fr MonDomaine\MoncompteIIS
  3. ouvrir la console AD Users & Computers. Cliquer sur “View” “Advanced Features”.
  4. Rechercher le compte MonCompteIIS. Clic droit propriétés, onglet “Delegation”. Choisir “Trust for Delegation to any service (Kerberos only)”. NB: c’est mal, il faut en production filtrer la délégation uniquement aux SPN autorisés (déclarés en 1 et 2). Mais vous le ferez dans un second temps quand tout fonctionnera.
  5. Aller dans l’interface web d’administration SharePoint, onglet “Gestion des applications”, groupe à droite “Sécurité des applications”, cliquer sur “Fournisseurs d’authentification”.
  6. Bien choisir la bonne application dans la liste en haut à droite… puis cliquer sur la zone à passer en Kerberos (par exemple, la zone “Par défaut” si vous n’en n’avez qu’une, de zone…).
  7. Et là, le Graal: pour “Paramètres d’authentification IIS” choisir “Négocier (Kerberos)”
  8. Valider
  9. Attendre (la modif peut prendre plusieurs minutes, c’est un timer job qui se charge de l’appliquer). Eviter de revenir en arrière, j’ai déjà cassé une application en jouant au yoyo.
  10. Prier.

Je rassure tout de suite les anxieux, si Kerberos échoue, on passe en NTLM… comme avant. C’est d’ailleurs assez traître, car on ne sait finalement pas rapidement si ça fonctionne ou pas.

Un moyen simple côté serveur c’est de regarder le journal de sécurité. L’authentification de vos client apparaît, et le mode Kerberos est écrit en toutes lettres s’il est utilisé. S’il n’est pas écrit, pas de chance… il faut troubleshooter. Cherchez KerbTray (outil support), et Network Monitor (au cas où), et un peu de patience.

vendredi 3 juillet 2009

Le client: “Je ne comprend pas, mes fichiers qui ont des + dans le nom ne fonctionnent pas !” bis repetita: “IIS7 mon ami, IIS7…”

IIS7 apporte son lot de nouveautés. Bien que j’aie la tendance cynique facile, il faut reconnaître qu’il a du potentiel.

Là où le bât blesse à nouveau, c’est l’intégration SharePoint sur IIS7: les protections natives de IIS7 bloquent certains caractères. Reconnaissons-le, en temps normal, ces caractères que SharePoint accepte ne sont pas toujours des plus traditionnels dans un lien.

C’est assez traître, car cela renvoie au client (si mes souvenirs sont bons) une erreur 404 – not found. Erreur que l’on retrouve dans l’ULS Log de MOSS.

Coupons-court, voici la commande pour désactiver la fonctionnalité nommée “doubleEscaping”, uniquement sur votre application web (ça peut aussi se faire en global, c’est la magie de la configuration IIS7):

%windir%\system32\inetsrv\appcmd.exe set config “Votre description d’application IIS” /section:requestFiltering /allowDoubleEscaping:true /commit:MACHINE/WEBROOT/APPHOST

Le bon réflexe, à mon avis, est que toute erreur HTTP “brutale” non mise en forme dans une page SharePoint doit vous conduire immédiatement à l’hébergeur: IIS.

Merci à mes clients internes, sans qui je ne découvrirais jamais tous les petits défauts de mes applications préférées :-)

Kerberos et SharePoint: mais pourquoi ça marche pas ? :-) IIS7 mon ami, IIS7…

Et oui. Il faudra décidément s’y faire, IIS7 est bel et bien sorti *après* SharePoint 2007. Et ça se voit.

Je ne vais pas détailler ici la configuration de SharePoint pour le mode Kerberos (le SPN, etc.) mais un point très précis qui concerne l’identité utilisée par l’application pool IIS pour la négociation Kerberos.

Il se trouve, si vous suivez les bonnes pratiques, que vous avez affecté une identité (un compte de votre domaine) à votre application pool IIS qui héberge votre Web Application SharePoint.

Sur IIS7, nativement, c’est à dire en mode Kernel de l’authentification Negociate, c’est l’identité machine qui sera utilisée pour négocier, et non pas le compte que *vous* avez défini dans l’application pool (au travers de SharePoint).

Pour remettre cela au carré:

“%windir%\system32\inetsrv\appcmd.exe” set config “Votre description d’application IIS” /section:windowsauthentication /useAppPoolCredentials:true /commit:MACHINE/WEBROOT/APPHOST

Pour le troubleshooting Kerberos, ce sera l’objet d’un autre post.

Déploiement de SharePoint de façon industrielle et automatisée (long)

S’il est bien un domaine où je suis pointilleux, c’est l’industrialisation. De tout. Déploiement de composants customs pour notre ferme, livraison d’une ferme de développement identique à la production… vous commencez à mieux saisir l’intérêt, non ?

Ce post risque d’être long, je ne vais donc pas rentrer dans les détails de chaque étape. N’hésitez pas à commenter si besoin, je ferai un nouveau billet pour chaque “point chaud”, en particulier l’intégration d’une middle farm MOSS 2007 SP2 à IIS7 en 2008 x64 NLB virtualisé VMWare (arf, à caser en repas mondain pour calmer les questions professionnelles :-) ).

Tout ce qui suit a pu être automatisé en batchs, vbs selon la nécessité. Ne soyez pas frustrés que les commandes ne soient pas détaillées, ce post est assez long comme ça. Soit je développerai certains points dans d’autres posts, soit je répondrai aux commentaires si besoin.

Séquencement:

  1. Créer les entrées DNS pour toutes les applications. Eviter dès le départ d’adresser vos applications par leur nom de machine, vous me remercierez plus tard :-)
  2. Créer dans votre annuaire tous les comptes de domaine utilisés pour SharePoint. Veillez à absolument définir des comptes de domaine pour l’identité de vos Application Pools, Shared Services Provider, Farm Admin, SQL, Compte de recherche, au minimum.
  3. Charger un fichier de paramètres (long comme le bras) notamment les noms de serveurs, d’applications web à créer, les comptes pour chacun des rôles, etc.
  4. Installation des pré-requis (rôles & features) Windows 2008 x64 au moyen d’un fichier de réponses XML:
    • PowerShell (pour plus tard, c’est facultatif)
    • .Net Framework 3.0
    • Composants IIS7 nécessaires. La liste est assez longue, autre post à venir.
  5. Déplacement de la racine IIS7. Eh oui. Par défaut tout est sur C:\inetpub, ce qui est particulièrement incohérent en production, du moins dans un système où l’on cherche à segmenter le stockage autant que possible (systèmes, applications, datas…). En IIS6 c’était simple (pathWWWRoot dans le .ini passé à sysocmgr), mais en IIS7 ce n’est tout simplement pas possible d’origine. J’ai trouvé un excellent script “prêt à l’emploi'” ici. A vous de le compléter avec vos spécifications maison.
  6. Rebelotte, installation de SMTP au moyen du système d’installation 2008. Pourquoi dans un deuxième temps ? parce que SMTP s’installe dans votre inetpub\mailroot. Or si vous devez le déplacer comme au point précédent, il est quand même plus confortable que cela se passe sans modification postérieure :-) Spécificité de l’installation SMTP: ce n’est pas un composant “recarrossé” pour 2008, il nécessite donc la console IIS6.
  7. Tuning du SMTP:
    • Taille max des messages à modifier, pour une valeur conforme à ce que permet votre politique de messagerie interne. Notez que cela conditionne également la capacité de SharePoint à recevoir de grosses pièces jointes.
    • Création des alias des applications webs auxquelles vos utilisateurs pourront écrire. Eh non, SharePoint ne le fait pas tout seul. Je ne sais pas si c’est nécessaire, mais pour ma part j’ai déclaré le nom court de notre application et le nom long FQDN.
  8. Création des répertoires de travail de SharePoint, (du moins ceux que l’on peux personnaliser lors de l’installation).
    • Répertoire VolumeData:\DATA\
    • Répertoire VolumeData:\DATA\Applications
    • Répertoire VolumeApplis:\Microsoft Office Sharepoint Server
    • Répertoire VolumeLogs:\LOGS\
    • Compact /c /s:”\Volumelogs:\LOGS\”  => en général j’évite la compression, mais avec SharePoint, c’est franchement inévitable, sauf à avoir des actions chez un fabricant de disques.
  9. C’est prêt, vos pré-requis sont ok. Click & pray… Et non. Là aussi, c’est automatisable, au moyen d’un XML à passer au setup de SharePoint. Il contient notamment le type d’installation (Application ou Web uniquement), votre numéro de licence (heu pas très utile avec le source MOSS w/SP2 vu qu’il le repasse en trial ahahah…). Setup.exe /config votreFichier.xml
  10. Le setup est terminé ? bien, en fait c’était le plus facile :-) Bon pour ceux qui ne sont pas tombés dans les pommes, on passe à la partie réellement intéressante: faire ce que fait psconfigui.exe mais en mode scripté, donc psconfig.exe sans le “ui” (user interface) :-)
    • Création de la base de données de configuration
    • Installation des HelpCollections
    • Sécurisation des ressources
    • Installation des services MOSS
    • Installation des features MOSS
    • Création du site web d’administration centrale
    • Déploiement des contenus d’application
    • Démarrage de Windows SharePoint Search Service
    • Démarrage de Office SharePoint Search
    • [Facultatif] Démarrage du service d’équilibrage de la charge de conversion de document
    • [Facultatif] Démarrage du service de lancement des conversions de document
    • Démarrage des services de calcul Excel
    • Création du site web de l’application Shared Services (avec un host header plutôt qu’avec un nom de machine)
    • Création du site web de l’application Shared Services MySites (avec un host header plutôt qu’avec un nom de machine)
    • Création du Fournisseur de Services Partagés (SSP Shared Services Provider)
    • Création du site web portail de votre application web (là encore avec un host header plutôt qu’avec un nom de machine).
    • Là, c’est du nouveau, conséquence de IIS7: si vous choisissez le mode d’authentification Negociate (dans le but de faire du Kerberos), il y a un problème. Votre application pool IIS7 va négocier avec l’identité du compte machine, et non pas avec l’identité que vous avez pris la peine de créer dans l’AD, et d’affecter à votre application pool. Pas cool. Heureusement, la solution est là: %windir%\system32\inetsrv\appcmd.exe set config “Votre description d’application IIS” /section:windowsauthentication /useAppPoolCredentials:true /commit:MACHINE/WEBROOT/APPHOST
    • Allez, vous en reprendrez bien un peu pour la route ? Il y a (au moins, je n’ai pas encore tout vu) un autre problème avec IIS7: sa protection native contre des URL/URI disons… exotiques. Ca tombe bien, notre SharePoint en regorge. J’ai la chances d’avoir des clients de compétitions, palme d’or du débuggage le plus tordu jamais inventé. Résultat: les fichiers avec des “+” dans le nom sont bloqués. Si si. Et par IIS7, donc une vilaine 404 dans vos logs ULS MOSS.
      Voici la commande pour corriger cela un bon coup: %windir%\system32\inetsrv\appcmd.exe set config “Votre description d’application IIS” /section:requestFiltering /allowDoubleEscaping:true /commit:MACHINE/WEBROOT/APPHOST
    • Un petit vbScript pour modifier le web.config et passer le niveau de Trust à heuu… une valeur nécessaire pour vos déploiement à réaliser ensuite (WSS_minimal, WSS_medium, Full…)
    • Vous faites, depuis le serveur MoSS, des traitements qui utilisent webDAV ? Déjà il vous faut le installer le composant WebClient, non présent par défaut sur un serveur Windows. Dans 2008, il fait partie du Desktop User Experience (super intelligent :-( mais c’est un autre post). Ensuite, il y a un autre problème: le répertoire temporaire utilisé est celui des local settings de S-1-5-19 (Local Service). Or un bel export de 20Go en WebDAV sur votre disque C:\, ça fait mauvais genre en pleine nuit de déranger l’astreinte. Donc on modifie le répertoire TemporaryInternetFiles de ce compte dans la base de registres, après avoir pris soin de créer un nouveau répertoire dans un autre emplacement, et d’y avoir affecté les droits Full au compte “Local Service”.
    • Un petit IISReset.exe /noforce pour la forme, on ne sait jamais :-) je plaisante, j’en fais un à cet endroit précis, mais ensuite durant la vie de votre ferme, il faut vraiment privilégier un recycle d’application pool. Déjà car souvent seule une application IIS en a besoin, pas toutes. Ensuite, c’est quand même plus doux (rapide) pour vos utilisateurs.
    • Configuration de la messagerie sortante (stsadm –o email)
    • Configuration de la messagerie entrante (stsadm –o  ??? ha bah non, le développeur MS n’a pas eu le temps de la coder, donc nous avons un programme maison pour le faire :-) ).
    • C’est le moment tant attendu de déclencher en chaîne le déploiement de tous vos livrables de customisation (solutions.wsp, formulaires InfoPath, etc.). Prévoyez-le, et maintenez-le à jour, cela vous permet de remonter des serveurs quasiment identiques à la prod. Pourquoi ? parce qu’un jour, un développeur m’a livré une solution dont les features avaient le même GUID que des features déjà en place. Si si, c’est possible, je vous expliquerai un autre jour :-)
  11. Une erreur casse-pied mais sans grand effet: le groupe WSS_WPG (le Worker Processes Group de Windows SharePoint Services) ne dispose pas des pouvoirs LocalLaunch et LocalActivation sur le composant DCOM IIS WamReg Service (GUID 61738644-F196-11D0-9953-00C04FD919C1 ). SharePoint aurait pu le faire à l’installation, mais le développeur MS a du penser qu’un jour, ce serait peut-être hébergé sur Apache, alors il s’est abstenu. La commande pour remettre tout ça dans l’ordre s’appelle DComPerm.exe. J’ai eu du mal à la trouver sur le net, mais une fois que vous l’avez cela donne:
    DcomPerm.exe" -al {61738644-F196-11D0-9953-00C04FD919C1} set %COMPUTERNAME%\WSS_WPG permit level:l
  12. Bon, c’est pas fini, il faut encore déployer les iFilters. Commençons par le traditionnel Adobe PDF iFilter. On profite du passage en x64 pour récupérer le tout frais (enfin, il était frais ce poisson Madame…) Adobe iFilter 9.0 x64 Edition.
    • Il peut s’installer en ligne de commande en extrayant le MSI.
    • Il faut ensuite copier votre icône PDF dans le répertoire 12\TEMPLATE\Images\PDFIcon.gif par exemple.
    • Il faut enfin éditer le fichier 12\TEMPLATE\XML\DOCICON.XML et y rajouter la Mapping Key PDF. Je l’ai fait avec un VBScript.
    • Dans l’interface web d’administration de la recherche, ajouter la nouvelle extension pdf. Ca peut se faire en base de registre, mais il y a un ordre à déterminer, et je ne sais/veux pas faire des VBScripts trop intelligents :-) Il faut les maintenir ensuite…
  13. Pareil que Adobe pour le MS Office IFilter Pack (qui ajoute le support des zip, one, xlsb, et tous formats Visio). Sur Windows 2008 et MOSS SP2, j’ai du entrer ensuite les clés en base de registre pour binder ces extensions. C’est écrit dans la doc qui accompagne ce livrable sur le site MS.
  14. Voilà, à partir de là, on est déjà dans une situation sympathique. Il manque:
    • Tout le paramétrage du SSP, notamment:
      • les emplacements de fichiers Excel approuvés, bibliothèques de connexions de données approuvées, etc.
      • les managed properties (heu métadonnées gérées il me semble en VF). C’est toujours sympathique de devoir en rentrer 200 à la main. Pas moyen en automatique vu que les champs peuvent varier d’une ferme MOSS à une autre (homonymes génèrent des suffixes _1, _2, etc. impossibles à deviner).
      • les sources de données de contenu, leur planification, idem pour les profils AD
    • Tout le paramétrage qu’on ne fait qu’une fois et que l’on oublie, du genre planification des plages d’audit, tuning InfoPath, etc.

SharePoint sur IIS7: gare aux gros fichiers….

Tout à mon acharnement pour empêcher ForeFront for SharePoint de me faire sauter un ZIP d’environ 40Mo, une fois le problème réglé je récupérais des erreurs 404.

Une vilaine erreur pas belle, donc plutôt renvoyée par IIS me dis-je. Gagné.

Après quelques recherches, il se trouve que d’origine, IIS7 est limité à 28Mo de contenu pour la requête… Je rappelle que d’origine, SharePoint est lui limité à 50Mo (et beaucoup ne changent pas cette valeur).

Lisez la section “More Informations” de la fiche KB925083. Le reste de la fiche est d’ailleurs très intéressant pour le support des gros fichiers dans SharePoint.

A faire donc: ajouter une section (inexistante d’origine) aux fichiers web.config de vos applications SharePoint, sur *chaque* machine portant le rôle web.

<configuration>
  <blablabla d’origine/>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800"/>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

Personnellement, j’ai également allongé la durée de session, fixée d’origine à 120s, je l’ai passée à 600s. Qui a dit que mon réseau était constitué de pigeons voyageurs ? ;-)

ForeFront for Sharepoint: Service Pack 3 !

Le service Pack 3 de ForeFront Security for Sharepoint vient de sortir. Il est disponible notamment sur MVLS.

Fiche: KB967995

D’après la fiche il est censé corriger notamment plusieurs problèmes intéressants, et gênants, rencontrés par mes utilisateurs:

  • “stsadm –o import” d’un sous-site important me renvoyait des erreurs de type “une erreur de serveur inconnue s’est produite: d”
  • un exécutable .Net éditant des formulaires InfoPath à la volée renvoyait la même erreur
  • les fichiers ZIP, compressés donc, de 10 à 50Mo étaient vus comme corrompus, marqués suspects, et mis en quarantaine sans vergogne même si je ne le souhaitais pas (point suivant)
  • un scan manuel en mode “Detect only” m’a placé quand même les fichiers en quarantaine. Un grand moment de joie ;-)
  • Le filtre de fichiers n’est pas réglage (console verrouillée), sympathique pour les fichiers Office avec macros marqués comme suspects et rendus inaccessibles.

Etant un récent utilisateur du produit je ne m’étendrai pas plus sur ce SP, si ce n’est qu’à voir les erreurs corrigées (assez basiques finalement), si vous devez déployer Forefront for SharePoint il me paraît sage de *bien* tester avec *tous* les types de fichiers possibles, tailles possibles, puis tester également toutes vos procédures d’administration, exports/imports, exécutables externes à la ferme, etc.

Lundi, je l’installe, sinon, et si ça ne corrige pas tout, il restera désactivé jusqu’à nouvel ordre (trop de problèmes).

Ouverture de mon blog - Présentation

Bonjour,

L’idée de ce blog m’est venue à force de parcourir ceux des autres, et me perdre dans la multiplicité des informations sur SharePoint, parfois diffuses ou incomplètes.

Je n’ai pas la prétention de faire mieux :-) Par contre, mon objectif est de proposer une vue “administrateur” de SharePoint, ayant la chance d’être affecté en permanence à ce sujet dans mon entreprise (Grand Compte).

Mes contributions ne seront donc pas toujours très étayées par la théorie, mais la plutôt par la pratique confirmée.

Bonne lecture, et merci de votre attention !