Skip to main content

Installation sur le serveur IIS

These instructions were written for Windows Server 2016, IIS 10, Node.js 10.15.0, iisnode 0.2.26 and verdaccio 3.11.0.

  • Install IIS Install iisnode. Make sure you install prerequisites (Url Rewrite Module & node) as explained in the instructions for iisnode.
  • Créez un nouveau dossier dans Explorer où vous souhaitez héberger Verdaccio. Par exemple C:\verdaccio. Sauvgarder package.json, start.js et web.config dans ce fichier.
  • Créez un nouveau site sur Internet Information Services Manager. Vous pouvez l’appeler comme vous voulez. Je l’appellerai verdaccio dans ces instructions. Spécifiez le chemin vers où vous avez enregistré les fichiers et un numéro de port.
  • Retournez vers Explorer et autorisez l'utilisateur exécutant le groupe d'applications à pouvoir modifier le dossier nouvellement créé. Si vous avez nommé le nouveau site verdaccio et que vous n'avez pas modifié le groupe d'applications, cela fonctionne à l'arrière plan d'une ApplicationPoolIdentity et vous devez autoriser l'utilisateur à modifier IIS AppPool\verdaccio. Voir les instructions si vous avez besoin d'aide. (Si vous le souhaitez, vous pouvez restreindre l'accès ultérieurement, de sorte que vous ne disposiez que des autorisations de modification sur iisnode et verdaccio/storage)
  • Lancez une invite de commande et lancez celles ci-dessous pour télécharger verdaccio:
cd c:\verdaccio
npm install
  • J'ai arrêté le "site Web par défaut" et n'ai démarré que le site "verdaccio" sur IIS
  • C'est ça! Maintenant, vous pouvez parcourir l'hôte et le port que vous avez spécifiés

Je voulais que verdaccio soit le site par défaut sur IIS, j'ai donc pris les mesures suivantes:

  • I stopped the "Default Web Site" and only start the site "verdaccio" site in IIS
  • J'ai établi des connexions avec "http", l'adresse Ip "All Unassigned" sur le port 80, permettre tout avertissement ou invite

Ces instructions sont basées sur Host Sinopia in IIS on Windows. J'ai dû faire un petit ajustement de la configuration Web, comme vous pouvez le voir ci-dessous, mais vous pouvez trouver l'original à partir du lien mentionné qui fonctionne le mieux

Un fichier de configuration par défaut sera créé c:\verdaccio\verdaccio\config.yaml

package.json

{
"name": "iisnode-verdaccio",
"version": "1.0.0",
"description": "Hosts verdaccio in iisnode",
"main": "start.js",
"dependencies": {
"verdaccio": "^3.11.0"
}
}

start.js

process.argv.push('-l', 'unix:' + process.env.PORT, '-c', './config.yaml'); 
require('./node_modules/verdaccio/build/lib/cli.js');

Alternate start.js for Verdaccio versions < v3.0

process.argv.push('-l', 'unix:' + process.env.PORT);
require('./node_modules/verdaccio/src/lib/cli.js');

web.config

<configuration>
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>

<!-- indicates that the start.js file is a node.js application
to be handled by the iisnode module -->
<handlers>
<remove name="WebDAV" />
<add name="iisnode" path="start.js" verb="*" modules="iisnode" resourceType="Unspecified" requireAccess="Execute" />
<add name="WebDAV" path="*" verb="*" modules="WebDAVModule" resourceType="Unspecified" requireAccess="Execute" />
</handlers>

<rewrite>
<rules>

<!-- iisnode folder is where iisnode stores it's logs. These should
never be rewritten -->
<rule name="iisnode" stopProcessing="true">
<match url="iisnode*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="None" />
</rule>

<!-- Rewrite all other urls in order for verdaccio to handle these -->
<rule name="verdaccio">
<match url="/*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="start.js" />
</rule>
</rules>
</rewrite>

<!-- exclude node_modules directory and subdirectories from serving
by IIS since these are implementation details of node.js applications -->
<security>
<requestFiltering>
<hiddenSegments>
<add segment="node_modules" />
</hiddenSegments>
</requestFiltering>
</security>

</system.webServer>
</configuration>

Dépannage

  • L'interface Web n'est pas chargée lorsqu'elle est allouée à l'hôte https puisqu'elle tente de télécharger le script sur http.\ Assurez-vous que vous avez nommé correctement url_prefix dans la configuration de Verdaccio. Suivez la discussion.
<configuration>
<system.webServer>
<iisnode enableXFF="true" />
</system.webServer>
</configuration>