{"id":184,"date":"2023-04-06T09:26:00","date_gmt":"2023-04-06T07:26:00","guid":{"rendered":"https:\/\/baltazorius.fr\/?p=184"},"modified":"2023-05-18T06:48:40","modified_gmt":"2023-05-18T04:48:40","slug":"creer-un-serveur-web-lamp-2","status":"publish","type":"post","link":"https:\/\/baltazorius.fr\/index.php\/2023\/04\/06\/creer-un-serveur-web-lamp-2\/","title":{"rendered":"Cr\u00e9er un Serveur web &#8211; LAMP"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">LAMP est un acronyme pour <strong>L<\/strong>inux, <strong>A<\/strong>pache, <strong>M<\/strong>ySQL, <strong>P<\/strong>HP. C&rsquo;est une pile logicielle comprenant le syst\u00e8me d&rsquo;exploitation, un serveur HTTP, un syst\u00e8me de gestion de bases de donn\u00e9es et un langage de programmation interpr\u00e9t\u00e9, et qui permet de mettre en place un <a href=\"https:\/\/doc.ubuntu-fr.org\/web#serveurs\">serveur web<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Linux<\/strong> : le syst\u00e8me d&rsquo;exploitation, on peut d\u00e9ployer la pile LAMP sur la plupart des distributions GNU\/Linux ;<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/doc.ubuntu-fr.org\/apache2\">Apache<\/a><\/strong> : le serveur HTTP, il permet au serveur de communiquer avec le navigateur en utilisant le protocole HTTP(S) ;<\/li>\n\n\n\n<li><strong>MySQL<\/strong> : il s&rsquo;agit d&rsquo;un serveur de bases de donn\u00e9es. Il sert \u00e0 stocker, \u00e0 manipuler et \u00e0 acc\u00e9der \u00e0 des listes de donn\u00e9es organis\u00e9es en tableaux. Ce service peut \u00eatre fournit par le logiciel <a href=\"https:\/\/doc.ubuntu-fr.org\/mysql\">MySQL<\/a> ou par <a href=\"https:\/\/doc.ubuntu-fr.org\/mariadb\">MariaDB<\/a> (fork plus ouvert, plus performant, et 100% compatible MySQL).<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/doc.ubuntu-fr.org\/php\">PHP<\/a><\/strong> : PHP est un langage de programmation interpr\u00e9t\u00e9 qui permet de g\u00e9n\u00e9rer du contenu web dynamiquement. Il s&rsquo;agit la plupart du temps de pages <a href=\"https:\/\/fr.wikipedia.org\/wiki\/HTML\">HTML<\/a>).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Un exemple type : un internaute veut afficher son profil sur un site web. Au moyen de son navigateur il effectue une requ\u00eate sur un <a href=\"https:\/\/doc.ubuntu-fr.org\/web#serveurs\">serveur web<\/a> en appelant une <a href=\"https:\/\/doc.ubuntu-fr.org\/web#url\">URL<\/a> sur le domaine du serveur. Le module PHP d&rsquo;Apache va interpr\u00e9ter un script qui envoie une requ\u00eate au serveur MySQL en lui demandant les informations de l&rsquo;utilisateur. Une fois ces informations r\u00e9cup\u00e9r\u00e9es, le script PHP met en forme le r\u00e9sultat sous forme de page web (HTML) qui est envoy\u00e9e au navigateur web.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Installation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">On peut d\u00e9ployer la pile LAMP sur n&rsquo;importe quelle version ou <a href=\"https:\/\/doc.ubuntu-fr.org\/variantes\">variante<\/a> d&rsquo;Ubuntu (le syst\u00e8me d&rsquo;explotation que vous utilisez). La variante <a href=\"https:\/\/doc.ubuntu-fr.org\/ubuntu_server\">Ubuntu server<\/a> est particuli\u00e8rement adapt\u00e9e dans le cas d&rsquo;un serveur \u00ab\u00a0headless\u00a0\u00bb (sans interface graphique) contr\u00f4lable \u00e0 distance (par <a href=\"https:\/\/doc.ubuntu-fr.org\/ssh\">ssh<\/a> notamment).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9thode recommand\u00e9e : installation des paquets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cette m\u00e9thode consiste \u00e0 <a href=\"https:\/\/doc.ubuntu-fr.org\/tutoriel\/comment_installer_un_paquet\">installer<\/a> les paquets n\u00e9cessaires pour Apache, PHP et MySQL :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">ou si vous pr\u00e9f\u00e9rez opter pour <a href=\"https:\/\/doc.ubuntu-fr.org\/mariadb\">MariaDB<\/a> au lieu de MySQL :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">La pile LAMP est alors install\u00e9e. Cependant la plupart des scripts <a href=\"https:\/\/doc.ubuntu-fr.org\/php\">PHP<\/a> (<a href=\"https:\/\/doc.ubuntu-fr.org\/cms\">CMS<\/a>, forums, applications web en tout genre) utilisent des <a href=\"https:\/\/doc.ubuntu-fr.org\/php#modules\">modules de PHP<\/a> pour b\u00e9n\u00e9ficier de certaines fonctionnalit\u00e9s.<br>Voici comment installer les modules les plus courants :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Description des paquets :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le paquet <a href=\"apt:\/\/apache2\">apache2<\/a> installe le serveur HTTP <a href=\"https:\/\/doc.ubuntu-fr.org\/apache2\">Apache 2<\/a> (c&rsquo;est une d\u00e9pendance de libapache2-mod-php).<\/li>\n\n\n\n<li>Le paquet <a href=\"apt:\/\/php\">php<\/a> m\u00e9ta-paquet permettant d&rsquo;installer au moins un interpr\u00e9teur <a href=\"https:\/\/doc.ubuntu-fr.org\/php\">PHP<\/a> (aussi install\u00e9 ici en d\u00e9pendance de libapache2-mod-php).<\/li>\n\n\n\n<li>Le paquet <a href=\"apt:\/\/libapache2-mod-php\">libapache2-mod-php<\/a> module d&rsquo;Apache (on peut aussi utiliser PHP en ligne de commande ou ind\u00e9pendamment en FastCGI, ce qui le rend plus performant mais plus compliqu\u00e9 \u00e0 mettre en place)<\/li>\n\n\n\n<li>Le paquet <a href=\"apt:\/\/mysql-server\">mysql-server<\/a> installe le serveur de bases donn\u00e9es <a href=\"https:\/\/doc.ubuntu-fr.org\/mysql\">MySQL<\/a>.<\/li>\n\n\n\n<li>Le paquet <a href=\"apt:\/\/mariadb-server\">mariadb-server<\/a> installe le serveur de base donn\u00e9es <a href=\"https:\/\/doc.ubuntu-fr.org\/mariadb\">MariaDB<\/a>.<\/li>\n\n\n\n<li>Le paquet <a href=\"apt:\/\/php-mysql\">php-mysql<\/a> installe les module permettant d&rsquo;utiliser MySQL ou MariaDB avec PHP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois les paquets install\u00e9s, ouvrez un des liens suivants dans votre navigateur :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/127.0.0.1\/\">http:\/\/127.0.0.1\/<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/localhost\">http:\/\/localhost<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si le message \u00ab <strong>It works!<\/strong> \u00bb s&rsquo;affiche, votre serveur Lamp est correctement install\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selon la version install\u00e9e, vous pouvez aussi avoir une page intitul\u00e9e \u00ab Apache2 Ubuntu Default Page \u00bb.<\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background wp-block-paragraph\">La m\u00e9thode d&rsquo;installation d\u00e9crite ici permet d&rsquo;obtenir un serveur LAMP pr\u00e9-configur\u00e9 et fonctionnel, affichant le contenu du r\u00e9pertoire <strong>\/var\/www\/html<\/strong> (par d\u00e9faut les fichiers <strong>index.html<\/strong> ou <strong>index.php<\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous donnez les droits de lecture\/\u00e9criture et de lecture pour le web dans dossier  www<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo chown -R $USER:www-data \/var\/www<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Autoriser le port 80 de votre firewall :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo ufw allow in &quot;Apache&quot;<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ou autoriser tous les ports que apache a besoin :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo ufw allow in &quot;Apache Full&quot;<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Voir si tout est ok<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo ufw status<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration du d\u00e9marrage automatique de LAMP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Par d\u00e9faut, Apache et MySQL ou MariaDB d\u00e9marrent automatiquement lorsque vous allumez votre ordinateur.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"empecher_lamp_de_demarrer_automatiquement\">Emp\u00eacher LAMP de d\u00e9marrer automatiquement<a href=\"https:\/\/doc.ubuntu-fr.org\/lamp#empecher_lamp_de_demarrer_automatiquement\"><\/a><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Pour emp\u00eacher cela :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo systemctl disable apache2<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Et pour mysql :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo systemctl disable mysql<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pourrez donc ensuite les lancer manuellement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour Apache :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo systemctl start apache2<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">et pour MySql<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo systemctl start mysql<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Les commandes disponibles sont <code><strong>systemctl start<\/strong><\/code>, <code><strong>systemctl stop<\/strong><\/code>, et <code><strong>systemctl restart<\/strong><\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"reactiver_le_demarrage_automatique\">R\u00e9activer le d\u00e9marrage automatique<a href=\"https:\/\/doc.ubuntu-fr.org\/lamp#reactiver_le_demarrage_automatique\"><\/a><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Pour r\u00e9activer les services automatiquement au d\u00e9marrage, c&rsquo;est simple :<\/p>\n\n\n<div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <pre class=\"language-bash code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-bash code-embed-code\">sudo systemctl enable apache2<br\/>sudo systemctl enable mysql<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration de MySQL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il est courant d&rsquo;installer \u00e9galement <a href=\"https:\/\/doc.ubuntu-fr.org\/phpmyadmin\">PHPMyAdmin<\/a> afin de g\u00e9rer la base de donn\u00e9e MySQL dans une interface Web \u00e9crite en PHP.<br>On peut aussi utiliser <a href=\"https:\/\/www.adminer.org\/\">Adminer<\/a> qui est plus simple \u00e0 installer (il s&rsquo;agit d&rsquo;un simple fichier PHP) et propose \u00e0 peu pr\u00e8s les m\u00eames fonctionnalit\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>On peut passer a la suite pour g\u00e9rer la base de donn\u00e9e MySQL :<\/strong> <a href=\"https:\/\/baltazorius.fr\/index.php\/2023\/04\/06\/phpmyadmin-afin-de-gerer-la-base-de-donnee-mysql\/\">https:\/\/baltazorius.fr\/index.php\/2023\/04\/06\/phpmyadmin-afin-de-gerer-la-base-de-donnee-mysql\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Source : <a href=\"https:\/\/doc.ubuntu-fr.org\/lamp\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/doc.ubuntu-fr.org\/lamp<\/a><\/p>\n<p>Views: 742<\/p>","protected":false},"excerpt":{"rendered":"<p>LAMP est un acronyme pour Linux, Apache, MySQL, PHP. C&rsquo;est une pile logicielle comprenant le syst\u00e8me d&rsquo;exploitation, un serveur HTTP, un syst\u00e8me de gestion de bases de donn\u00e9es et un langage de programmation interpr\u00e9t\u00e9, et qui permet de mettre en place un serveur web. Un exemple type : un internaute veut afficher son profil sur &#8230; <a href=\"https:\/\/baltazorius.fr\/index.php\/2023\/04\/06\/creer-un-serveur-web-lamp-2\/\" class=\"more-link\">En savoir plus<span class=\"screen-reader-text\"> \u00ab\u00a0Cr\u00e9er un Serveur web &#8211; LAMP\u00a0\u00bb<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-184","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/posts\/184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/comments?post=184"}],"version-history":[{"count":7,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/posts\/184\/revisions"}],"predecessor-version":[{"id":312,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/posts\/184\/revisions\/312"}],"wp:attachment":[{"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/media?parent=184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/categories?post=184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/baltazorius.fr\/index.php\/wp-json\/wp\/v2\/tags?post=184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}