Cómo instalar Apache, MariaDB y PHP (FAMP) Stack en FreeBSD


Esta guía describirá cómo instalar y configurar FBAMP en el sistema operativo FreeBSD, que es similar a una pila LAMP en Linux. FBAMP es un acrónimo que significa una colección de software basado en el sistema operativo FreeBSD, servidor HTTP Apache, el servidor web de código abierto más popular en Internet, sistema de administración de bases de datos relacionales MariaDB (RDBMS), una bifurcación del motor de base de datos MySQL y servidor PHP -lado.

Requisitos

  1. Una nueva instalación de FreeBSD
  2. Configuraciones iniciales de FreeBSD
  3. Acceso directo a la consola o SSH en caso de una conexión remota a FreeBSD.
  4. Una dirección IP estática configurada en una interfaz de red.

Paso 1: Instale Apache en FreeBSD

1. El primer servicio que instalaremos es el servidor HTTP Apache. Por defecto, FreeBSD ofrece múltiples versiones con diferentes módulos de trabajo en tiempo de ejecución para el servidor web Apache.

Las versiones están precompiladas en un paquete binario y las proporcionan los repositorios de FreeBSD PORTS. Para mostrar todos los binarios de paquetes de Apache proporcionados por PORTS, ejecute el siguiente comando.

# ls /usr/ports/www/ | grep apache

También puede buscar paquetes de Apache precompletados disponibles en FreeBSD emitiendo el siguiente comando.

# pkg search apache2

2. A continuación, instale la última versión del servidor HTTP Apache con todos los módulos necesarios emitiendo el siguiente comando.

# pkg install apache24

3. Una vez instalado el servidor web Apache en el sistema, ejecute el siguiente comando para habilitar el demonio en todo el sistema en FreeBSD.

# sysrc apache24_enable="yes"

Un método alternativo para habilitar el demonio Apache sería editar y agregar manualmente la línea apache24_enable u003d "yes" en el archivo /etc/rc.conf como se ilustra en la captura de pantalla siguiente.

4. Finalmente, para probar si el servidor web está funcionando correctamente, inicie el demonio Apache emitiendo el siguiente comando y visite la página web predeterminada apuntando un navegador a la dirección IP de su servidor de FQDN ( http:// IP-orFQDN ) como se muestra en la siguiente captura de pantalla.

# service apache24 start

El directorio webroot predeterminado del servidor web Apache en FreeBSD 11.x se encuentra en la ruta del sistema /usr/local/www/apache24/data/. Allí encontrará un pequeño archivo index.html que puede editar como prefiera.

Paso 2: Instale PHP en FreeBSD

5. FreeBSD 11.x ofrece múltiples versiones de lenguaje PHP interpretado del lado del servidor empaquetado en binarios precompletados. Para obtener una lista de todos los paquetes de versiones de PHP disponibles proporcionados por los repositorios de FreeBSD Ports, emita el siguiente comando.

# ls /usr/ports/lang/ | grep php

Un método alternativo para buscar todas las versiones de paquetes PHP de FreeBSD disponibles es ejecutando el siguiente comando.

# pkg search -o php

6. Para buscar todos los binarios disponibles proporcionados por FreeBSD para una versión específica de PHP (5 o 7 versiones actualmente) ejecute los siguientes comandos. Use menos comando para reducir y navegar a través de la salida.

# pkg search php5 |less
# pkg search php7

7. Para ser más específico sobre qué módulos proporciona una versión personalizada de PHP, ejecute el siguiente comando como se describe a continuación, que muestra todos los módulos disponibles para la versión PHP 7.1.

# pkg search php71

8. En esta guía, instalaremos la versión PHP 7.1 para nuestra pila FBAMP. Emita el siguiente comando para instalar PHP con algunos de los módulos más importantes necesarios para una instalación típica de CMS.

# pkg install php71 mod_php71 php71-mbstring php71-mcrypt php71-zlib php71-curl php71-gd php71-json 

9. A continuación, necesitamos crear el archivo de configuración php.conf para el servidor web Apache en/usr/local/etc/apache24/includes/system path con el siguiente contenido.

# nano /usr/local/etc/apache24/Includes/php.conf

Agregue las siguientes líneas al archivo php.conf.

<IfModule dir_module>
    DirectoryIndex index.php index.html
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
</IfModule>

10. Para probar si la puerta de enlace PHP funciona como se esperaba con el servidor web Apache, cree un archivo PHP info.php en/usr/local/www/apache24/data/system path, que es la ruta raíz predeterminada del documento web de Apache Servidor web.

# echo '<?php phpinfo();  ?>' | tee -a /usr/local/www/apache24/data/info.php

Reinicie el demonio de Apache para aplicar los cambios.

# service apache24 restart

A continuación, visite el siguiente URI en un navegador para ver el resumen de PHP.

http://IP-or-FQDN/info.php 

11. Para activar el archivo de configuración PHP ini para producción, emita los siguientes comandos. Puede modificar el archivo de producción php.ini para cambiar diversas configuraciones de PHP en su pila FBAMP.

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini-production.bakup
# ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Paso 3: Instale MariaDB en FreeBSD

12. El último componente que falta para nuestra pila FBAMP es el servidor de base de datos MySQL. FreeBSD 11.x ofrece más de 1000 paquetes para diversas bases de datos.

Para mostrar qué componentes están disponibles para las bases de datos MariaDB o MySQL, ejecute los siguientes comandos. En esta guía, instalaremos la base de datos MariaDB sobre MySQL (que ahora es propiedad de Oracle y está desarrollada activamente).

# ls -al /usr/ports/databases/ | grep mariadb
# pkg search -o mariadb
# ls -al /usr/ports/databases/ | grep mysql
# pkg search -o mysql5

13. En esta guía instalaremos la última versión del servidor de base de datos MariaDB en FreeBSD, que actualmente está representado por la versión del paquete binario mariadb102.

Ejecute el siguiente comando para instalar el servidor y el cliente MariaDB y el módulo PHP 7.1 necesario para acceder a la base de datos a través de la puerta de enlace del servidor Apache.

# pkg install mariadb102-server mariadb102-client php71-mysqli

14. A continuación, habilite el servidor MariaDB en todo el sistema e inicie el demonio de la base de datos ejecutando los siguientes comandos.

# sysrc mysql_enable="yes" 
# service mysql-server start

15. Para proteger la base de datos, ejecute el script mysql_secure_installation. Utilice el siguiente extracto de salida del script para fortalecer MariaDB.

# /usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

16. De forma predeterminada, el demonio MariaDB escucha las conexiones de red fuera de localhost en el puerto 3306/TCP. Ejecute el comando lsof o sockstat para obtener el estado del socket MariaDB. Esta configuración es peligrosa y expone el servicio a ataques de red externos.

# lsof -i4 -i6
# sockstat -4 -6

17. Si no necesita acceso remoto a MariaDB, asegúrese de que el daemon de MariaDB escuche solo localhost, emitiendo el siguiente comando. Posteriormente, reinicie el servicio MariaDB para aplicar los cambios.

# sysrc mysql_args="--bind-address=127.0.0.1"
# service mysql-server restart
or
# /usr/local/etc/rc.d/mysql-server restart

18. Nuevamente, ejecute el comando lsof o sockstat para listar el socket de red MariaDB. El socket debería enlazarse y escuchar en localhost ahora, como se ilustra en la imagen de abajo.

# lsof -i4 | grep mysql
# netstat -an | grep 3306
# sockstat -4 | grep 3306

19. Para probar la conectividad de la base de datos MariaDB desde la consola, emita el siguiente comando. Ingrese la contraseña de root de MySQL en el indicador y se debe mostrar una lista de bases de datos predeterminadas en la pantalla de su consola como se ilustra en la imagen de abajo.

# mysql -u root -p -e "show databases"

¡Eso es todo! Ha instalado correctamente el servidor web Apache con la base de datos MariaDB y el intérprete PHP en FreeBSD. Ahora puede comenzar a implementar un sitio web de WordPress en poco tiempo.

En el siguiente tutorial, discutiremos algunos temas avanzados de FPBAMP, como cómo habilitar y crear hosts virtuales Apache, habilitar el módulo de reescritura requerido por el archivo .htaccess para que funcione correctamente y cómo proteger las conexiones Apache mediante un certificado autofirmado o un certificado gratuito. Certificado ofrecido por la entidad Let's Encrypt.