Publier un site sur un nom de domaine¶
Supposons que vous voulez publier un site fait en PHP se situant dans /var/www/html/<votre-projet>
Il y a plusieurs choses à faire
Commander le nom de domaine¶
Dans un premier temps, il vous faut un nom de domaine. Je vous recommande de prendre votre nom de domaine chez Infomaniak, cependant, ce n'est pas une obligation.
Commandez un nom de domaine si vous n'en avez pas.
Rediriger le nom de domaine¶
Rendez vous sur le panel de Infomaniak.
Vous allez vous rendre dans la partie Web & Domains et cliquer sur Domaine.
Cliquer ensuite sur le nom de domaine que vous souhaitez utiliser.
Une fois sur ce dernier, à gauche, vous devriez avoir Zone DNS, aller-y.
Vous arriverez sur une page ressemblant à celle-ci :
Cliquer sur Ajouter un enregistrement
Dans notre cas, on veut un enregistrement de type A, il faut juste descendre et cliquer sur continuer.
Une fois ici, il faut juste completer le sous nom de domaine que vous souhaitez utilisé, dans mon cas serveur, et l'adresse IP de votre serveur puis il ne vous reste plus qu'à cliquer sur Enregistrer.
IMPORTANT : Ne toucher pas au TTL à moins que vous sachiez ce que cela fait.
Installation de dépendance¶
Premièrement, il faut installer un autre gestionnaire de paquet pour installer la suite.
Il s'agit de snap et non pas snapchat, hin.
sudo apt update
sudo apt install snapd -y
Une fois ceci fait, il faut installer certbot
sudo snap install --classic certbot
Et il faut juste faire une dernière commande :
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Installation du certificat SSL/TLS¶
Il faut maintenant configurer le certificat SSL/TLS pour sécuriser votre site web.
IMPORTANT : Il est fortement recommandé de couper votre serveur web pendant ce processus pour éviter toute erreur.
sudo service apache2 stop
sudo service nginx stop
Maintenant, on peut faire la demande du certificat
sudo certbot certonly --standalone -d <votre-nom-de-domaine>
Apache2¶
Il vous faut, dans un premier temps, aller dans le dossier suivant :
cd /etc/apache2
Vous allez créer un fichier, par exemple : website.conf, un truc que vous comprendrez
sudo nano sites-available/website.conf
Vous allez insérer le contenu suivant :
<VirtualHost *:80>
ServerName <domaine>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName <domaine>
DocumentRoot "/var/www/html/<votre-projet>"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/html/<votre-projet>">
Require all granted
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<domaine>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<domaine>/privkey.pem
</VirtualHost>
Remplacez <votre-projet> par le nom du dossier comprenant votre projet dans /var/www/html.
Remplacez aussi <domaine> par le nom de domaine que vous avez utilisé.
Faite la commande suivante :
sudo apache2ctl -t
Vous DEVEZ avoir la réponse : syntax OK
Vous devrez juste activer quelques mods via la commande suivante :
sudo a2enmod rewrite
sudo a2enmod ssl
Vous pouvez maintenant activé le site :
sudo a2ensite website.conf
Pour finir, il ne vous reste plus qu'à démarrer votre Apache2
sudo service apache2 start
Nginx¶
Il vous faut, dans un premier temps, aller dans le dossier suivant :
cd /etc/nginx
Vous allez créer un fichier, par exemple : website.conf, un truc que vous comprendrez
sudo nano sites-available/website.conf
Vous allez insérer le contenu suivant :
server {
listen 80;
server_name <domaine>;
return 301 https://$server_name$request_uri;
}
server {
# Replace the example <domain> with your domain name or IP address
listen 443 ssl http2;
server_name <domaine>;
root /var/www/html/<votre-projet>;
index index.php;
access_log /var/log/nginx/website.app-access.log;
error_log /var/log/nginx/website.app-error.log error;
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
ssl_certificate /etc/letsencrypt/live/<domaine>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domaine>/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_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";
ssl_prefer_server_ciphers on;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Remplacez <votre-projet> par le nom du dossier comprenant votre projet dans /var/www/html.
Remplacez aussi <domaine> par le nom de domaine que vous avez utilisé.
Il faut maintenant activer le site en faisant la commande suivante :
sudo ln -s /etc/nginx/sites-available/website.conf /etc/nginx/sites-enabled/website.conf
Pour finir, il ne vous reste plus qu'à démarrer votre Nginx
sudo service nginx start