Instalamos Apache
sudo apt update
sudo apt install apache2
Comprobamos el estado de Apache
sudo systemctl status apache2
Instalamos PHP
versión por defecto (en estos momentos la 7.4)
sudo apt -y install php php-common
Instalamos extensiones
sudo apt install -y php-apcu php-bcmath php-curl php-gd php-imagick php-intl php-mbstring php-memcached php-xml php-zip
Seleccionamos otra versión (por ejemplo la 8)
Los paquetes de PHP 8 para Debian están disponibles en el repositorio DEB.SURY.ORG. Instalamos las dependencias requeridas.
sudo apt update sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
Agregamos el repositorio APT de paquetes PHP a nuestro servidor Debian.
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Importamos la llave del repositorio:
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
Realizamos la actualización del índice del paquete para confirmar que se ha agregado el repositorio:
$ sudo apt update Hit:1 http://mirror.hetzner.de/debian/packages buster InRelease Hit:2 http://security.debian.org buster/updates InRelease Hit:3 http://mirror.hetzner.de/debian/packages buster-updates InRelease Hit:4 http://mirror.hetzner.de/debian/packages buster-backports InRelease Hit:5 http://mirror.hetzner.de/debian/security buster/updates InRelease Hit:6 http://deb.debian.org/debian buster InRelease Hit:7 http://deb.debian.org/debian buster-updates InRelease Hit:8 http://deb.debian.org/debian buster-backports InRelease Get:9 https://packages.sury.org/php buster InRelease [6,759 B] Get:10 https://packages.sury.org/php buster/main amd64 Packages [148 kB] Fetched 155 kB in 2s (83.2 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 7 packages can be upgraded. Run 'apt list --upgradable' to see them.
Con el repositorio agregado, podemos comenzar la instalación de PHP 8.0 en Debian el 10/11/9:
sudo apt update sudo apt install php8.0
Confirmamos la instalación:
$ php -v
PHP 8.0.9 (cli) (built: Jul 30 2021 13:09:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies
Si nos aparece que la versión activa es la 8.1.8 (por ejemplo), y queremos tener la 8.0 por defecto que también está instalada, haremos lo siguiente:
sudo update-alternatives --set php /usr/bin/php8.0
Comprobamos que efectivamente se ha realizado el cambio
php -v
Instalamos las extensiones necesarias:
sudo apt install php8.0-<extension>
Estos son algunos de los disponibles
$ sudo apt install php8.0- php8.0-bcmath php8.0-curl-dbgsym php8.0-gmp-dbgsym php8.0-mysql php8.0-pspell-dbgsym php8.0-tidy php8.0-bcmath-dbgsym php8.0-dba php8.0-imap php8.0-mysql-dbgsym php8.0-readline php8.0-tidy-dbgsym php8.0-bz2 php8.0-dba-dbgsym php8.0-imap-dbgsym php8.0-odbc php8.0-readline-dbgsym php8.0-xdebug php8.0-bz2-dbgsym php8.0-dev php8.0-interbase php8.0-odbc-dbgsym php8.0-snmp php8.0-xml php8.0-cgi php8.0-enchant php8.0-interbase-dbgsym php8.0-opcache php8.0-snmp-dbgsym php8.0-xml-dbgsym php8.0-cgi-dbgsym php8.0-enchant-dbgsym php8.0-intl php8.0-opcache-dbgsym php8.0-soap php8.0-xsl php8.0-cli php8.0-fpm php8.0-intl-dbgsym php8.0-pgsql php8.0-soap-dbgsym php8.0-zip php8.0-cli-dbgsym php8.0-fpm-dbgsym php8.0-ldap php8.0-pgsql-dbgsym php8.0-sqlite3 php8.0-zip-dbgsym php8.0-common php8.0-gd php8.0-ldap-dbgsym php8.0-phpdbg php8.0-sqlite3-dbgsym php8.0-common-dbgsym php8.0-gd-dbgsym php8.0-mbstring php8.0-phpdbg-dbgsym php8.0-sybase php8.0-curl php8.0-gmp php8.0-mbstring-dbgsym php8.0-pspell php8.0-sybase-dbgsym
Si queremos modificar los límites de subida de archivos, abriremos el php.ini correspondiente a nuestra versión de PHP:
sudo nano /etc/php/8.0/apache2/php.ini
Ajustes del Firewall
Instalamos UFW
sudo apt install ufw
Lo activamos.
sudo ufw enable
Damos acceso a las siguientes conexiones:
sudo ufw allow 'WWW' sudo ufw allow 22/tcp
* En principi amb aquests és suficient
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Comprobamos que se han registrado correctamente:
sudo ufw status
Creamos el espacio web
sudo mkdir -p /var/www/html/your_domain.com sudo chown -R $USER:$USER /var/www/html/your_domain.com sudo chmod -R 755 /var/www/html/your_domain.com
Ya tenemos accesible el sitio mediante IP del servidor.
Configuramos el Virtual Host para que funcione a través de un dominio
sudo nano /etc/apache2/sites-available/your_domain.com.conf
Y añadimos las siguientes lineas:
<VirtualHost *:80>
ServerAdmin admin@your_email_domain
ServerName your_domain.com
ServerAlias www.your_domain.com
DocumentRoot /var/www/html/your_domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Activamos el archivo virtual host que acabamos de crear:
sudo a2ensite your_domain.com
Eliminamos la configuración por defecto
sudo a2dissite 000-default.conf
Reiniciamos Apache:
sudo systemctl restart apache2
Mod_rewrite
Para activar el mod_rewrite y hacer uso de las URL amigables, hay que editar el archivo apache2.conf
sudo nano /etc/apache2/apache2.conf
Y cambiar el AllowOverride a All, quedando de esta manera:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Reiniciar Apache
sudo systemctl restart apache2
Dar permisos al usuario debian y al grupo www-data
sudo chown -R debian:www-data /var/www/html
Sendmail
Para poder hacer uso de la función mail() de PHP es necesario instalar Sendmail:
sudo apt-get install sendmail
* Es importante crear un PTR record en las DNS del dominio, indicando la IP de la máquina. Algo tipo así (en un registro TXT/SPF): v=spf1 mx a ptr ip4: 51.68.47.69 include:srv.cat ~all
Fuentes
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-10
https://linuxize.com/post/how-to-set-up-apache-virtual-hosts-on-debian-10/
