# DPL - Instalación LAMP <div style="text-align: center;"> <img src="https://i.imgur.com/1V6hVIa.jpg" alt="LAMP"/> <h4 style="text-align: right;">Jerobel Rodriguez</h4> </div> <hr> ## Índice [TOC] <hr> ## Actualizar sistema 1. Actualizar lista de paquetes y versiones: ```bash= apt update ``` 2. Instalación de las nuevas versiones: ```bash= apt upgrade ``` ## Instalación Apache2 1. Instalación de paquetes: ```bash= apt install apache2 ``` 2. Comprobar estado del servidor: ```bash= service apache2 status systemctl status apache2 ``` 3. El servidor está alojado en la dirección **127.0.0.1** o **localhost**, si no aparece, comprobar que tiene **autorización en el firewall**. 4. Una vez que todo es correcto, vamos a modificar la configuración de **Apache2** para que se prioricen los archivos ***.php**. ```bash= # Accedemos a la carpeta cd /etc/apache2/mods-enable # Cambiamos la configuración para que cargue primero *.php vim dir.conf # Cambiar orden y poner index.php primero. ``` 5. Creamos el index.php ```bash= cd /var/www/html vim index.php ``` 6. Reiniciamos el servicio para que se efectuen los cambios. ```bash= systemctl reload apache2 ``` ## Instalación MySQL 1. Instalación de paquetes: ```bash= apt install mysql-server ``` 2. Para comprobar que funciona correctamente lo ejecutamos con `mysql`. ## Instalación PHP 1. Instalación de paquetes: ```bash= apt install php libapache2-mod-php php-mysql ``` ## Instalación PHPMyAdmin 1. Instalación y paquetes asociados: ```bash= apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl ``` 2. Habilitamos que apache trate las cadenas de php (desactivado por default). ```bash= cd /ect/apache2/conf-enabled phpenmod mbstring ``` 3. Reiniciamos el servicio de apache2. 4. Comprobamos si funciona entrando a http://localhost/phpmyadmin, aunque lo probable es que no funcione (nos debería salir un error como phpmyadmin not found), para solucionarlo habría que editar el /etc/apache2/apache.conf y añadir lo siguiente al final del archivo: ```bash= Include /etc/phpmyadmin/apache.conf ``` *Crear usuario daw en mysql para acceder a PHPMyAdmin* ## Instalación FTP ```bash= sudo apt-get install proftdp # Comprobar que está correctamente instalado systemctl status proftdp service proftpd status ``` *El fichero de configuración se encuentra en /etc/proftpd/proftdp.conf* *Los usuarios creados se pueden comprobar en el fichero /etc/passwd* *Para limitar el acceso a una carpeta se especifica en el DocumentRoot* ***Conectar a ftp*** ```bash= ftp [ipServer] ``` ## Extra ### Firewall Como es posible que el firewall esté desactivado, lo activamos usando: ```bash= ufw enable ``` Comprobar que opciones tenemos: ```bash= uwf h ``` Comprobar estado del firewall: ```bash= ufw status ``` Listar aplicaciones disponibles: ```bash= ufw app list ``` Autizar aplicacion en el firewall: ```bash= ufw allow in "[app-name]" ``` ### Comprobar IP pública ```bash= curl http://icanhazip.com ``` ### Crear un usuario en MySQL ```sql= CREATE USER '[username]'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '[password]'; ``` Otorgarle permisos: * Para todas las BD disponibles: ```sql= GRANT ALL PRIVILEGES ON *.* TO '[username]'@'localhost'; ``` * Para una tablas seleccionadas: ```sql= GRANT ALL PRIVILEGES ON [database].* TO '[username]'@'localhost'; ``` Eliminar un usuario: ```sql= DROP USER '[username]'@'localhosrt'; ``` ### Cambiar permisos ```bash= sudo chmod -R 777 [path] # Para dar todos los permisos ``` ### Abrir puertos en Apache ```bash= nvim /etc/apache2/ports.conf # Añadir Listen [port] ``` ### Instalar SSL autofirmado ***Activar SSL** ```bash a2enmod ssl systemctl reload apache2 ``` ***Instalarlo como público*** ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt ``` ```bash a2ensite [project].conf apache2ctl configtest # Comprobar si la configuración está bien systemctl reload apache2 apache2ctl -S # Ver status ``` ***Cambiar el puerto a 443 y activar SSL*** ```bash= # /ect/apache2/sites-available nvim [project].conf a2ensite [project].conf systemctl reload apache2 ``` ```bash= # Añadir en VirtualHost *:443 SSLEngide on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key ``` **Nota:** Debería abrirse el puerto cuando ponemos `https://[ServerAlias]` Para redirigir el http al https se vuelve a ir al .conf y se añade una nueva etiqueta al VirtualHost con puerto 80. ```bash ServerName [project].son Redirect / https://[ServerAlias] ``` Reiniciar con a2ensite y systemctl. ### Crear usuarios y grupos ```bash # Crear usuario useradd [username] # Crear contraseña passwd [username] ``` ```bash # Crear grupo sudo groupadd [name] # Eliminar grupo sudo groupdel [name] # Agregar usuario al grupo sudo usermod -aG [group] [user] # Mostar los grupos que pertenece un usuario groups [name] ``` ### Comandos FTP | Comando | Descripción | | - | - | | ? | Muestra todos los comandos disponibles | | ? [command] | Muestra que hace un comando | | dir | Lista los directorios | | ls | Lista los ficheros | | pwd | Muestra donde nos encontramos | | mkdir | Crea un nuevo directorio | | rmdir | Elimina un directorio | | get [path] | Descarga el fichero del servidor | | put [path] | Sube un fichero al servidor | | delete | Elimina el fichero | | exit | Cierra la sesión ftp | ###### tags: `dpl`