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 |