par , 18/02/2017 à 03h33 (13891 Affichages)
Kestrel offre de bonnes performances pour le rendu du contenu dynamique. Mais, c’est un serveur démuni de nombreuses fonctionnalités. Il est essentiellement dédié au développement.
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 :
1 2
|
sudo apt-get install nginx |
Cela fait, vous allez démarrer Nginx en exécutant la commande suivante :
Configuration de Nginx
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 :
sudo -i gedit /etc/nginx/sites-available/default
Changez son contenu par le suivant et enregistrez :
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 :
1 2
| sudo nginx -t
sudo nginx -s reload |
Les projets ASP.NET Core sont configurés pour utiliser par défaut le port 5000. Comme nous souhaitons utiliser le port 5050 pour notre application, nous allons donc apporter quelques modifications à notre application pour prendre cela en compte.
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.
1 2 3 4 5 6
| var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddCommandLine(args)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.Build(); |
Vous devez intégrer le fichier hosting.json dans le package de déploiement de votre application. Pour cela, vous devez éditer le fichier project.json et ajouter hosting.json dans publishOptions :
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 :
1 2
| Dotnet build
Dotnet run |
Ouvrez votre navigateur et saisissez http://localhost/ pour lancer votre application. Cette dernière devrait s'afficher dans votre navigateur.
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 :
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) :
sudo cp -a /home/hinault/projects/SampleApp/bin/Debug/netcoreapp1.0/publish /var/www/sampleapp
Cela fait, vous devez installer supervisor en utilisant la commande suivante :
sudo apt-get install supervisor
Ensuite, vous devez créer un nouveau fichier de configuration (sampleapp.conf) dans le dossier src/supervisor/conf.d/ avec le contenu suivant, pour permettre à supervisor de lancer votre application :
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 |
Pour finir, vous devez exécuter les deux commandes suivantes pour arrêter et relancer supervisor :
1 2
| sudo service supervisor stop
sudo service supervisor start |
Vous venez de déployer votre application et elle est désormais disponible en tout temps.