GNU/Linux >> Tutoriales Linux >  >> Debian

Cree una red social en línea con Elgg en Debian 9

En este tutorial, le mostraré cómo instalar y configurar la última versión de Elgg en Debian 9 para crear una red social en línea gratuita.

Elgg es un software de marco de motor social gratuito de código abierto escrito en lenguaje de programación PHP. El marco Elgg puede ayudar a las personas u organizaciones a crear entornos sociales potentes en Linux bajo servidores web Apache/Nginx, PHP y el sistema de gestión de bases de datos MySQL/MariaDB, también conocido como LAMP o pila LEMP. También tiene características integradas que pueden potenciar el uso compartido de archivos, blogs, grupos sociales o plataformas educativas en redes públicas o privadas.

Para implementar con éxito la plataforma Elgg en sus instalaciones, deberá cumplir con los siguientes requisitos.

  • Una máquina virtual o un servidor privado virtual con tecnología Debian 9, preferiblemente con una instalación mínima
  • Acceso directo a la cuenta raíz o un usuario local con poderes raíz a través de la consola del servidor o administración remota a través de SSH
  • El servidor necesita una dirección IP estática configurada para la interfaz de red externa para poder acceder a través de su dirección IP pública a los visitantes
  • Es posible que también necesite un nombre de dominio público o privado configurado para su servidor para que los visitantes puedan acceder a la plataforma a través de un nombre de dominio, como www.yourdomain.com, aunque aún puede acceder a la plataforma a través de la dirección IP de su servidor.
  • Para utilizar el registro en el sitio web de Elgg a través de una dirección de correo electrónico o utilizar otras funciones de la plataforma, debe implementar un servidor de correo en sus instalaciones o utilizar un servidor de correo público.

Requisitos previos

Como primer paso, inicie sesión en el servidor Debian 9 con privilegios de root o con un usuario que tenga poderes de root y emita el siguiente comando para actualizar su sistema con los últimos parches de seguridad, software y actualizaciones del kernel.

apt update
apt upgrade

A continuación, asegúrese de configurar el nombre de su máquina ejecutando los siguientes comandos. Debe reemplazar la variable de nombre de host utilizada en este ejemplo para que coincida con su propio dominio.

hostnamectl set-hostname www.socialnet.org

Una vez que haya configurado el nombre de host de la máquina, verifique si el host se ha configurado correctamente comprobando el archivo de hosts con los siguientes comandos.

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

Finalmente, para aplicar las actualizaciones del kernel y el nombre de host de la máquina, reinicie el sistema emitiendo el siguiente comando.

systemctl reboot

Después de que el sistema se reinicie, vuelva a iniciar sesión en la consola y ejecute el siguiente comando para instalar algunas utilidades del sistema que nos ayudarán a descargar software a través de Internet y extraer algunos tipos de archivos comprimidos

apt install wget zip unzip curl

Instalar pila LAMP

Para implementar el marco de la red social Elgg en nuestro servidor, necesitamos instalar los componentes de la pila LAMP. El primer componente que instalaremos es la base de datos, MariaDB, una bifurcación de la popular base de datos MySQL, como base de datos. La base de datos MariaDB será utilizada por la aplicación para almacenar usuarios, sesiones, contactos, publicaciones, comentarios y otra información. Para instalar el servidor de base de datos MariaDB y el software cliente en Debian 9 a través de los repositorios oficiales, emita el siguiente comando en la terminal.

apt install mariadb-server mariadb-client

Una vez completada la instalación de la base de datos, inicie sesión en la consola de MySQL y emita los siguientes comandos para proteger la cuenta raíz de la base de datos, a la que se puede acceder de forma predeterminada sin proporcionar una contraseña.

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 [(ninguno)]> usar 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]> actualice el conjunto de usuarios plugin='' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> privilegios de vaciado;

Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> salir

Bye

Una vez que haya completado el paso anterior, ejecute mysql_secure_installation secuencia de comandos proporcionada por los repositorios de extensión de Debian, para proteger aún más el servidor MariaDB y configurar una contraseña segura para la cuenta raíz de la base de datos. Principalmente, responda "sí" a todas las preguntas formuladas por la secuencia de comandos, tales como:cambiar la contraseña raíz de MySQL, eliminar usuarios anónimos, deshabilitar los inicios de sesión raíz remotos y eliminar la base de datos de prueba, como se ilustra en el siguiente extracto de la secuencia de comandos.

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!

Para probar la seguridad de MariaDB, intente iniciar sesión en la base de datos desde la consola sin contraseña de root. Se debe denegar el acceso a la base de datos si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente extracto del comando:

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

Si se proporciona la contraseña, el proceso de inicio de sesión debe otorgarse a la consola MySQL, como se muestra en el ejemplo de 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

Una vez que haya instalado y asegurado la base de datos MariaDB, es hora de instalar los siguientes componentes necesarios para implementar la aplicación Elgg:el servidor HTTP Apache y la puerta de enlace de procesamiento del lenguaje de programación PHP. Para instalar el servidor web Apache y el intérprete PHP junto con todos los módulos PHP necesarios a través de los cuales el servidor ejecutará los scripts de la aplicación, ejecute el siguiente comando en la consola de su servidor.

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

A continuación, abra y modifique el archivo de configuración predeterminado de PHP modificando las siguientes variables de PHP. Abra /etc/php/7.0/apache2/php.ini archivo para editar y cambiar las siguientes líneas. inicialmente, haga una copia de seguridad del archivo de configuración de PHP.

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

Busque, edite y cambie las siguientes variables en php.ini archivo de configuración:

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

Aumentar upload_max_file_size variable según sea adecuado para admitir archivos adjuntos de gran tamaño para su aplicación. Además, cambie la zona horaria de PHP configurando la ubicación geográfica de su sistema consultando la lista de zonas horarias proporcionada por los documentos de PHP en el siguiente enlace http://php.net/manual/en/timezones.php

Habilite el complemento OPCache disponible para PHP7 para aumentar la velocidad de carga del sitio web agregando la siguiente configuración de OPCache en la parte inferior del archivo de configuración del intérprete de PHP, debajo de [opcache] declaración, como se detalla a continuación:

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

Una vez que haya realizado todos los cambios anteriores, guarde y cierre php.ini archivo de configuración, reinicie el servidor web Apache para aplicar los cambios del intérprete de PHP emitiendo el siguiente comando.

systemctl restart apache2

Configurar el cortafuegos

Para agregar las reglas de aplicación de firewall UFW requeridas para permitir que el tráfico HTTP pase a través del firewall del sistema, emita los siguientes comandos en la consola del servidor.

ufw allow WWW

o

ufw allow 80/tcp

En caso de que esté conectado de forma remota a su servidor a través de SSH, agregue la siguiente regla para abrir el puerto SSH 22 en su firewall.

ufw allow 22/tcp

Si administra las reglas de firewall en su servidor Debian a través de iptables reglas sin procesar, agregue las siguientes reglas para permitir que el tráfico entrante de los puertos 80 y 22 pase el firewall para que los clientes externos puedan acceder a la aplicación. Abra el puerto 22/TCP solo si está conectado de forma remota al servidor a través de 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

Configurar servidor web Apache

En el siguiente paso, habilite el módulo de reescritura de Apache requerido para alterar las configuraciones del servidor web sobre la marcha a través del archivo .htaccess y el módulo TLS requerido para proteger las transacciones HTTP, emitiendo el siguiente comando.

a2enmod rewrite ssl
a2ensite default-ssl.conf

A continuación, abra el archivo de configuración del sitio SSL predeterminado de Apache para editarlo con su editor de texto favorito y agregue las siguientes reglas de reescritura de URL después de DocumentRoot directiva:

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

Extracto del archivo de configuración del sitio SSL:

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

Además, realice el cambio que se muestra a continuación en la línea VirtualHost para que se vea como se muestra en el siguiente extracto:

<VirtualHost *:443>

Agregue los mismos cambios al archivo de configuración predeterminado de Apache abriendo /etc/apache2/sites-enabled/000-default.conf archivo para editar. Inserte las siguientes líneas de código después de DocumentRoot declaración como se muestra en el siguiente ejemplo.

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

Finalmente, reinicie el demonio Apache para aplicar todas las reglas configuradas hasta el momento y visite su dominio o dirección IP del servidor a través del protocolo HTTP.

systemctl restart apache2

Debido a que está utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, para un certificado en el que el navegador no confía, se debe mostrar una advertencia de error en el navegador. Acepte la advertencia para aceptar el certificado que no es de confianza y continúe siendo redirigido a la página web predeterminada de Apache, como se ilustra en la siguiente imagen.

https://tudominio.tld

Para permitir que el tráfico HTTPS pase a través del cortafuegos UFW, debe agregar la siguiente regla para permitir el tráfico 443/TCP entrante emitiendo el siguiente comando.

ufw allow 'WWW Full'

o

ufw allow 443/tcp

Si iptables es la aplicación de firewall predeterminada instalada para proteger su sistema Debian a nivel de red, agregue la siguiente regla para permitir el tráfico entrante del puerto 443 en el firewall para que los visitantes puedan navegar por su nombre de dominio.

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

Finalmente, cree el archivo de información PHP en la ruta raíz del documento de su servidor web ejecutando el siguiente comando.

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

Visite el archivo de script de información de PHP abriendo un navegador en la siguiente URL:

https://tudominio.tld/info.php

Verifique la configuración de PHP y desplácese hacia abajo hasta fecha configuración para verificar la configuración de la zona horaria de PHP.

Instalar software Elgg

Para implementar la plataforma de la red social Elgg en su sistema, primero visite la página de descarga oficial de Elgg en https://elgg.org/about/download y obtenga el último archivo comprimido del paquete zip emitiendo el siguiente comando.

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

A continuación, extraiga el archivo zip de Elgg en su directorio de trabajo actual y enumere los archivos extraídos emitiendo los siguientes comandos.

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

En el siguiente paso, elimine el archivo index.html predeterminado instalado por el servidor web Apache en la ruta webroot y el archivo info.php creado anteriormente emitiendo los siguientes comandos.

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

A continuación, copie todo el contenido del directorio Elgg extraído, incluido el .htaccess oculto. archivo, en la ruta raíz del documento de su servidor web emitiendo el siguiente comando.

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

Después de haber copiado los archivos de instalación de Elgg en la ruta webroot de su dominio, cree un directorio llamado datos para la aplicación Elgg, suba un nivel en su dominio webroot emitiendo el siguiente comando. El directorio de datos será utilizado por la aplicación Elgg para almacenar diversos archivos relacionados con el usuario. Estos datos El directorio se puede crear en cualquier lugar de la jerarquía del sistema de archivos de su servidor, con la observación de que debe otorgar al usuario de tiempo de ejecución de Apache los permisos de escritura para este directorio.

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

A continuación, ejecute los siguientes comandos para otorgar al usuario de tiempo de ejecución de Apache permisos completos de escritura en la ruta raíz web. Usa el ls Comando para enumerar los permisos para los archivos instalados de la aplicación ubicados en /var/www/html/ directorio.

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

Antes de comenzar con el proceso de instalación a través de un navegador web, inicie sesión en la consola de la base de datos MariaDB y cree la base de datos Elgg y un usuario con una contraseña que se usará para administrar esta base de datos, emitiendo los siguientes comandos. Asegúrese de reemplazar el nombre de la base de datos, el usuario y la contraseña utilizados en este tutorial en consecuencia.

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 [(ninguno)]> crear base de datos elgg_db;

Query OK, 1 row affected (0.00 sec) 

MariaDB [(ninguno)]> otorgar todos los privilegios en elgg_db.* a 'elgg_user'@'localhost' identificado por 'password1234';

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(ninguno)]> privilegios de vaciado;

Query OK, 0 rows affected (0.00 sec) 

MariaDB [(ninguno)]> salir

Bye 

Ahora, procedamos con la instalación de Elgg. Primero abra un navegador y navegue hasta la dirección IP o el nombre de dominio de su servidor o el FQDN del servidor a través del protocolo HTTPS.

https://tudominio.tld

En la pantalla de bienvenida, el instalador mostrará un mensaje de introducción que le informa que el software de la plataforma Elgg requerirá seis pasos para instalar la aplicación. Simplemente presione el botón Siguiente para iniciar el proceso de instalación, como se ilustra en la siguiente captura de pantalla.

A continuación, el instalador de Elgg analizará su sistema y comprobará si se cumplen los requisitos de PHP y del servidor web para instalar la aplicación. Presione el botón Siguiente para continuar con el proceso de instalación, como se muestra en la siguiente captura de pantalla.

En la siguiente pantalla de instalación, configure los ajustes de la base de datos MySQL proporcionando el nombre de la base de datos MySQL, el host del servidor (utilice localhost si la base de datos está instalada en el mismo nodo), el nombre de usuario de la base de datos y la contraseña creados anteriormente para instalar Elgg. Use el prefijo de la tabla de la base de datos como predeterminado o cámbielo si desea agregar una capa adicional de seguridad para su aplicación. Finalmente, seleccione su configuración de zona horaria predeterminada para la aplicación y presione el botón Siguiente para pasar a la siguiente pantalla de instalación. Utilice la siguiente captura de pantalla como guía para configurar este paso.

En el siguiente paso, configure el sitio web de Elgg agregando un nombre para el sitio y una dirección de correo electrónico para la comunicación con el usuario. Además, cambie la dirección URL del sitio si no se detectó correctamente y agregue la ruta completa a los datos del sitio web. directorio. Finalmente, configure su nivel de acceso predeterminado al sitio web para novatos y presione el botón Siguiente para continuar con el proceso de instalación.

Luego, cree la primera cuenta de administrador para su sitio web, completando el campo Nombre para mostrar con el nombre de su cuenta de administrador. Además, agregue la dirección de correo electrónico, el nombre de usuario y la contraseña de la cuenta de administrador, como se ilustra en la imagen a continuación. Cuando complete este paso, presione el botón Siguiente para continuar y finalizar el proceso de instalación.

Una vez que se complete el proceso de instalación, presione el botón "Ir al sitio" para ser redirigido al panel de administración de Elgg.

Una vez que haya iniciado sesión en el panel de control de Elgg, vaya al menú Configurar -> Complementos desde el panel derecho y comience a habilitar los complementos necesarios de Elgg presionando el botón Activar para el complemento seleccionado.

También puede visitar la aplicación Elgg navegando a la dirección IP de su servidor o nombre de dominio a través del protocolo HTTPS. Use las credenciales configuradas para la cuenta de administrador durante el proceso de instalación para iniciar sesión en la aplicación del motor social de Elgg, como se muestra en la siguiente captura de pantalla.

https://tudominio.tld

Como paso final, si desea obligar a los visitantes a navegar de forma segura por el sitio web de Elgg a través del protocolo HTTPS que cifra el tráfico entre el servidor y los navegadores del cliente, vuelva a la consola del servidor Debian y edite el .htaccess. archivo ubicado en la ruta raíz del documento de su sitio web, emitiendo el siguiente comando.

nano /var/www/html/.htaccess

En el archivo .htaccess, busque el  línea y agregue las siguientes reglas después de RewriteEngine On para redirigir automáticamente todo el tráfico de su dominio a HTTPS.

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

Aquí, también puede cambiar algunas variables de PHP para su sitio web. Busque directiva y debajo de esta línea agregue su propia configuración de PHP, como:aumentar el tamaño de carga del archivo para el dominio o deshabilitar algunas configuraciones de PHP predeterminadas del servidor, como se muestra en el siguiente extracto:

# 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

Para que la aplicación Elgg envíe notificaciones en cola, rote los registros del sistema en la base de datos y recolecte basura en la base de datos (compactando la base de datos eliminando las entradas que ya no son necesarias), cree un archivo crontab con las configuraciones a continuación. Además, este trabajo crontab debe ser propiedad y debe ser ejecutado por el usuario de tiempo de ejecución de Apache.

crontab -u www-data –e

Extracto del archivo crontab. La salida de la tarea cron de cada trabajo se descartará en Linux /dev/null archivo de agujero negro. Reemplace la variable de nombre de dominio ($ELGG ) utilizado en este script en consecuencia.

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}

¡Felicidades! La plataforma de redes sociales Elgg se instaló y configuró con éxito en sus instalaciones en un servidor Debian 9. En caso de que esté utilizando un nombre de dominio público registrado para exponer la aplicación Elgg a los visitantes públicos, debería considerar comprar un certificado SSL emitido por una autoridad de certificación de confianza u obtener un par de certificados gratuitos de Let's Encrypt CA.

Para seguir administrando la aplicación Elgg, visite las páginas de documentación en la siguiente dirección: http://learn.elgg.org/en/stable/index.html


Debian
  1. Instalar WordPress con base de datos remota en Debian

  2. Debian:¿crear un paquete .deb solo con dependencias?

  3. Cómo instalar Zabbix en Debian 9

  4. Cómo configurar un cortafuegos con CSF en Debian 9

  5. Configurar un servidor de correo con PostfixAdmin en Debian 9

Instale WordPress 5 con Apache en Debian 9

Cómo instalar Nextcloud 10 con Nginx en Debian 8

Configuración inicial del servidor con Debian 11

Cómo configurar LAMP con Debian 11

Cómo configurar el servidor Samba con Debian 11

Cómo instalar Nginx con PHP-FPM en Debian 11