---
# System prepended metadata

title: Instalación de Servidores
tags: [DPL, DAW]

---

# Instalación de Servidores
Sistema LAMP -> Linux + Apache + MySql + Php


* Abrimos el terminal
```shell=
# Actualizamos Windows
$sudo apt update
$sudo apt upgrade

# Instalamos Apache
$apt install apache2
```
* Comprobamos el estado del Servidor Apache (LocalHost o 127.0.0.1)
* Activamos el FireWall para máquinas externas
```shell=
#Activamos el FireWall
$ufw enable

#Comprobamos el estado del FireWall
$ufw status

#Muestra las Apps
$ufw app list

#Evitamos que nos protega de las peticiones a el servidor apache
$ufw allow in "Apache"
```
* Para acceder a mi máquina desde fuera necesitamos la ip pública
```shell=
#Ver configuración de ip
$ip add

#Mostramos la ip publica
$ apt install curl
$curl http://icanhazip.com
```
* Instalamos mysql-server, sin seguridad por ahora (Lo haremos más adelante)
```shell=
# Instalamos Mysql
$apt install mysql-server

#Comprobamos que funciona
$mysql
```
* Instalamos PHP
```shell=
# Instalamos PHP, el módulo de Apache especifico de PHP + MySql
$apt install php libapache2-mod-php php-mysql
```
* Vamos a la raíz del Sistema y vamos a el directorio donde Apache guarda las páginas web
```shell=
$cd /
$cd /var/www
```
* Cambiamos la página por defecto del servidor Apache 
```shell=
# Entramos en el directorio html
cd /html
# Hacemos una copia de seguridad del index.html 
$cp index.html index.copia
# Cambiamos el index.html
```
* Cambiamos la configuracion de apache para que acepte el index.php
```shell=
# Nos movemos al directorio de Apache
$cd /etc/apache2/

#Nos movemos al directorio de modulos de Apache
$cd /mods-enable

# Editamos el fichero dir.conf
$nano dir.conf o $gedit dir.conf

# Añadimos el index.php como primera opción

# Reseteamos el Servicio de Apache
$systemctl reload apache2
```
* Añadimos contenido al index.php
```php=
<?php phpinfo(); ?>
```

* Configuramos MYSQL
```sql=
CREATE DATABASE mydb;

// Creamos el usuario y le seteamos la contraseña
Create USER 'Sstark97'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'password';

// Damos permisos a el usuario creado sobre la base de datos creada previamente
GRANT ALL ON mydb.* to 'Sstark97'@'%';
```
* Entramos con el nuevo usuario en MYSQL
```shell=
$mysql -u Sstark97 -p
```
* Creamos las Tablas del Proyecto de Ejemplo
```sql=
USE TodoList;

CREATE TABLE TodoList(
item_id int auto_increment,
contenido varchar(255),
primary key (item_id)
);

INSERT INTO TodoList (contenido) values
("Hacer la comida"),
("Pasear"),
("Estudiar");

SELECT * FROM TodoList;
```

* Cambiamos el index.php
```php=
<?php
    $user="Sstark97";
    $password="password";
    $database="mydb";
    $table="TodoList";

    try {
        $db = new PDO ("mysql:host = localhost; dbname=$database",$user,$password)
            echo "<h2> Mi lista de cosas por hacer: </h2><ol>";
            foreach ($db -> query "SELECT contenido FROM $table") as $row)
            { 
                echo "<li>".$row["contenido"]."</li>"
            }
        "</ol>";
    } catch (PDOExeption $e) {
    print "Error!".$e -> get Message(). "<br/>";
    die();
    }
?>
```


## Posibles Fallos 
Si da fallo ir al siguiente [enlace]("https://askubuntu.com/questions/55280/phpmyadmin-is-not-working-after-i-installed-it")


###### tags: `DAW` `DPL`