Linux

Héberger un site web sur un VPS (avec Nginx, PHP, MySQL, PHPMyAdmin, Ubuntu server 20.04)

Héberger un site web sur un VPS (avec Nginx, PHP, MySQL, PHPMyAdmin, Ubuntu server 20.04)

Posté le 13/01/2021, à 13:47
Mis à jour le 13/01/2021 à 15:10
citizenz7
Auteur : citizenz7

Lectures : 5327



https://www.hetzner.com/
https://accounts.hetzner.com/login

Si vous voulez m'aider et gagner des crédits merci d'utiliser mon referal Hetzner lors de la création de votre compte : https://hetzner.cloud/?ref=ZDGa0z2tT2AL
Vous gagnerez 20 € de crédit sur le nouveau compte. Et si vous commander des serveurs, dès que vous payez au moins 10 €, je reçevrez 10 € de crédit.

Prérequis :

  • avoir un compte Hetzner
  • avoir commandé un VPS (la taille, puissance, etc. du VPS dépend de votre besoin. Pour un site web même un peu complexe le VPS CX11 à 2,99 €/mois suffit amplement !)
  • avoir reçu le mot de passe root du VPS lors de sa création
  • récupérer l'IP v4 de votre VPS
  • se connecter en SSH (ssh root@IP_VPS), en root sur le VPS (sous Windows utilisez Putty, sous Linux, utiliser directement votre terminal).

NOTE : j'utilise Hetzner pour ce tuto. Il est évident que vous pouvez utiliser n'importe quel autre fournisseur comme par exemple OVH, Scaleway, Online, etc. Cela fonctionnera de la meme manière ! :)


1ère connexion au VPS

ssh root@IP_VPS

Ajouter un utilisateur :

adduser MON_USER

On donne les droits sudo à l'utilisateur :

adduser MON_USER sudo

Changer le port de SSH pour plus de sécurité et de tranquilité :

nano /etc/ssh/sshd_config
#Port 22
Port 9521

(Ici, le N° de port est donné à titre indicatif. Vous pourriez tout aussi bien utiliser 9288 ou 10255... Mais vérifiez que le port que vous souhaitez choisir n'est pas un port déjà attribué à une application ou un service. Choisissez un port "haut" (c'est à dire par exemple 7000 et +)

Mettre à jour le VPS, faire un peu de nettoyage et installer des applis utiles... et rebooter dans la foulée (tout sur une seule ligne) :

apt update && apt upgrade -y && apt autoremove -y && apt install -y mc htop ntp ntpdate fail2ban screenfetch vim-nox curl git && reboot

PS : screenfetch, c'est pour le fun :D
Le VPS va rebooter et couper la connexion. A la reconnexion, on utilisera le nom du nouvel utilisateur + son mot de passe. On utilisera sudo pour les commandes qui nécessitent les droits super-utilisateur. Le mot de passe qui sera alors demandé sera le même que notre nouvel utilisateur.

On se reconnecte en SSH au VPS, avec le nouveau port (celui que vous avez choisis) :

  • Sous Windows avec Putty, vous ajouterez 9521 dans la case port
  • Sous Linux, dans le terminal : ssh -p 9521 MON_USER@IP_VPS

On installe nginx, mariadb-server, PHP (7.4) :

sudo apt install nginx mariadb-server php7.4-fpm php7.4-curl php7.4-gd php7.4-mysql php7.4-xml php7.4-intl php7.4-mbstring php7.4-zip php7.4-mbstring

On configure le virtualhost par défaut pour prendre en compte PHP :

cd /etc/nginx/sites-available/
sudo nano default
../..
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
../..
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
#
#    # With php-fpm (or other unix sockets):
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
#       # With php-cgi (or other tcp sockets):
#       fastcgi_pass 127.0.0.1:9000;
        }

On teste la config de Nginx :

sudo nginx -t

Si tout est ok (sans erreur), on relance Nginx :

sudo /etc/init.d/nginx restart

On se rend dans le répertoire du virtualhost par défaut :

cd /var/www/html

On va créer un fichier info.php pour vérifier que PHP fonctionne :

sudo nano info.php
<?php
    phpinfo();
?>

On se rend sur cette page info.php grâce au navigateur :

http://IP_VPS/info.php

Vous devriez voir la page d'info de PHP...

On configure Mariadb (MySQL) :

sudo mysql_secure_installation
Enter current password for root (enter for none): Enter
Set a root password? [Y/n] y

On entre le mot de passe root de MySQL :

ATTENTION : le mot de passe root de MySQL n'a RIEN A VOIR avec le mot de passe root de Linux !

Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

On installe phpmyadmin :

sudo apt install phpmyadmin

Quand vous arrivez sur l'écran "Configuring phpmyadmin - Please the webserver that should be automaticaly configured to run phpMyAdmin", ne cochez RIEN (ni apache2, ni lighttpd)... puisqu'on utilise Nginx !

Puis à l'écran suivant : "Configure database for phpmyadmin with dbconfig-common?" --> répondez YES

Puis à l'écran suivant : "MySQL application password for phpmyadmin" : vous pouvez ne rien mettre et simplement sélectionner OK (ca créera un mot de passe automatiquement. Vous n'aurez pas besoin de ce mot d epasse par la suite de toutes façons...)

Puis on configure phpMyAdmin :

$ sudo ln -s  /usr/share/phpmyadmin /var/www/html/phpmyadmin
$ sudo chmod 775 -R /usr/share/phpmyadmin/
$ sudo chown root:www-data -R /usr/share/phpmyadmin/

Dernière confgiuration de MySQL pour permettre avec phpMyAdmin de se connecter avec l'utilisateur root :

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Puis :

sudo nano /etc/mysql/debian.cnf

Dans ce fichier, ecrivez le mot de passe root MySQL aux lignes 5 et 10 (password = MOT_DE_PASSE)

On redémarre enfin mariadb :

sudo /etc/init.d/mysql restart

ET VOILA : désormais, vous pouvez vous connecter à phpmyadmin à l'adresse : http://IP_VPS/phpmyadmin

Si vous avez un nom de domaine, vous pouvez le faire pointer sur l'adresse IP de votre VPS. Il va alors falloir créer un virtualhost Nginx pour notre site qui sera joignable sur www.MON_DOMAINE.COM ou MON_DOMAINE.com.

A SUIVRE ...


Vous pouvez aussi compléter l'installation grace au différents tutos déjà présents sur citizenz.info :
- LetsEncrypt (certbot) et Nginx : config rapide sous Ubuntu
- Installer facilement Pure-FTPd sur une Debian
- serveur ftp : pure-ftpd et ports passifs

Commentaires de l'article 0

Vous devez être connecté(e) pour écrire un commentaire.
Pas encore de compte ? Enregistrez-vous gratuitement.