Instale Apache en Ubuntu 18.04 Bionic Beaver Linux
- 807
- 128
- Berta Solano
Objetivo
Aprenda cómo instalar Apache en Ubuntu 18.04, cómo configurar hosts virtuales, configurar el firewall y usar certificados SSL para una conexión segura
Requisitos
- Permisos de raíz
Convenciones
- # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz
directamente como usuario raíz o mediante el uso desudo
dominio - ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado
Introducción
El servidor web Apache no necesita grandes presentaciones: el software de código abierto, lanzado por la Fundación Apache, es uno de los servidores web más utilizados del mundo. En este tutorial, veremos cómo instalarlo, ajustar la configuración del firewall para permitir el tráfico HTTP y HTTPS, y configurar hosts virtuales en Ubuntu 18.04.
Instalación
Instalación del servidor web Apache en Ubuntu 18.04 Bionic Beaver es un proceso realmente sencillo:
$ sudo apt-get update && apt-get install apache2
Los scripts de instalación de Ubuntu se encargarán de comenzar y habilitar el apache2
servicio al arranque.
Configuración de firewall
Para acceder al contenido predeterminado atendido por Apache, en la misma máquina se ejecuta el servidor, solo tendremos que encender un navegador web y navegar a hostil
en la barra de direcciones. Si todo está configurado correctamente, una página debe darnos la bienvenida con el "Funciona!" mensaje:
Si un firewall está habilitado en nuestro sistema (como debería), para que el contenido sea accesible desde fuera de nuestra máquina, necesitamos permitir el tráfico entrante en el puerto 80
. El comando para ejecutar depende del administrador de firewall en uso. Por ejemplo, cuando se usa UFW
(Predeterminado de Ubuntu), debemos ejecutar:
$ sudo UFW Permitir http
Del mismo modo, si usa cortafuegos
, Podemos correr:
$ sudo firewall-cmd --Permanent --add-service = http && firewall-cmd--Reload
Observe que el comando anterior tendrá su efecto en la zona de firewalld predeterminada. Si queremos operar en otro, debemos especificarlo con el --zona
opción.
Configuración de un host virtual
El servidor web Apache tiene la capacidad de ejecutar más de un sitio web en la misma máquina. Cada sitio (un host virtual en la terminología de Apache) que debe servirse debe tener su propia configuración. Un host virtual puede ser IP o nombrado basado.
En este tutorial, nos centraremos en el segundo tipo, ya que es más fácil de configurar y no requiere múltiples direcciones IP (los hosts virtuales basados en el nombre permiten que muchos sitios web compartan la misma dirección).
El host virtual predeterminado
En Ubuntu, el host virtual predeterminado se define en el /etc/apache2/sites disponible
directorio, dentro del 000 default.confusión
archivo. Echemos un vistazo:
[… .] ServerAdmin webmaster@localhost documentroot/var/www/html [.. .] ErrorLog $ apache_log_dir/error.Log customLog $ apache_log_dir/access.Log combinado [.. .]
Copiar El La directiva en la línea 1 se utiliza para agrupar la configuración utilizada por Apache para un host virtual específico. Lo primero que vimos definido en él es el
*: 80
instrucción. Esto indica la dirección IP y el puerto utilizados por el host virtual.
Múltiples hosts virtuales se pueden definir en el mismo archivo o siguiendo el esquema de "una definición de host virtual por archivo". En ambos casos, la primera definición se considera el valor predeterminado, si la solicitud del cliente no coincide con ningún otro host virtual.
El ServerAdmin
La directiva en la línea 3 es opcional, y se utiliza para especificar la dirección de contacto que el servidor web mostrará en caso de mensajes de error. Normalmente queremos proporcionar una dirección de correo electrónico válida como argumento de esta directiva, ya que el servidor web usará Mailto:
en él, para facilitar el contacto del administrador.
Raiz del documento
en la línea 4 es obligatorio y es esencial para la configuración del host virtual. El argumento de esta instrucción debe ser una ruta válida del sistema de archivos. El directorio proporcionado se considerará el directorio raíz del host virtual, y no debe contener un final '/'. En este caso, el directorio de la raíz del documento es /var/www/html
. Si echamos un vistazo a su contenido, vemos que contiene el índice.html
página utilizada como la página de bienvenida del servidor que vimos antes.
Las dos últimas instrucciones en la línea 8 - 9 proporcionadas en este virtualhost son Registro de errores
y Custodleg
. Al usar el primero, establecemos el archivo en el que el servidor registrará los errores ocurridos. El segundo, en su lugar, se usa para registrar las solicitudes enviadas al servidor en el formato especificado (puede usar esto como referencia para un conocimiento profundo sobre formatos de registro).
Crear un nuevo host virtual
Vimos cómo se define el VirtualHost predeterminado; Ahora suponga que queremos servir a otro sitio web utilizando nuestro servidor web: debemos definir un nuevo host virtual para poder lograr nuestro objetivo.
Como se dijo anteriormente, los archivos de hosts virtuales deben definirse dentro del /etc/apache2/sites disponible
directorio (al menos en distribuciones basadas en Debian): por lo tanto, crearemos nuestro archivo allí. Antes de hacerlo, queremos crear el directorio para ser utilizado como nuestro Raiz del documento
, y crear una página básica que se mostrará cuando llegamos al sitio:
$ sudo mkdir/var/www/ejemplo && echo "Bienvenido al ejemplo!">/var/www/ejemplo/index.html
Ahora podemos continuar con la configuración de nuestro host virtual:
DocumentRoot/var/www/ejemplo servername www.ejemplo.local
Esta es la configuración mínima necesaria para ejecutar un host virtual. Aquí podemos ver una nueva directiva, Nombre del servidor
: Esto es lo que define nuestro host virtual. Guardemos este archivo como ejemplo.confusión
. Para activar nuestro virtualhost usamos el A2ensita
Comando: Todo lo que hace este comando es crear un enlace simbólico del archivo en el /etc/apache2/sitios habilitado
directorio:
$ sudo a2ensite Ejemplo.confusión
Después de eso, debemos volver a cargar la configuración del servidor:
$ sudo systemctl recarga apache2.servicio
Definimos nuestro virtualhost, sin embargo, ya que esta es una prueba y no tenemos un entrada DNS
asociado con él, para verificar que la configuración funciona, debemos agregar una entrada en el /etc/huéspedes
Archivo de la máquina estamos tratando de llegar al sitio desde.
$ sudo echo "192.168.122.241 www.ejemplo.local ">> /etc /hosts
Sin esta línea, (y sin una entrada DNS) sería imposible asociar la dirección del servidor al nombre de nuestro VirtualHost, y usar la IP del servidor directamente, "activaría" el host virtual predeterminado.
Desde la máquina del cliente, si ahora navegamos a "www.ejemplo.Local ”Deberíamos ver la página mínima que configuramos arriba:
Ejemplo VirtualHost ÍndiceConfiguración de SSL
SSL, corto para Asegurar la capa de enchufes
Es la tecnología la que nos permite cifrar los datos involucrados en la conexión entre el cliente y el servidor. Cuando se usan los certificados SSL, https
(Protocolo de transferencia de hyper texto seguro) reemplaza a HTTP en la URL.
Los certificados SSL son emitidos por una autoridad de certificado que, como un tercero confiable, asegura que alguien es realmente que afirma estar en Internet. Los certificados SSL pueden ser muy costosos, sin embargo, hay dos alternativas principales para obtener un certificado: crear un certificado autoestimado o obtener una de Vamos a cifrar
.
Generar un certificado SSL autofirmado
Aunque generar un certificado autofirmado, no es una tarea difícil y puede ser útil cuando solo desea lograr el cifrado, no se puede utilizar en contextos donde el certificado en sí debe ser firmado por un tercero de confianza. Podemos generar un certificado autofirmado utilizando el openssl
utilidad:
$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -nodes \ -keyout ejemplo.clave \ -Out Ejemplo -Cert.pem
Veamos qué hace este comando. La primera opción que encontramos, -x509
, Modifica el comportamiento del comando para que genera un certificado autofirmado en lugar de una solicitud de certificado.
Con -días
, Establecemos la validez, en días, para el certificado. La siguiente opción proporcionada es -nueva llave
: Con él creamos una nueva clave, en este caso un RSA
clave, con el tamaño de 2048 bits. Para nuestro caso de prueba, no queremos cifrar el archivo de clave privada, por lo que utilizamos -nodos
. Si se omite esta opción, el archivo en el que se almacena la clave estará protegido por una contraseña, que se nos pedirá que inserte cada vez que se reinicie el servidor web.
Con -llave
y -afuera
Especificamos el archivo para escribir la clave generada y el certificado, respectivamente. Al iniciar el comando, se nos pedirá que respondamos algunas preguntas, y luego se generará la clave y el certificado.
Está a punto de que se le solicite que ingrese información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se llama un nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algo de blanco para algunos campos, habrá un valor predeterminado, si ingresa '.', el campo se dejará en blanco. ----- Nombre del país (código de 2 letras) [Au]: Nombre de estado o provincia (nombre completo) [algún estado]: Nombre de la localidad (por ejemplo, ciudad) []: Nombre de la organización de Milán (por ejemplo, empresa) [Internet Widgits Pty Ltd] : Daño Inc. Nombre de la unidad organizacional (por ejemplo, sección) []: Nombre común (E.gramo. servidor fqdn o su nombre) []: www.ejemplo.Dirección de correo electrónico local []:
El siguiente paso es copiar nuestra clave y certificado generados en /etc/ssl/privado
y /etc/ssl/ssl-certs
directorios respectivamente:
$ sudo MV Ejemplo-Cert.PEM/etc/ssl/certs
El certificado es público, por lo que no necesita permiso especial. Ahora, la clave:
$ sudo MV Ejemplo.clave/etc/ssl/privado
Es importante que ajustemos los permisos de archivo de clave. Si examinamos el /etc/ssl/privado
carpeta, podemos ver que pertenece al raíz
usuario y el SSL-CERT
grupo, y tiene 710
Como permisos, lo que significa que, si bien el propietario tiene privilegios completos, el propietario del grupo solo puede acceder a él y enumerar su contenido, y no se permite ningún permiso para los demás:
$ ls -ld/etc/ssl/private drwx-x --- 2 root ssl-cert 4096 marzo 16 11:57/etc/ssl/privado
Cambiemos nuestros permisos de archivo clave en consecuencia, dando permisos de lectura y escritura del propietario, y privilegios de solo lectura para el grupo:
$ sudo root de chown: ssl-cert/etc/ssl/private/ejemplo.clave $ sudo chmod 640/etc/ssl/private/ejemplo.llave
Para usar nuestro certificado, ahora tenemos que habilitar el módulo SSL Apache. Lo hacemos usando el a2enmod
dominio:
$ sudo a2enmod ssl
Estamos casi alli. Ahora es el momento de modificar nuestro host virtual y establecerlo de esta manera:
DocumentRoot/var/www/ejemplo servername www.ejemplo.Local # habilitar SSL Engine SSLEngine en SSLCertificateFile/Etc/SSL/Certs/Ejemplo-Cert.PEM SSLCertificAtekeyFile/Etc/SSL/Private/Ejemplo.llave
Copiar El puerto 443
En línea 1 es el puerto utilizado para HTTPS (en lugar del puerto 80 utilizado para HTTP). También agregamos el SSLEGINE ON
Instrucción en la línea 6, que se explica por sí misma.
Finalmente en la línea 8 - 9 hemos especificado las rutas para nuestro certificado y archivos clave, utilizando el Sslcertificatefile
y Sslcertificatekeyfile
instrucciones.
Ahora, siga las instalaciones para abrir los puertos de firewall utilizados al comienzo del tutorial, pero esta vez para permitir el https
servicio:
$ sudo UFW Permitir https
Finalmente, recargar la configuración de Apache:
$ sudo systemctl recarga apache2
Todo listo. Ahora, si desde el cliente, navegamos a https: // www.ejemplo.local
Dirección, deberíamos ver que el servidor web nos alertó de que el certificado usado no es seguro (ya que es autosuficiente). Esto es, sin embargo, el signo de nuestra configuración funciona y el tráfico entre el cliente y el servidor estará encriptado (deberá agregar una excepción para que el certificado lo use).
Configuración Vamos en cifrado
La alternativa a los certificados comerciales y autofirmados está representado por "Vamos en cifrado". Vamos a encrypt es una autoridad de certificado gratuita, automatizada y abierta; Su objetivo es hacer posible obtener automáticamente un certificado confiable por el navegador sin ninguna intervención humana.
Esto se puede lograr mediante el uso del CUMBRE
protocolo y un agente de gestión de certificados
que se ejecuta en el servidor.
Para obtener un certificado, debemos demostrar que tenemos control sobre el dominio que queremos usar el certificado para. Si no tenemos acceso de shell en el servidor, debemos comunicarnos con nuestro proveedor de servicios para activar Let's Ciftpt en nuestro nombre, pero probablemente hay una sección dedicada en el panel de configuración del servicio.
Si, en cambio, tenemos acceso de shell al servidor en cuestión, en primer lugar debemos instalar el certbot
Cliente acme. Instalación de CertBot en Ubuntu 18.04 Es solo cuestión de correr:
$ sudo apt-get update && apt-get install certbot python-certbot-apache
El paquete CertBot viene con un temporizador de systemd
Unidad que ejecutará CERTBOT dos veces al día para mantener el certificado actualizado. Obtener un certificado es bastante simple:
$ sudo certbot --apache -m -d
Obviamente, para que esto funcione, el dominio debe apuntar correctamente a nuestra IP de servidor de acceso público. CERTBOT le solicitará algunas preguntas que ajusten la configuración, y si todo va bien, el certificado y la clave deberían guardar en el /etc/letsencrypt/live/
directorio. Simplemente modifique su archivo de host virtual para señalarlos y ya está terminado!
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Instale Arch Linux en VMware Workstation
- Ubuntu 20.04: WordPress con instalación de Nginx
- Cosas para instalar en Ubuntu 22.04
- Habilitar/deshabilitar el firewall en Manjaro Linux
- Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
- Ubuntu 20.04 WordPress con instalación de Apache
- Configurar servidor FTP en Linux
- Cómo configurar VSFTPD en Debian
- « Instale IntelliJ en Ubuntu 18.04 Bionic Beaver Linux
- Cómo sincronizar el tiempo en Ubuntu 18.04 Bionic Beaver Linux »