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 ======
  
 +{{ :informatica:freebsd:fbsd_logo.png?380 |FreeBSD-12.1 }}
 +
 +¿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". Es un lenguaje de script de código abierto para propósitos generales. PHP es útil para el desarrollo web y para ejecutar software popular como MediaWiki, WordPress y más. PHP es fácil de aprender y le permite escribir páginas web generadas dinámicamente sobre la marcha. Esta página muestra cómo instalar PHP 7.4 en un cuadro FreeBSD v12.x Unix junto con el servidor web Nginx.
 +
 +==== FreeBSD instala PHP 7.4 con FPM para Nginx ====
 +
 +El procedimiento para instalar PHP 7.4 en FreeBSD es el siguiente:
 +
 +  -   Actualizar el árbol de **ports** de FreeBSD
 +  -   Instale el paquete binario PHP 7.4: **pkg install php74**
 +  -   Instalar paquete binario Nginx
 +  -   Configurar Nginx y PHP 7.4
 +  -   Active el servicio PHP-fpm en FreeBSD
 +  -   Probar la configuración
 +
 +Veamos todos los pasos en detalles.
 +===== 1. Actualizando el arbol de los ports =====
 +
 +Puede utilizar el comando  `portsnap` de la siguiente manera:
 +
 +  # portsnap fetch update
 +
 +
 +
 +==== 1.1.-Una vez actualizado podemos instalar los paquetes desde los ports ====
 +
 +{{ :informatica:freebsd:php7.png?610 |PHP-7.4 }}
 +
 +  # cd /usr/ports/lang/php74
 +  # 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 /usr/ports/lang/php74-extensions/
 +  # 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 'gd|mysqli|openssl|composer|json'
 +    
 +  icingaweb2-module-fileshipper-php74-1.1.0_3 Import CSV, JSON, XML and YAML files for the Icinga Director
 +  php74-composer-1.10.8          Dependency Manager for PHP
 +  php74-gd-7.4.8                 The gd shared extension for php
 +  php74-json-7.4.8               The json shared extension for php
 +  php74-mysqli-7.4.8             The mysqli shared extension for php
 +  php74-openssl-7.4.8            The openssl shared extension for php
 +  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/decode
 +  php74-pecl-crypto-0.3.1_2      Objective wrapper for OpenSSL Crypto Library
 +  php74-pecl-json_post-1.0.2     JSON POST handler in PHP
 +  php74-pecl-jsond-1.4.0         JavaScript Object Notation in PHP
 +
 +
 +Ahora podemos seleccionar los paquetes individuales, como ejemplo usaremos 3 de la lista:
 +
 +  # pkg install php74-gd php74-json php74-composer
 +
 +De esta forma podemos seleccionar los paquetes individuales.
 +
 +==== 1.3.-Instalamos Nginx ====
 +
 +{{ :informatica:nginx-logo.png?610 |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 `/usr/local/etc/php-fpm.d/www.conf` y busque la linea:
 +
 +  listen = 127.0.0.1:9000
 +
 +Y reemplacela por:
 +
 +
 +  listen = /var/run/php74-fpm.sock
 +
 +
 +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="YES"
 +
 +
 +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 /usr/local/etc/php.ini-production  /usr/local/etc/php.ini
 +
 +A continuación, vamos a asegurar PHP y personalizarlo, para ello debemos crear un archivo `99-custon.ini` de la siguiente forma:
 +
 +  # vim /usr/local/etc/php/99-custom.ini
 +  
 +  display_errors=Off
 +  safe_mode=Off
 +  safe_mode_exec_dir=
 +  safe_mode_allowed_env_vars=PHP_
 +  expose_php=Off
 +  log_errors=On
 +  error_log=/var/log/nginx/php.scripts.log
 +  register_globals=Off
 +  cgi.force_redirect=0
 +  file_uploads=On
 +  allow_url_fopen=Off
 +  sql.safe_mode=Off
 +  disable_functions=show_source, system, shell_exec, passthru,   proc_open, proc_nice, exec
 +  max_execution_time=60
 +  memory_limit=60M
 +  upload_max_filesize=2M
 +  post_max_size=2M
 +  cgi.fix_pathinfo=0
 +  sendmail_path=/usr/sbin/sendmail -f user@domain -t
 +
 +
 +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 /usr/local/etc/php-fpm.conf test is successful
 +  
 +  Stopping php_fpm.
 +  Waiting for PIDS: 57262.
 +  Performing sanity check on php-fpm configuration:
 +  [19-Jul-2020 14:01:17] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
 +  
 +  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 /usr/local/etc/nginx/nginx.conf
 +
 +O si tiene dominios virtuales:
 +
 +  # vim /usr/local/etc/nginx/vdomains/http.192.168.1.112.conf
 +  
 +Debemos agregar en la definición y dentro del bloque del server, lo siguiente:
 +
 +
 +  # php config let nginx talk to php socket
 +    location ~ [^/]\.php(/|$) {
 +        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
 +        if (!-f $document_root$fastcgi_script_name) {
 +                return 404;
 +        }
 +   
 +        # Mitigate https://httpoxy.org/ vulnerabilities
 +         fastcgi_param HTTP_PROXY "";
 +   
 +        fastcgi_pass unix:/var/run/php74-fpm.sock;
 +        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  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
 +    }
 +
 +
 +Aquí hay un archivo de configuración de muestra actualizado:
 +
 +
 +  server{
 +    server_name  192.168.1.112;
 +    access_log   /var/log/nginx/192.168.1.112.access.log;
 +    error_log    /var/log/nginx/192.168.1.112.error.log;
 +    root /usr/local/www;
 +    
 +    # php config let nginx talk to php socket
 +    location ~ [^/]\.php(/|$) {
 +        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
 +        if (!-f $document_root$fastcgi_script_name) {
 +            return 404;
 +        }
 +     
 +        # Mitigate https://httpoxy.org/ vulnerabilities
 +        fastcgi_param HTTP_PROXY "";
 +     
 +        fastcgi_pass unix:/var/run/php74-fpm.sock;
 +        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  SCRIPT_FILENAME   $document_root$fastcgi_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:www  /usr/local/www
 +  # chmod -R 0550     /usr/local/www
 +
 +
 +Abra su browser y compruebe que está funcionando:
 +
 +
 +  http://192.168.1.112/info.php
 +
 +{{ :informatica:freebsd:php-74.png?610 |FreeBSD-12.1 }}
 +
 +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 'www|nginx|php'
 +  
 +  sockstat -4lu | egrep --color 'www|nginx|php'
 +  www      nginx      87242 8  tcp4   *:80                  *:*
 +  www      php-fpm    82668 6  stream /var/run/php74-fpm.sock
 +  www      php-fpm    82660 6  stream /var/run/php74-fpm.sock
 +  root     php-fpm    82503 8  stream /var/run/php74-fpm.sock
 +  root     nginx      32802 8  tcp4   *:80                  *:*
 +
 +
 +También revise los archivos de registro si tiene algún problema al ejecutar PHP:
 +
 +  # ls -l /var/log/nginx
 +  # tail -f /var/log/nginx/192.168.1.112.access.log
 +  # tail -f /var/log/nginx/192.168.1.112.error.log
 +===== 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  funcional junto con PHP 7.4 para crear páginas web dinámicas a pedido.
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki