Dans un environnement de production, il doit être couplé avec d’autres serveurs dont IIS, ou Nginx, qui apporteront des fonctionnalités additionnelles. Dans notre cas, nous allons configurer Nginx pour utiliser ce dernier comme reverse proxy, afin d’offrir des fonctionnalités supplémentaires comme le rendu du contenu statique, la mise en cache ou encore la compression des requêtes.
Installation de Nginx
Nous allons commencer par installer le serveur Nginx. Ouvrez le terminal et exécutez la commande suivante :
Code : | Sélectionner tout |
1 2 | sudo apt-get install nginx |
Code : | Sélectionner tout |
sudo service nginx start
Vous devez maintenant configurer Nginx pour qu’il agisse comme reverse proxy pour Kestrel. Nous voulons qu’à chaque requête sur le port 80, Nginx redirige le trafic vers le port 5050 qui sera celui utilisé par notre application.
Pour y parvenir, nous devons éditer le fichier /etc/nginx/sites-available/default . Ouvrez ce dernier en utilisant la commande :
Code : | Sélectionner tout |
sudo -i gedit /etc/nginx/sites-available/default
Code json : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | server { listen 80; location / { proxy_pass http://localhost:5050; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } |
Exécutez les deux commandes suivantes pour vous rassurer que le fichier de config est correct et procéder au chargement de ce dernier :
Code : | Sélectionner tout |
1 2 | sudo nginx -t sudo nginx -s reload |
Vous allez dans un premier temps ajouter un nouveau fichier hosting.json à votre projet, avec le contenu suivant :
{
"server.urls": "http://localhost:5050"
}
Éditez ensuite le fichier Program.cs pour prendre en compte le fichier hosting.json. Vous devez l’ajouter au ConfigurationBuilder.
Code : | Sélectionner tout |
1 2 3 4 5 6 | var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json", optional: true) .AddCommandLine(args) .AddEnvironmentVariables(prefix: "ASPNETCORE_") .Build(); |
Code json : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | "publishOptions": { "include": [ "wwwroot", "Views", "Areas/**/Views", "appsettings.json", "web.config", "hosting.json" ] }, |
Compilez à nouveau votre application et procédez à son exécution :
Code : | Sélectionner tout |
1 2 | Dotnet build Dotnet run |
Publication de l’application et configuration du superviseur
A ce stade, pour accéder à l’application depuis le navigateur, vous devez au préalable exécuter la commande dotnet run. De plus, nous n’avons pas publié l’application dans son répertoire de destination.
Pour la suite, nous allons publier notre application et configurer l’outil supervisor. Il s’agit d’un système de contrôle de processus qui va permettre de lancer l’application et maintenir cette dernière en exécution.
Pour commencer vous allez publier l’application :
dotnet publish
Après l’exécution de cette commande, vous obtenez le répertoire dans lequel l’application a été publiée :
Code : | Sélectionner tout |
publish: Published to /home/hinault/projects/SampleApp/bin/Debug/netcoreapp1.0/publish
Vous devez ensuite copier cette dernière dans son répertoire de destination (/var/www/sampleapp) :
Code : | Sélectionner tout |
sudo cp -a /home/hinault/projects/SampleApp/bin/Debug/netcoreapp1.0/publish /var/www/sampleapp
Code : | Sélectionner tout |
sudo apt-get install supervisor
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | [program:sampleapp] command=/usr/bin/dotnet /var/www/sampleapp/SampleApp.dll directory=/var/www/sampleapp/ autostart=true autorestart=true stderr_logfile=/var/log/sampleapp.err.log stdout_logfile=/var/log/sampleapp.out.log environment=HOME=/var/www/,ASPNETCORE_ENVIRONMENT=Production user=www-data stopsignal=INT stopasgroup=true killasgroup=true |
Code : | Sélectionner tout |
1 2 | sudo service supervisor stop sudo service supervisor start |