<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="https://chierchia.fr/wp-content/plugins/pretty-rss-feeds/xslt/pretty-feed.xsl" type="text/xsl" media="screen" ?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vhost - Ange Chierchia</title>
	<atom:link href="https://chierchia.fr/tag/vhost/feed/" rel="self" type="application/rss+xml" />
	<link>https://chierchia.fr/tag/vhost/</link>
	<description>Développeur Web full-stack</description>
	<lastBuildDate>Sun, 13 Oct 2024 10:59:14 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chierchia.fr/wp-content/uploads/cropped-16350293-SSDKVqo3-32x32.jpg</url>
	<title>vhost - Ange Chierchia</title>
	<link>https://chierchia.fr/tag/vhost/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
					<title>Créer des virtual hosts pour notre serveur local</title>
					<link>https://chierchia.fr/2023/03/creer-des-virtual-hosts-pour-notre-serveur-local/</link>
					<comments>https://chierchia.fr/2023/03/creer-des-virtual-hosts-pour-notre-serveur-local/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 22:32:27 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[back-end]]></category>
		<category><![CDATA[vhost]]></category>
		<category><![CDATA[virtual host]]></category>
		<guid isPermaLink="false">https://nighcrawl.com/blog/2023/03/creer-des-virtual-hosts-pour-notre-serveur-local</guid>

					<description><![CDATA[Dans cet article, qui fait suite à mon article Configurer un serveur local avec Homebrew, je vais vous montrer la méthode que j’utilise pour créer les virtual hosts des projets sur lesquels je travaille. Si vous n’avez pas lu la première partie, je vous invite à le faire avant de continuer. Minute papillon ! Qu’est-ce [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>Dans cet article, qui fait suite à mon article <a href="https://chierchia.fr/blog/configurer-un-serveur-local-avec-homebrew/">Configurer un serveur local avec Homebrew</a>, je vais vous montrer la méthode que j’utilise pour créer les virtual hosts des projets sur lesquels je travaille. Si vous n’avez pas lu la première partie, je vous invite à le faire avant de continuer.</p>
<p><span id="more-1324"></span></p>
<h2 id="minute-papillon-">Minute papillon !</h2>
<h3 id="quest-ce-quon-va-faire-exactement">Qu’est-ce qu’on va faire exactement?</h3>
<p>Voilà comment ça va se passer : d’abord on va modifier notre fichier de configuration Apache pour activer et utiliser des hôtes virtuels. Une fois ceci fait, on pourra définir des URLs personnalisés que l’on attribuera aux différents dossiers présents dans notre dossier <code class="language-plaintext highlighter-rouge">Repositories</code>.</p>
<p>Une fois qu’on aura fait ça, on va nettoyer un peu le bazard en séparant nos vhosts dans plusieurs fichiers pour que tout ça soit le plus facile possible à maintenir.</p>
<p>Aller, go !</p>
<h3 id="un-peu-de-préparation">Un peu de préparation</h3>
<p>D’abord, on va ouvrir les quelques fichiers dont on va avoir besoin pour configurer nos hôtes virtuels. Ouvrez les fichiers suivants dans votre éditeur :</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">/usr/local/etc/httpd/httpd.conf</code></li>
<li><code class="language-plaintext highlighter-rouge">/usr/local/etc/httpd/extra/httpd-vhosts.conf</code></li>
<li><code class="language-plaintext highlighter-rouge">/etc/hosts</code></li>
</ul>
<p><strong>Attention !</strong> Si vous avez un Mac avec un processeur Apple (M1, M2, etc.) les fichiers dans lesquels on travaillera seront ceux-ci :</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">/opt/homebrew/etc/httpd/httpd.conf</code></li>
<li><code class="language-plaintext highlighter-rouge">/opt/homebrew/etc/httpd/extra/httpd-vhosts.conf</code></li>
<li><code class="language-plaintext highlighter-rouge">/private/etc/hosts</code></li>
</ul>
<p>Si vous n’avez pas déjà des projets dans votre dossier <code class="language-plaintext highlighter-rouge">Repositories</code>, créez en quelques uns :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>Repositories/
|_ nighcrawl/
|  |_ html/
|  |_ logs/
|
|_ cv/
   |_ html/
   |_ logs/
</code></pre>
</div>
</div>
<h2 id="nos-premiers-virtual-hosts">Nos premiers virtual hosts</h2>
<p>Nous allons maintenant créer nos tout premiers hôtes virtuels. Ils auront chacun une URL et un “document root” (le dossier dans lequel l’URL pointera) qui leur seront propres. L’URL <a href="http://nighcrawl.local">http://nighcrawl.local</a> pointera sur le dossier <code class="language-plaintext highlighter-rouge">~/Repositories/nighcrawl/html/</code> tandis que <a href="http://cv.local">http://cv.local</a> pointera sur <code class="language-plaintext highlighter-rouge">~/Repositories/cv/html/</code>.</p>
<h3 id="dans-httpdconf">Dans <code class="language-plaintext highlighter-rouge">httpd.conf</code></h3>
<p>Trouvez la ligne suivante et décommentez la (il suffit de supprimer le <code class="language-plaintext highlighter-rouge">#</code> devant la ligne) :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>#LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
</code></pre>
</div>
</div>
<p>Faites de même pour la ligne suivante :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
</code></pre>
</div>
</div>
<p><strong>Attention !</strong> Pour les processeurs Apple, la ligne à décommenter sera celle-ci :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>#Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
</code></pre>
</div>
</div>
<h3 id="dans-le-fichier-httpd-vhostsconf">Dans le fichier <code class="language-plaintext highlighter-rouge">httpd-vhosts.conf</code></h3>
<p>Si votre fichier contient déjà des configs, vous pouvez les supprimer si vous êtes certain qu’elles ne vous servent pas. On peut ajouter les configs suivantes pour déclarer nos virtual hosts <a href="http://nighcrawl.local">http://nighcrawl.local</a> et <a href="http://cv.local">http://cv.local</a> :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>
    DocumentRoot "/Users/YOUR_USERNAME/Repositories/nighcrawl/html"
    ServerName nighcrawl.local
    ErrorLog "/Users/YOUR_USERNAME/Repositories/nighcrawl/logs/error_log"
    CustomLog "/Users/YOUR_USERNAME/Repositories/nighcrawl/logs/access_log" common



    DocumentRoot "/Users/YOUR_USERNAME/Repositories/cv/html"
    ServerName bar.lo
    ErrorLog "/Users/YOUR_USERNAME/Repositories/cv/logs/error_log"
    CustomLog "/Users/YOUR_USERNAME/Repositories/cv/logs/access_log" common

</code></pre>
</div>
</div>
<h3 id="modification-du-fichier-hosts">Modification du fichier <code class="language-plaintext highlighter-rouge">hosts</code></h3>
<p>Pour que vos nouvelles URLs personnalisées soient reconnues, il va falloir leur dire sur quelle adresse IP elles devront pointer. Comme ces deux sites Web sont en local sur votre machine, leur adresse IP sera donc 127.0.0.1. Il faut alors ajouter ces deux ligne à la fin de votre fichier :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>127.0.0.1   nighcrawl.local
127.0.0.1   cv.local
</code></pre>
</div>
</div>
<p>Après avoir effectué tout ces changements, on relancera Apache avec la commande suivante dans un Terminal :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$ brew services restart httpd
</code></pre>
</div>
</div>
<p>Vous devriez alors voir un beau message “Index of /” si vous ouvrez <a href="http://nighcrawl.local">http://nighcrawl.local</a> et <a href="http://cv.local">http://cv.local</a> dans votre navigateur.</p>
<p><strong>Ça fonctionne !</strong> Vous n’avez plus qu’à mettre les fichiers HTML/PHP/JS/etc.. dans chaque projet .</p>
<h2 id="ranger-le-bazard">Ranger le bazard</h2>
<p>Maintenant que nos vhosts fonctionnent, il est temps de prévoir le futur et de faire quelques ajustements afin qu’il soit beaucoup plus facile de créer ou modifier des vhosts sans risquer de se perdre.</p>
<p>Moi par exemple, j’ai plus de 50 virtual hosts configurés sur ma machine… Un peu chaud de s’y retrouver si il faut modifier un vhost.</p>
<p>C’est pourquoi on va créer un fichier par virtual host plutôt que de les avoir tous dans un seul fichier, ce sera beaucoup plus maintenable.</p>
<h3 id="un-fichier-par-virtual-host">Un fichier par virtual host</h3>
<p>J’ai l’habitude de rassembler tous mes fichiers de vhosts dans un dossier <code class="language-plaintext highlighter-rouge">sites-available/</code> dans le dossier <code class="language-plaintext highlighter-rouge">/usr/local/etc/httpd/</code> ( <code class="language-plaintext highlighter-rouge">/opt/homebrew/etc/httpd/</code> pour les processeurs Apple).</p>
<p>Du coup on va déplacer nos configs pour <a href="http://nighcrawl.local">http://nighcrawl.local</a> dans un fichier <code class="language-plaintext highlighter-rouge">/usr/local/etc/httpd/sites-available/nighcrawl.conf</code></p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code># nighcrawl.conf

    DocumentRoot "/Users/YOUR_USERNAME/Repositories/nighcrawl/html"
    ServerName nighcrawl.local
    ErrorLog "/Users/YOUR_USERNAME/Repositories/nighcrawl/logs/error_log"
    CustomLog "/Users/YOUR_USERNAME/Repositories/nighcrawl/logs/access_log" common

</code></pre>
</div>
</div>
<p>et celle pour <a href="http://cv.local">http://cv.local</a> dans un fichier <code class="language-plaintext highlighter-rouge">/usr/local/etc/httpd/sites-available/cv.conf</code>.</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code># cv.conf

    DocumentRoot "/Users/YOUR_USERNAME/Repositories/cv/html"
    ServerName bar.lo
    ErrorLog "/Users/YOUR_USERNAME/Repositories/cv/logs/error_log"
    CustomLog "/Users/YOUR_USERNAME/Repositories/cv/logs/access_log" common

</code></pre>
</div>
</div>
<p><strong>Attention à adapter si vous avez un processeur Apple .</strong></p>
<h3 id="mettre-à-jour-httpd-vhostsconf">Mettre à jour <code class="language-plaintext highlighter-rouge">httpd-vhosts.conf</code></h3>
<p>Maintenant que nos hôtes virtuels ont leur propre fichier de config, on peu les supprimer du fichier <code class="language-plaintext highlighter-rouge">httpd-vhosts.conf</code>.</p>
<p>Après ça, on va simplement inclure chaque fichier <code class="language-plaintext highlighter-rouge">.conf</code>présent dans notre dossier <code class="language-plaintext highlighter-rouge">sites-available/</code> grâce à cette ligne :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code># Pour les processeurs Intel
Include /usr/local/etc/httpd/sites-available/*.conf

# Pour les processeurs Apple
Include /opt/homebrew/etc/httpd/sites-available/*.conf
</code></pre>
</div>
</div>
<p>On redémarre à nouveau le services Apache avec <code class="language-plaintext highlighter-rouge">brew services restart httpd</code> et tout devrait rouler comme avant, mais en mieux.</p>
<h2 id="aller-encore-plus-loin">Aller encore plus loin</h2>
<p>Pour aller plus loin et gagner du temps lors de la création d’un nouvel hôte virtuel, j’utilise un script bash qui me permet de faire tout ceci en une seule ligne de commande.</p>
<p>Voici une version édulcorée de mon script <code class="language-plaintext highlighter-rouge">vhost.sh</code> :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>#!/bin/bash
USER="achierchia"
CONF_FOLDER="/opt/homebrew/etc/httpd/sites-available/"
SITES_FOLDER="Repositories"

if [ "$USER" == "" ] || [ "$CONF_FOLDER" == "" ] || [ "$SITES_FOLDER" == "" ]; then
	echo "You must set the variables USER, CONF_FOLDER and SITES_FOLDER in the script!"
	echo ""
	exit
fi

if [ "$(whoami)" != "root" ]; then
    echo -ne "e[0;101m You must be root to use this script! e[0;49m "
    echo ""
    exit
fi

domain=""
createFolder="N"

while getopts d:f: flag 
do
	case "${flag}" in
		d) domain=${OPTARG};;
		f) createFolder=${OPTARG};;
	esac
done

if [[ "$createFolder" =~ ^[Yy]$ ]]; 
then
    echo "Création du dossier ${domain} dans ${SITES_FOLDER}..."
    cd /Users/${USER}/${SITES_FOLDER}/
	mkdir $domain
	cd /Users/${USER}/${SITES_FOLDER}/${domain}/
	mkdir logs
fi

accessLog="${domain}_access"
errorLog="${domain}_error"

echo "Création du fichier de config..."
cd $CONF_FOLDER
sudo -u $USER -i -- cat &gt;&gt; ${domain}.conf &lt;&lt; EOF

	ServerName ${domain}.local

	DocumentRoot /Users/${USER}/${SITES_FOLDER}/${domain}
	DirectoryIndex index.php index.html
	
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride All
		Require all granted
	

	LogLevel warn

	ErrorLog /Users/${USER}/${SITES_FOLDER}/${domain}/logs/${errorLog}.log
	CustomLog /Users/${USER}/${SITES_FOLDER}/${domain}/logs/${accessLog}.log combined

EOF

echo "Mise à jour du fichier hosts..."
HOSTURL=$domain".local"
HOSTCONF="127.0.0.1t"$HOSTURL"twww."$HOSTURL
sed -i -- "s/# local end/"$HOSTCONF"n# local end/g" /etc/hosts

echo "Modification des privileges du fichier conf"
cd ${CONF_FOLDER}
sudo chown $USER "${domain}.conf"
cd /Users/${USER}/${SITES_FOLDER}/${domain}/logs/
sudo chown $USER "${accessLog}.log" "${errorLog}.log"

echo "Redémarrage du serveur Apache..."
sudo -u $USER -i -- brew services restart httpd

</code></pre>
</div>
</div>
<p>Pour l’utiliser il suffit d’executer cette commande :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$ sudo sh vhost.sh -d monsiteweb -f Y
</code></pre>
</div>
</div>
<p>Ce script permet de :</p>
<ul>
<li>Créer un dossier <code class="language-plaintext highlighter-rouge">monsiteweb/</code> dans le dossier <code class="language-plaintext highlighter-rouge">$SITES_FOLDER</code> paramétré.</li>
<li>Créer le fichier de config vhost <code class="language-plaintext highlighter-rouge">monsiteweb.conf</code> dans le dossier <code class="language-plaintext highlighter-rouge">$CONF_FOLDER</code>.</li>
<li>Déclarer <code class="language-plaintext highlighter-rouge">monsiteweb.local</code> dans le fichier <code class="language-plaintext highlighter-rouge">hosts</code></li>
<li>Relancer le serveur Apache</li>
</ul>
<p>Si on ne souhaite pas créer le dossier du projet, par exemple parce qu’il existe déjà, on peux lancer cette commande :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>$ sudo sh vhost.sh -d monsiteweb -f N
</code></pre>
</div>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2023/03/creer-des-virtual-hosts-pour-notre-serveur-local/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
