You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
christophe a3c78176a3 Mise à jour de 'README.md' 2 weeks ago
Controllers first commit 1 month ago
DAL first commit 1 month ago
Data first commit 1 month ago
Models first commit 1 month ago
Services first commit 1 month ago
Styles first commit 1 month ago
ViewComponents first commit 1 month ago
ViewModels first commit 1 month ago
Views first commit 1 month ago
doc add site-autisme picture 1 month ago
resources first commit 1 month ago
wwwroot first commit 1 month ago
.DS_Store my-dns picture 1 month ago
.bowerrc first commit 1 month ago
.gitignore first commit 1 month ago
AutismeCaSuffit.csproj my-dns picture 1 month ago
AutismeCaSuffit.sln first commit 1 month ago
AutismeCaSuffit.userprefs first commit 1 month ago
Program.cs first commit 1 month ago
README.md Mise à jour de 'README.md' 2 weeks ago
Startup.cs first commit 1 month ago
appsettings.Development.json first commit 1 month ago
appsettings.json first commit 1 month ago
bower.json first commit 1 month ago
bundleconfig.json first commit 1 month ago
gulpfile.js first commit 1 month ago
package.json first commit 1 month ago

README.md

Début de site en Asp.Net Core MVC (Autisme-ça-suffit)

Reprise du site autisme-ça-suffit en ASP.Net Core. (Non terminé)

Technologies utilisées

Ce site utilise les technologies suivantes:

  • Asp .Net Core
  • Boostrap 4
  • JQuery
  • Gulp
  • Entity Framework Core
  • Mysql/MariaDB

Et bien sûre Git au travers de ce dépôt Gitea.

Installation du site sur poste de développement

Installer yarn à l’aide de NodeJs et npm :

$ brew install node

Installer Git :

$ brew install git

Installer Gulp

$ sudo npm -g install gulp

Installer dotnet

Récupérer le dépôt du code source :

$ git clones  http://gitea.brachet-christophe.fr/christophe/autismecasuffit-mvc.git

Se déplacer dans le répertoire du projet

$ cd autismecasuffit-mvc

Créer le fichier npm-shrinkwrap.json

$ sudo nano npm-shrinkwrap.json
{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.3"
    }
  }
}

Récupérer les dépendances clients (modules node)

$  sudo npm install

Installer bowser

$ brew install bowser

Installer les dépendances js et css depuis bower

$ bower install

Génerer les assets à l’aide Gulp

$ sudo gulp

Compiler le projet dotnet

$ dotnet build

Créer une base de données mysql

$  mysql -u root -p
$  CREATE DATABASE autismecasuffit;
$  GRANT all privileges on autismecasuffit.* to 'autisme'@'localhost' identified by 'secret_password';
$ FLUSH PRIVILEGES;
$ exit

Modifier les fichier appsettings.json et appsettings.Development.json pour définir les identifiants de la base de données :

$ sudo nano appsettings.json
  "Database": {
    "Type": "MySQL",
    "ConnectionString": "Server=localhost; Uid=autisme; Pwd=pass; Database=autismecasuffit"
  }
$ sudo nano appsettings.Development.json
  "Database": {
    "Type": "MySQL",
    "ConnectionString": "Server=localhost; Uid=autisme; Pwd=pass; Database=autismecasuffit"
  }

Créer la base de données et remplir les fixtures :

$ dotnet run add-fixtures

On démarre le serveur de développement à l’aide de la commande dotnet :

$ dotnet run

Le site d’autisme-ca-suffit est accessible : http://127.0.0.1:5000

Installation sur le serveur Debian 10

Installer le SDK dotnet

$ wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
$ sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-3.1

Installer Node.js et npm

$ sudo curl -sL https://deb.nodesource.com/setup_14.x | bash -
$ sudo apt-get install -y nodejs

Installer git

sudo apt-get install git

Installer gulp

$ sudo npm -g install gulp

Récupérer le dépôt du code source :

$ cd /var/www
$ git clones  http://gitea.brachet-christophe.fr/christophe/autismecasuffit-mvc.git

Se déplacer dans le répertoire du projet

$ cd autismecasuffit-mvc

Créer le fichier npm-shrinkwrap.json

$ sudo nano npm-shrinkwrap.json
{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.3"
    }
  }
}

Récupérer les dépendances clients (modules node)

$  npm install --unsafe-perm

Installer bowser

$ sudo npm install -g bower

Installer les dépendances js et css depuis bower

$ sudo bower install --allow-root

Génerer les assets à l’aide Gulp

$ sudo gulp

Compiler le projet dotnet

$ sudo dotnet build

Installer le runtime dotnet 2

$ cd /tmp
$ wget https://download.microsoft.com/download/1/B/4/1B4DE605-8378-47A5-B01B-2C79D6C55519/dotnet-sdk-2.0.0-linux-x64.tar.gz
$ sudo  mkdir /usr/share/dotnet-2/
$ tar zxf dotnet-sdk-2.0.0-linux-x64.tar.gz -C /usr/share/dotnet-2/
$ sudo apt-get install -y libunwind-dev
$ /usr/share/dotnet-2/dotnet -version
$ sudo nano /usr/share/dotnet-2/dotnet2.0

#!/bin/bash 
TERM=xterm  /usr/share/dotnet-2/dotnet $1 $2 $3 


$ sudo ln -s /usr/share/dotnet-2/dotnet2.0 /bin/dotnet2.0

On se redéplace dans le répertoire du projet

cd /var/www/autismecasuffit-mvc

Installer openssl 1.0 pour que dotnet 2 fonctionne (compilation et installation en dure car libssl1.0-dev n’existe plus sous Buster)

$ cd /usr/local/src/
$ wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
$ tar -xf openssl-1.0.2o.tar.gz
$ cd openssl-1.0.2o
$ sudo mkdir /usr/local/ssl1.0
$ sudo ./config --prefix=/usr/local/ssl1.0 --openssldir=/usr/local/ssl1.0 shared zli
$ sudo make
$ sudo make install
$ cd /etc/ld.so.conf.d/
$ sudo nano openssl-1.0.2o.conf

Ajouter le contenu suivant :

/usr/local/ssl1.0/lib

Recharger les liens dynamique d’OpenSSL

$ sudo ldconfig -v

Effectuer une copie des binaires d’OpenSSL

mv /usr/bin/c_rehash /usr/bin/c_rehash.BEKUP
mv /usr/bin/openssl /usr/bin/openssl.BEKUP

Modifier la variable $PATH

$ sudo nano  ~/.bashrc
PATH=$PATH:/usr/local/ssl1.0/bin
$ sudo source  ~/.bashrc

Créer la base de données et remplir les fixtures :

$ sudo dotnet run add-fixtures

Ajouter le sous domaine autisme.brachet-christophe.fr depuis MyDnsConfig (http://www.brachet-christophe.fr/mydnsconfig/)

On vérifie que le nom de domaine est propagé à l’aide de la commande dig:

$ dig autisme.brachet-christophe.fr

On crée les certificats ssl à l’aide de cerbot:

$ sudo service nginx stop
$ sudo certbot certonly --standalone -d autisme.brachet-christophe.fr

On paramètre l’hôte virtuel nginx :

$sudo nano /etc/nginx/sites-available/05-demos

server {
     listen            51.255.165.236:443 ssl;
     server_name autisme.brachet-christophe.fr;
     # Par défaut les certificats générés avec certbot vont dans /etc/letsencrypt/live/
     # Il faut évidement remplacer le chemin par celui correspondant au domaine
     ssl_certificate /etc/letsencrypt/live/autisme.brachet-christophe.fr/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/autisme.brachet-christophe.fr/privkey.pem;
     ssl_trusted_certificate /etc/letsencrypt/live/autisme.brachet-christophe.fr/chain.pem;
     ssl_protocols TLSv1.2;
     ## Diffie-Hellman
     ssl_ecdh_curve secp384r1;

     ## Ciphers
     ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
     ssl_prefer_server_ciphers on;

     # OCSP Stapling
     resolver 80.67.169.12 80.67.169.40 valid=300s;
     resolver_timeout 5s;
     ssl_stapling on;
     ssl_stapling_verify on;

     ## TLS parameters
     ssl_session_cache shared:SSL:10m;
     ssl_session_timeout 5m;
     ssl_session_tickets off;

     ## HSTS
     add_header Strict-Transport-Security "max-age=15552000; includeSubdomains; preload";
     client_max_body_size 200M;

    location / {
        proxy_pass         http://localhost:5000;
        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;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

On active l’hôte virtuel et redémarre le serveur nginx:

$ sudo service nginx_ensite 05-demos
$ sudo service nginx restart

Lorsque l’on tape l’url : https://autisme.brachet-christophe.fr/ , on obtient une erreur 502 Bad Gateway. C’est normal car le serveur Kestrel qui écoute sur le port 5000 n’est pas démarré !

On démarre l’application Asp.Net core (pour tester le fonctionnement) :

$ cd /var/www/autismecasuffit-mvc
$ sudo dotnet2.0 run

Faire fonctionner l’application en tant que service grâce à supervisor

$ sudo sudo apt-get install supervisor
$ sudo mkdir - p /var/autisme-demo
$ sudo cp -a /var/www/autismecasuffit-mvc/bin/Debug/netcoreapp2.0/publish /var/autisme-demo
$ sudo cp -a /var/www/autismecasuffit-mvc/node_modules /var/autisme-demo/node_modules
$ sudo nano /etc/supervisor/conf.d/autisme.conf

[program:autisme]
command=/usr/bin/dotnet2.0 /var/autisme-demo/publish/AutismeCaSuffit.dll
directory=/var/autisme-demo/publish/
autostart=true
autorestart=true
stderr_logfile=/var/log/autisme.err.log
stdout_logfile=/var/log/autisme.out.log
environment=ASPNETCORE__ENVIRONMENT=Production
user=www-data
stopsignal=INT

$ sudo service supervisor stop
$ sudo service supervisor start

On accède au site fonctionnel en tapant l’url : https://autisme.brachet-christophe.fr/

MIT License

Copyright © 2020 Christophe Brachet developpeur@brachet-christophe.fr

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.