Avertissement
En l'état actuel, l'installation de BlogThèque nécessite des compétances en webmastering.
Préconisations
Je préconise un serveur avec :
- Apache
- PHP 8.xx
- MySql 8.xx
- 50 Go d'espace disque
- 8 Go de RAM
- 2 coeurs minimum
A noter que cette configuration sera suffisante pour héberger une cinquantaine de sites à faible ou moyen traffic.
Vérifications
Faites une mise à jour de votre système.
sudo apt-get update
sudo apt-get upgrade
Vérifier que les modules PHP suivants sont bien installés :
sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip
Vérifier que pour Apache, Modrewrite est acitf (pour le fonctionnement du fichier .htaccess) :
sudo a2enmod rewrite
sudo systemctl restart apache2
Vérifier que Let's Encrypt est bien installé pour pouvoir générer des certificat SSL gratuits :
sudo apt install certbot python3-certbot-apache
et que le port 443 est bien ouvert sur le firewall :
sudo ufw allow 'Apache Full'
Prévoir un serveur stmp avec le login et mot de passe pour pouvoir envoyer des messages à partir de votre site.
Traitement des fichiers PDF
Afin de transformer les pages des fichiers PDF en images pour la visionneuse, il est nécessaire d'installer imagick.
sudo apt install php-imagick
après l'installation, éditer le fichier de configuration :
sudo nano /etc/ImageMagick-6/policy.xml
et remplacer
<policy domain="coder" rights="none" pattern="PDF" />
par
<policy domain="coder" rights="read | write" pattern="PDF" />
Redémarrer Apache pour la prise en compte :
sudo systemctl restart apache2
Procéder à l'installation des scripts
Bientôt disponible !
Composer
Composer est un logiciel gestionnaire de dépendances libre qui permet de déclarer et d'installer les bibliothèques dont le projet principal a besoin.
Dans le répertoire de votre site web, procéder à l'installation de composer :
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
sudo php -r "unlink('composer-setup.php');"
Création des vignettes de sites web
La fonction annuaire de BlogTheque permet d'effectuer des captures écran de sites web.
1° Installer wget si cela n'a pas déjà été fait.
sudo apt install wget
Puis télécharger le binaire deb de Chrome :
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
puis l'installer :
sudo apt install ./google-chrome-stable_current_amd64.deb
2° puis installer Chrome PHP à partir de composer (dans le répertoire de votre site)
composer require chrome-php/chrome
Paramétrage de PHP
Vous devez modifier la limite de taille des fichiers en upload.
Pour cela, modifier le fichier php.ini situé dans :
sudo nano /etc/php/8.1/fpm/php.ini
et modifier les paramètres suivants :
upload_max_filesize = 50M
post_max_size = 50M
Puis pour la prise en compte faire :
sudo systemctl restart php8.1-fpm.service
MySql
Le module de statistiques, pour des raisons de performance, nécessite de modifier certains paramètres de MySql afin de charger en mémoire une table de la base de données.
nano /etc/mysql/conf.d/mysql.cnf
et ajouter les 3 lignes suivantes :
[mysqld]
max_heap_table_size=128M
tmp_table_size=128M
puis redemarrer MySql :
sudo service mysql restart
Cron
Un certain nombre de taches sont exécutées régulièrement à des fins de statistiques et de maintenance.
Dans le répoertoire :
cd /etc/cron.d
avec la commande :
crontab -e
installer les taches suivantes (utilisateur www-data) :
0,5,10,15,20,25,30,35,40,45,50,55 * * * * curl https://monsite.com/bt-cron/pays.php
0 6 * * * curl https://monsite.com/bt-cron/crontab.php
45 4 * * * curl https://monsite.com/bt-cron/sitemap.php
45 1 * * * curl https://monsite.com/bt-cron/purge.php
45 2 * * * curl https://monsite.com/bt-cron/stats_date_id.php
0 3 * * * mysqldump --user=TOTO --password=XXXXXXXX --all-databases > /var/www/mysql_sav/all_`date "+%Y-%m-%d"`.sql
* 4 * * * bash /var/www/rsynk.sh
0,30 6-23 * * * curl https://monsite.com/bt-cron/blog_flux.php
5 * * * * curl https://monsite.com/bt-cron/blog_meteo.php
35 * * * * curl https://anshare.net/bt-cron/bt_maj.php
ntfy
BlogThèque utilise ntfy pour envoyer des notifications vers les smatphones et pour la double authentification.
1° Installer ntfy :
2° Autoriser le port 10025 (ou autre libre de votre choix) sur votre serveur
(par défaut ntfy utilise le port 80 il faut le changer)
sudo ufw allow from any to any port 10025 proto tcp
3° Modifier le fichier de configuration
nano /etc/ntfy/server.yml
avec les valeurs suivantes :
base-url: https://ntfy.votresite.com
listen-http: ":10025"
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "read-only"
upstream-base-url: "https://ntfy.sh"
redémarrer ntfy :
sudo systemctl restart ntfy
4° créer un utilisateur avec droits admin :
ntfy user add --role=admin nom_utilisateur
5° Le faire fonctionner sur un sous-domaine de votre site :
Créer le fichier .conf pour Apache dans le répertoire :
/etc/apache2/sites-available
créer le fichier de configuration du site :
<VirtualHost *:80>
ServerName ntfy.votresite.com
ServerAlias ntfy.votresite.com
ProxyPass / http://localhost:10025/
ProxyPassReverse / http://localhost:10025/
RewriteCond %{SERVER_NAME} =ntfy.votresite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
5° pemettre l'utilisation du proxy_http
sudo a2enmod proxy_http
6° enregistrer le site :
sudo a2ensite ntfy-votresite-com.conf
redemarrer apache :
systemctl reload apache2
installer le certificat ssl :
sudo certbot --apache
Attention, en cas de mise à jour de ntfy, le fichier server.yml risque d'être écrasé. Refaire alors la configuration.