14. Webs prediseñadas

14.1. Introducción

14.2. Webs de estilo general y blogs

14.2.1. WordPress

  • Instalación:
    • Como la mayoría de los servicios, necesita de un servidor web (Apache), un servidor SQL (MySQL/MariaDB) y PHP:
      • apache2libpache2-php7.2php7.2mariadbphp7.2-mysql
    • https://es.wordpress.org/download/
    • Descarga y descomprime el archivo
    • Crea una base de datos y un usuario con permisos para usar la base.
    • Mueve los archivos a la carpeta del servidor deseada.
    • Cambia de nombre el archivo wp-config-sample.php a wp-config.php y edítalo para añadir la información de la base de datos.
    • NGINX: En la configuración de Nginx, añade el código para aceptar PHP ("estructura básica") y, además, dentro de location /, sustituye el try_files por try_files $uri $uri/ /index.php?$args; (para los enlaces permanentes).
    • Entra a la página web y sigue los pasos.
    • Tras la instalación, para permitir subidas, cambia el grupo y da permisos de escritura a www-data en la carpeta wp-content
  • APACHE: Cómo hacer que los enlaces permanentes funcionen:
    • Habilita el módulo rewrite de Apache si no lo estaba (sudo a2enmod rewrite).
    • WordPress tiene que poder editar el archivo .htaccess de la carpeta raíz
    • Se necesita cambiar apache2.conf para que permita el uso de archivos .htaccess
      <Directory /var/www/> AllowOverride All (...)
  • Cómo permitir resúmenes de las entradas en la página principal:
    • Hay que indicarlo en cada entrada con el bloque Más o etiqueta Leer más en el final del resumen.
  • Instalación de plugins:
    • Instalando un servidor ftp como vsftpd (habilita el permiso de escritura en la configuración de vsftpd) e incluyendo los datos de conexión en wp-config.php
      define('FTP_USER', 'nombredeusuario'); define('FTP_PASS', 'clave'); define('FTP_HOST', 'servidorftp');
    • Si no se tiene acceso FTP para que Wordpress lo haga automáticamente, hay que descargar los plugins y moverlos a la carpeta wp-content/plugins.
  • Wordpress modifica algunos caracteres como "--", "...", etc. Para evitarlo, hay que crear un archivo php en la carpeta de plugins, añadir lo siguiente y activar el plugin en la ventana de administración:
 <?php
/*Plugin Name: Remove the wptexturize filter*/
   remove_filter( 'the_content' , 'wptexturize' );
 ?>
  • Temas personalizados.
    • El método más fácil es clonar un tema y modificarlo al gusto.
    • Para ello hay que crear una carpeta en /wp-content/themes con el nombre del tema y copiar la hoja de estilos del tema padre.
    • Edita la primera parte de la hoja para añadir el nombre del tema nuevo y la línea: Template: <tema original>.
  • Uso de cookies
    • Si se usa Google Analytics u otros cookies, puede instalarse el plugin GPDR Cookie Consent que permite crear el banner de aceptación de cookies e insertar el código de Analytics sólo si el usuario ha aceptado las cookies.
  • Migraciones y copias de seguridad
    • Recomiendo el plugin Duplicator
  • Medidas de seguridad
    • Comprueba permisos de los archivos (640, 750, salvo en wp-content)
    • Cambia la dirección de la página de acceso (usa el plugin WPS Hide Login)
    • Limita el número de intentos de iniciar sesión (plugin Loginizer)
    • Haz copias de seguridad

14.3. Administración web/servidores

14.3.1. Virtualmin

  • Permite administrar un servidor web (hosting) a través del navegador
  • Instalación:
    • wget http://software.virtualmin.com/gpl/scripts/install.sh
    • sudo /bin/sh install.sh
  • Instala un paquete LAMP junto a Virtualmin, por lo que requiere de un sistema recién instalado para evitar errores.
  • El primer usuario de Webmin son los del sistema.
  • Para albergar webs hay que crear un servidor virtual. Virtualmin crea un VirtualHost por cada servidor. También se pueden crear "sub-servidores", funcionan como los subdominios (test.example.com).

14.3.2. Vesta Control Panel

  • Instalación (como root)
    • curl -O http://vestacp.com/pub/vst-install.sh
    • bash install.sh
    • Ejecución avanzada (instalación con apache):
      bash vst-install.sh --nginx no --phpfpm no --apache yes --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota no --exim yes --dovecot yes --spamassassin no --clamav no --softaculous yes --mysql yes --postgresql no -f
    • (La instalación se puede configurar de múltiples formas, consulta la página web de VestaCP)
  • Posibles errores:
    • Apache no inicia
      • sudo netstat -tulpn
      • (buscar puerto 80 y matar proceso/ID que lo esté usando, probablemente nginx)
      • Prueba a buscar la configuración de nginx y evitar que intente crear servidor en el puerto 80. Es importante que lo cree en el puerto 8083, pero el 80 es para apache.
    • No es útil para instalar Nextcloud y similares

14.3.3. openQRM

14.4. Nubes privadas/NAS

14.4.1. Nextcloud

  • Introducción
  • Instalación
    • Instala (además de apache, php, mysql y los módulos conocidos) los módulos de php con gd, json, mbstring, curl, zip, xml, intl.
    • Copia los archivos a la carpeta raíz del servidor y configurar el virtualhost (hay que asegurarse de que se copian todos los archivos, incluidos los que empiezan por punto, .htaccess y .user.ini. Recuerda habilitar el uso del .htaccess con la directiva AllowOverride all en la configuración de apache, apache2.conf.
    • En el VirtualHost:
 ServerName nubedericardo.com.es DocumentRoot /home/ricardo/nube  Options +FollowSymlinks AllowOverride all  Dav off
 SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud
  • Habilitar el módulo rewrite y headers de apache
  • Dar permisos al usuario HTTP
  • Crear una base de datos y un usuario con permisos para crear bases y otorgar privilegios (grant all privileges on . to 'ricardo'@'localhost' with grant option;)
  • Ir a http://ipdelservidor/ e indicar el usuario y contraseña de MariaDB en la configuración de la base de datos
  • Una vez instalado, cambiar el propietario y dar permisos de escritura a config, apps, data.
  • Indicar las direcciones o dominios del servidor
    • En config/config.php:
 'trusted_domains' =>
  array (
  0 => '192.168.1.15',
  1 => 'nubedericardo.com.es',
  2 => '85.251.67.151',
  ), 
  • Hacer que se acceda directamente con http://ipdelservidor (si se ha instalado en una carpeta)
    • Cambiar el Alias de nextcloud.conf de /nextcloud a /
  • Configurar Fail2Ban
    • En el config.php añade:
'loglevel' => '2',
'logfile' => '/var/www/nextcloud/data/nextcloud.log', 'logtimezone' => 'Europe/Madrid',
  • Seguir las instrucciones del apartado 12.7.1. Fail2Ban.
  • Configurar SSL
    • Seguir las instrucciones del apartado 12.1. Uso de SSL.
  • Configurar caché (OPCache y APCu)
    • Instalar APCu (15. Gestión de la caché)
    • Añadir en el config.php: 'memcache.local' => 'OCMemcacheAPCu',
    • Cambiar (y descomentar) estos parámetros en el php.ini (/etc/php/7.2/apache2/):
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
  • Hacer que las URL sean un poco más cortas
    • Editar en config.php (atento a la barra diagonal final de la url):
    • 'overwrite.cli.url' => 'https://ejemplo.com.es/', 'htaccess.RewriteBase' => '/',
  • Habilitar “HTTP Strict Transport Security” para evitar cualquier tipo de conexión por HTTP, en lugar del HTTPS
    • En el virtualhost del SSL, añadir:
    • Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
  • Copia de seguridad
    • cd /var/www/owncloud/ sudo -u www-data php occ maintenance:mode --on
    • Esperar unos minutos
    • Parar Apache: sudo service apache2 stop
    • Copiar carpetas data, config y themes
    • Copia base de datos:
    • sudo mysqldump --single-transaction -h localhost -u oc_ricardosgz -p ownbase > owncloud_dbbackup_date +"%Y%m%d".bak
    • Volver a activar apache: sudo service apache2 start
    • cd /var/www/owncloud/
    • sudo -u www-data php occ maintenance:mode –off
  • Restauración de una copia:
    • Reponer carpetas data, config y themes con el usuario y grupo adecuados
    • Carpetas owncloud, data (recursivo), config (recursivo) tienen usuario www-data y grupo www-data
    • themes tiene usuario root y grupo root
    • mysql -h [server] -u [username] -p[password] [db_name] < owncloud-dbbackup.bak
  • Notas: Instalar mcrypt en php7.2 (opcional):
  • Instalar php7.2-dev
    • sudo apt-get -y install gcc make autoconf libc-dev pkg-config
    • sudo apt-get -y install libmcrypt-dev
    • sudo pecl install mcrypt-1.0.1 (pretar intro)
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"

14.4.2. SeaFile

  • Configuración Seafile:
    • Instalar Fail2Ban para evitar ataques de fuerza bruta
    • Tener en cuenta la dirección que se va a usar (midominio.es o 192.168.1.5) a la hora de conectar los clientes
    • Se ha comprobado que tarda un poco en iniciar tras encender Ubuntu
    • Recordar incluir mysql.service al añadir el servicio de seafile (en el apartado After, separado por un espacio)
    • Copia primero bases de datos y después los datos
    • Copia tablas de datos:
      mysqldump -h localhost -u sea_ricardo -p --opt ccnet-db > ./ccnet-db.sql.`date +"%Y%m%d"` mysqldump -h localhost -u sea_ricardo -p --opt seafile-db > ./seafile-db.sql.`date +"%Y%m%d"` mysqldump -h localhost -u sea_ricardo -p --opt seahub-db > ./seahub-db.sql.`date +"%Y%m%d"`
    • Copia datos:
    • Copiar carpeta seafile-data
    • En la carpeta seahub-data se guardan logos personalizados y miniaturas

14.4.3. OpenMediaVault

14.4.4. FreeNAS

14.5. Tiendas online

14.5.1. Prestashop

  • Instalación
    • Necesita de un servidor web (Apache o Nginx), un servidor SQL (MySQL/MariaDB) y PHP (y los módulos de apache con php y de php con mysql).
    • Además necesita los siguientes paquetes de PHP: zip, xml, gd, curl. Opcionalmente el paquete intl (recuerda reiniciar apache).
    • Crea una base SQL y un usuario con permisos para acceder y editar la base (ver apartado 9.4.).
    • https://www.prestashop.com/es/descarga
    • Cambia propietario a www-data en los archivos temporalmente, o da permisos de escritura a la carpeta raíz.
    • Configuración básica del VirtualHost o de la configuración de Nginx (PHP).
      • En Nginx, es posible que haya que añadir:
location /tienda/admin_rs/ {  # Change this for your admin url
if (!-e $request_filename) {
rewrite ^/.*$ /tienda/admin_rs/index.php last;
}
  • Después de la instalación, hay que borrar la carpeta install.
  • Acceder a la administración
    • <dirección>/admin (puede que la carpeta tenga otro nombre por seguridad, como "admin344343")
  • Borrar datos por defecto
    • Instalar módulo Prestashop "Cleaner". Una vez instalado, entrar en "Configurar" en el módulo e ir borrando.
  • Añadir productos
    • Recuerda ponerlos en línea en la página de modificación del producto (el control deslizante de la parte inferior).
  • Añadir opción SSL en Parámetros de la tienda -> Configuración (tanto "Activar SSL" como "Activar SSL en todas las páginas")

14.6. Foros

14.6.1. phpBB

  • Instalación
    • Necesita permisos de escritura (archivos y carpetas) y ejecución (carpetas) para la instalación.
  • Reducir URL
    • Server Configuration -> Server settings -> Enable URL Rewriting