GNU/Linux >> Tutoriels Linux >  >> Debian

Créer un réseau social en ligne avec Elgg sur Debian 9

Dans ce tutoriel, je vais vous montrer comment installer et configurer la dernière version d'Elgg sur Debian 9 afin de créer un réseau social en ligne gratuit.

Elgg est un logiciel de cadre de moteur social open source gratuit écrit en langage de programmation PHP. Le framework Elgg peut aider les individus ou les organisations à créer des environnements sociaux puissants sous Linux sous les serveurs Web Apache/Nginx, le système de gestion de base de données PHP et MySQL/MariaDB, également connu sous le nom de pile LAMP ou LEMP. Il possède également des fonctionnalités intégrées qui peuvent alimenter le partage de fichiers, les blogs, les groupes sociaux ou les plateformes éducatives sur des réseaux publics ou privés.

Afin de déployer avec succès la plate-forme Elgg dans vos locaux, vous devrez répondre aux exigences suivantes.

  • Une machine virtuelle ou un serveur privé virtuel alimenté par Debian 9, de préférence une installation minimale
  • Accès direct au compte root ou à un utilisateur local avec des pouvoirs root via la console du serveur ou la gestion à distance via SSH
  • Le serveur a besoin d'une adresse IP statique configurée pour l'interface réseau externe afin d'accéder via son adresse IP publique aux visiteurs
  • Vous pourriez également avoir besoin d'un nom de domaine public ou privé configuré pour votre serveur afin que les visiteurs puissent accéder à la plate-forme via un nom de domaine, tel que www.votredomaine.com, bien que vous puissiez toujours accéder à la plate-forme via l'adresse IP de votre serveur.
  • Afin d'utiliser l'inscription au site Web d'Elgg via une adresse e-mail ou d'utiliser d'autres fonctionnalités de la plate-forme, vous devez déployer un serveur de messagerie dans vos locaux ou utiliser un serveur de messagerie public.

Prérequis

Dans un premier temps, connectez-vous au serveur Debian 9 avec les privilèges root ou avec un utilisateur disposant des pouvoirs root et lancez la commande suivante afin de mettre à jour votre système avec les derniers correctifs de sécurité, logiciels et mises à jour du noyau.

apt update
apt upgrade

Ensuite, assurez-vous de configurer le nom de votre machine en exécutant les commandes suivantes. Vous devez remplacer la variable de nom d'hôte utilisée dans cet exemple pour qu'elle corresponde à votre propre domaine.

hostnamectl set-hostname www.socialnet.org

Après avoir configuré le nom d'hôte de la machine, vérifiez si l'hôte a été correctement configuré en vérifiant le fichier hosts avec les commandes suivantes.

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

Enfin, pour appliquer les mises à jour du nom d'hôte et du noyau de la machine, redémarrez le système en exécutant la commande suivante.

systemctl reboot

Après le redémarrage du système, reconnectez-vous à la console et exécutez la commande suivante pour installer certains utilitaires système qui nous aideront à télécharger des logiciels sur Internet et à extraire certains types de fichiers d'archive

apt install wget zip unzip curl

Installer la pile LAMP

Afin de déployer le framework de réseau social Elgg sur notre serveur, nous devons installer les composants de la pile LAMP. Le premier composant que nous installerons est la base de données - MariaDB - un fork de la base de données populaire MySQL, en tant que backend de base de données. La base de données MariaDB sera utilisée par l'application pour stocker les utilisateurs, les sessions, les contacts, les publications, les commentaires et d'autres informations. Pour installer le serveur de base de données MariaDB et le logiciel client dans Debian 9 via les dépôts officiels, lancez la commande ci-dessous dans le terminal.

apt install mariadb-server mariadb-client

Une fois l'installation de la base de données terminée, connectez-vous à la console MySQL et exécutez les commandes suivantes afin de sécuriser le compte racine de la base de données, accessible par défaut sans fournir de mot de passe.

mysql -h localhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(aucun)]> utilise mysql ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

MariaDB [mysql]> mettre à jour l'ensemble d'utilisateurs plugin='' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> flush privilèges ;

Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> quitter

Bye

Après avoir terminé l'étape ci-dessus, exécutez la mysql_secure_installation script fourni par les référentiels extensibles Debian, afin de sécuriser davantage le serveur MariaDB et de configurer un mot de passe fort pour le compte racine de la base de données. Principalement, répondez "oui" à toutes les questions posées par le script, telles que :changer le mot de passe root MySQL, supprimer les utilisateurs anonymes, désactiver les connexions root à distance et supprimer la base de données de test, comme illustré dans l'extrait de script ci-dessous.

mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we'll need the current

password for the root user.  If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

 ... Success!

 

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

 ... Success!

 

By default, MariaDB comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Afin de tester la sécurité de MariaDB, essayez de vous connecter à la base de données depuis la console sans mot de passe root. L'accès à la base de données doit être refusé si aucun mot de passe n'est fourni pour le compte root, comme illustré dans l'extrait de commande ci-dessous :

mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Si le mot de passe est fourni, le processus de connexion doit être accordé à la console MySQL, comme indiqué dans l'exemple de commande :

mysql -h localhost -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

Bye

Après avoir installé et sécurisé la base de données MariaDB, il est temps d'installer les composants suivants requis pour déployer l'application Elgg :le serveur HTTP Apache et la passerelle de traitement du langage de programmation PHP. Afin d'installer le serveur Web Apache et l'interpréteur PHP avec tous les modules PHP requis par lesquels le serveur exécutera les scripts d'application, exécutez la commande suivante dans la console de votre serveur.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-mysql

Ensuite, ouvrez et modifiez le fichier de configuration PHP par défaut en modifiant les variables PHP suivantes. Ouvrez /etc/php/7.0/apache2/php.ini fichier à éditer et modifiez les lignes suivantes. dans un premier temps, faites une sauvegarde du fichier de configuration PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Recherchez, modifiez et modifiez les variables suivantes dans php.ini fichier de configuration :

file_uploads = On
default_charset = UTF-8
memory_limit = 128M
upload_max_filesize = 100M
date.timezone = Europe/London

Augmentez upload_max_file_size variable selon les besoins afin de prendre en charge les pièces jointes volumineuses pour votre application. Changez également le fuseau horaire PHP réglage à l'emplacement géographique de votre système en consultant la liste des fuseaux horaires fournie par les docs PHP au lien suivant http://php.net/manual/en/timezones.php

Activez le plug-in OPCache disponible pour PHP7 afin d'augmenter la vitesse de chargement du site Web en ajoutant les paramètres OPCache suivants au bas du fichier de configuration de l'interpréteur PHP, sous [opcache] déclaration, comme détaillé ci-dessous :

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Après avoir apporté toutes les modifications ci-dessus, enregistrez et fermez le php.ini fichier de configuration, redémarrez le serveur Web Apache pour appliquer les modifications de l'interpréteur PHP en exécutant la commande ci-dessous.

systemctl restart apache2

Configurer le pare-feu

Pour ajouter les règles d'application de pare-feu UFW requises pour autoriser le trafic HTTP à traverser le pare-feu du système, exécutez les commandes suivantes dans la console du serveur.

ufw allow WWW

ou

ufw allow 80/tcp

Si vous êtes connecté à distance à votre serveur via SSH, ajoutez la règle ci-dessous pour ouvrir le port SSH 22 dans votre pare-feu.

ufw allow 22/tcp

Si vous gérez les règles de pare-feu sur votre serveur Debian via iptables règles brutes, ajoutez les règles suivantes pour autoriser le trafic entrant des ports 80 et 22 à passer le pare-feu afin que les clients externes puissent accéder à l'application. Ouvrez le port 22/TCP uniquement si vous êtes connecté à distance au serveur via SSH.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

Configurer le serveur Web Apache

À l'étape suivante, activez le module de réécriture Apache requis pour modifier les configurations du serveur Web à la volée via le fichier .htacccess et le module TLS requis pour sécuriser les transactions HTTP, en exécutant la commande ci-dessous.

a2enmod rewrite ssl
a2ensite default-ssl.conf

Ensuite, ouvrez le fichier de configuration du site SSL par défaut d'Apache pour le modifier avec votre éditeur de texte préféré, et ajoutez les règles de réécriture d'URL suivantes après DocumentRoot instruction :

nano /etc/apache2/sites-enabled/default-ssl.conf

Extrait du fichier de configuration du site SSL :

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Apportez également la modification indiquée ci-dessous à la ligne VirtualHost pour qu'elle ressemble à ce qui est affiché dans l'extrait qui suit :

<VirtualHost *:443>

Ajoutez les mêmes modifications au fichier de configuration par défaut d'Apache en ouvrant /etc/apache2/sites-enabled/000-default.conf fichier pour édition. Insérez les lignes de code suivantes après DocumentRoot comme indiqué dans l'exemple ci-dessous.

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory

Enfin, redémarrez le démon Apache pour appliquer toutes les règles configurées jusqu'à présent et visitez votre domaine ou l'adresse IP de votre serveur via le protocole HTTP.

systemctl restart apache2

Étant donné que vous utilisez les paires de certificats auto-signés automatiquement émis par Apache lors de l'installation, pour un certificat non approuvé par le navigateur, un avertissement d'erreur doit s'afficher dans le navigateur. Acceptez l'avertissement afin d'accepter le certificat non approuvé et continuez à être redirigé vers la page Web par défaut d'Apache, comme illustré dans l'image ci-dessous.

https://votredomaine.tld

Afin de permettre au trafic HTTPS de traverser le pare-feu UFW, vous devez ajouter la règle suivante pour autoriser le trafic 443/TCP entrant en exécutant la commande ci-dessous.

ufw allow 'WWW Full'

ou

ufw allow 443/tcp

Si iptables est l'application de pare-feu par défaut installée pour protéger votre système Debian au niveau du réseau, ajoutez la règle suivante pour autoriser le trafic entrant du port 443 dans le pare-feu afin que les visiteurs puissent parcourir votre nom de domaine.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent

Enfin, créez le fichier d'informations PHP dans le chemin racine du document de votre serveur Web en exécutant la commande suivante.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

Accédez au fichier de script d'informations PHP en ouvrant un navigateur à l'URL suivante :

https://votredomaine.tld/info.php

Vérifiez les paramètres PHP et faites défiler jusqu'à date configuration pour vérifier la configuration du fuseau horaire PHP.

Installer le logiciel Elgg

Afin de déployer la plate-forme de réseau social Elgg dans votre système, visitez d'abord la page de téléchargement officielle d'Elgg à l'adresse https://elgg.org/about/download et récupérez la dernière archive compressée du package zip en exécutant la commande ci-dessous.

wget -O elgg-2.3.5.zip https://elgg.org/getelgg.php?forward=elgg-2.3.5.zip
ls

Ensuite, extrayez le fichier d'archive zip Elgg dans votre répertoire de travail actuel et répertoriez les fichiers extraits en lançant les commandes suivantes.

unzip elgg-2.3.5.zip
ls -al elgg-2.3.5

À l'étape suivante, supprimez le fichier index.html par défaut installé par le serveur Web Apache sur le chemin Webroot et le fichier info.php créé précédemment en exécutant les commandes ci-dessous.

rm /var/www/html/index.html
rm /var/www/html/info.php

Ensuite, copiez tout le contenu du répertoire Elgg extrait, y compris le .htaccess caché fichier, dans le chemin racine du document de votre serveur Web en exécutant la commande suivante.

cp -rf elgg-2.3.5/* /var/www/html/
cp elgg-2.3.5/.htaccess /var/www/html/

Après avoir copié les fichiers d'installation d'Elgg dans le chemin de la racine Web de votre domaine, créez un répertoire nommé data pour l'application Elgg, montez d'un niveau la racine Web de votre domaine en exécutant la commande suivante. Le répertoire de données sera utilisé par l'application Elgg pour stocker divers fichiers liés à l'utilisateur. Ces données Le répertoire peut être créé n'importe où dans la hiérarchie du système de fichiers de votre serveur, avec la remarque que vous devez accorder à l'utilisateur d'exécution Apache les autorisations d'écriture sur ce répertoire.

mkdir  /var/www/data
chown www-data:www-data /var/www/data

Ensuite, exécutez les commandes ci-dessous afin d'accorder à l'utilisateur d'exécution Apache des autorisations d'écriture complètes sur le chemin racine Web. Utilisez ls commande pour répertorier les autorisations pour les fichiers installés de l'application situés dans /var/www/html/ répertoire.

chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

Avant de commencer le processus d'installation via un navigateur Web, connectez-vous à la console de base de données MariaDB et créez la base de données Elgg et un utilisateur avec un mot de passe qui sera utilisé pour gérer cette base de données, en exécutant les commandes suivantes. Assurez-vous de remplacer le nom de la base de données, l'utilisateur et le mot de passe utilisés dans ce didacticiel en conséquence.

mysql –u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(aucun)]> crée la base de données elgg_db ;

Query OK, 1 row affected (0.00 sec) 

MariaDB [(none)]> accorde tous les privilèges sur elgg_db.* à 'elgg_user'@'localhost' identifié par 'password1234' ;

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(aucun)]> privilèges de vidage ;

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(aucun)]> quitter

Bye 

Passons maintenant à l'installation d'Elgg. Ouvrez d'abord un navigateur et accédez à l'adresse IP ou au nom de domaine ou au nom de domaine complet du serveur via le protocole HTTPS.

https://votredomaine.tld

Sur l'écran d'accueil, le programme d'installation affichera un message d'introduction vous informant que le logiciel de la plate-forme Elgg nécessitera six étapes à suivre pour installer l'application. Appuyez simplement sur le bouton Suivant pour démarrer le processus d'installation, comme illustré dans la capture d'écran ci-dessous.

Ensuite, le programme d'installation d'Elgg analysera votre système et vérifiera si les exigences de PHP et du serveur Web sont remplies pour l'installation de l'application. Appuyez sur le bouton Suivant pour continuer le processus d'installation, comme indiqué dans la capture d'écran ci-dessous.

Dans l'écran d'installation suivant, configurez les paramètres de la base de données MySQL en fournissant le nom de la base de données MySQL, l'hôte du serveur (utilisez localhost si la base de données est installée sur le même nœud), le nom d'utilisateur de la base de données et le mot de passe créés précédemment pour l'installation d'Elgg. Utilisez le préfixe de table de base de données par défaut ou modifiez-le si vous souhaitez ajouter une couche de sécurité supplémentaire à votre application. Enfin, sélectionnez votre paramètre de fuseau horaire par défaut pour l'application et appuyez sur le bouton Suivant pour passer à l'écran d'installation suivant. Utilisez la capture d'écran ci-dessous comme guide pour configurer cette étape.

À l'étape suivante, configurez le site Web Elgg en ajoutant un nom pour le site et une adresse e-mail pour la communication avec l'utilisateur. Modifiez également l'adresse URL du site si elle n'a pas été correctement détectée et ajoutez le chemin d'accès complet aux données du site Web. annuaire. Enfin, configurez votre niveau d'accès au site Web par défaut pour les débutants et appuyez sur le bouton Suivant pour continuer le processus d'installation.

Ensuite, créez le premier compte administrateur pour votre site Web en remplissant le champ Nom d'affichage avec le nom de votre compte administrateur. Ajoutez également l'adresse e-mail, le nom d'utilisateur et le mot de passe du compte administrateur, comme illustré dans l'image ci-dessous. Lorsque vous avez terminé cette étape, appuyez sur le bouton Suivant pour continuer et terminer le processus d'installation.

Une fois le processus d'installation terminé, appuyez sur le bouton "Aller au site" pour être redirigé vers le tableau de bord d'administration Elgg.

Une fois connecté au tableau de bord Elgg, accédez au menu Configurer -> Plugins dans le panneau de droite et commencez à activer les plugins Elgg requis en appuyant sur le bouton Activer du plugin sélectionné.

Vous pouvez également visiter l'application Elgg en accédant à l'adresse IP ou au nom de domaine de votre serveur via le protocole HTTPS. Utilisez les informations d'identification configurées pour le compte administrateur lors du processus d'installation afin de vous connecter à l'application du moteur social Elgg, comme indiqué dans la capture d'écran ci-dessous.

https://votredomaine.tld

Comme dernière étape, si vous souhaitez forcer les visiteurs à naviguer en toute sécurité sur le site Web d'Elgg via le protocole HTTPS qui crypte le trafic entre le serveur et les navigateurs clients, revenez à la console du serveur Debian et modifiez le .htaccess fichier situé dans le chemin racine du document de votre site Web, en exécutant la commande ci-dessous.

nano /var/www/html/.htaccess

Dans le fichier .htaccess, recherchez le  et ajoutez les règles ci-dessous après RewriteEngine On afin de rediriger automatiquement tout le trafic de votre domaine vers HTTPS.

RewriteEngine On
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

Ici, vous pouvez également modifier certaines variables PHP pour votre site Web. Rechercher et sous cette ligne, ajoutez vos propres paramètres PHP tels que :augmenter la taille de téléchargement du fichier pour le domaine ou désactiver certaines configurations PHP par défaut du serveur, comme indiqué dans l'extrait ci-dessous :

# Alter web server PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 100M
php_value post_max_size 100M

Pour que l'application Elgg envoie des notifications en file d'attente, fasse pivoter les journaux système dans la base de données et collecte les ordures dans la base de données (en compactant la base de données en supprimant les entrées qui ne sont plus nécessaires), créez un fichier crontab avec les configurations ci-dessous. De plus, ce travail crontab doit être détenu et exécuté par l'utilisateur d'exécution Apache.

crontab -u www-data –e

Extrait du fichier Crontab. La sortie de la tâche cron de chaque tâche sera rejetée sur Linux /dev/null fichier trou noir. Remplacez la variable de nom de domaine ($ELGG ) utilisé dans ce script en conséquence.

GET="curl -k"
ELGG="https://www.socialnet.org/"

OUT=" > /dev/null 2>&1"

* * * * * $GET ${ELGG}cron/minute/${OUT}
*/5 * * * * $GET ${ELGG}cron/fiveminute/${OUT}
15,30,45,59 * * * * $GET ${ELGG}cron/fifteenmin/${OUT}
30,59 * * * * $GET ${ELGG}cron/halfhour/${OUT}
@hourly $GET ${ELGG}cron/hourly/${OUT}
@daily $GET ${ELGG}cron/daily/${OUT}
@weekly $GET ${ELGG}cron/weekly/${OUT}
@monthly $GET ${ELGG}cron/monthly/${OUT}
@yearly $GET ${ELGG}cron/yearly/${OUT}
@reboot $GET ${ELGG}cron/reboot/${OUT}

Toutes nos félicitations! La plate-forme de médias sociaux Elgg a été installée et configurée avec succès dans vos locaux sur un serveur Debian 9. Si vous utilisez un nom de domaine public enregistré pour exposer l'application Elgg aux visiteurs publics, vous devriez envisager d'acheter un certificat SSL émis par une autorité de certification de confiance ou d'obtenir une paire de certificats gratuite auprès de Let's Encrypt CA.

Afin de mieux administrer l'application Elgg, visitez les pages de documentation à l'adresse suivante : http://learn.elgg.org/en/stable/index.html


Debian
  1. Installer WordPress avec une base de données distante sur Debian

  2. Debian – Créer un paquet .deb avec uniquement des dépendances ?

  3. Comment configurer un pare-feu avec CSF sur Debian 9

  4. Comment installer le réseau social Elgg sur Debian 9

  5. Configurer un serveur de messagerie avec PostfixAdmin sur Debian 9

Installer WordPress 5 avec Apache sur Debian 9

Comment installer Nextcloud 10 avec Nginx sur Debian 8

Configuration initiale du serveur avec Debian 11

Comment configurer LAMP avec Debian 11

Comment configurer le serveur Samba avec Debian 11

Comment installer Nginx avec PHP-FPM sur Debian 11