diff --git a/Dockerfile b/Dockerfile
index 8980a0c..3fab6db 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM jekyll/jekyll:3
+FROM jekyll/jekyll:pages
COPY docs/Gemfile /srv/jekyll/
@@ -7,9 +7,10 @@ WORKDIR /srv/jekyll
RUN apk update && \
apk add ruby-dev gcc make curl build-base libc-dev libffi-dev zlib-dev libxml2-dev libgcrypt-dev libxslt-dev
+RUN gem install json -v 2.7.6
RUN gem install jekyll
RUN gem install bundler -v 2.4.22
-RUN gem update --system 3.2.3
+RUN gem update --system 3.3.3
RUN bundle install
diff --git a/docker-compose.yml b/docker-compose.yml
index ef46501..a84a878 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,3 @@
-version: '2'
name: arfp-io
services:
pages:
diff --git a/docs/Gemfile b/docs/Gemfile
index 68c1f8c..a0d73c5 100644
--- a/docs/Gemfile
+++ b/docs/Gemfile
@@ -2,7 +2,7 @@ source "https://rubygems.org"
# gem "jekyll", "~> 4.2.0"
# gem "minima", "~> 2.5"
# gem "github-pages", group: :jekyll_plugins
-gem "github-pages", "~> 228", group: :jekyll_plugins
+gem "github-pages", "~> 232", group: :jekyll_plugins
# plugins
group :jekyll_plugins do
# gem "jekyll-feed", "~> 0.12"
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index 92a6974..c5c328f 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -1,50 +1,62 @@
GEM
remote: https://rubygems.org/
specs:
- activesupport (6.0.6)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2, >= 2.2.2)
- addressable (2.8.4)
- public_suffix (>= 2.0.2, < 6.0)
+ activesupport (7.2.2.1)
+ base64
+ benchmark (>= 0.3)
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
+ minitest (>= 5.1)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ base64 (0.2.0)
+ benchmark (0.4.0)
+ bigdecimal (3.1.9)
coffee-script (2.4.1)
coffee-script-source
execjs
- coffee-script-source (1.11.1)
+ coffee-script-source (1.12.2)
colorator (1.1.0)
- commonmarker (0.23.9)
- concurrent-ruby (1.2.2)
- dnsruby (1.70.0)
+ commonmarker (0.23.11)
+ concurrent-ruby (1.3.5)
+ connection_pool (2.5.0)
+ csv (3.3.2)
+ dnsruby (1.72.3)
+ base64 (~> 0.2.0)
simpleidn (~> 0.2.1)
+ drb (2.2.1)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
ethon (0.16.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
- eventmachine (1.2.7-x64-mingw32)
- execjs (2.8.1)
- faraday (2.7.10)
- faraday-net_http (>= 2.0, < 3.1)
- ruby2_keywords (>= 0.0.4)
- faraday-net_http (3.0.2)
- ffi (1.15.5)
- ffi (1.15.5-x64-mingw32)
- ffi (1.15.5-x64-unknown)
+ execjs (2.10.0)
+ faraday (2.12.2)
+ faraday-net_http (>= 2.0, < 3.5)
+ json
+ logger
+ faraday-net_http (3.4.0)
+ net-http (>= 0.5.0)
+ ffi (1.17.1)
forwardable-extended (2.6.0)
- gemoji (3.0.1)
- github-pages (228)
- github-pages-health-check (= 1.17.9)
- jekyll (= 3.9.3)
- jekyll-avatar (= 0.7.0)
- jekyll-coffeescript (= 1.1.1)
- jekyll-commonmark-ghpages (= 0.4.0)
- jekyll-default-layout (= 0.1.4)
- jekyll-feed (= 0.15.1)
+ gemoji (4.1.0)
+ github-pages (232)
+ github-pages-health-check (= 1.18.2)
+ jekyll (= 3.10.0)
+ jekyll-avatar (= 0.8.0)
+ jekyll-coffeescript (= 1.2.2)
+ jekyll-commonmark-ghpages (= 0.5.1)
+ jekyll-default-layout (= 0.1.5)
+ jekyll-feed (= 0.17.0)
jekyll-gist (= 1.5.0)
- jekyll-github-metadata (= 2.13.0)
+ jekyll-github-metadata (= 2.16.1)
jekyll-include-cache (= 0.2.1)
jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2)
@@ -71,30 +83,32 @@ GEM
jekyll-theme-tactile (= 0.2.0)
jekyll-theme-time-machine (= 0.2.0)
jekyll-titles-from-headings (= 0.5.3)
- jemoji (= 0.12.0)
- kramdown (= 2.3.2)
+ jemoji (= 0.13.0)
+ kramdown (= 2.4.0)
kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.4)
mercenary (~> 0.3)
minima (= 2.5.1)
- nokogiri (>= 1.13.6, < 2.0)
- rouge (= 3.26.0)
+ nokogiri (>= 1.16.2, < 2.0)
+ rouge (= 3.30.0)
terminal-table (~> 1.4)
- github-pages-health-check (1.17.9)
+ webrick (~> 1.8)
+ github-pages-health-check (1.18.2)
addressable (~> 2.3)
dnsruby (~> 1.60)
- octokit (~> 4.0)
- public_suffix (>= 3.0, < 5.0)
+ octokit (>= 4, < 8)
+ public_suffix (>= 3.0, < 6.0)
typhoeus (~> 1.3)
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.8.0)
- i18n (1.14.1)
+ i18n (1.14.7)
concurrent-ruby (~> 1.0)
- jekyll (3.9.3)
+ jekyll (3.10.0)
addressable (~> 2.4)
colorator (~> 1.0)
+ csv (~> 3.0)
em-websocket (~> 0.5)
i18n (>= 0.7, < 2)
jekyll-sass-converter (~> 1.0)
@@ -105,27 +119,28 @@ GEM
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- jekyll-avatar (0.7.0)
+ webrick (>= 1.0)
+ jekyll-avatar (0.8.0)
jekyll (>= 3.0, < 5.0)
- jekyll-coffeescript (1.1.1)
+ jekyll-coffeescript (1.2.2)
coffee-script (~> 2.2)
- coffee-script-source (~> 1.11.1)
+ coffee-script-source (~> 1.12)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
- jekyll-commonmark-ghpages (0.4.0)
- commonmarker (~> 0.23.7)
- jekyll (~> 3.9.0)
+ jekyll-commonmark-ghpages (0.5.1)
+ commonmarker (>= 0.23.7, < 1.1.0)
+ jekyll (>= 3.9, < 4.0)
jekyll-commonmark (~> 1.4.0)
rouge (>= 2.0, < 5.0)
- jekyll-default-layout (0.1.4)
- jekyll (~> 3.0)
- jekyll-feed (0.15.1)
+ jekyll-default-layout (0.1.5)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
- jekyll-github-metadata (2.13.0)
+ jekyll-github-metadata (2.16.1)
jekyll (>= 3.4, < 5.0)
- octokit (~> 4.0, != 4.4.0)
+ octokit (>= 4, < 7, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
jekyll-mentions (1.6.0)
@@ -196,42 +211,45 @@ GEM
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- jemoji (0.12.0)
- gemoji (~> 3.0)
+ jemoji (0.13.0)
+ gemoji (>= 3, < 5)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
- kramdown (2.3.2)
+ json (2.10.1)
+ kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
- listen (3.8.0)
+ listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.6.5)
mercenary (0.3.6)
- mini_portile2 (2.8.5)
+ mini_portile2 (2.8.8)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
- minitest (5.18.1)
- nokogiri (1.13.10)
- mini_portile2 (~> 2.8.0)
+ minitest (5.25.4)
+ net-http (0.6.0)
+ uri
+ nokogiri (1.18.2)
+ mini_portile2 (~> 2.8.2)
racc (~> 1.4)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (4.0.7)
- racc (1.7.1)
+ public_suffix (5.1.1)
+ racc (1.8.1)
rb-fsevent (0.11.2)
- rb-inotify (0.10.1)
+ rb-inotify (0.11.1)
ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.26.0)
- ruby2_keywords (0.0.5)
- rubyzip (2.3.2)
+ rexml (3.4.0)
+ rouge (3.30.0)
+ rubyzip (2.4.1)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
@@ -241,34 +259,23 @@ GEM
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
- simpleidn (0.2.1)
- unf (~> 0.1.4)
+ securerandom (0.4.1)
+ simpleidn (0.2.3)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
- thread_safe (0.3.6)
- typhoeus (1.4.0)
+ typhoeus (1.4.1)
ethon (>= 0.9.0)
- tzinfo (1.2.10)
- thread_safe (~> 0.1)
- tzinfo-data (1.2023.3)
- tzinfo (>= 1.0.0)
- unf (0.1.4)
- unf_ext
- unf_ext (0.0.8.2)
- unf_ext (0.0.8.2-x64-mingw32)
- unf_ext (0.0.8.2-x64-unknown)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
unicode-display_width (1.8.0)
- wdm (0.1.1)
- webrick (1.8.1)
- zeitwerk (2.6.8)
+ uri (1.0.2)
+ webrick (1.9.1)
PLATFORMS
- x64-mingw32
- x64-unknown
x86_64-linux-musl
DEPENDENCIES
- github-pages (~> 228)
+ github-pages (~> 232)
jekyll-redirect-from
tzinfo (~> 1.2)
tzinfo-data
diff --git a/docs/Gemfile.lock.old b/docs/Gemfile.lock.old
new file mode 100644
index 0000000..92a6974
--- /dev/null
+++ b/docs/Gemfile.lock.old
@@ -0,0 +1,279 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ activesupport (6.0.6)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ zeitwerk (~> 2.2, >= 2.2.2)
+ addressable (2.8.4)
+ public_suffix (>= 2.0.2, < 6.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
+ colorator (1.1.0)
+ commonmarker (0.23.9)
+ concurrent-ruby (1.2.2)
+ dnsruby (1.70.0)
+ simpleidn (~> 0.2.1)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ ethon (0.16.0)
+ ffi (>= 1.15.0)
+ eventmachine (1.2.7)
+ eventmachine (1.2.7-x64-mingw32)
+ execjs (2.8.1)
+ faraday (2.7.10)
+ faraday-net_http (>= 2.0, < 3.1)
+ ruby2_keywords (>= 0.0.4)
+ faraday-net_http (3.0.2)
+ ffi (1.15.5)
+ ffi (1.15.5-x64-mingw32)
+ ffi (1.15.5-x64-unknown)
+ forwardable-extended (2.6.0)
+ gemoji (3.0.1)
+ github-pages (228)
+ github-pages-health-check (= 1.17.9)
+ jekyll (= 3.9.3)
+ jekyll-avatar (= 0.7.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.4.0)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.15.1)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.13.0)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.12.0)
+ kramdown (= 2.3.2)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.4)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.13.6, < 2.0)
+ rouge (= 3.26.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.17.9)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (>= 3.0, < 5.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
+ http_parser.rb (0.8.0)
+ i18n (1.14.1)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.9.3)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (>= 0.7, < 2)
+ jekyll-sass-converter (~> 1.0)
+ jekyll-watch (~> 2.0)
+ kramdown (>= 1.17, < 3)
+ liquid (~> 4.0)
+ mercenary (~> 0.3.3)
+ pathutil (~> 0.9)
+ rouge (>= 1.7, < 4)
+ safe_yaml (~> 1.0)
+ jekyll-avatar (0.7.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.4.0)
+ commonmarker (~> 0.23.7)
+ jekyll (~> 3.9.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 5.0)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
+ jekyll-feed (0.15.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.13.0)
+ jekyll (>= 3.4, < 5.0)
+ octokit (~> 4.0, != 4.4.0)
+ jekyll-include-cache (0.2.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-mentions (1.6.0)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ jemoji (0.12.0)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ kramdown (2.3.2)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.8.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.3.6)
+ mini_portile2 (2.8.5)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (5.18.1)
+ nokogiri (1.13.10)
+ mini_portile2 (~> 2.8.0)
+ racc (~> 1.4)
+ octokit (4.25.1)
+ faraday (>= 1, < 3)
+ sawyer (~> 0.9)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (4.0.7)
+ racc (1.7.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rexml (3.2.5)
+ rouge (3.26.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ safe_yaml (1.0.5)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.9.2)
+ addressable (>= 2.3.5)
+ faraday (>= 0.17.3, < 3)
+ simpleidn (0.2.1)
+ unf (~> 0.1.4)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.10)
+ thread_safe (~> 0.1)
+ tzinfo-data (1.2023.3)
+ tzinfo (>= 1.0.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.2)
+ unf_ext (0.0.8.2-x64-mingw32)
+ unf_ext (0.0.8.2-x64-unknown)
+ unicode-display_width (1.8.0)
+ wdm (0.1.1)
+ webrick (1.8.1)
+ zeitwerk (2.6.8)
+
+PLATFORMS
+ x64-mingw32
+ x64-unknown
+ x86_64-linux-musl
+
+DEPENDENCIES
+ github-pages (~> 228)
+ jekyll-redirect-from
+ tzinfo (~> 1.2)
+ tzinfo-data
+ wdm (~> 0.1.1)
+ webrick (~> 1.8)
+
+BUNDLED WITH
+ 2.4.22
diff --git a/docs/_sass/_base.scss b/docs/_sass/_base.scss
index 3dcd4b9..c19f379 100644
--- a/docs/_sass/_base.scss
+++ b/docs/_sass/_base.scss
@@ -195,6 +195,14 @@ img {
margin: 1rem auto;
}
+iframe {
+ display: block;
+ width: 800px;
+ height: 450px;
+ max-width: 100%;
+ margin: 2rem auto;
+}
+
hr {
margin: 2rem 1rem;
}
diff --git a/docs/tp/deploiement/docker/docker-introduction.md b/docs/tp/deploiement/docker/docker-introduction.md
new file mode 100644
index 0000000..22cc9d9
--- /dev/null
+++ b/docs/tp/deploiement/docker/docker-introduction.md
@@ -0,0 +1,35 @@
+---
+title: "Introduciton à Docker"
+serie: "docker"
+order: 2
+---
+
+
+Lancée en 2013, **la plateforme Docker** permet aux développeurs et aux administrateurs de développer, déployer et exécuter des applications avec des **[conteneurs](./index)**.
+
+Plus précisément Docker permet d'embarquer une application avec toutes ses dépendances dans un processus isolé, nommé **conteneur**, qui peut ensuite être exécuté sur n'importe quelle machine (physique ou virtuelle) avec n'importe quel système d'exploitation compatible Docker.
+
+
+
+## Installer Docker Desktop
+
+URL de téléchargement : [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/).
+
+
+## Les images
+
+Une **image Docker** est un modèle en lecture seule pour les **conteneurs**. On y retrouve tout le code source de l’application à `conteneuriser`, ses dépendances, les bibliothèques à utiliser ainsi que d’autres outils nécessaires à la création du **conteneur**.
+
+
+### Les conteneurs Docker
+
+Docker possède de nombreuses fonctionnalités reposant sur celles du noyau GNU/Linux, telles que les conteneurs.
+
+Les conteneurs contiennent généralement un ou plusieurs programme(s) maintenus isolées du système hôte sur lequel elles s'exécutent. Ils permettent à un développeur de conditionner une application avec toutes ses dépendances, et de l'expédier dans un package unique.
+
+Les conteneurs sont conçus pour faciliter le déploiement. Les développeurs et les administrateurs système peuvent déplacer le code des environnements de développement vers la production de manière rapide et reproductible. Mettre en place les environnements nécessaires au processus de déploiement utilisé (tests, intégration etc...) est facilité par cette approche.
+
+
+## En vidéo
+
+- [Formation Docker sur Youtube](https://www.youtube.com/watch?v=GVogBCqrXck&list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd&index=2)
\ No newline at end of file
diff --git a/docs/tp/deploiement/docker/docker-tutos.md b/docs/tp/deploiement/docker/docker-tutos.md
new file mode 100644
index 0000000..5dcec74
--- /dev/null
+++ b/docs/tp/deploiement/docker/docker-tutos.md
@@ -0,0 +1,31 @@
+---
+title: "Tutoriaux"
+serie: "docker"
+order: 5
+---
+
+Ce document référence les tutoriels à suivre pour créer des conteneurs Docker pour différents types d'applications.
+
+## Applications .NET
+
+### Application Console .NET
+
+- [Conteneuriser une application .NET Console (Microsoft Learn)](https://learn.microsoft.com/fr-fr/dotnet/core/docker/build-container?tabs=windows&pivots=dotnet-9-0)
+
+- [Conteneuriser une application .NET Core (Microsoft Learn)](https://learn.microsoft.com/fr-fr/virtualization/windowscontainers/quick-start/building-sample-app)
+
+
+
+
+### Applications Web ASP.NET
+
+1. [Créer un site Web avec ASP.NET Core (Youtube)](https://www.youtube.com/watch?v=WbRHVHHr6kU)
+2. [Héberger un site ASP.NET Core dans un conteneur Docker (Microsoft Learn)](https://learn.microsoft.com/fr-fr/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-9.0)
+
+
+
+## Applications Web PHP
+
+- [Créer des images Docker personnalisées avec le Dockerfile](https://devopssec.fr/article/creer-ses-propres-images-docker-dockerfile)
+
+- [Héberger un site Wordpress dans un conteneur Docker](https://stephane-arrami.com/guide-pratique-pour-dockeriser-wordpress-avec-un-dockerfile-personnalise)
diff --git a/docs/tp/deploiement/docker/index.md b/docs/tp/deploiement/docker/index.md
index 20aeeb0..948471a 100644
--- a/docs/tp/deploiement/docker/index.md
+++ b/docs/tp/deploiement/docker/index.md
@@ -1,5 +1,92 @@
---
-title: "Docker"
-serie: "exercices"
+title: "Conteneurs & Docker"
+serie: "docker"
index: 3
----
\ No newline at end of file
+order: 1
+---
+
+## Qu'est qu'un "Conteneur" ?
+
+La mise en conteneur est une approche de développement de logiciels qui consiste à empaqueter une application ou un service, ses dépendances et sa configuration (extraits sous forme de fichiers manifeste de déploiement) sous forme d’image.
+
+De la même manière que les conteneurs de transport permettent de transporter des marchandises par bateau, par train ou par camion indépendamment de la nature de la cargaison, les conteneurs logiciels agissent comme une unité de déploiement logiciel standard qui peut contenir du code et des dépendances différents. Cette façon de mettre les logiciels en conteneur permet aux développeurs et aux informaticiens de les déployer dans les environnements avec peu ou pas de modifications.
+
+Les conteneurs isolent les applications les unes des autres sur un système d'exploitation partagé. Les applications en conteneur s’exécutent sur un hôte de conteneurs qui à son tour s’exécute sur le système d'exploitation (Linux ou Windows). Par conséquent, les conteneurs ont un encombrement bien moindre que les images de machine virtuelle.
+
+Chaque conteneur peut exécuter une application web ou un service dans son intégralité.
+
+- [Lire la suite sur Microsoft Learn](https://learn.microsoft.com/fr-fr/dotnet/architecture/microservices/container-docker-introduction/)
+
+
+## Rappels: Principe de la virtualisation
+
+La **virtualisation** permet de mutualiser plusieurs ordinateurs virtuels sur un ordinateur physique grâce à un logiciel nommé **hyperviseur**. L’hyperviseur permet d’émuler intégralement les ressources matérielles d'un ordinateur physique (l'unité centrale, le CPU, la RAM, le stockage, le réseau etc...), et permet à des machines virtuelles de les partager.
+
+
+
+Ainsi ces **machines virtuelles** ou **VM** pour *Virtual Machine* bénéficieront de ressources matérielles selon leurs besoins. Le principal avantage est qu'il est possible de modifier les ressources physiques de ces VMs en quelques clics. Chaque VM possède son propre système d’exploitation ainsi que ses propres applications.
+
+
+## La conteneurisation vs virtualisation
+
+Dans le cas de la **virtualisation** l’isolation des VMs se fait au niveau matériel (CPU/RAM/Stockage) avec un accès virtuel aux ressources de l'hôte via un hyperviseur. Généralement les ordinateurs virtuels fournissent un environnement avec plus de ressources que les applications n'en ont besoin.
+
+La **conteneurisation** est une forme de virtualisation du système d'exploitation dans laquelle vous exécutez des applications dans des espaces utilisateurs isolés appelés **conteneurs** qui utilisent le même système d'exploitation partagé.
+
+
+
+Les **conteneurs** encapsulent une application en tant que progiciel exécutable qui regroupe le code de l'application et tous les fichiers de configuration, dépendances et bibliothèques nécessaires à son exécution. Les applications conteneurisées sont isolées du système d'exploitation. Le développeur installe un moteur d'exécution (par exemple, Docker) sur le système d'exploitation de l'hôte qui devient l'intermédiaire permettant aux conteneurs de partager un système d'exploitation virtuel avec d'autres conteneurs d'applications sur le système informatique.
+
+
+
+La conteneurisation permet aux développeurs de logiciels de créer et de déployer des applications de façon rapide et sécurisée.
+
+Avec les méthodes traditionnelles, vous codez dans un environnement informatique spécifique, ce qui peut entraîner des erreurs et des bogues lorsque vous transférez ce code dans un nouvel emplacement. Par exemple, lorsque vous transférez du code de votre ordinateur de bureau vers une machine virtuelle, ou d'un système d'exploitation Windows vers GNU/Linux.
+
+La conteneurisation élimine ce problème en vous permettant de regrouper le code du logiciel, les fichiers de configuration, les dépendances et les bibliothèques nécessaires. Vous pouvez ensuite isoler ce package de logiciels unique appelé **conteneur** du système d'exploitation hôte, ce qui lui permet d'être autonome et de devenir portable, c'est-à-dire de s'exécuter sur n'importe quel ordinateur exécutant Docker.
+
+
+
+## Avantages de la conteneurisation
+
+- Les conteneurs sont beaucoup moins gourmand en ressources que les machines virtuelles.
+- Les conteneurs exploitent et partagent le système hôte.
+- Les applications les plus complexes peuvent être conteneurisées.
+- Déploiement des mises à jour à la volée.
+- Portabilité: vous pouvez créer localement, déployer sur le cloud et exécuter votre application n'importe où.
+
+Le déploiement doit être pris en compte dans le processus de développement. On peut déplacer les conteneurs d’un environnement à l’autre très rapidement avec Docker car il suffit juste de partager des fichiers de configuration (Dockerfile, docker-compose) qui sont en général très légers.
+
+
+
+
+
+On peut bien sur faire la même chose avec des machines virtuelles en les déplaçant entièrement de serveurs en serveurs mais le déploiement et le temps d'exécution seront beaucoup plus lent.
+
+## Les conteneurs
+
+Pour rappel, le noyau GNU/Linux offre des fonctionnalités telles que :
+
+- Les **namespaces**: ce qu'un processus peut voir
+- Les **cgroups**: ce qu'un processus peut utiliser en terme de ressources
+
+Ces fonctionnalités vont permettre à Docker (et autres outils équivalents) d’isoler les processus les uns des autres. Un processus isolé est appelé **conteneur**.
+
+Par exemple, si on souhaite créer un conteneur contenant la distribution *Ubuntu* ; ces fonctionnalités d'isolation proposées par le noyau GNU/Linux vont permettre d'avoir quelque chose qui *ressemble* à une machine virtuelle avec l'OS Ubuntu. En réalité, ce n'est pas du tout une machine virtuelle mais un processus isolé s'exécutant dans le même noyau GNU/Linux.
+
+
+
+### Les namespaces
+
+Les **namespaces** (ou **espaces de noms** en français) isolent les ressources partagées. Ils donnent à chaque processus sa propre vue unique du système, limitant ainsi leur accès aux ressources système sans que le processus en cours ne soit au courant des limitations.
+
+### Les cgroups
+
+Que faire si nous souhaitons limiter la quantité de mémoire ou de CPU utilisée par l'un de nos processus ?
+
+Les **groupes de contrôle** ou **cgroups** permettent la gestion des ressources utilisées par les processus.
+
+
+## En vidéo
+
+
diff --git a/docs/tp/deploiement/ftp/01-comprendre-ftp-et-sftp.md b/docs/tp/deploiement/ftp/01-comprendre-ftp-et-sftp.md
new file mode 100644
index 0000000..8f65da8
--- /dev/null
+++ b/docs/tp/deploiement/ftp/01-comprendre-ftp-et-sftp.md
@@ -0,0 +1,15 @@
+---
+title: "Les protocoles FTP et SFTP"
+serie: "manuel"
+order: 2
+---
+
+**FTP**, **FTPS** et **SFTP**. Ces 3 protocoles servent à transférer des fichiers d'un ordinateur de travail vers un serveur et inversement, mais avec des différences notamment au niveau de la sécurité.
+
+
+
+## Ressources en ligne
+
+- [Comprendre les protocoles FTP, FTPS et SFTP](https://www.it-connect.fr/les-protocoles-ftp-ftps-et-sftp-pour-les-debutants/)
+- [Le protocole FTP en détail](https://fr.wikipedia.org/wiki/File_Transfer_Protocol)
+- [Le protocole SFTP en détail](https://fr.wikipedia.org/wiki/SSH_File_Transfer_Protocol)
diff --git a/docs/tp/deploiement/ftp/publier-site-sftp.md b/docs/tp/deploiement/ftp/02-publier-site-sftp.md
similarity index 89%
rename from docs/tp/deploiement/ftp/publier-site-sftp.md
rename to docs/tp/deploiement/ftp/02-publier-site-sftp.md
index 0aa6098..d2a3b32 100644
--- a/docs/tp/deploiement/ftp/publier-site-sftp.md
+++ b/docs/tp/deploiement/ftp/02-publier-site-sftp.md
@@ -1,12 +1,16 @@
---
-title: "Déploiement manuel"
+title: "Déploiement via (S)FTP"
serie: "manuel"
-index: 2
+order: 3
---
Dans cet article, vous apprendrez à publier du contenu sur un serveur distant en utilisant le protocole FTP et/ou SFTP et le logiciel FileZilla.
+
+
+
+
## Téléchargez et installez FileZilla
Si FileZilla n'est pas déjà installé sur votre machine:
@@ -78,4 +82,3 @@ FileZilla affichera la progression du transfert dans la partie inférieure de la
2. Regardez cette vidéo pour savoir comment publier votre 1er site web :
[](https://www.youtube.com/watch?v=SmIdDn86i5M)
-
diff --git a/docs/tp/deploiement/ftp/index.md b/docs/tp/deploiement/ftp/index.md
index 06c5570..f1d11e7 100644
--- a/docs/tp/deploiement/ftp/index.md
+++ b/docs/tp/deploiement/ftp/index.md
@@ -1,6 +1,28 @@
---
title: "Déploiement manuel"
serie: "manuel"
-index: 1
+index: 2
+order: 1
---
+Avant que se généralise les démarches de déploiement continu et automatique, les équipes de développement procédaient à un déploiement manuel des applications et sites web. Dans un tel cas, la documentation détaille les opérations à réaliser pour déployer/installer l’application.
+
+**Les éléments à documenter sont les suivants (liste non exhaustive) :**
+
+- Le ou les langages utilisés dans le projet (avec leur numéro de version)
+- Les éventuelles dépendances nécessaires au projet (avec leur numéro de version)
+- Le ou les applicatifs serveur utilisés (avec leur numéro de version)
+- Les détails sur la configuration de chacun des éléments précédents
+- Les informations concernant chaque environnement
+ - L’adresse du serveur pour le transfert des fichiers via SFTP
+ - L’adresse du serveur de base de données
+ - Le chemin où doivent être transférés les fichiers du projet
+- L’adresse (nom de domaine ou IP) pour accéder à l’application
+
+
+**Ressources en ligne :**
+
+- [Comprendre les protocoles FTP et SFTP](./comprendre-ftp-et-sftp)
+- [Mettre son site en ligne avec FileZilla](https://www.youtube.com/watch?v=Mw9uoD346-k)
+- [Définir un plan de déploiement](https://devoldere.net/ressources/deploiement/03%20-%20Deploiement%20-%20plan%20de%20deploiement.pdf)
+- [Rédiger une procédure de déploiement](https://devoldere.net/ressources/deploiement/04%20CDA%20DWWM%20Modele%20Documentation%20D%c3%a9ploiement%201.0.7.pdf)
diff --git a/docs/tp/deploiement/img/docker-cicd.jpg b/docs/tp/deploiement/img/docker-cicd.jpg
new file mode 100644
index 0000000..a8bd8d2
Binary files /dev/null and b/docs/tp/deploiement/img/docker-cicd.jpg differ
diff --git a/docs/tp/deploiement/img/docker-env-dev-dotnet.png b/docs/tp/deploiement/img/docker-env-dev-dotnet.png
new file mode 100644
index 0000000..336be24
Binary files /dev/null and b/docs/tp/deploiement/img/docker-env-dev-dotnet.png differ
diff --git a/docs/tp/deploiement/img/docker-env-prod.png b/docs/tp/deploiement/img/docker-env-prod.png
new file mode 100644
index 0000000..efad749
Binary files /dev/null and b/docs/tp/deploiement/img/docker-env-prod.png differ
diff --git a/docs/tp/deploiement/img/docker-vm.png b/docs/tp/deploiement/img/docker-vm.png
new file mode 100644
index 0000000..62369bf
Binary files /dev/null and b/docs/tp/deploiement/img/docker-vm.png differ
diff --git a/docs/tp/deploiement/img/docker-vs-virtual-machines-2.jpg b/docs/tp/deploiement/img/docker-vs-virtual-machines-2.jpg
new file mode 100644
index 0000000..e4348f8
Binary files /dev/null and b/docs/tp/deploiement/img/docker-vs-virtual-machines-2.jpg differ
diff --git a/docs/tp/deploiement/img/docker-vs-virtual-machines.jpg b/docs/tp/deploiement/img/docker-vs-virtual-machines.jpg
new file mode 100644
index 0000000..7a46827
Binary files /dev/null and b/docs/tp/deploiement/img/docker-vs-virtual-machines.jpg differ
diff --git a/docs/tp/deploiement/img/linux-containers.png b/docs/tp/deploiement/img/linux-containers.png
new file mode 100644
index 0000000..ac09173
Binary files /dev/null and b/docs/tp/deploiement/img/linux-containers.png differ
diff --git a/docs/tp/deploiement/index.md b/docs/tp/deploiement/index.md
index f6acdd9..4cb642b 100644
--- a/docs/tp/deploiement/index.md
+++ b/docs/tp/deploiement/index.md
@@ -11,30 +11,6 @@ Toute entreprise a besoin, à un moment ou à un autre, de déployer une applica
Le déploiement en informatique désigne l'ensemble des opérations nécessaires pour qu'une application logicielle ou un système soit introduit dans son environnement d'utilisation prévu. Il comporte l'installation, la configuration, les tests et la maintenance.
-## Différents types de déploiement
-
-Il existe plusieurs types de déploiement. Chacun comporte des avantages et des inconvénients. Les services informatiques doivent les comparer pour trouver la meilleure technique à utiliser selon l'application prise en charge.
-
-Parmi les plus courants, quatre ressortent :
-
-**Le déploiement de base :** c'est le plus simple. Il permet de mettre à jour tous les environnements cibles de manière simultanée, sans avoir de stratégie ou de processus. C'est aussi le type de déploiement le plus risqué, car les logiciels ne sont pas déployés de façon contrôlée et lente. Ce type de déploiement peut être manuel ou automatisé.
-
-**Le déploiement progressif :** ici, les applications logicielles sont mises à jour lentement et vont progressivement remplacer l'ancien logiciel. Il possède un certain risque, car l'application originale n'est pas préservée.
-
-**Le déploiement bleu-vert :** celui-ci permet de préserver l'ancien environnement tout en déployant le nouveau en simultanée. Une fois l'application déployée, s'il y a un problème, il est possible de rediriger le trafic vers l'ancien pour qu'il fonctionne de manière optimale. Dès que le nouvel environnement est fonctionnel et ne présente pas de faille, il convient de mettre fin à l'ancien environnement.
-
-**Le déploiement canari :** il consiste à déployer une application par sous-ensemble. Au début, il est destiné à un petit groupe de personnes, puis il est déployé de manière incrémentielle au travers de versions progressives. Ce type de déploiement permet d'avoir des retours d'expérience anticipés d'utilisateurs et d'identifier les bugs afin de les supprimer pour la version finale. Le déploiement canari est intéressant pour les applications qui possèdent un groupe identifiable d'utilisateurs et non général.
-
-
-# Ressources
-
-**Lectures :**
-
-- [Les environnements d'exécution](https://devoldere.net/ressources/deploiement/01%20-%20Environnements-dev-test-prod.pdf)
-- [Le déploiement manuel et automatique](https://devoldere.net/ressources/deploiement/02%20-%20Deploiement%20-%20manuel%20et%20auto.pdf)
-- [Définir un plan de déploiement](https://devoldere.net/ressources/deploiement/03%20-%20Deploiement%20-%20plan%20de%20deploiement.pdf)
-- [Rédiger une procédure de déploiement](https://devoldere.net/ressources/deploiement/04%20CDA%20DWWM%20Modele%20Documentation%20D%c3%a9ploiement%201.0.7.pdf)
-- [Rédiger un changelog](https://devoldere.net/ressources/deploiement/05%20CDA%20DWWM%20Changelog%201.0.0.pdf)
**Vidéos :**
@@ -43,12 +19,3 @@ Parmi les plus courants, quatre ressortent :
- Déploiement automatique avec Github
- [Héberger un site gratuitement sur GitHub](https://www.youtube.com/watch?v=hNRxn5sKOdE)
- [Comment héberger un site web facilement avec GitHub](https://www.youtube.com/watch?v=dBAZ5Qc2bIk)
-
-
-# Travail à réaliser
-
-Publier votre site web personnel (cv ou autre) sur Github Pages.
-
-[Documentation Github Pages](https://docs.github.com/fr/pages/getting-started-with-github-pages/creating-a-github-pages-site)
-
-> Vous ne pouvez publier que du contenu statique (HTML, CSS, Javascript, images...). PHP et les langages serveurs ne fonctionnent pas sur Github Pages.
diff --git a/docs/tp/deploiement/introduction/index.md b/docs/tp/deploiement/introduction/index.md
new file mode 100644
index 0000000..4930155
--- /dev/null
+++ b/docs/tp/deploiement/introduction/index.md
@@ -0,0 +1,38 @@
+---
+title: "Planifier le déploiement"
+serie: "exercices"
+index: 1
+order: 1
+---
+
+En informatique, le déploiement désigne l’ensemble des opérations nécessaires pour qu’une solution applicative soit introduite dans un environnement d’utilisation prévu.
+
+Le déploiement comporte :
+- La configuration de l’environnement d’exécution
+- L’installation et la configuration de l’application
+- Les tests (intégration, système et acceptation client)
+
+## Différents types de déploiement
+
+Il existe plusieurs types de déploiement. Chacun comporte des avantages et des inconvénients. Les services informatiques doivent les comparer pour trouver la meilleure technique à utiliser selon l'application prise en charge.
+
+**Parmi les plus courants, quatre ressortent :**
+
+**Le déploiement de base :** c'est le plus simple. Il permet de mettre à jour tous les environnements cibles de manière simultanée, sans avoir de stratégie ou de processus. C'est aussi le type de déploiement le plus risqué, car les logiciels ne sont pas déployés de façon contrôlée et lente. Ce type de déploiement peut être manuel ou automatisé.
+
+**Le déploiement progressif :** ici, les applications logicielles sont mises à jour lentement et vont progressivement remplacer l'ancien logiciel. Il possède un certain risque, car l'application originale n'est pas préservée.
+
+**Le déploiement bleu-vert :** celui-ci permet de préserver l'ancien environnement tout en déployant le nouveau en simultanée. Une fois l'application déployée, s'il y a un problème, il est possible de rediriger le trafic vers l'ancien pour qu'il fonctionne de manière optimale. Dès que le nouvel environnement est fonctionnel et ne présente pas de faille, il convient de mettre fin à l'ancien environnement.
+
+**Le déploiement canari :** il consiste à déployer une application par sous-ensemble. Au début, il est destiné à un petit groupe de personnes, puis il est déployé de manière incrémentielle au travers de versions progressives. Ce type de déploiement permet d'avoir des retours d'expérience anticipés d'utilisateurs et d'identifier les bugs afin de les supprimer pour la version finale. Le déploiement canari est intéressant pour les applications qui possèdent un groupe identifiable d'utilisateurs et non général.
+
+
+# Ressources
+
+**Lectures :**
+
+- [Les environnements d'exécution](https://devoldere.net/ressources/deploiement/01%20-%20Environnements-dev-test-prod.pdf)
+- [Le déploiement manuel et automatique](https://devoldere.net/ressources/deploiement/02%20-%20Deploiement%20-%20manuel%20et%20auto.pdf)
+- [Définir un plan de déploiement](https://devoldere.net/ressources/deploiement/03%20-%20Deploiement%20-%20plan%20de%20deploiement.pdf)
+- [Rédiger une procédure de déploiement (Modèle)](https://devoldere.net/ressources/deploiement/04%20CDA%20DWWM%20Modele%20Documentation%20D%c3%a9ploiement%201.0.7.pdf)
+- [Rédiger un changelog](https://devoldere.net/ressources/deploiement/05%20CDA%20DWWM%20Changelog%201.0.0.pdf)
diff --git a/docs/tp/deploiement/plan-deploiement.md b/docs/tp/deploiement/introduction/plan-deploiement.md
similarity index 89%
rename from docs/tp/deploiement/plan-deploiement.md
rename to docs/tp/deploiement/introduction/plan-deploiement.md
index 94dfc19..2a5dacc 100644
--- a/docs/tp/deploiement/plan-deploiement.md
+++ b/docs/tp/deploiement/introduction/plan-deploiement.md
@@ -1,7 +1,7 @@
---
-title: "Déploiement manuel"
+title: "Le plan de déploiement"
serie: "exercices"
-index: 1
+order: 2
---
Le déploiement informatique est une étape cruciale pour intégrer de nouvelles applications, systèmes ou logiciels dans l’environnement d’une entreprise. Il s’agit d’un processus complexe qui nécessite une planification minutieuse et une exécution rigoureuse.
@@ -100,3 +100,13 @@ Un déploiement informatique bien fait offre une flexibilité accrue, permettant
### Meilleure prise de décision
L’intégration de nouvelles technologies permet de collecter et d’analyser des données en temps réel. Cela aide les décideurs à prendre des décisions plus éclairées et stratégiques, basées sur des informations précises et à jour.
+
+# Ressources
+
+**Lectures :**
+
+- [Les environnements d'exécution](https://devoldere.net/ressources/deploiement/01%20-%20Environnements-dev-test-prod.pdf)
+- [Le déploiement manuel et automatique](https://devoldere.net/ressources/deploiement/02%20-%20Deploiement%20-%20manuel%20et%20auto.pdf)
+- [Définir un plan de déploiement](https://devoldere.net/ressources/deploiement/03%20-%20Deploiement%20-%20plan%20de%20deploiement.pdf)
+- [Rédiger une procédure de déploiement (Modèle)](https://devoldere.net/ressources/deploiement/04%20CDA%20DWWM%20Modele%20Documentation%20D%c3%a9ploiement%201.0.7.pdf)
+- [Rédiger un changelog](https://devoldere.net/ressources/deploiement/05%20CDA%20DWWM%20Changelog%201.0.0.pdf)
diff --git a/docs/tp/deploiement/wsl/linux-cmd.md b/docs/tp/deploiement/wsl/01-linux-cmd.md
similarity index 61%
rename from docs/tp/deploiement/wsl/linux-cmd.md
rename to docs/tp/deploiement/wsl/01-linux-cmd.md
index aadc6e3..4ad2553 100644
--- a/docs/tp/deploiement/wsl/linux-cmd.md
+++ b/docs/tp/deploiement/wsl/01-linux-cmd.md
@@ -1,7 +1,7 @@
---
title: "Les commandes Linux de base"
serie: "wsl"
-order: 1
+order: 2
---
Les commandes Linux facilitent la prise en main du système d’exploitation.
@@ -14,7 +14,10 @@ Ce document répertorie les commandes GNU/Linux de base que vous vous devez de c
> Note: L’interpréteur de commandes Linux est sensible à la casse. En d’autres termes, il fait une différence entre les caractères en majuscule et en minuscule. Tenez-en compte aussi bien au niveau de l’écriture des commandes que des chemins d’accès.
-# 1 – La commande `ls`
+
+
+
+## 1 – La commande `ls`
La commande `ls` est la première que de nombreux utilisateurs de Linux saisissent dans leur interpréteur de commandes. Cette commande affiche par défaut le contenu du répertoire courant. Il est toutefois possible d’afficher le contenu d’un dossier spécifique en indiquant son chemin d’accès en argument.
@@ -24,93 +27,65 @@ Exemples d'options de la commande **ls**:
- **ls – l** : donne des informations sur les fichiers dans chacun des répertoires ;
- **ls – al** : liste les fichiers et répertoires avec des informations détaillées ;
-- **ls -R**: affiche également le contenu des sous-répertoires.
+- **ls -R** : affiche également le contenu des sous-répertoires.
+
+## 2 – La commande `cd`
-# 2 – La commande `cd`
`cd`, pour **Change Directory**, est également une commande très utilisée sur le CLI Linux. Cette commande permet en effet de changer le répertoire courant.
-Selon le répertoire dans lequel vous vous trouvez, vous aurez besoin du nom du répertoire où vous allez ou encore de son chemin d’accès complet. On distingue quelques raccourcis intéressants avec cette instruction Linux :
+Selon le répertoire dans lequel vous vous trouvez, vous aurez besoin du nom du répertoire où vous allez ou encore de son chemin d’accès complet.
-cd.. : permet de passer au répertoire directement plus haut dans l’arborescence ;
-cd : permet de se rendre au dossier principal (home).
+## 3 – La commande pwd
+La commande « pwd » est un diminutif de *Print Working Directory*. Comme son nom l’indique, sans argument et sans flag, cette commande retourne le chemin absolu complet du répertoire de travail dans lequel on se trouve. Le résultat obtenu peut être copié pour servir à d’autres usages.
+## 4 – La commande cat
-3 – La commande pwd
-La commande « pwd » est un diminutif de Print Working Directory. Comme son nom l’indique, sans argument et sans flag, cette commande retourne le chemin absolu complet du répertoire de travail dans lequel on se trouve. Le résultat obtenu peut être copié pour servir à d’autres usages.
+Abréviation de *Concatenate*, la commande « cat » est aussi très utilisée. Si elle sert souvent à prévisualiser un fichier sans ouvrir un éditeur de texte, elle permet essentiellement de créer, d’afficher et de concaténer des fichiers en ligne de commande.
-Command Linux pwd
-Command Linux ‘pwd’
-Command Linux pwd Resultat
-Command Linux ‘pwd’ – resultat
-4 – La commande cat
-Abréviation de Concatenate, la commande « cat » est aussi très utilisée. Si elle sert souvent à prévisualiser un fichier sans ouvrir un éditeur de texte, elle permet essentiellement de créer, d’afficher et de concaténer des fichiers en ligne de commande.
+De plus, la commande `cat nomDuFichier.extension` affiche le contenu d’un fichier. Cette commande offre également d’autres options pour le traitement de textes. Elle peut par exemple afficher les numéros de ligne ou supprimer les lignes d’un fichier dans la mesure où elles sont vides.
-De plus, la ligne “cat nomDuFichier.extension” affiche le contenu d’un fichier. Cette commande offre également d’autres options pour le traitement de textes. Elle peut par exemple afficher les numéros de ligne ou supprimer les lignes d’un fichier dans la mesure où elles sont vides.
-Command Linux cat
-Command Linux ‘cat’
-Command Linux cat Resultat
-Command Linux ‘cat’ – resultat
-5 – La commande cp
+## 5 – La commande cp
+
Pour copier un fichier du répertoire courant ou non, utilisez la commande « cp ». Le premier paramètre prend le nom et l’extension du fichier à copier ou encore son chemin absolu.
Le second paramètre quant à lui est le nom et l’extension du fichier de destination. Il peut également s’agir du chemin absolu du répertoire de destination. Cette commande permet de copier des répertoires grâce à l’option - r. Ces derniers se terminent par une barre oblique sous Linux (/).
-Command Linux cp
-Command Linux ‘cp’
-Command Linux cp Resultat
-Command Linux ‘cp’ – resultat
-Command Linux cp
-Command Linux ‘cp’
-Command Linux cp Resultat
-Command Linux ‘cp’ – resultat
-6 – La commande mkdir
+
+## 6 – La commande mkdir
+
L’instruction « mkdir » pour Make Directory permet de créer un nouveau dossier dans le répertoire courant. Spécifiez le nom du nouveau répertoire et assurez-vous qu’il n’existe pas encore. Par exemple, faites « mkdir Articles/ » pour créer un répertoire nommé « Articles ».
Pour créer des répertoires avec des sous-répertoires, ajoutez le flag « -p ». Avec la commande « mkdir -p Articles/Baskets/ », vous créerez un répertoire « Articles » qui en contient un autre nommé « Baskets ».
-Command Linux mkdir
-Command Linux ‘mkdir’
-Command Linux mkdir verifier
-Command Linux ‘mkdir’ – verifier
-Command Linux mkdir resultat
-Command Linux ‘mkdir’ – resultat
-7 – La commande mv
+
+## 7 – La commande mv
+
Si la commande « mv » sert principalement à déplacer des fichiers ou répertoires, elle permet également de les renommer. Comme avec « cp », il faut, à la suite de l’instruction « mv », spécifier la source et la destination.
Pour copier un dossier en entier, il vous suffira d’ajouter l’option r et d’indiquer le nom du fichier ou répertoire en argument.
-Command Linux mv Renommer un fichier
-Command Linux ‘mv’ – Renommer un fichier
-Command Linux mv Déplacer un fichier dans un autre répertoire
-Command Linux ‘mv’ – Déplacer un fichier dans un autre répertoire
-Command Linux mv Déplacer un répertoire
-Command Linux ‘mv’ – Déplacer un répertoire
-8 – La commande rm
+
+## 8 – La commande rm
+
« rm » permet la suppression de fichiers et même d’un répertoire. Faites toutefois attention à l’usage de cette commande, car elle peut avoir des actions irréversibles.
Ajoutez le nom et l’extension d’un fichier ordinaire en paramètre pour le supprimer. La commande « rm -r » permet de supprimer des répertoires vides. Elle se comporte donc comme la commande « rmdir ».
Quant à la suppression d’un répertoire avec son contenu, ajoutez le flag force. « rm -rf Liste/ » permettrait ainsi de supprimer un répertoire nommé « Liste » avec tout son contenu.
-Command Linux rm Suppression d'un fichier
-Command Linux ‘rm’ – Suppression d’un fichier
-Command Linux rm Supprimer un répertoire et son contenu
-Command Linux ‘rm’ – Supprimer un répertoire et son contenu
-Command Linux rm Suppression d'un fichier sans invite
-Command Linux ‘rm’ – Suppression d’un fichier sans invite
-9 – La commande man
+
+## 9 – La commande man
+
Le terminal Linux a tout prévu pour vous permettre de bien utiliser chacune de ses commandes. La commande « man » affiche la page du manuel de toutes les autres commandes. Avec « man alias » par exemple, vous aurez tous les détails sur les fonctions de l’instruction « alias ».
-Command Linux man
-Command Linux ‘rm’
-Command Linux man resultat
-Command Linux ‘man’ – resultat
-10 – La commande alias, unalias
+
+## 10 – La commande alias, unalias
+
La création et la suppression d’alias est possible respectivement avec les commandes Linux « alias » et « unalias ». Avec cet OS open source, un alias est un mot qui remplace une série de commandes.
Commande Linux alias
@@ -118,246 +93,166 @@ La commande Linux « alias » définit des alias temporaires dans une sectio
Cette commande prend ainsi en paramètre une chaîne clé-valeur. Sans arguments, cette commande renvoie plutôt la liste de tous les alias actifs dans la section.
-Command Linux alias
-Command Linux ‘alias’
-Command Linux alias resultat
-Command Linux ‘alias’ – resultat
-Commande Linux unalias
Pour désactiver un alias par contre, saisissez la commande Linux « unalias » suivi de l’alias à supprimer. Vous pourriez ainsi faire un « unalias ls » pour supprimer l’alias « ls » créé.
-Command Linux unalias
-Command Linux ‘alias’
-Command Linux unalias resultat
-Command Linux ‘unalias’ – resultat
-11 – La commande touch
+
+## 11 – La commande touch
+
Dans le lot des principales commandes Linux, « touch » permet la création d’un fichier vierge sur un terminal de Linux. Cette commande est aussi connue pour mettre à jour les temps d’accès et de modifications des fichiers. Cette seconde fonction de la commande n’est toutefois que peu connue.
-Command Linux touch
-Command Linux ‘touch’
-Command Linux touch plusieurs fichiers
-Command Linux ‘touch’ – plusieurs fichiers
-12 – La commande chmod
+
+## 12 – La commande chmod
+
Les permissions de lecture (r), d’écriture (w) et d’exécution (x) de répertoires et de fichiers ont une grande importance sur Linux. Cette commande Linux permet de gérer et de changer ces permissions.
Pour rendre un fichier exécutable par exemple, il faut faire « chmod +x » suivi du nom du fichier concerné.
-Command Linux chmod
-Command Linux ‘chmod’
-Command Linux chmod vérifier les permissions du fichier
-Command Linux ‘chmod’ – vérifier les permissions du fichier
-Command Linux chmod vérifier resultat
-Command Linux ‘chmod’ – vérifier resultat
-13 – La commande chown
+
+## 13 – La commande chown
+
Vous pouvez changer ou transférer la propriété d’un fichier à un utilisateur donné avec « chown ». Tous les fichiers sous GNU/Linux sont en effet rattachés à un user spécifique.
Cette commande prend en premier argument le nom du nouvel utilisateur et en second le nom du fichier dont on veut transférer la propriété.
-Command Linux chown
-Command Linux ‘chown’
-Command Linux chown vérifier la propriété du fichier
-Command Linux ‘chown’ – vérifier la propriété du fichier
-Command Linux chown vérifier resultat
-Command Linux ‘chown’ – vérifier resultat
-14 – La commande ./
+
+## 14 – La commande ./
+
Si la notation « ./ » n’est pas réellement une commande, elle a une grande importance. Elle permet en effet à n’importe quel interpréteur de ligne de commande Linux l’exécution d’un fichier. Vous pourriez toutefois avoir besoin de changer la permission d’exécution avant de le faire.
-Command Linux ./
-Command Linux ‘./’
-Command Linux ./ resultat
-Command Linux ‘./’ resultat
-15 – La commande exit
+
+## 15 – La commande exit
+
Comme son nom l’indique, la commande « exit » met fin à une section du Shell sur Linux. Généralement, cette commande s’accompagne aussi de la fermeture de la console Linux.
-Command Linux exit
-Command Linux ‘exit’
-Command Linux exit resultat
-Command Linux ‘exit’ – resultat
-16 – La commande shutdown
+
+## 16 – La commande shutdown
+
« shutdown » permet d’éteindre une machine fonctionnant sous une distribution de Linux. Elle peut aussi la redémarrer immédiatement ou à une heure programmée. Le temps d’attente par défaut est d’une minute.
Vous pouvez toutefois utiliser le paramètre « now » avec cette commande Linux pour une mise hors tension instantanée. Indiquez plutôt « 22 : 35 » pour attendre cette heure-là avant l’extinction. Le flag « -c » quant à lui permet d’annuler une mise sous tension programmée.
-Command Linux shutdown
-Command Linux ‘shutdown’
-Command Linux shutdown reussie
-Command Linux ‘shutdown’ – reussie
-17 – La commande locate
+
+## 17 – La commande locate
+
Pour simplifier la localisation d’un fichier ou un répertoire sur une machine Linux, il faut utiliser la commande Linux « locate ». L’ajout du flag « -i » rend la recherche insensible à la casse. Il y a de nombreuses autres options de recherche.
-Command Linux locate
-Command Linux ‘locate’
-Command Linux locate resultat
-Command Linux ‘locate’ – resultat
-18 – La commande find
+
+## 18 – La commande find
+
La commande « find » se comporte comme la commande « locate » à quelques différences près. La principale différence est que cette commande recherche des fichiers dans un répertoire donné. La commande permet de multiples options pour affiner la recherche.
-Command Linux find
-Command Linux ‘find’
-Command Linux find resultat
-Command Linux ‘find’ – resultat
-19 – La commande sudo
+
+## 19 – La commande sudo
+
Si vous avez un niveau intermédiaire en Linux, vous avez sans doute déjà entendu parler de la commande « sudo » pour SuperUser Do. Cette commande permet d’exécuter des tâches qui requièrent des droits administrateur ou root.
Elle vous permettra d’effectuer plusieurs opérations pouvant endommager de manière irréversible votre système Linux. Utilisez là donc de manière intelligente et réfléchie.
-Command Linux sudo
-Command Linux ‘sudo’
-Command Linux sudo resultat
-Command Linux ‘sudo’ – resultat
-20 – La commande df
+
+## 20 – La commande df
+
Retrouvez en Kilo octets (Ko) les détails du pourcentage d’utilisation de l’espace disque de votre système. Vous pourrez plutôt les avoir en Méga octets (Mo) avec « df -m ».
-Command Linux df
-Command Linux ‘df’
-Command Linux df resultat
-Command Linux ‘df’ – resultat
-21 – La commande du
+
+## 21 – La commande du
+
« du » pour Disk Usage par contre permet de connaître l’espace mémoire qu’un fichier ou répertoire occupe sur un disque. Vous pouvez ajouter le flag « -h » à la commande “du” pour avoir cette valeur en octets, Ko ou Mo.
-Command Linux du
-Command Linux ‘du’
-Command Linux du resultat
-Command Linux ‘du’ – resultat
-22 – La commande head
+
+## 22 – La commande head
+
La commande Linux « head » permet de visualiser les premières lignes d’un fichier texte. Si cette commande affiche les 10 premières lignes par défaut, on peut aisément modifier ce nombre à sa convenance. Avec « head -n 6 » suivi du nom et de l’extension, les 6 premières lignes du fichier s’afficheront.
-Command Linux head
-Command Linux ‘head’
-Command Linux head resultat
-Command Linux ‘head’ – resultat
-23 – La commande diff
+
+## 23 – La commande diff
+
Vous pourrez comparer ligne par ligne deux fichiers dans un terminal Linux. La commande « diff » permet de le faire, mais elle n’affiche que les lignes qui ne concordent pas en sortie.
Cette commande est par sa fonction très utilisée par les développeurs. Pour s’en servir, il faut écrire la syntaxe de la commande et passer successivement les fichiers à comparer en paramètre.
-Command Linux diff
-Command Linux ‘diff’
-Command Linux diff resultat
-Command Linux ‘diff’ – resultat
-24 – La commande jobs
+
+## 24 – La commande jobs
+
La commande « jobs » en ligne de commande peut être utilisée pour avoir la liste de tous les programmes qui s’exécutent sur un système Linux.
-Command Linux jobs
-Command Linux ‘jobs’
-Command Linux jobs resultat
-Command Linux ‘jobs’ – resultat
-25 – La commande top
+
+## 25 – La commande top
+
« top » liste et affiche le nom de tous les processus en cours d’exécution sur une machine Linux avec le détail de la quantité de CPU utilisée. Cette commande est très pratique pour suivre l’utilisation des ressources du système. Elle permet aussi d’identifier les programmes qui doivent être arrêtés en cas de surconsommation.
-Command Linux top
-Command Linux ‘top’
-Command Linux top resultat
-Command Linux ‘top’ – resultat
-26 – La commande kill
+
+## 26 – La commande kill
+
Pour arrêter un programme Linux en qui ne répond pas ou qui consomme énormément de mémoire RAM, vous pouvez utiliser la commande « kill » Cette commande est si puissante qu’elle peut être utilisée pour forcer la fermeture d’une session. Il faudra bien sûr suivre certaines indications pour bien s’en servir.
-Command Linux kill
-Command Linux ‘kill’
-Command Linux kill forcer l'arrêt
-Command Linux ‘kill’ – forcer l’arrêt
-27 – La commande ping
+
+## 27 – La commande ping
+
Les administrateurs de réseaux informatiques connaissent très bien la commande « ping ». Cette commande permet de vérifier le statut de la connectivité à un serveur et de mesurer le temps de réponse.
-Command Linux ping
-Command Linux ‘ping’
-Command Linux ping resultat
-Command Linux ‘ping’ – resultat
-28 – La commande wget
+
+## 28 – La commande wget
+
En ligne de commande, vous pouvez utiliser « wget » pour lancer un téléchargement sur internet. Il suffit d’ajouter le lien de téléchargement en paramètre.Cette commande permet de tout télécharger, que ce soit un site web, une vidéo ou une image.
-Command Linux wget
-Command Linux ‘wget’
-Command Linux wget resultat
-Command Linux ‘wget’ – resultat
-29 – La commande hostname
+
+## 29 – La commande hostname
+
La commande « hostname -I » vous permettra d’identifier l’adresse IP de votre réseau. Utilisée sans ce flag, elle affiche le nom de votre hôte ou réseau. Toutefois, pour utiliser cette commande, il faut disposer des droits d’utilisateur root.
-Command Linux hostname
-Command Linux ‘hostname’
-Command Linux hostname resultat
-Command Linux ‘hostname’ – resultat
-30 – La commande uname
+
+## 30 – La commande uname
+
« uname » donne des informations intéressantes et utiles sur le système d’exploitation utilisé. Il s’agit entre autres de l’OS, du noyau et du nom de la machine.
-Command Linux uname
-Command Linux ‘uname’
-Command Linux uname resultat
-Command Linux ‘uname’ – resultat
-31 – La commande history
+
+## 31 – La commande history
+
Vous pouvez retrouver l’historique des commandes Linux entrées auparavant grâce à la commande « history ». Cette commande est très pratique compte tenu du fait qu’on est souvent amené à exécuter des centaines de commandes au quotidien.
La commande “history” vous permettra de retrouver jusqu’à 500 lignes de commande. En manipulant habilement les flags, vous pourrez aisément retrouver une commande particulière.
-Command Linux history
-Command Linux ‘history’
-Command Linux history resultat
-Command Linux ‘history’ – resultat
-32 – La commande echo
+
+## 32 – La commande echo
+
La commande « echo » déplace ou ajoute des données comme du texte dans un fichier spécifique. Cette commande est l’une des plus basiques et des plus utilisées car elle permet d’avoir accès au contenu d’un fichier sans avoir à l’ouvrir.
-Command Linux echo
-Command Linux ‘echo’
-Command Linux echo resultat
-Command Linux ‘echo’ – resultat
-Command Linux echo afficher les variables
-Command Linux ‘echo’ – afficher les variables
-Command Linux echo afficher les variables resultat
-Command Linux ‘echo’ – afficher les variables resultat
-33 – La commande zip, unzip et tar
+
+## 33 – La commande zip, unzip et tar
+
Pour compresser des fichiers dans une archive zip et pour extraire des données d’un fichier zippé, il faut respectivement utiliser « zip » et « unzip ». Si vous recherchez une alternative à ces dernières, la commande « tar » est une excellente option, bien qu’elle soit plus complexe à utiliser.
-Command Linux zip
-Command Linux ‘zip’
-Command Linux zip resultat
-Command Linux ‘zip’ – resultat
-Command Linux unzip
-Command Linux ‘unzip’
-Command Linux unzip resultat
-Command Linux ‘unzip’ – resultat
-34 – Le lot de commandes groupadd, groupmod, useradd, userdel, usermod
+
+## 34 – Le lot de commandes groupadd, groupmod, useradd, userdel, usermod
+
Ce lot de commandes est indispensable à tout administrateur système. Il permet à ce dernier de gérer chaque utilisateur présent sur son réseau. Les commandes peuvent aussi être utilisées pour limiter l’accès aux utilisateurs au contenu d’un fichier ou un répertoire spécifique.
Par exemple, utilisez la commande « useradd » pour créer un nouvel utilisateur et « passwd » pour assigner un mot de passe à ce compte. « userdel » par contre permet de supprimer un utilisateur. La commande “groupmod” elle, vous permet de modifier un groupe existant sur votre machine.
-Command Linux groupadd
-Command Linux ‘groupadd’
-Command Linux groupadd vérifier
-Command Linux ‘groupadd’ – vérifier
-Command Linux groupadd vérifier resultat
-Command Linux ‘groupadd’ – vérifier resultat
-Command Linux groupmod
-Command Linux ‘groupmod’
-Command Linux groupmod resultat
-Command Linux ‘groupmod’ – resultat
-Command Linux useradd
-Command Linux ‘useradd’
-Command Linux useradd resultat
-Command Linux ‘useradd’ – resultat
-Command Linux userdel
-Command Linux ‘userdel’
-Command Linux userdel resultat
-Command Linux ‘userdel’ – resultat
-Command Linux usermod
-Command Linux ‘usermod’
-Command Linux usermod resultat
-Command Linux ‘usermod’ – resultat
-Les bonnes astuces à utiliser sur un terminal Linux
-Lorsque vous exécutez des commandes Linux, il est assez courant de se retrouver avec une console visuellement chargée. Vous pouvez utiliser la commande « clear » pour vider les messages à l’écran du terminal.
-
-Linux propose aussi des suggestions ou auto complétions pertinentes avec la touche tabulation « Tab » du clavier. Par ailleurs, comme raccourcis clavier, vous pouvez utiliser :
-
-Ctrl + A pour aller au début de la ligne ;
-Ctrl + E pour aller à la fin de la ligne ;
-Ctrl + Z pour mettre une commande en cours d’exécution en pause ;
-Ctrl + C pour arrêter une commande en cours d’exécution ;
-Ctrl + E pour aller à la fin de la ligne ;
-Ctrl + S pour bloquer le terminal ;
-Ctrl + Q pour débloquer le terminal.
-Par ailleurs, plutôt que d’exécuter des commandes Linux les unes après les autres, vous pouvez les exécuter en une seule ligne en les séparant par des « ; ». Utilisez plutôt « && » si vous souhaitez que la commande suivante s’exécute à condition que la précédente ait abouti.
-
-Conclusion
+
+# Les bonnes astuces à utiliser sur un terminal Linux
+
+Lorsque vous exécutez des commandes Linux, il est assez courant de se retrouver avec une console visuellement chargée. Vous pouvez utiliser la commande `clear` pour vider les messages à l’écran du terminal.
+
+Linux propose aussi des suggestions ou auto complétions pertinentes avec la touche tabulation `TAB` du clavier.
+
+Vous pouvez également utiliser des raccourcis clavier :
+
+- `Ctrl + A` pour aller au début de la ligne.
+- `Ctrl + E` pour aller à la fin de la ligne.
+- `Ctrl + Z` pour mettre une commande en cours d’exécution en pause.
+- `Ctrl + C` pour arrêter une commande en cours d’exécution.
+- `Ctrl + E` pour aller à la fin de la ligne.
+- `Ctrl + S` pour bloquer le terminal.
+- `Ctrl + Q` pour débloquer le terminal.
+
+Par ailleurs, plutôt que d’exécuter des commandes Linux les unes après les autres, vous pouvez les exécuter en une seule ligne en les séparant par des « && » (la commande suivante s’exécute à condition que la précédente ait abouti).
+
+
+# Conclusion
+
Si l’apprentissage des principales commandes Linux peut prendre un certain temps, le processus est relativement simple et assez agréable.
En effet, vous parviendrez vite à maîtriser les commandes et les principaux outils Linux. Toutefois, vous ne cesserez jamais d’apprendre et de découvrir de nouvelles choses avec ce puissant système d’exploitation.
-En attendant, connaître et maîtriser les principales commandes Linux devrait grandement améliorer votre productivité et être d’une grande utilité.
\ No newline at end of file
+En attendant, connaître et maîtriser les principales commandes Linux devrait grandement améliorer votre productivité et être d’une grande utilité.
diff --git a/docs/tp/deploiement/wsl/02-linux-debian-wsl.md b/docs/tp/deploiement/wsl/02-linux-debian-wsl.md
new file mode 100644
index 0000000..ade9c37
--- /dev/null
+++ b/docs/tp/deploiement/wsl/02-linux-debian-wsl.md
@@ -0,0 +1,83 @@
+---
+title: "Installer GNU/Linux Debian avec WSL"
+serie: "wsl"
+order: 3
+---
+
+
+
+Dans ce document, vous allez apprendre à activer WSL et installer [GNU/Linux Debian](https://debian.org).
+
+> Plus d'informations sur [les distributions GNU/Linux](https://fr.wikipedia.org/wiki/Distribution_Linux).
+
+## Prérequis:
+
+1. Le système Windows est à jour.
+2. La virtualisation est activée dans le BIOS.
+3. WSL est installé et activé
+ - Si ce n'est pas le cas, ouvrir PowerShell en tant qu'administrateur et exécuter la commande: `wsl --install`
+
+> Sur les machines disponibles en formation, WSL est déjà installé et prêt à l'emploi.
+
+
+## Installation de GNU/Linux Debian
+
+Il est possible d'installer une distribution GNU/Linux en ligne de commande avec PowerShell ou en utilisant le Microsoft Store.
+
+### Avec PowerShell
+
+1. Ouvrir PowerShell.
+2. Saisir la commande `wsl --install -d Debian`.
+ - Debian est téléchargé puis installé (cela peut prendre du temps...).
+3. Redémarrer l'ordinateur.
+
+### Via le Microsoft Store
+
+1. Ouvrir le Microsoft Store : Recherchez "[Debian](https://apps.microsoft.com/search?query=debian&hl=fr-fr&gl=FR)" et sélectionner la distribution officielle.
+2. Cliquez sur "Installer" : Le téléchargement et l'installation de Debian démarrent.
+3. Il n'est normalement pas nécessaire de redémarrer l'ordinateur.
+ - Si toutefois Debian ne se lance pas après installation, tentez le redémarrage ;)
+
+## Démarrer et initialiser GNU/Linux Debian
+
+Une fois installé, vous pouvez lancer **Debian** depuis le **menu Démarrer**. La première fois, il faudra patienter pendant que la distribution s'initialise.
+
+Au premier lancement, vous devrez créer un utilisateur : Suivez les instructions pour configurer votre nom d'utilisateur et votre mot de passe pour votre nouvelle instance Debian.
+
+> Attention, sur les systèmes UNIX et LINUX, lorsque vous tapez un mot de passe, rien ne s'affiche à l'écran (pas d'astérisques ou autre), c'est tout à fait normal, il s'agit d'un mécanisme de sécurité !
+
+### Mises à jour
+
+Après l'installation, il est recommandé de mettre à jour les paquets de Debian. Dans le terminal Debian, tapez :
+
+```bash
+sudo apt update && sudo apt upgrade
+```
+
+Il vous sera demandé de saisir votre mot de passe.
+
+Voilà, Debian est installé, à jour et prêt à être utilisé.
+
+Il est maintenant possible d'installer tous les outils de développement nécessaires comme GCC, Python, un serveur Web...
+
+Mais avant de se lancer tête baissée... Prenez le temps d'apprendre [les commandes Linux de base](./01-linux-cmd).
+
+
+# Installer une stack L.A.M.P
+
+Si vous avez suivi les étapes précédentes, votre Debian est prêt à l'emploi.
+
+Vous pouvez maintenant installer la stack L.A.M.P (Linux apache MySQL PHP).
+
+Dans le terminal Debian saisissez les commandes suivantes pour installer les paquets nécessaires :
+
+```bash
+sudo apt install apache2
+sudo apt install php8.2
+sudo apt install mariadb-server mariadb-client
+```
+
+
+Ci-dessous, une petite vidéo expliquant les étapes d'installation et de configuration d'une stack L.A.M.P sur Ubuntu (la procédure est quasi identique sur Debian).
+
+
\ No newline at end of file
diff --git a/docs/tp/deploiement/wsl/index.md b/docs/tp/deploiement/wsl/index.md
index ed0dc99..c8b2751 100644
--- a/docs/tp/deploiement/wsl/index.md
+++ b/docs/tp/deploiement/wsl/index.md
@@ -1,11 +1,14 @@
---
title: "Windows Subsystem Linux"
serie: "wsl"
-index: 2
+index: 3
+order: 1
---
**WSL**, ou **Windows Subsystem for Linux** (Sous-système Windows pour Linux), est une fonctionnalité de Windows qui vous permet d'exécuter un environnement Linux directement sur votre machine Windows, sans avoir besoin d'utiliser un logiciel de virtualisation tiers.
+> WSL est disponible sur Windows 10 et Windows 11.
+
WSL permet d'installer et d'utiliser des distributions GNU/Linux (comme Debian, Ubuntu, CentOS, etc...) de la même manière que des applications Windows. WSL permet d'accéder à un terminal Linux, exécuter des commandes Linux et même installer des applications Linux, le tout dans un environnement intégré à Windows.
Voici quelques points clés à retenir sur WSL :
@@ -23,61 +26,21 @@ WSL est une fonctionnalité très pratique pour ceux qui ont besoin d'utiliser L
- **Rapide** : Les performances sont généralement meilleures qu'avec une machine virtuelle classique, car WSL s'intègre directement au noyau Windows.
- **Facile à utiliser** : L'installation et la gestion de distributions Linux avec WSL sont relativement simples.
-# Installer une distribution GNU/Linux
-
-Dans la suite de ce document, vous allez apprendre à activer WSL et installer [GNU/Linux Debian](https://debian.org).
-
-> Plus d'informations sur [les distributions GNU/Linux](https://fr.wikipedia.org/wiki/Distribution_Linux).
-## Prérequis:
+## Prérequis pour utiliser WSL:
1. Le système Windows est à jour.
2. La virtualisation est activée dans le BIOS.
3. WSL est installé et activé
- Si ce n'est pas le cas, ouvrir PowerShell en tant qu'administrateur et exécuter la commande: `wsl --install`
-> Sur les machines disponibles en formation, WSL est déjà installé et prêt à l'emploi.
-
-
-## Installation de GNU/Linux Debian
-
-Il est possible d'installer une distribution GNU/Linux en ligne de commande avec PowerShell ou en utilisant le Microsoft Store.
-
-### Avec PowerShell
-
-1. Ouvrir PowerShell.
-2. Saisir la commande `wsl --install -d Debian`.
- - Debian est téléchargé puis installé (cela peut prendre du temps...).
-3. Redémarrer l'ordinateur.
-
-### Via le Microsoft Store
-
-1. Ouvrir le Microsoft Store : Recherchez "[Debian](https://apps.microsoft.com/search?query=debian&hl=fr-fr&gl=FR)" et sélectionner la distribution officielle.
-2. Cliquez sur "Installer" : Le téléchargement et l'installation de Debian démarrent.
-3. Il n'est normalement pas nécessaire de redémarrer l'ordinateur.
- - Si toutefois Debian ne se lance pas après installation, tentez le redémarrage ;)
-
-## Démarrer et initialiser GNU/Linux Debian
-
-Une fois installé, vous pouvez lancer **Debian** depuis le **menu Démarrer**. La première fois, il faudra patienter pendant que la distribution s'initialise.
-
-Au premier lancement, vous devrez créer un utilisateur : Suivez les instructions pour configurer votre nom d'utilisateur et votre mot de passe pour votre nouvelle instance Debian.
-
-> Attention, sur les systèmes UNIX et LINUX, lorsque vous tapez un mot de passe, rien ne s'affiche à l'écran (pas d'astérisques ou autre), c'est tout à fait normal, il s'agit d'un mécanisme de sécurité !
-
-### Mises à jour
-
-Après l'installation, il est recommandé de mettre à jour les paquets de Debian. Dans le terminal Debian, tapez :
-
-```bash
-sudo apt update && sudo apt upgrade
-```
-
-Il vous sera demandé de saisir votre mot de passe.
+> Note : WSL est déjà installé et activé sur les machines utilisées en formation
+## Démarrer avec WSL
-Voilà, Debian est installé, à jour et prêt à être utilisé.
+Ci-dessous, la 1ère vidéo d'une série de tutoriels d'initiation au Windows Subsystem Linux.
-Il est maintenant possible d'installer tous les outils de développement nécessaires comme GCC, Python, un serveur Web...
+
-Mais avant de se lancer t^te baissée... Prenez le temps d'apprendre les commandes Linux de base :
+Pour visionner les tutoriels de cette série, suivez ce lien :
+- [youtube.com/watch?v=uLbyhmpnbnE&list=PLSuzYIVSEUT4LyB66TpKeCUmbTteLYrXz](https://www.youtube.com/watch?v=uLbyhmpnbnE&list=PLSuzYIVSEUT4LyB66TpKeCUmbTteLYrXz).
diff --git a/docs/tp/web/bases/01-json.md b/docs/tp/web/bases/01-json.md
index 5381bee..f942127 100644
--- a/docs/tp/web/bases/01-json.md
+++ b/docs/tp/web/bases/01-json.md
@@ -9,6 +9,8 @@ JSON (*Javascript Object Notation*) est un format permettant de structurer et tr
Lien vers le support de cours :
- [Introduction au format JSON](https://devoldere.net/ressources/web/01%20-%20Le%20format%20JSON.pdf)
+
+
# Exercices
## 1.1 Utilisateurs
diff --git a/docs/tp/web/bases/05-fiche-metier.md b/docs/tp/web/bases/05-fiche-metier.md
index 1b2f418..138efc8 100644
--- a/docs/tp/web/bases/05-fiche-metier.md
+++ b/docs/tp/web/bases/05-fiche-metier.md
@@ -5,7 +5,7 @@ order: 5
---
Pré-requis :
-[Exercice: Fiche Métier au format Word](../../projet-professionnel/11-fiche-metier)
+[Exercice: Fiche Métier au format Word](../../projet-professionnel/04-fiche-metier.md)
Dans cet exercice, vous allez reprendre votre fiche métier précédemment rédigée au format Word et l'implémenter au format HTML. Vous vous aiderez du langage CSS pour la mise en forme.