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>