Debian VirtualBox – LAMP Web Server, SSL, Alias, FTP y Virtualhost.

Debian VirtualBox – LAMP Web Server, SSL, Alias, FTP y Virtualhost.

En el siguiente vídeo, desplegamos un servidor web, con arquitectura LAMP, y configuramos la seguridad con SSL, un virtualhost para el dominio que deseamos servir con un alias y finalmente instalamos un servidor FTP asociado a un virtualhost basado en IP, siendo esta IP una dirección virtual configurada en el servidor. El sistema operativo Debian 8.4 x64 se encuentra como huésped, en una máquina virtual de Oracle  VirtualBox, versión 5.0.16, siendo la misma empleada en la serie de vídeos subidos al canal.

El servidor LAMP. Despliegue del servidor:

Un servidor LAMP está formado por los componentes:

Lenguaje servidor PHP.

Base de datos MySQL.

Servidor web Apache.

Sistema operativo Linux.

Descripción del proceso:

Instalamos la base de datos MySQL.

Certificados SSL. Generar una clave privada(Private Key), pedido de certificación, certificado auto-firmado, instalación de la clave privada y del certificado auto-firmado.

Instalamos el servidor web Apache2. Editamos el virtualhost para acceso seguro y añadimos los certificados. Activamos el módulo ssl y el módulo rewrite. Modificamos las directivas necesarias.

Instalamos el lenguaje entorno servidor PHP5 y editamos su configuración.

Activamos el soporte de MySQL y SQLite de PHP5.

Instalamos APCu PHP Cache.

Instalamos phpMyAdmin.

Creamos un virtual host basado en nombre para el dominio antoniohorrillo.com.

Creamos un alias.

Creamos un servidor FTP. Configuramos el usuario del FTP. Establecemos los permisos a la carpeta. Creamos un virtualhost para el acceso FTP. Generamos el certificado y configuramos los parámetros de seguridad del servidor.

Instalamos la base de datos MySQL.

> apt-get -y install mysql-server mysql-client

En caso de que se pretenda acceder al servidor MySQL desde la red interna:

> nano /etc/mysql/my.cnf

Contenido del archivo:

# [...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address            = 127.0.0.1

bind-address            = 192.168.1.240
# [...]

Certificados SSL.

> apt-get -y install openssl ca-certificates

> mkdir certs

> cd certs

Generar una clave privada(Private Key):

> openssl genrsa -out server.key 2048

> chmod 600 server.key

Pedido de certificación:

> openssl req -new -key server.key -out server.csr

Certificado auto-firmado:

> openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Instalación de la clave privada y del certificado auto-firmado:

> cp server.key /etc/ssl/private/

> cp server.crt /etc/ssl/certs/

Instalamos el servidor web Apache2.

> apt-get -y install apache2 apache2-doc

Editamos el virtualhost para acceso seguro y añadimos los certificados:

> nano /etc/apache2/sites-available/default-ssl

Contenido del archivo:

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   A self-signed (snakeoil) certificate can be created by installing
#   the ssl-cert package. See
#   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
#   If both key and certificate are stored in the same file, only the
#   SSLCertificateFile directive is needed.
SSLCertificateFile     /etc/ssl/certs/server.crt
SSLCertificateKeyFile  /etc/ssl/private/server.key

Activamos el módulo ssl:

> a2enmod ssl

> service apache2 restart

Activamos el módulo rewrite:

> a2enmod rewrite

> service apache2 restart

Editamos el virtualhost y modificamos la directiva AllowOverride:

> nano /etc/apache2/sites-available/000-default

Contenido del archivo:

AllowOverride All

> service apache2 restart

Instalamos el lenguaje entorno servidor PHP5.

> apt-get -y install php5 php-pear libapache2-mod-php5

> service apache2 restart

Activamos el soporte de MySQL y SQLite de PHP5.

> apt-get -y install php5-mysql php5-sqlite php5-gd

> service apache2 restart

Instalamos APCu PHP Cache.

> apt-get -y install php5-apcu

> service apache2 restart

Instalamos phpMyAdmin.

> apt-get -y install phpmyadmin

Editamos la configuración de PHP5.

> nano /etc/php5/apache2/php.ini

Cambiamos las siguientes opciones:

max_execution_time = 600
max_input_time = 600
upload_max_filesize = 128M
default_socket_timeout = 600

Permisos. Asignamos la carpeta /var/www/html al usuario de Apache.

> chown -R www-data:www-data /var/www/html

Comprobaciones.

> echo ‘<?php phpinfo(); ?>’ > /var/www/html/info.php

Creamos un virtualhost.

Creamos un virtual host basado en nombre para el dominio antoniohorrillo.com.

> mkdir /var/www/html/antoniohorrillo.com/html_root

> mkdir /var/log/apache2/antoniohorrillo.com

> touch /etc/apache2/sites-available/antoniohorrillo.com.conf

> nano /etc/apache2/sites-available/antoniohorrillo.com.conf

Contenido del archivo:

<VirtualHost *:443>
    DocumentRoot "/var/www/html/antoniohorrillo.com/html_root"
    ServerName www.antoniohorrillo.com
    ServerAlias antoniohorrillo.com
    <Directory "/var/www/html/antoniohorrillo.com/html_root">
               AllowOverride All
               Options Indexes FollowSymLinks MultiViews
               Order allow,deny
               Allow from All
    </Directory>
    ServerAdmin contacto@antoniohorrillo.com     
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    LogFormat "%h %l %u %t \"%r\" \"%{User-Agent}i\"" combined
          ErrorLog "|/usr/bin/rotatelogs /var/log/apache2/antoniohorrillo.com/error.log 86400"
    LogLevel warn
          CustomLog "|/usr/bin/rotatelogs /var/log/apache2/antoniohorrillo.com/access.log 86400" combined
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html/antoniohorrillo.com/html_root"
    ServerName www.antoniohorrillo.com
    ServerAlias antoniohorrillo.com
    <Directory "/var/www/html/antoniohorrillo.com/html_root">
               AllowOverride All
               Options Indexes FollowSymLinks MultiViews
               Order allow,deny
               Allow from All
    </Directory>
    ServerAdmin contacto@antoniohorrillo.com
    LogFormat "%h %l %u %t \"%r\" \"%{User-Agent}i\"" combined
          ErrorLog "|/usr/bin/rotatelogs /var/log/apache2/antoniohorrillo.com/error.log 86400"
    LogLevel warn
          CustomLog "|/usr/bin/rotatelogs /var/log/apache2/antoniohorrillo.com/access.log 86400" combined
</VirtualHost>

Activamos el virtualhost y reiniciamos Apache.

> a2ensite antoniohorrillo.com.conf

> service apache2 restart

Asignamos permisos al usuario de Apache.

> chown -R www-data:www-data /var/www/html

Creamos un alias.

> touch /etc/apache2/conf-available/antoniohorrillo.com.conf

> nano /etc/apache2/conf-available/antoniohorrillo.com.conf

Contenido del archivo:

Alias /ahh /var/www/html/antoniohorrillo.com/html_root

<Directory "/var/www/html/antoniohorrillo.com/html_root">
    Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
    AddDefaultCharset off
</Directory>

Creamos un servidor FTP.

> apt-get -y install proftpd-basic

> ls -la /etc/proftpd/

> mkdir /var/ftp/antoniohorrillo.com

Configuramos el usuario del FTP.

> id ftp

> ftpasswd –passwd –name antoniohh –file /etc/proftpd/passwd –uid 115 –home /var/ftp/antoniohorrillo.com –shell /bin/false

Establecemos los permisos a la carpeta.

> chown ftp /var/ftp/antoniohorrillo.com -R

Configuramos el servidor.

> nano /etc/proftpd/proftpd.conf

Contenido del archivo:

Include /etc/proftpd/virtuals.conf
Include /etc/proftpd/tls.conf

Editamos el archivo virtuals.conf.

> nano /etc/proftpd/virtuals.conf

Contenido del archivo:

# Virtual Host proftpd antoniohorrillo.com

<VirtualHost 192.168.100.240>
  ServerAdmin contacto@antoniohorrillo.com
  ServerName “Servidor FTP antoniohorrillo.com”
  AuthUserFile /etc/proftpd/passwd
  DefaultRoot /var/ftp/antoniohorrillo.com
  RequireValidShell off
  AllowOverwrite on
</VirtualHost>

Generamos el certificado.

> proftpd-gencert

Configuramos los parámetros de seguridad del servidor.

> nano /etc/proftpd/tls.conf

Contenido del archivo:

TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key

chmod 0600 /etc/ssl/private/proftpd.key
chmod 0644 /etc/ssl/certs/proftpd.crt

 Video.

https://youtu.be/-N2EOd2zeW8

Audio Track.

Credit this piece by copying the following to your credits section:

«Garden Music» Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0/

Copyright (c) 2016 Copyright Holder All Rights Reserved.

Un comentario sobre “Debian VirtualBox – LAMP Web Server, SSL, Alias, FTP y Virtualhost.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Pin It on Pinterest