# Tutorial de instalación de PHP

* [Tutorial de instalación de PHP](#tutorial-de-instalación-de-php)
  * [Instalación en servidor/pc para desarrollo (SOLO PHP)](#instalación-en-servidorpc-para-desarrollo-solo-php)
  * [Linux](#linux)
    * [Ubuntu](#ubuntu)
    * [Arch](#arch)
    * [CentOS](#centos)
    * [Verificar instalación](#verificar-instalación)
  * [MacOS](#macos)
    * [Verificar instalación](#verificar-instalación-1)
  * [Instalación en servidor/pc para desarrollo con XAMPP/LAMP](#instalación-en-servidorpc-para-desarrollo-con-xampplamp)
  * [Windows](#windows)
    * [Descargar XAMPP](#descargar-xampp)
    * [Instalar XAMPP](#instalar-xampp)
    * [Iniciar y parar servicios](#iniciar-y-parar-servicios)
    * [Cambiar puertos (opcional)](#cambiar-puertos-opcional)
      * [1. Entrar en el fichero de configuración de mysql (my.conf) y cambiar el puerto 3306 por el puerto que necesites.](#1-entrar-en-el-fichero-de-configuración-de-mysql-myconf-y-cambiar-el-puerto-3306-por-el-puerto-que-necesites)
      * [2. Ahora ya puedes volver a arrancar el servicio y acceder desde el nuevo puerto que hayas configurado](#2-ahora-ya-puedes-volver-a-arrancar-el-servicio-y-acceder-desde-el-nuevo-puerto-que-hayas-configurado)
  * [Linux](#linux-1)
    * [Ubuntu](#ubuntu-1)
      * [Instalar LAMPP](#instalar-lampp)
      * [Iniciar y parar LAMPP](#iniciar-y-parar-lampp)
      * [Cambiar puertos (opcional)](#cambiar-puertos-opcional-1)
  * [Instalación en servidor para producción](#instalación-en-servidor-para-producción)
    * [1. Actualizar el sistema](#1-actualizar-el-sistema)
    * [2. Instalar Apache](#2-instalar-apache)
    * [3. Instalar PHP](#3-instalar-php)
    * [4. Instalar MySQL](#4-instalar-mysql)
    * [5. Iniciar y habilitar servicios](#5-iniciar-y-habilitar-servicios)
    * [6. Configurar MySQL](#6-configurar-mysql)
    * [7. Verificar la instalación](#7-verificar-la-instalación)

## Instalación en servidor/pc para desarrollo (SOLO PHP)

## Linux

### Ubuntu

```bash
sudo apt update && sudo apt install php libapache2-mod-php
```

### Arch

```bash
sudo pacman -S php
```

### CentOS

```bash
sudo yum install php
```

### Verificar instalación

```bash
php -v
```

## MacOS

> :warning: **ADVERTENCIA** en este caso voy a utilizar [Homebrew](https://brew.sh/) para instalar los paquetes necesarios

```sh
brew install php
```

### Verificar instalación

```bash
php -v
```

## Instalación en servidor/pc para desarrollo con XAMPP/LAMP

> :warning: **ADVERTENCIA** esta parte solo será explicada en entornos Windows 10 y Linux Ubuntu 20.04

## Windows

### Descargar XAMPP

1. Descargar desde el [sitio oficial de XAMPP](https://www.apachefriends.org/index.html)
2. Ir a descargas

### Instalar XAMPP

Ejecutar el archivo que hemos descargado de la página

![alt text](https://1439917765-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEjyoJq2dLTVzaU0u7Y1b%2Fuploads%2Fgit-blob-0cda4611f54ca2726e626492dc24e3468ecfb774%2Fimage.png?alt=media)

![alt text](https://1439917765-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEjyoJq2dLTVzaU0u7Y1b%2Fuploads%2Fgit-blob-dd3c8c822af89b9aa185dcda707a8025b19eb7ec%2Fimage-1.png?alt=media)

### Iniciar y parar servicios

Una vez esté instalado ejecutamos el panel de control y podemos arrancar los servicios

![alt text](https://1439917765-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEjyoJq2dLTVzaU0u7Y1b%2Fuploads%2Fgit-blob-0a4ea04e2411099d00b7c317a634d14a46c8a092%2Fimage-2.png?alt=media)

### Cambiar puertos (opcional)

En caso de que necesitemos cambiar los puertos del servicio de Apache o de Mysql lo podemos hacer a través de los botones de config en el panel de control. En este caso explicaremos como cambiar el puerto de Mysql

#### 1. Entrar en el fichero de configuración de mysql (my.conf) y cambiar el puerto 3306 por el puerto que necesites.

![alt text](https://1439917765-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEjyoJq2dLTVzaU0u7Y1b%2Fuploads%2Fgit-blob-d7df51da89ec891739df08be7e3cc38ff25300e5%2Fimage-3.png?alt=media)

![alt text](https://1439917765-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEjyoJq2dLTVzaU0u7Y1b%2Fuploads%2Fgit-blob-0c0a035ee2c5962310dd38cecc43ebb9ae91ec8b%2Fimage-4.png?alt=media)

#### 2. Ahora ya puedes volver a arrancar el servicio y acceder desde el nuevo puerto que hayas configurado

## Linux

### Ubuntu

#### Instalar LAMPP

1. Descargar desde el [sitio oficial de XAMPP](https://www.apachefriends.org/index.html)
2. Ir a descargas

```sh
cd ~/Descargas
```

3. Cambiar permisos para poder ejecutar el fichero

```sh
chmod +x nombre_del_archivo_descargado.run
```

4. Ejecutar

```sh
sudo ./nombre_del_archivo_descargado.run
```

5. Seguir el instalador

#### Iniciar y parar LAMPP

```sh
sudo /opt/lampp/lampp start
```

```sh
sudo /opt/lampp/lampp stop
```

#### Cambiar puertos (opcional)

1. Acceder al fichero de configuracion httpd.conf

```sh
sudo nano /opt/lampp/etc/httpd.conf
```

2. Modificar estas líneas

```sh
Listen 80
ServerName localhost:80
```

3. Guardar cambios y cerrar el editor de texto
4. Reiniciar servicio

```sh
sudo /opt/lampp/lampp restart
```

## Instalación en servidor para producción

> :warning: **ADVERTENCIA** esta parte solo será explicada en entornos de servidor Linux, concretamente Debian o RHEL.

En entornos de servidor Linux, como Debian o RHEL (Red Hat Enterprise Linux), puedes seguir los siguientes pasos para instalar Apache, PHP y MySQL para producción:

### 1. Actualizar el sistema

Antes de comenzar con la instalación, asegúrate de que el sistema esté actualizado ejecutando los siguientes comandos:

**Debian/Ubuntu:**

```bash
sudo apt update
sudo apt upgrade
```

**RHEL/CentOS:**

```bash
sudo yum update
```

### 2. Instalar Apache

**Debian/Ubuntu:**

```bash
sudo apt install apache2
```

**RHEL/CentOS:**

```bash
sudo yum install httpd
```

### 3. Instalar PHP

**Debian/Ubuntu:**

```bash
sudo apt install php
```

**RHEL/CentOS:**

```bash
sudo yum install php
```

### 4. Instalar MySQL

**Debian/Ubuntu:**

```bash
sudo apt install mysql-server
```

**RHEL/CentOS:**

```bash
sudo yum install mysql-server
```

### 5. Iniciar y habilitar servicios

**Debian/Ubuntu:**

```bash
sudo systemctl start apache2
sudo systemctl start mysql
sudo systemctl enable apache2
sudo systemctl enable mysql
```

**RHEL/CentOS:**

```bash
sudo systemctl start httpd
sudo systemctl start mysqld
sudo systemctl enable httpd
sudo systemctl enable mysqld
```

### 6. Configurar MySQL

Después de instalar MySQL, es posible que debas configurar la contraseña del usuario root de MySQL y realizar otras configuraciones de seguridad.

```bash
sudo mysql_secure_installation
```

### 7. Verificar la instalación

Para verificar que todo esté funcionando correctamente, **abre un navegador web** y **visita la dirección IP o el nombre de dominio de tu servidor**. Deberías ver la página predeterminada de Apache.

Para probar que PHP también está funcionando correctamente, crea un **archivo phpinfo.php** en el directorio raíz de tu servidor web con el siguiente contenido:

```php
<?php
    phpinfo();
?>
```

Guarda el archivo y **visita <http://tu\\_direccion\\_ip/phpinfo.php>** en tu navegador. Deberías ver una página con información detallada sobre la configuración de PHP.

Con esto, deberías tener Apache, PHP y MySQL instalados y funcionando en tu servidor Linux para producción.
