Cómo instalar FAMP en FreeBSD 13

En este artículo vamos a ver cómo instalar la pila FAMP en FreeBSD 13 paso a paso, un conjunto de servicios que nos permitirán instalar o desarrollar en nuestro servidor o VPS FreeBSD potentes aplicaciones web que trabajan sobre bases de datos.

Antes de instalar la pila FAMP en FreeBSD 13

Si quieres seguir los pasos de esta guía de instalación de la pila FAMP en FreeBSD 13 será necesario satisfacer básicamente los siguientes requerimientos:

Como ya cumplirás todos estos requisitos, es el momento de regular la altura más cómoda para nuestra mesa y abrir una terminal de consola.

¡Ahorra 31,00 EUR!Bestseller No. 2 VASAGLE Escritorio Eléctrico de Altura Regulable, 60 x 140 x (72-120) cm, Ajuste Continuo, Función de Memoria con 4 Alturas, Marrón Rústico LSD174X01
¡Ahorra 30,00 EUR!Bestseller No. 3 MAIDeSITe Escritorio ELÉCTRICO Soporte de Escritorio Ajustable en Altura, Escritorio de pie, Marco de 2 ETAPAS con Motor ÚNICO

Cómo instalar la pila FAMP en FreeBSD 13

Para instalar los componentes de la pila FAMP en FreeBSD 13, es decir, Apache, PHP y MySQL o MariaDB, usaremos paquetes procedentes de los repositorios del sistema, por lo que el primer paso será actualizar su información:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo pkg update
~$ sudo pkg update
~$ sudo pkg update

Ahora ya podemos instalar los paquetes de los distintos servicios necesarios.

Apache y PHP

Instalaremos el servicio web y el lenguaje de programación teniendo en cuenta la versión de este último que nos interese, ya que disponemos de la 8.1, 8.2 y 8.3.

Por ejemplo, para la versión 8.1:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo pkg install -y apache24 php81-mysqli mod_php81
~$ sudo pkg install -y apache24 php81-mysqli mod_php81
~$ sudo pkg install -y apache24 php81-mysqli mod_php81

O si preferimos la versión más reciente, la 8.3:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo pkg install -y apache24 php83-mysqli mod_php83
~$ sudo pkg install -y apache24 php83-mysqli mod_php83
~$ sudo pkg install -y apache24 php83-mysqli mod_php83

Tras la instalación de estos paquetes y sus dependencias ya dispondremos del servicio web Apache trabajando con PHP en forma de módulo.

MySQL o MariaDB

En cuanto al servicio de bases de datos tenemos dos opciones, MySQL o MariaDB.

En el caso de optar por MySQL podemos elegir entre las versiones 8.0 y 8.1 (paquetes mysql80-server y mysql81-server respectivamente); por ejemplo, para instalar la versión 8.1 lo haremos con el siguiente comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo pkg install -y mysql80-server
~$ sudo pkg install -y mysql80-server
~$ sudo pkg install -y mysql80-server

Si prefieres MariaDB puedes elegir entre las versiones 10.5, 10.6 y 10.11 (paquetes mariadb105-server, mariadb106-server y mariadb1011-server respectivamente); por ejemplo, para instalar la versión 10.6 podemos hacerlo con este otro comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo pkg install -y mariadb106-server
~$ sudo pkg install -y mariadb106-server
~$ sudo pkg install -y mariadb106-server

Configuración de los elementos de la pila FAMP en FreeBSD 13

MySQL

El servicio está listo para iniciar, así que lo habilitamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service mysql-server enable
~$ sudo service mysql-server enable
~$ sudo service mysql-server enable

Y lo iniciamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service mysql-server start
~$ sudo service mysql-server start
~$ sudo service mysql-server start

Por defecto el usuario root no tiene contraseña, algo que deberíamos solucionar de inmediato, conectando al servicio con el cliente de consola mysql:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mysql -u root
~$ mysql -u root
~$ mysql -u root

Crearemos la contraseña de root con el siguiente comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> alter user root@localhost identified by 'XXXXXXXX';
> alter user root@localhost identified by 'XXXXXXXX';
> alter user root@localhost identified by 'XXXXXXXX';

Y cerramos la sesión:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> exit
> exit
> exit

Ahora para acceder al servicio como root hay que usar la nueva contraseña, por ejemplo, con el cliente mysql:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~ $ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.35 Source distribution
...
>
~ $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.35 Source distribution ... >
~ $ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.35 Source distribution
...
>

MariaDB

Habilitamos el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service mysql-server enable
~$ sudo service mysql-server enable
~$ sudo service mysql-server enable

Y lo iniciamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service mysql-server start
~$ sudo service mysql-server start
~$ sudo service mysql-server start

Para iniciar sesión como root con el cliente de consola mysql hay que usar sudo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo mysql
~$ sudo mysql
~$ sudo mysql

Iniciada la sesión, opcionalmente podríamos crear un usuario administrador alternativo con contraseña:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> grant all privileges on *.* to instalador@localhost identified by 'XXXXXXXX' with grant option;
> grant all privileges on *.* to instalador@localhost identified by 'XXXXXXXX' with grant option;
> grant all privileges on *.* to instalador@localhost identified by 'XXXXXXXX' with grant option;

Si lo hacemos, podemos cerrar la sesión:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> exit
> exit
> exit

Y volver a acceder, esta vez usando el nuevo administrador y su contraseña:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mysql -u instalador -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.6.17-MariaDB FreeBSD Ports
...
>
~$ mysql -u instalador -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 7 Server version: 10.6.17-MariaDB FreeBSD Ports ... >
~$ mysql -u instalador -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.6.17-MariaDB FreeBSD Ports
...
>

En cualquier caso, hay algunas acciones que podemos realizar para mejorar la seguridad del servicio, como eliminar la base de datos de pruebas:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> drop database test;
> drop database test;
> drop database test;

También hay usuarios anónimos, lo que podemos comprobar con la siguiente sentencia:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> select user,host from mysql.user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| | freebsd13 |
| | localhost |
...
>
> select user,host from mysql.user; +-------------+-----------+ | User | Host | +-------------+-----------+ | | freebsd13 | | | localhost | ... >
> select user,host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
|             | freebsd13 |
|             | localhost |
...
>

Concretamente son dos los usuarios anónimos que se crean, uno con acceso desde localhost y otro con el nombre de la máquina FreeBSD 13. Los borraremos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> drop user ''@localhost;
> drop user ''@freebsd13;
> drop user ''@localhost; > drop user ''@freebsd13;
> drop user ''@localhost;
> drop user ''@freebsd13;

Ya podemos cerrar la sesión:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> exit
> exit
> exit

Un ajuste que seguramente queremos hacer es cambiar el juego de caracteres por defecto latin1 a utf8mb4. Para ello editamos el archivo de configuración:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/etc/mysql/conf.d/server.cnf
~$ sudo nano /usr/local/etc/mysql/conf.d/server.cnf
~$ sudo nano /usr/local/etc/mysql/conf.d/server.cnf

Y en la sección server añadimos las dos siguientes directivas:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
[server]
...
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
...
... [server] ... character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci ...
...
[server]
...
character_set_server    = utf8mb4
collation_server        = utf8mb4_unicode_ci
...

Guardamos el archivo y reiniciamos el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service mysql-server restart
~$ sudo service mysql-server restart
~$ sudo service mysql-server restart

PHP

Debemos realizar algunos ajustes en el archivo php.ini, siendo el primer paso crear dicho fichero a partir de uno de los dos archivos de muestra preinstalados, php.ini-development y php.ini-production. Uno de los archivos está orientado a entornos de desarrollo y el otro a entornos de producción.

Si estamos preparando un servidor de desarrollo crearemos el archivo php.ini a partir del archivo php.ini-development:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
~$ sudo cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
~$ sudo cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini

Y si se trata de un servidor para producción lo haremos con el otro archivo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
~$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
~$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Ahora podemos editar el nuevo archivo php.ini:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/etc/php.ini
~$ sudo nano /usr/local/etc/php.ini
~$ sudo nano /usr/local/etc/php.ini

Un ajuste que deberíamos realizar siempre es configurar la zona horaria del servidor a través de la directiva date.timezone:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
;date.timezone =
...
... ;date.timezone = ...
...
;date.timezone =
...

Activamos esta directiva eliminando el carácter ; inicial y le damos el valor adecuado a nuestra zona horaria:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
date.timezone = Europe/Madrid
...
... date.timezone = Europe/Madrid ...
...
date.timezone = Europe/Madrid
...

Si no conoces el valor de la zona horaria que te interese puedes consultarla en esta sección de la documentación de PHP.

Otro ajuste muy importante es la ubicación del archivo de socket del servicio de bases de datos, así que buscaremos las siguientes directivas:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
pdo_mysql.default_socket=
...
mysqli.default_socket =
...
... pdo_mysql.default_socket= ... mysqli.default_socket = ...
...
pdo_mysql.default_socket=
...
mysqli.default_socket =
...

Y les daremos el valor adecuado que para MariaDB es /var/run/mysql/mysql.sock:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
pdo_mysql.default_socket=/var/run/mysql/mysql.sock
...
mysqli.default_socket = /var/run/mysql/mysql.sock
...
... pdo_mysql.default_socket=/var/run/mysql/mysql.sock ... mysqli.default_socket = /var/run/mysql/mysql.sock ...
...
pdo_mysql.default_socket=/var/run/mysql/mysql.sock
...
mysqli.default_socket = /var/run/mysql/mysql.sock
...

Y para MySQL es /tmp/mysql.sock:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
pdo_mysql.default_socket=/tmp/mysql.sock
...
mysqli.default_socket = /tmp/mysql.sock
...
... pdo_mysql.default_socket=/tmp/mysql.sock ... mysqli.default_socket = /tmp/mysql.sock ...
...
pdo_mysql.default_socket=/tmp/mysql.sock
...
mysqli.default_socket = /tmp/mysql.sock
...

Conviene comprobar que sea ese el archivo de socket, cambiando el valor si fuera otro.

Cualquier otro ajuste necesario se haría de forma similar.

Ya podemos guardar y cerrar este archivo.

Servicio web

Aunque no es necesario, para evitar continuos mensajes de aviso es interesante realizar el siguiente ajuste en el archivo de configuración principal:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/etc/apache24/httpd.conf
~$ sudo nano /usr/local/etc/apache24/httpd.conf
~$ sudo nano /usr/local/etc/apache24/httpd.conf

Buscamos la directiva ServerName:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
#ServerName www.example.com:80
...
... #ServerName www.example.com:80 ...
...
#ServerName www.example.com:80
...

Eliminamos el carácter # al inicio de línea y cambiamos el valor por el nombre de la máquina FreeBSD 13:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
ServerName freebsd13.local.lan:80
...
... ServerName freebsd13.local.lan:80 ...
...
ServerName freebsd13.local.lan:80
...

Ya podemos guardar el archivo.

Este ajuste nos ahorrará continuos mensajes de aviso sobre la no existencia del nombre del servidor.

Por otro lado configuraremos el módulo de PHP creando un archivo como el siguiente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/etc/apache24/Includes/php.conf
~$ sudo nano /usr/local/etc/apache24/Includes/php.conf
~$ sudo nano /usr/local/etc/apache24/Includes/php.conf

El contenido será el siguiente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
<IfModule dir_module> DirectoryIndex index.php </IfModule> <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
<IfModule dir_module>
        DirectoryIndex index.php
</IfModule>

<FilesMatch "\.php$">
        SetHandler application/x-httpd-php
</FilesMatch>

<FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
</FilesMatch>

Guardamos el archivo y el servicio web quedará listo para ser usado con el resto de la configuración por defecto, así que lo habilitamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service apache24 enable
~$ sudo service apache24 enable
~$ sudo service apache24 enable

Y lo iniciamos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo service apache24 start
~$ sudo service apache24 start
~$ sudo service apache24 start

Cómo comprobar el funcionamiento de la pila FAMP en FreeBSD 13

Para comprobar el funcionamiento de la pila LAMP en nuestro sistema FreeBSD 13 podemos crear un sencillo script en PHP que lanzaremos desde un navegador.

Creamos este archivo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/local/www/apache24/data/info.php
~$ sudo nano /usr/local/www/apache24/data/info.php
~$ sudo nano /usr/local/www/apache24/data/info.php

El contenido será únicamente la siguiente línea:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php phpinfo();
<?php phpinfo();
<?php phpinfo();

Guardamos el archivo y abrimos un navegador web, donde introduciremos como URL la dirección (IP, nombre DNS, dominio, localhost si trabajamos localmente, etc.) y el nombre del script.

Por ejemplo, la máquina FreeBSD 13 que usamos para preparar este tutorial es accesible en el subdominio freebsd13.local.lan, así que podemos usar http://freebsd13.local.lan/info.php como URL:

como instalar la pila famp en freebsd 13

Se mostrará gran cantidad de información sobre la configuración y funcionamiento del servicio web y el módulo PHP, indicando la versión instalada.

El resultado es el mismo para cualquier versión:

como instalar y configurar la pila famp en freebsd 13

Incluso la última disponible:

como configurar la pila famp en freebsd 13

¡Todo listo!

Conclusión

Ahora que sabes cómo instalar y configurar la pila LAMP en FreeBSD 13 ya tienes la base mínima necesaria para empezar a desarrollar potentes aplicaciones web, o para instalar las de terceros.

Si te ha surgido alguna duda, tienes sugerencias, quieres notificar algún error, etc. puedes dejar un comentario. Los comentarios se moderan para tratar de evitar el SPAM, pero se revisan a diario.

¡Apoya comoinstalar.me!

¿Ya funciona en tu máquina gracias a nuestra guía? Si es así y quieres agradecérnoslo cualquier pequeña contribución al mantenimiento y desarrollo de este sitio siempre es bienvenida. Además, se priorizan las solicitudes de actualización de los tutoriales y la ayuda a posibles problemas durante la instalación.

Puedes ayudarnos dejando una popina desde 1 $ con PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (2 votos)

Deja un comentario