Diferencias
Muestra las diferencias entre dos versiones de la página.
| — | informatica:unix_freebsd:fbsd-php-gnx [2021/02/21 23:32] (actual) – creado - editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== FreeBSD-12, PHP-7.4,FPM en Nginx ====== | ||
| + | {{ : | ||
| + | |||
| + | ¿Cómo instalo instalar PHP 7.4 con FPM para el servidor web Nginx que se ejecuta en el sistema operativo FreeBSD? | ||
| + | |||
| + | ===== Introducción ===== | ||
| + | |||
| + | PHP es un acrónimo de "PHP: preprocesador de hipertexto" | ||
| + | |||
| + | ==== FreeBSD instala PHP 7.4 con FPM para Nginx ==== | ||
| + | |||
| + | El procedimiento para instalar PHP 7.4 en FreeBSD es el siguiente: | ||
| + | |||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | - | ||
| + | |||
| + | Veamos todos los pasos en detalles. | ||
| + | ===== 1. Actualizando el arbol de los ports ===== | ||
| + | |||
| + | Puede utilizar el comando | ||
| + | |||
| + | # portsnap fetch update | ||
| + | |||
| + | |||
| + | |||
| + | ==== 1.1.-Una vez actualizado podemos instalar los paquetes desde los ports ==== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | # cd / | ||
| + | # make install clean | ||
| + | |||
| + | |||
| + | La otra alternativa es utilizar los PKG para instalar sin compilar en la maquina local, aunque si puede es mejor compilar en la misma maquina, para instalar desde los `pkg` debemos ejecutar en un terminal: | ||
| + | |||
| + | |||
| + | # pkg install php74 | ||
| + | |||
| + | |||
| + | ==== 1.2.-Instalando las extensiones de PHP 7.4 ==== | ||
| + | |||
| + | Para instalar el **port**, ejecute el siguiente comando y elija las extensiones requeridas: | ||
| + | |||
| + | # cd / | ||
| + | # make install clean | ||
| + | |||
| + | La otra alternativa es usar los `PKG`: | ||
| + | |||
| + | # pkg install php74-extensions | ||
| + | |||
| + | Otra opción es instalar extensiones PHP individuales según las necesidades de su aplicación web o proyecto de software. Se pueden buscar extensiones PHP 7.4 utilizando el comando pkg y el comando grep/egrep | ||
| + | |||
| + | |||
| + | pkg search php74 | egrep -i --color ' | ||
| + | | ||
| + | icingaweb2-module-fileshipper-php74-1.1.0_3 Import CSV, JSON, XML and YAML files for the Icinga Director | ||
| + | php74-composer-1.10.8 | ||
| + | php74-gd-7.4.8 | ||
| + | php74-json-7.4.8 | ||
| + | php74-mysqli-7.4.8 | ||
| + | php74-openssl-7.4.8 | ||
| + | php74-pear-MDB2_Driver_mysqli-1.5.0.b4 PEAR MySQL MDB2 driver | ||
| + | php74-pear-Services_JSON-1.0.3 PHP implementation of json_encode/ | ||
| + | php74-pecl-crypto-0.3.1_2 | ||
| + | php74-pecl-json_post-1.0.2 | ||
| + | php74-pecl-jsond-1.4.0 | ||
| + | |||
| + | |||
| + | Ahora podemos seleccionar los paquetes individuales, | ||
| + | |||
| + | # pkg install php74-gd php74-json php74-composer | ||
| + | |||
| + | De esta forma podemos seleccionar los paquetes individuales. | ||
| + | |||
| + | ==== 1.3.-Instalamos Nginx ==== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Para instalar el PKG de nginx en una terminal con privilegios de **root** debemos ejecutar: | ||
| + | |||
| + | # pkg install nginx | ||
| + | |||
| + | Una vez terminado tendremos instalado el servidor web con las configuraciones por defecto. | ||
| + | ===== 2.Configurando PHP-FPM ===== | ||
| + | |||
| + | Edite el archivo `/ | ||
| + | |||
| + | listen = 127.0.0.1: | ||
| + | |||
| + | Y reemplacela por: | ||
| + | |||
| + | |||
| + | listen = / | ||
| + | |||
| + | |||
| + | Y descomente en el mismo archivo las lineas siguientes: | ||
| + | |||
| + | |||
| + | listen.owner = www | ||
| + | listen.group = www | ||
| + | listen.mode = 0660 | ||
| + | |||
| + | |||
| + | Guarde y cierre el archivo. Habilitar el servicio php-fpm: | ||
| + | |||
| + | |||
| + | # sysrc php_fpm_enable=" | ||
| + | |||
| + | |||
| + | Puede reiniciar, arrancar, detener el servicio con los comandos: | ||
| + | |||
| + | |||
| + | # service php-fpm start | ||
| + | # service php-fpm restart | ||
| + | # service php-fpm stop | ||
| + | # service php-fpm status | ||
| + | |||
| + | ===== 3.Una nota de la Configuración de PHP-7.4 ===== | ||
| + | |||
| + | Necesita instalar el archivo php.ini usando el comando php: | ||
| + | |||
| + | # cp -v / | ||
| + | |||
| + | A continuación, | ||
| + | |||
| + | # vim / | ||
| + | | ||
| + | display_errors=Off | ||
| + | safe_mode=Off | ||
| + | safe_mode_exec_dir= | ||
| + | safe_mode_allowed_env_vars=PHP_ | ||
| + | expose_php=Off | ||
| + | log_errors=On | ||
| + | error_log=/ | ||
| + | register_globals=Off | ||
| + | cgi.force_redirect=0 | ||
| + | file_uploads=On | ||
| + | allow_url_fopen=Off | ||
| + | sql.safe_mode=Off | ||
| + | disable_functions=show_source, | ||
| + | max_execution_time=60 | ||
| + | memory_limit=60M | ||
| + | upload_max_filesize=2M | ||
| + | post_max_size=2M | ||
| + | cgi.fix_pathinfo=0 | ||
| + | sendmail_path=/ | ||
| + | |||
| + | |||
| + | Guarde y cierre el archivo. Reinicie PHP en FreeBSD: | ||
| + | |||
| + | # service php-fpm restart | ||
| + | | ||
| + | Performing sanity check on php-fpm configuration: | ||
| + | [19-Jul-2020 14:01:17] NOTICE: configuration file / | ||
| + | | ||
| + | Stopping php_fpm. | ||
| + | Waiting for PIDS: 57262. | ||
| + | Performing sanity check on php-fpm configuration: | ||
| + | [19-Jul-2020 14:01:17] NOTICE: configuration file / | ||
| + | | ||
| + | Starting php_fpm. | ||
| + | |||
| + | ===== 4.Configurando Nginx para usar PHP 7.4 (PHP-FPM) ===== | ||
| + | |||
| + | El último paso es conectar Nginx al servicio PHP-FPM a través del protocolo FCGI. Edite su dominio virtual o el archivo nginx.conf de la siguiente manera: | ||
| + | |||
| + | # vim / | ||
| + | |||
| + | O si tiene dominios virtuales: | ||
| + | |||
| + | # vim / | ||
| + | | ||
| + | Debemos agregar en la definición y dentro del bloque del server, lo siguiente: | ||
| + | |||
| + | |||
| + | # php config let nginx talk to php socket | ||
| + | location ~ [^/ | ||
| + | fastcgi_split_path_info ^(.+? | ||
| + | if (!-f $document_root$fastcgi_script_name) { | ||
| + | return 404; | ||
| + | } | ||
| + | |||
| + | # Mitigate https:// | ||
| + | | ||
| + | |||
| + | fastcgi_pass unix:/ | ||
| + | fastcgi_index index.php; | ||
| + | |||
| + | # include the fastcgi_param setting | ||
| + | include fastcgi_params; | ||
| + | |||
| + | # SCRIPT_FILENAME parameter is used for PHP FPM determining | ||
| + | # the script name. | ||
| + | fastcgi_param | ||
| + | } | ||
| + | |||
| + | |||
| + | Aquí hay un archivo de configuración de muestra actualizado: | ||
| + | |||
| + | |||
| + | server{ | ||
| + | server_name | ||
| + | access_log | ||
| + | error_log | ||
| + | root / | ||
| + | | ||
| + | # php config let nginx talk to php socket | ||
| + | location ~ [^/ | ||
| + | fastcgi_split_path_info ^(.+? | ||
| + | if (!-f $document_root$fastcgi_script_name) { | ||
| + | return 404; | ||
| + | } | ||
| + | |||
| + | # Mitigate https:// | ||
| + | fastcgi_param HTTP_PROXY ""; | ||
| + | |||
| + | fastcgi_pass unix:/ | ||
| + | fastcgi_index index.php; | ||
| + | |||
| + | # include the fastcgi_param setting | ||
| + | include fastcgi_params; | ||
| + | |||
| + | # SCRIPT_FILENAME parameter is used for PHP FPM determining | ||
| + | # the script name. | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | Ahora debe recargar el servicio: | ||
| + | ===== 5.Prueba de Configuración ===== | ||
| + | |||
| + | Creemos un archivo que llameremos **info.php** con el siguiente contenido: | ||
| + | |||
| + | <?php | ||
| + | phpinfo(); | ||
| + | phpinfo(INFO_MODULES); | ||
| + | ?> | ||
| + | |||
| + | |||
| + | Guarde y cierre el archivo. Establezca permisos de archivo ajustados en DocumentRoot (raíz del servidor web): | ||
| + | |||
| + | # chown -R www: | ||
| + | # chmod -R 0550 / | ||
| + | |||
| + | |||
| + | Abra su browser y compruebe que está funcionando: | ||
| + | |||
| + | |||
| + | http:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Y allí tienes PHP funcionando como se esperaba y Nginx está hablando con PHP-FPM a través del socket Unix. | ||
| + | ===== 6.Cómo verificar que PHP-fpm se esté ejecutando ===== | ||
| + | |||
| + | Use el comando sockstat en FreeBSD para enumerar los servicios en ejecución, los puertos abiertos y los sockets de Unix: | ||
| + | |||
| + | # sockstat -46lu | egrep --color ' | ||
| + | | ||
| + | sockstat -4lu | egrep --color ' | ||
| + | www nginx 87242 8 tcp4 | ||
| + | www php-fpm | ||
| + | www php-fpm | ||
| + | root | ||
| + | root | ||
| + | |||
| + | |||
| + | También revise los archivos de registro si tiene algún problema al ejecutar PHP: | ||
| + | |||
| + | # ls -l / | ||
| + | # tail -f / | ||
| + | # tail -f / | ||
| + | ===== 7.Conclusión ===== | ||
| + | |||
| + | Esta guía demostró cómo instalar PHP FPM de forma segura y configurarlo con un socket de Unix. Ahora tiene un servidor Nginx totalmente | ||