# 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`