GNU/Linux >> Linux Esercitazione >  >> Debian

Crea un social network online con Elgg su Debian 9

In questo tutorial, ti mostrerò come installare e configurare l'ultima versione di Elgg su Debian 9 per creare un social network online gratuito.

Elgg è un software framework per motori sociali open source gratuito scritto in linguaggio di programmazione PHP. Il framework Elgg può aiutare individui o organizzazioni a creare potenti ambienti sociali in Linux sotto server Web Apache/Nginx, sistema di gestione di database PHP e MySQL/MariaDB, noto anche come stack LAMP o LEMP. Dispone inoltre di funzionalità integrate che possono potenziare la condivisione di file, i blog, i gruppi sociali o le piattaforme educative su reti pubbliche o private.

Per implementare con successo la piattaforma Elgg nella tua sede, dovrai soddisfare i seguenti requisiti.

  • Una macchina virtuale o un server privato virtuale basato su Debian 9, preferibilmente un'installazione minima
  • Accesso diretto all'account root o a un utente locale con poteri di root tramite console server o gestione remota tramite SSH
  • Il server necessita di un indirizzo IP statico configurato per l'interfaccia di rete esterna per poter accedere ai visitatori tramite il suo indirizzo IP pubblico
  • Potresti anche aver bisogno di un nome di dominio pubblico o privato configurato per il tuo server in modo che i visitatori possano accedere alla piattaforma tramite un nome di dominio, come www.tuodominio.com, sebbene tu possa comunque accedere alla piattaforma tramite l'indirizzo IP del tuo server.
  • Per utilizzare la registrazione al sito Web Elgg tramite indirizzo e-mail o utilizzare altre funzionalità della piattaforma, è necessario implementare un server di posta presso la propria sede o utilizzare un server di posta pubblico.

Prerequisiti

Come primo passaggio, accedi al server Debian 9 con privilegi di root o con un utente con poteri di root ed emetti il ​​seguente comando per aggiornare il tuo sistema con le ultime patch di sicurezza, software e aggiornamenti del kernel.

apt update
apt upgrade

Quindi, assicurati di configurare il nome della tua macchina eseguendo i seguenti comandi. Dovresti sostituire la variabile hostname utilizzata in questo esempio in modo che corrisponda al tuo dominio.

hostnamectl set-hostname www.socialnet.org

Dopo aver configurato il nome host della macchina, verifica se l'host è stato configurato correttamente controllando il file hosts con i seguenti comandi.

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

Infine, per applicare il nome host della macchina e gli aggiornamenti del kernel, riavvia il sistema eseguendo il comando seguente.

systemctl reboot

Dopo il riavvio del sistema, accedi nuovamente alla console ed esegui il comando seguente per installare alcune utilità di sistema che ci aiuteranno a scaricare software su Internet ed estrarre alcuni tipi di file di archivio

apt install wget zip unzip curl

Installa lo stack LAMP

Per implementare il framework del social network Elgg sul nostro server, dobbiamo installare i componenti dello stack LAMP. Il primo componente che installeremo è il database - MariaDB - un fork del popolare database MySQL, come database back-end. Il database MariaDB verrà utilizzato dall'applicazione per memorizzare utenti, sessioni, contatti, post, commenti e altre informazioni. Per installare il server di database MariaDB e il software client in Debian 9 tramite i repository ufficiali, emettere il comando seguente nel terminale.

apt install mariadb-server mariadb-client

Al termine dell'installazione del database, accedi alla console MySQL ed esegui i seguenti comandi per proteggere l'account root del database, a cui è possibile accedere per impostazione predefinita senza fornire una password.

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 [(nessuno)]> usa 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]> update user set plugin='' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> privilegi di svuotamento;

Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> esci

Bye

Dopo aver completato il passaggio precedente, esegui mysql_secure_installation script fornito dai repository stretch Debian, al fine di proteggere ulteriormente il server MariaDB e impostare una password complessa per l'account root del database. Principalmente, rispondere "sì" a tutte le domande poste dallo script, come ad esempio:modificare la password di root MySQL, rimuovere utenti anonimi, disabilitare gli accessi root remoti ed eliminare il database di test, come illustrato nell'estratto dello script seguente.

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!

Per testare la sicurezza di MariaDB, prova ad accedere al database dalla console senza password di root. L'accesso al database dovrebbe essere negato se non viene fornita alcuna password per l'account root, come illustrato nell'estratto del comando seguente:

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

Se viene fornita la password, il processo di accesso deve essere concesso alla console MySQL, come mostrato nell'esempio di comando:

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

Dopo aver installato e protetto il database MariaDB, è il momento di installare i componenti successivi necessari per distribuire l'applicazione Elgg:server HTTP Apache e gateway di elaborazione del linguaggio di programmazione PHP. Per installare il server web Apache e l'interprete PHP insieme a tutti i moduli PHP richiesti attraverso i quali il server eseguirà gli script dell'applicazione, esegui il seguente comando nella console del tuo server.

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

Quindi, apri e modifica il file di configurazione predefinito di PHP alterando le seguenti variabili PHP. Apri /etc/php/7.0/apache2/php.ini file per la modifica e modificare le righe seguenti. inizialmente, fai un backup del file di configurazione PHP.

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

Cerca, modifica e cambia le seguenti variabili in php.ini file di configurazione:

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

Aumenta upload_max_file_size variabile come adatto per supportare file allegati di grandi dimensioni per la tua applicazione. Inoltre, cambia PHP fuso orario impostazione della posizione geografica del proprio sistema consultando l'elenco dei fusi orari fornito dai documenti PHP al seguente link http://php.net/manual/en/timezones.php

Abilita il plug-in OPCache disponibile per PHP7 per aumentare la velocità di caricamento del sito Web aggiungendo le seguenti impostazioni OPCache nella parte inferiore del file di configurazione dell'interprete PHP, sotto [opcache] dichiarazione, come di seguito dettagliato:

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

Dopo aver apportato tutte le modifiche precedenti, salva e chiudi php.ini file di configurazione, riavvia il server Web Apache per applicare le modifiche all'interprete PHP eseguendo il comando seguente.

systemctl restart apache2

Configura il firewall

Per aggiungere le regole dell'applicazione firewall UFW richieste per consentire al traffico HTTP di passare attraverso il firewall di sistema, impartisci i seguenti comandi nella console del server.

ufw allow WWW

o

ufw allow 80/tcp

Se sei connesso in remoto al tuo server tramite SSH, aggiungi la regola seguente per aprire la porta SSH 22 nel tuo firewall.

ufw allow 22/tcp

Se gestisci le regole del firewall nel tuo server Debian tramite iptables raw rules, aggiungi le seguenti regole per consentire al traffico in entrata delle porte 80 e 22 di passare il firewall in modo che i client esterni possano accedere all'applicazione. Apri la porta 22/TCP solo se sei connesso in remoto al server tramite 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

Configura server Web Apache

Nel passaggio successivo, abilita il modulo di riscrittura di Apache richiesto per modificare al volo le configurazioni del server Web tramite il file .htaccess e il modulo TLS richiesto per proteggere le transazioni HTTP, eseguendo il comando seguente.

a2enmod rewrite ssl
a2ensite default-ssl.conf

Quindi, apri il file di configurazione del sito SSL predefinito di Apache per la modifica con il tuo editor di testo preferito e aggiungi le seguenti regole di riscrittura dell'URL dopo DocumentRoot direttiva:

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

Estratto del file di configurazione del sito SSL:

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

Inoltre, apporta la modifica mostrata di seguito alla riga VirtualHost per farla assomigliare a quanto mostrato nell'estratto che segue:

<VirtualHost *:443>

Aggiungi le stesse modifiche al file di configurazione predefinito di Apache aprendo /etc/apache2/sites-enabled/000-default.conf file per la modifica. Inserisci le seguenti righe di codice dopo DocumentRoot dichiarazione come mostrato nell'esempio seguente.

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

Infine, riavvia il demone Apache per applicare tutte le regole configurate finora e visita il tuo dominio o indirizzo IP del server tramite il protocollo HTTP.

systemctl restart apache2

Poiché stai utilizzando le coppie di certificati autofirmati automaticamente emessi da Apache al momento dell'installazione, per un certificato non attendibile dal browser, nel browser dovrebbe essere visualizzato un avviso di errore. Accetta l'avviso per accettare il certificato non attendibile e continua a essere reindirizzato alla pagina Web predefinita di Apache, come illustrato nell'immagine sottostante.

https://tuodominio.tld

Per consentire il passaggio del traffico HTTPS attraverso il firewall UFW, devi aggiungere la seguente regola per consentire il traffico 443/TCP in entrata eseguendo il comando seguente.

ufw allow 'WWW Full'

o

ufw allow 443/tcp

Se iptables è l'applicazione firewall predefinita installata per proteggere il tuo sistema Debian a livello di rete, aggiungi la seguente regola per consentire il traffico in entrata della porta 443 nel firewall in modo che i visitatori possano esplorare il tuo nome di dominio.

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

Infine, crea il file di informazioni PHP nel percorso radice del documento del tuo server web eseguendo il comando seguente.

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

Visita il file di script delle informazioni PHP aprendo un browser al seguente URL:

https://tuodominio.tld/info.php

Verifica le impostazioni PHP e scorri verso il basso fino a data configurazione per verificare la configurazione del fuso orario PHP.

Installa il software Elgg

Per implementare la piattaforma di social network Elgg nel tuo sistema, visita prima la pagina di download ufficiale di Elgg all'indirizzo https://elgg.org/about/download  e prendi l'ultimo archivio compresso del pacchetto zip eseguendo il comando seguente.

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

Quindi, estrai il file di archivio zip Elgg nella directory di lavoro corrente ed elenca i file estratti eseguendo i seguenti comandi.

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

Nel passaggio successivo, elimina il file index.html predefinito installato dal server Web Apache nel percorso webroot e il file info.php creato in precedenza eseguendo i comandi seguenti.

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

Quindi, copia tutto il contenuto della directory Elgg estratta, incluso il .htaccess nascosto file, nel percorso radice del documento del server Web eseguendo il comando seguente.

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

Dopo aver copiato i file di installazione di Elgg nel percorso webroot del tuo dominio, crea una directory denominata data per l'applicazione Elgg, aumenta di un livello il tuo webroot di dominio, eseguendo il comando seguente. La directory dei dati verrà utilizzata dall'applicazione Elgg per memorizzare diversi file relativi all'utente. Questi dati La directory può essere creata in qualsiasi punto della gerarchia del filesystem del server, con l'osservazione che è necessario concedere all'utente di runtime Apache i permessi di scrittura su questa directory.

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

Quindi, esegui i comandi seguenti per concedere all'utente di runtime Apache le autorizzazioni di scrittura complete per il percorso root web. Usa le ls comando per elencare le autorizzazioni per i file installati dell'applicazione che si trovano in /var/www/html/ directory.

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

Prima di iniziare il processo di installazione tramite un browser web, accedi alla console del database MariaDB e crea il database Elgg e un utente con una password che verrà utilizzata per gestire questo database, immettendo i seguenti comandi. Assicurati di sostituire di conseguenza il nome del database, l'utente e la password utilizzati in questo tutorial.

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 [(none)]> crea database elgg_db;

Query OK, 1 row affected (0.00 sec) 

MariaDB [(none)]> concede tutti i privilegi su elgg_db.* a 'elgg_user'@'localhost' identificato da 'password1234';

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]> privilegi di svuotamento;

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]> esci

Bye 

Ora procediamo con l'installazione di Elgg. Innanzitutto apri un browser e accedi all'indirizzo IP del tuo server o al nome di dominio o all'FQDN del server tramite il protocollo HTTPS.

https://tuodominio.tld

Nella schermata di benvenuto, il programma di installazione visualizzerà un messaggio introduttivo che informa che il software della piattaforma Elgg richiederà sei passaggi da seguire per installare l'applicazione. Basta premere il pulsante Avanti per avviare il processo di installazione, come illustrato nello screenshot qui sotto.

Successivamente, il programma di installazione di Elgg analizzerà il tuo sistema e verificherà se i requisiti PHP e del server Web sono soddisfatti per l'installazione dell'applicazione. Premi il pulsante Avanti per continuare il processo di installazione, come mostrato nello screenshot qui sotto.

Nella schermata di installazione successiva, configura le impostazioni del database MySQL fornendo il nome del database MySQL, l'host del server (usa localhost se il database è installato sullo stesso nodo), il nome utente del database e la password creati in precedenza per l'installazione di Elgg. Utilizza il prefisso della tabella del database come predefinito o modificalo se desideri aggiungere un ulteriore livello di sicurezza per la tua applicazione. Infine, seleziona l'impostazione predefinita del fuso orario per l'applicazione e premi il pulsante Avanti per passare alla schermata di installazione successiva. Usa lo screenshot qui sotto come guida per configurare questo passaggio.

Nel passaggio successivo, configura il sito Web Elgg aggiungendo un nome per il sito e un indirizzo e-mail per la comunicazione dell'utente. Inoltre, modifica l'indirizzo URL del sito se non è stato rilevato correttamente e aggiungi il percorso completo ai dati del sito web directory. Infine, imposta il livello di accesso al sito Web predefinito per i principianti e premi il pulsante Avanti per continuare il processo di installazione.

Successivamente, crea il primo account amministratore per il tuo sito web, compilando il campo Nome visualizzato con il nome del tuo account amministratore. Inoltre, aggiungi l'indirizzo e-mail dell'account amministratore, il nome utente e la password, come illustrato nell'immagine sottostante. Al termine di questo passaggio, premi il pulsante Avanti per continuare e completare il processo di installazione.

Al termine del processo di installazione, premi il pulsante "Vai al sito" per essere reindirizzato alla dashboard di amministrazione di Elgg.

Dopo aver effettuato l'accesso alla dashboard di Elgg, vai a Configura -> Menu Plugin dal pannello di destra e inizia ad abilitare i plug-in Elgg richiesti premendo il pulsante Attiva per il plug-in selezionato.

Puoi anche visitare l'applicazione Elgg navigando verso l'indirizzo IP del tuo server o il nome di dominio tramite il protocollo HTTPS. Utilizza le credenziali configurate per l'account amministratore durante il processo di installazione per accedere all'applicazione del motore sociale Elgg, come mostrato nello screenshot qui sotto.

https://tuodominio.tld

Come passaggio finale, se vuoi costringere i visitatori a navigare in modo sicuro nel sito Web Elgg tramite il protocollo HTTPS che crittografa il traffico tra il server e i browser client, torna alla console del server Debian e modifica .htaccess file che si trova nel percorso principale del documento del tuo sito Web, eseguendo il comando seguente.

nano /var/www/html/.htaccess

Nel file .htaccess, cerca  riga e aggiungi le regole seguenti dopo RewriteEngine On istruzione per reindirizzare automaticamente tutto il traffico del tuo dominio su HTTPS.

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

Qui puoi anche modificare alcune variabili PHP per il tuo sito web. Cerca direttiva e sotto questa riga aggiungi le tue impostazioni PHP come:aumentare la dimensione del caricamento del file per il dominio o disabilitare alcune configurazioni PHP predefinite del server, come mostrato nell'estratto seguente:

# 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

Affinché l'applicazione Elgg invii notifiche in coda, ruoti i log di sistema nel database e raccolga spazzatura nel database (compattando il database rimuovendo le voci che non sono più necessarie), crea un file crontab con le configurazioni seguenti. Inoltre, questo lavoro crontab deve essere di proprietà ed eseguito dall'utente di runtime Apache.

crontab -u www-data –e

Estratto del file Crontab. L'output dell'attività cron di ogni lavoro verrà scartato su Linux /dev/null file di buco nero. Sostituisci la variabile del nome di dominio ($ELGG ) utilizzato di conseguenza in questo script.

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}

Congratulazioni! La piattaforma di social media Elgg è stata installata e configurata con successo presso la vostra sede in un server Debian 9. Nel caso in cui utilizzi un nome di dominio pubblico registrato per esporre l'applicazione Elgg a visitatori rivolti al pubblico, dovresti prendere in considerazione l'acquisto di un certificato SSL emesso da un'autorità di certificazione affidabile o ottenere una coppia di certificati gratuita da Let's Encrypt CA.

Per amministrare ulteriormente l'applicazione Elgg, visitare le pagine della documentazione al seguente indirizzo: http://learn.elgg.org/en/stable/index.html


Debian
  1. Installa WordPress con database remoto su Debian

  2. Debian:creare un pacchetto .deb con sole dipendenze?

  3. Come installare Zabbix su Debian 9

  4. Come configurare un firewall con CSF su Debian 9

  5. Configura un server di posta con PostfixAdmin su Debian 9

Installa WordPress 5 con Apache su Debian 9

Come installare Nextcloud 10 con Nginx su Debian 8

Configurazione iniziale del server con Debian 11

Come configurare LAMP con Debian 11

Come configurare Samba Server con Debian 11

Come installare Nginx con PHP-FPM su Debian 11