apt-get update
apt-get install apache2 apache2-utils
Habilitar un puerto:
ufw allow [Puerto]:(Protocolo)
Directorio raíz:
/var/www/html
Fichero con todas las zonas del servidor:
/etc/apache2/apache2.conf
Fichero con los puertos a usar:
/etc/apache2/ports.conf
Mods disponibles y habilitados:
/etc/apache2/mods-available, /etc/apache2/mods-enabled
Sitios Virtuales disponibles y habilitados:
/etc/apache2/sites-available, /etc/apache2/sites-enabled
Fichero de configuración por defecto:
/etc/apache2/sites-available/000-default.conf
000-default.conf:
DocumentRoot:
Directorio raíz del sitio web, donde deben colocarse las páginas webs que servirá nuestro servidor.
ServerName:
ServerName www.asir.edu:80
Da un nombre al sitio y el puerto que se utiliza.
ErrorDocument:
ErrorDocument 404 /PagError.html
Página en caso de un código de error (404, ..)
Alias:
Alias /Fuera /usr/share/otra
Permite el acceso a páginas que estén fuera del árbol de directorios.
/etc/apache2/mods-enabled/dir.conf /etc/apache2/apache2.conf
DirectoryIndex:
DirectoryIndex indice.html index.htm indice.html
Indica qué página debe enviarse cuando el cliente sólo escribe el dominio y la carpeta.
Sirve para dar permisos a un directoio concreto del disco duro del servidor.
Da igual si hay tabuladores o espacios, las mayúsculas importan.
Se puede poner dentro de un VirtualHost y tendrá más prioridad que en apache2.conf.
Formato:
< Directory /ruta/absoluta/directorio> Options Indexes DirectoryIndex index.html inicio.html inicio.htm < /Directory>
Etiquetas:
Options Indexes: Dar permisos para mostrar el contenido de la carpeta en caso de no haber localizado el recurso solicitado. Si no tiene permiso con indexes dará un error si no localiza el recurso.
Options FollowSymLinks: Si no se pone, los alias no funcionan.
DirectoryIndex [File]: Se definen los ficheros por defecto que abrirá el servidor en caso de no haberse especificado en la URL. Se intentarán abrir en el orden en que aparecen. Si no se puede abrir ninguno y si la opción Indexes está definida mostrará el directorio principal, si no enseñará un error.
Sirve para crear crear sitios web en el servidor.
Mínimo hay que tener 1.
Formato:
< VirtualHost *:80> ... < /VirtualHost>
*:80: IP:Puerto.
Etiquetas:
ServerName: Nombre de Dominio. Si no se define, localhost.
ServerAdmin: Administrador del dominio.
DocumentRoot: Carpeta raíz del sitio web.
LogLevel: debug, info, notice, warn, error, crit, alert, emerg.
ErrorLog: Fichero donde se definen los logs, ${APACHE_LOG_DIR}/error.log.
1. Directory /etc/apache2/apache2.conf:
< Directory /var/www/html/privado> AuthName "Acceso Privado" AuthType Basic AuthUserFile /etc/apache2/ClaveAcceso Require user NombreUsuario < /Directory>
AuthName: Texto identificativo.
AuthUserFile: Fichero donde se meterán los usuarios con sus claves.
2. Comando para crear AuthUserFile:
htpasswd -c /etc/apache2/ClaveAcceso NombreUsuario
-c: Crea el archivo. Si se vuelve a añadir a otro usuario se quita.
3. Crear la carpeta definida en < Directory >.
4. Reiniciar el servicio y acceder a http://localhost/privado.
CMD:
ln -s /etc/apache2/sites-available/001-default.conf /etc/apache2/sites-enabled
/etc/ports.conf:
Listen 8080
/etc/apache2/sites-available/000-default.conf:
< VirtualHost *:80> ErrorDocument 404 "Mensaje" ErrorDocument 404 /404.html < /VirtualHost>
404: Código HTTP de error.
"Mensaje": El mensaje que se enseñará en un nuevo fichero.
/404.html: El fichero personalizado que se enseñará. Se busca desde DocumentRoot.
Sirve para poder dar directivas desde un fichero ubicado en el directorio donde se de permisos, por defecto el fichero que va a buscar con las directivas será ".htaccess".
/etc/apache2/apache2.conf:
< Directory /var/www/html/marcos> AllowOverride all < /Directory>
AllowOverride all: Permitir el uso de ficheros .htaccess.
/var/www/html/marcos/.htaccess:
AuthName "Mensaje" AuthType Basic AuthUserFile /etc/apache2/claveacceso Require user mortadelo filemon...
1. CMD:
openssl req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 1024 -nodes
2. /etc/apache2/ports.conf:
Listen 443
3. Activar módulo SSLEngine (Una vez):
sudo a2enmod ssl
4. /etc/apache2/sites-available/aili-ss.conf:
< VirtualHost *:443> ServerName aili-ss.abc DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /var/www/html/certificate.crt SSLCertificateKeyFile /var/www/html/certificate.key < /VirtualHost>
Archivos (.crt, .key): Generados por openssl.
sudo a2ensite aili-ss.conf
/etc/apache2/sites-available/000-default.conf:
< VirtualHost *:80> Redirect / https://ali-ss.abc < /VirtualHost>
1. Crear una carpeta para el alias (/var/www/todos) y un index.html.
2. /etc/apache2/apache2.conf:
< Directory /var/www/todos> Options Indexes Require all granted DirectoryIndex index.html < /Directory> Alias /aliastodos /var/www/todos
~ Crear varias carpetas con archivos, restringir una con acceso. Crear un VirtualHost para asignarles subdominios.
Crear estructura de archivos:
. ├── elfran │ └── index.html ├── index.html ├── luis │ └── indice.html ├── marcos │ ├── hola2.txt │ ├── hola3.txt │ ├── hola4.txt │ ├── hola5.txt │ └── hola.txt ├── privado │ └── indice.html └── sebas ├── index.html └── indice.html
./index.html: Hacer un .html con enlaces a todos los directorios → http://localhost/sebas.
/etc/apache2/apache2.conf:
< Directory /var/www/html/luis> DirectoryIndex indice.html < /Directory> < Directory /var/www/html/marcos> Options Indexes < /Directory>
Quitar 'Indexes' de Options en /var/www/html.
Añadir en /etc/hosts:
127.0.0.1 luis.aili-ss.xyz 127.0.0.1 elfran.aili-ss.xyz 127.0.0.1 marcos.aili-ss.xyz 127.0.0.1 sebas.aili-ss.xyz
/etc/apache2/sites-available/000-default.conf:
< VirtualHost *:80> ServerName luis.aili-ss.xyz DocumentRoot /var/www/html/luis < /VirtualHost> < VirtualHost *:80> ServerName elfran.aili-ss.xyz DocumentRoot /var/www/html/elfran < /VirtualHost> < VirtualHost *:80> ServerName sebas.aili-ss.xyz DocumentRoot /var/www/html/sebas < /VirtualHost> < VirtualHost *:80> ServerName marcos.aili-ss.xyz DocumentRoot /var/www/html/marcos < /VirtualHost> < VirtualHost *:80> ServerName privado.aili-ss.xyz DocumentRoot /var/www/html/privado < /VirtualHost>
/etc/apache2/sites-available/000-default.conf:
< VirtualHost *:80 > ServerName aili-ss.abc ServerAdmin webmaster@aili-ss.abc DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined < /VirtualHost >
/etc/apache2/sites-available/001-default.conf:
< VirtualHost *:80 > ServerName elfran.aili-ss.abc DocumentRoot /var/www/html/elfran < /VirtualHost > < VirtualHost *:80 > ServerName sebas.aili-ss.abc DocumentRoot /var/www/html/sebas < /VirtualHost > < VirtualHost *:80 > ServerName marcos.aili-ss.abc DocumentRoot /var/www/html/marcos < /VirtualHost > < VirtualHost *:80 > ServerName privado.aili-ss.abc DocumentRoot /var/www/html/privado < /VirtualHost > < VirtualHost *:80 > ServerName luis.aili-ss.abc DocumentRoot /var/www/html/luis < /VirtualHost >
ln -s /etc/apache2/sites-available/001-default.conf /etc/apache2/sites-enabled
/etc/hosts:
127.0.0.1 aili-ss.abc 127.0.0.1 luis.aili-ss.abc 127.0.0.1 elfran.aili-ss.abc 127.0.0.1 marcos.aili-ss.abc 127.0.0.1 sebas.aili-ss.abc 127.0.0.1 privado.aili-ss.abc
/etc/apache2/apache2.conf:
< Directory /var/www/ > Options FollowSymLinks AllowOverride None Require all granted < /Directory > < Directory /var/www/html/privado/ > Options Indexes Directoryindex index.html AuthName "Acceso Privado" AuthType Basic AuthUserFIle /etc/apache2/ClaveAcceso Require user USUARIO1 < /Directory > < Directory /var/www/html/luis > Options Indexes Require all denied DirectoryIndex indice.html < /Directory> < Directory /var/www/html/marcos > Options Indexes < /Directory >
Bloquear solicitudes por el :8080 en todos los dominios menos en luis.
/etc/apache2/sites-available/000-default.conf:
< VirtualHost *:80> ServerName aili-ss.abc ServerAdmin webmaster@aili-ss.abc DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ErrorDocument 404 /404.html ErrorDocument 403 /403.html < /VirtualHost> < VirtualHost *:8080> DocumentRoot /var/www/html ServerName aili-ss.abc < Directory /var/www/html> Require all denied < /Directory> < /VirtualHost>
Dejar el puerto :8080 en luis /etc/apache2/sites-available/001-default.conf:
< VirtualHost *:80> ServerName luis.aili-ss.abc DocumentRoot /var/www/html/luis ErrorDocument 403 "No puedes acceder a Luis" < /VirtualHost> < VirtualHost *:8080> ServerName luis.aili-ss.abc DocumentRoot /var/www/html/luis ErrorDocument 403 "No puedes acceder a Luis" < Directory /var/www/html/luis> Require all granted < /Directory> < /VirtualHost>