<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://www.yakakliker.org/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Cr%C3%A9ation_d%27un_repository_python_Devpi-server</id>
	<title>Python : Création d&#039;un repository python Devpi-server - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://www.yakakliker.org/index.php?action=history&amp;feed=atom&amp;title=Python_%3A_Cr%C3%A9ation_d%27un_repository_python_Devpi-server"/>
	<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;action=history"/>
	<updated>2026-05-02T03:40:44Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1746&amp;oldid=prev</id>
		<title>Administrateur le 30 octobre 2025 à 08:11</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1746&amp;oldid=prev"/>
		<updated>2025-10-30T08:11:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 30 octobre 2025 à 10:11&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l280&quot;&gt;Ligne 280 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 280 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* https://devpi.net/docs/devpi/devpi/stable/+doc/quickstart-server.html&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* https://devpi.net/docs/devpi/devpi/stable/+doc/quickstart-server.html&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* https://dev.to/cwprogram/private-python-packages-with-devpi-3iai&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* https://dev.to/cwprogram/private-python-packages-with-devpi-3iai&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Python : Création d&#039;un environnement virtuel Python / Gunicorn]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1744&amp;oldid=prev</id>
		<title>Administrateur le 29 octobre 2025 à 12:35</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1744&amp;oldid=prev"/>
		<updated>2025-10-29T12:35:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 29 octobre 2025 à 14:35&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l287&quot;&gt;Ligne 287 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 287 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Devpi-server]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Devpi-server]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Tutoriel]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Tutoriel]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		‎&amp;lt;html&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;a href=&quot;https://www.compteurdevisite.com&quot; title=&quot;compteur web gratuit sans pub&quot;&amp;gt;&amp;lt;img src=&quot;https://counter6.optistats.ovh/private/compteurdevisite.php?c=b4epghealnwlf7wuq7gn3ygll9aywrfx&quot; border=&quot;0&quot; title=&quot;compteur web gratuit sans pub&quot; alt=&quot;compteur web gratuit sans pub&quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		‎&amp;lt;/html&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;‎		&amp;lt;html&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;script src=&#039;https://storage.ko-fi.com/cdn/scripts/overlay-widget.js&#039;&amp;gt;&amp;lt;/script&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;script&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  kofiWidgetOverlay.draw(&#039;yakakliker&#039;, {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;type&#039;: &#039;floating-chat&#039;,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;floating-chat.donateButton.text&#039;: &#039;Café&#039;,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;floating-chat.donateButton.background-color&#039;: &#039;#00b9fe&#039;,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;floating-chat.donateButton.text-color&#039;: &#039;#fff&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		‎&amp;lt;/html&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1743&amp;oldid=prev</id>
		<title>Administrateur le 29 octobre 2025 à 10:54</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1743&amp;oldid=prev"/>
		<updated>2025-10-29T10:54:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 29 octobre 2025 à 12:54&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l286&quot;&gt;Ligne 286 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 286 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Nginx]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Nginx]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Devpi-server]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Devpi-server]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Catégorie:Tutoriel]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1740&amp;oldid=prev</id>
		<title>Administrateur le 29 octobre 2025 à 10:52</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1740&amp;oldid=prev"/>
		<updated>2025-10-29T10:52:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 29 octobre 2025 à 12:52&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l274&quot;&gt;Ligne 274 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 274 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Liens ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* https://pypi.org/org/devpi/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* https://www.devpi.net/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* https://devpi.net/docs/devpi/devpi/stable/+doc/quickstart-server.html&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* https://dev.to/cwprogram/private-python-packages-with-devpi-3iai&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Catégorie:Python]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
	<entry>
		<id>http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1739&amp;oldid=prev</id>
		<title>Administrateur : Page créée avec « === Création d&#039;un environnement virtuel python ===  * L&#039;utilisateur créé sera &quot;devpi-user&quot; &lt;syntaxhighlight lang=&quot;bash&quot;&gt; su -l devpi-user   curl https://pyenv.run | bash   &lt;/syntaxhighlight&gt;  ==== Edition du fichier ~/.bashrc ==== &lt;syntaxhighlight lang=&quot;bash&quot;&gt; nano .bashrc export PATH=&quot;~/.pyenv/bin:$PATH&quot; eval &quot;$(pyenv init -)&quot; eval &quot;$(pyenv virtualenv-init -)&quot;  &lt;/syntaxhighlight&gt;Redémarrer la session SSH pour prendre en compte les modifications du fichier  =... »</title>
		<link rel="alternate" type="text/html" href="http://www.yakakliker.org/index.php?title=Python_:_Cr%C3%A9ation_d%27un_repository_python_Devpi-server&amp;diff=1739&amp;oldid=prev"/>
		<updated>2025-10-29T10:51:18Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « === Création d&amp;#039;un environnement virtuel python ===  * L&amp;#039;utilisateur créé sera &amp;quot;devpi-user&amp;quot; &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; su -l devpi-user   curl https://pyenv.run | bash   &amp;lt;/syntaxhighlight&amp;gt;  ==== Edition du fichier ~/.bashrc ==== &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; nano .bashrc export PATH=&amp;quot;~/.pyenv/bin:$PATH&amp;quot; eval &amp;quot;$(pyenv init -)&amp;quot; eval &amp;quot;$(pyenv virtualenv-init -)&amp;quot;  &amp;lt;/syntaxhighlight&amp;gt;Redémarrer la session SSH pour prendre en compte les modifications du fichier  =... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Création d&amp;#039;un environnement virtuel python ===&lt;br /&gt;
&lt;br /&gt;
* L&amp;#039;utilisateur créé sera &amp;quot;devpi-user&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
su -l devpi-user  &lt;br /&gt;
curl https://pyenv.run | bash &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Edition du fichier ~/.bashrc ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano .bashrc&lt;br /&gt;
export PATH=&amp;quot;~/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv virtualenv-init -)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Redémarrer la session SSH pour prendre en compte les modifications du fichier&lt;br /&gt;
&lt;br /&gt;
==== Installation des versions Python ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pyenv install 3.14.0&lt;br /&gt;
&lt;br /&gt;
pyenv versions&lt;br /&gt;
&lt;br /&gt;
* system (set by /home/franck/.pyenv/version)&lt;br /&gt;
  3.14.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Création de l&amp;#039;environnement virtuel ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pyenv virtualenv 3.14.0 devpi-3.14.0&lt;br /&gt;
&lt;br /&gt;
Looking in links: /tmp/tmphg0jxgpf&lt;br /&gt;
Requirement already satisfied: setuptools in /home/devpi-user/.pyenv/versions/3.14.0/envs/devpi-3.14.0/lib/python3.14/site-packages (49.2.1)&lt;br /&gt;
Requirement already satisfied: pip in /home/devpi-user/.pyenv/versions/3.14.0/envs/devpi-3.14.0/lib/python3.14/site-packages (20.2.3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pyenv virtualenvs&lt;br /&gt;
&lt;br /&gt;
  3.14.0/envs/devpi-3.14.0 (created from /home/devpi-user/.pyenv/versions/3.14.0)&lt;br /&gt;
  devpi-3.14.0 (created from /home/devpi-user/.pyenv/versions/3.14.0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activation de l&amp;#039;environnement ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pyenv activate devpi-3.14.0&lt;br /&gt;
&lt;br /&gt;
(devpi-3.14.0) devpi-user@VLIN:~$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation de devpi-server ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install -U devpi-server devpi-client devpi-web&lt;br /&gt;
&lt;br /&gt;
devpi-gen-config --port 3141 --serverdir /home/devpi-user/www&lt;br /&gt;
devpi-init --serverdir /home/devpi-user/www --root-passwd azerty&lt;br /&gt;
&lt;br /&gt;
devpi use http://localhost:3141&lt;br /&gt;
devpi login root --password=azerty&lt;br /&gt;
&lt;br /&gt;
devpi user -c entreprise password=azerty&lt;br /&gt;
devpi index -c entreprise/release bases=root/pypi&lt;br /&gt;
devpi index -c entreprise/snapshot bases=entreprise/release&lt;br /&gt;
&lt;br /&gt;
devpi user -c franck password=azerty email=franck@yakakliker&lt;br /&gt;
&lt;br /&gt;
devpi index -y entreprise/release acl_upload=entreprise,franck,root&lt;br /&gt;
devpi index -y entreprise/snapshot acl_upload=entreprise,franck,root&lt;br /&gt;
&lt;br /&gt;
devpi logout&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Création du service devpi-user.service ====&lt;br /&gt;
&lt;br /&gt;
* /etc/systemd/system/devpi-user.service&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Devpi Server&lt;br /&gt;
Requires=network-online.target&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=on-success&lt;br /&gt;
# ExecStart:&lt;br /&gt;
# - shall point to existing devpi-server executable&lt;br /&gt;
# - shall not use the deprecated `--start`. We want the devpi-server to start in foreground&lt;br /&gt;
ExecStart=/home/devpi-user/.pyenv/versions/devpi-3.14.0/bin/devpi-server --port 3141 --serverdir /home/devpi-user/www&lt;br /&gt;
# set User according to user which is able to run the devpi-server&lt;br /&gt;
User=devpi-user&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation du service nginx ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configuration nginx =====&lt;br /&gt;
&lt;br /&gt;
* /etc/nginx/sites-available/nginx-devpi.conf&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
map $http_x_forwarded_proto $x_scheme {&lt;br /&gt;
    default $scheme;&lt;br /&gt;
    http http;&lt;br /&gt;
    https https;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    server_name localhost $hostname &amp;quot;&amp;quot;;&lt;br /&gt;
    listen 80;&lt;br /&gt;
    gzip             on;&lt;br /&gt;
    gzip_min_length  2000;&lt;br /&gt;
    gzip_proxied     any;&lt;br /&gt;
    # add application/vnd.pypi.simple.v1+json to the gzip_types&lt;br /&gt;
    gzip_types  text/plain text/css text/xml&lt;br /&gt;
                application/json application/vnd.pypi.simple.v1+json&lt;br /&gt;
                application/javascript text/javascript&lt;br /&gt;
                application/xml application/xml+rss;&lt;br /&gt;
&lt;br /&gt;
    proxy_read_timeout 60s;&lt;br /&gt;
    client_max_body_size 64M;&lt;br /&gt;
&lt;br /&gt;
    # set to where your devpi-server state is on the filesystem&lt;br /&gt;
    root /home/devpi-user/www;&lt;br /&gt;
&lt;br /&gt;
    # try serving static files directly&lt;br /&gt;
    location ~ /\+f/ {&lt;br /&gt;
        # workaround to pass non-GET/HEAD requests through to the named location below&lt;br /&gt;
        error_page 418 = @proxy_to_app;&lt;br /&gt;
        if ($request_method !~ (GET)|(HEAD)) {&lt;br /&gt;
            return 418;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        expires max;&lt;br /&gt;
        try_files /+files$uri @proxy_to_app;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # try serving docs directly&lt;br /&gt;
    location ~ /\+doc/ {&lt;br /&gt;
        # if the --documentation-path option of devpi-web is used,&lt;br /&gt;
        # then the root must be set accordingly here&lt;br /&gt;
        root /home/devpi-user/www;&lt;br /&gt;
        try_files $uri @proxy_to_app;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        # workaround to pass all requests to / through to the named location below&lt;br /&gt;
        error_page 418 = @proxy_to_app;&lt;br /&gt;
        return 418;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location @proxy_to_app {&lt;br /&gt;
        proxy_pass http://localhost:3141;&lt;br /&gt;
        # the $x_scheme variable is only required if nginx is behind another&lt;br /&gt;
        # proxy (often the case in container environments),&lt;br /&gt;
        # if your nginx is the only proxy server, the $scheme variable can be&lt;br /&gt;
        # used and the map $http_x_forwarded_proto $x_scheme above be removed&lt;br /&gt;
        proxy_set_header X-Forwarded-Proto $x_scheme;&lt;br /&gt;
        proxy_set_header X-outside-url $x_scheme://$http_host;&lt;br /&gt;
        proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation de haproxy ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install haproxy hatop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configuration de haproxy =====&lt;br /&gt;
&lt;br /&gt;
* /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
	log /dev/log	local0&lt;br /&gt;
	log /dev/log	local1 notice&lt;br /&gt;
	chroot /var/lib/haproxy&lt;br /&gt;
	stats socket /run/haproxy/admin.sock mode 660 level admin&lt;br /&gt;
	stats timeout 30s&lt;br /&gt;
	user haproxy&lt;br /&gt;
	group haproxy&lt;br /&gt;
	daemon&lt;br /&gt;
&lt;br /&gt;
	# Default SSL material locations&lt;br /&gt;
	ca-base /etc/ssl/certs&lt;br /&gt;
	crt-base /etc/ssl/private&lt;br /&gt;
&lt;br /&gt;
	# See: https://ssl-config.mozilla.org/#server=haproxy&amp;amp;server-version=2.0.3&amp;amp;config=intermediate&lt;br /&gt;
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384&lt;br /&gt;
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256&lt;br /&gt;
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
	log	global&lt;br /&gt;
	mode	http&lt;br /&gt;
	option	httplog&lt;br /&gt;
	option	dontlognull&lt;br /&gt;
        timeout connect 5000&lt;br /&gt;
        timeout client  50000&lt;br /&gt;
        timeout server  50000&lt;br /&gt;
	errorfile 400 /etc/haproxy/errors/400.http&lt;br /&gt;
	errorfile 403 /etc/haproxy/errors/403.http&lt;br /&gt;
	errorfile 408 /etc/haproxy/errors/408.http&lt;br /&gt;
	errorfile 500 /etc/haproxy/errors/500.http&lt;br /&gt;
	errorfile 502 /etc/haproxy/errors/502.http&lt;br /&gt;
	errorfile 503 /etc/haproxy/errors/503.http&lt;br /&gt;
	errorfile 504 /etc/haproxy/errors/504.http&lt;br /&gt;
&lt;br /&gt;
frontend https&lt;br /&gt;
    bind *:443 ssl crt /etc/haproxy/certs/wildcard.yakakliker.org.pem&lt;br /&gt;
&lt;br /&gt;
    mode http&lt;br /&gt;
    option httplog&lt;br /&gt;
&lt;br /&gt;
    http-request redirect scheme https code 301 unless { ssl_fc }&lt;br /&gt;
&lt;br /&gt;
    acl devpi_acl  hdr(host)   python-repo.yakakliker.org&lt;br /&gt;
    use_backend devpi if devpi_acl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
backend devpi&lt;br /&gt;
    mode http&lt;br /&gt;
    option httpchk GET /&lt;br /&gt;
&lt;br /&gt;
    option forwardfor&lt;br /&gt;
    http-request add-header X-Forwarded-Proto https if { ssl_fc }&lt;br /&gt;
&lt;br /&gt;
    server devpi 127.0.0.1:80 check&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sortie de l&amp;#039;environnement ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pyenv deactivate &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrêt / démarrage des services ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Démarrage des services&lt;br /&gt;
&lt;br /&gt;
systemctl start devpi-user.service&lt;br /&gt;
&lt;br /&gt;
systemctl start nginx&lt;br /&gt;
&lt;br /&gt;
systemctl start haproxy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Arrêt des services&lt;br /&gt;
&lt;br /&gt;
systemctl stop devpi-user.service&lt;br /&gt;
&lt;br /&gt;
systemctl stop nginx&lt;br /&gt;
&lt;br /&gt;
systemctl stop haproxy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Activation du démarrage automatique des services&lt;br /&gt;
&lt;br /&gt;
systemctl enable devpi-user.service&lt;br /&gt;
&lt;br /&gt;
systemctl enable nginx&lt;br /&gt;
&lt;br /&gt;
systemctl enable haproxy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Python]]&lt;br /&gt;
[[Catégorie:Repository]]&lt;br /&gt;
[[Catégorie:Haproxy]]&lt;br /&gt;
[[Catégorie:Nginx]]&lt;br /&gt;
[[Catégorie:Devpi-server]]&lt;/div&gt;</summary>
		<author><name>Administrateur</name></author>
	</entry>
</feed>