AnuncioEsta guía está destinada a operar una aplicación WordPress o similar basada en PHP-MySQL en un servidor dedicado o en la nube/VPS con 12 GB a 16 GB. Puede utilizar un servidor de cualquier servidor web de su elección. Podemos sugerirle que utilice instancias VPSDime OpenVZ para sitios web pequeños y medianos. Las instancias de conexión de 6 GB de RAM y 10 Gbps le costarán $ 7,00 al mes. Si necesita recursos dedicados, puede probar su VPS KVM premium. Si no puede seguir esta guía, puede solicitarles que la completen por una pequeña tarifa. Los enlaces que le hemos proporcionado son enlaces de afiliados. Nuevamente, puede usar un servidor de cualquier servidor web de su elección, como Ionos, Linode, Digital Ocean, Hostgator, Namecheap, Vultr, etc., por nombrar algunos. Antes de seguir esta guía, debe completar estos dos pasos: Para esta guía , utilizaremos los repositorios PHP de Ondřej Surý. No debes ser el usuario root en SSH. Si ejecuta estos comandos como usuario root, más adelante se producirá una situación compleja para la gestión de archivos, además de los riesgos de seguridad. En esta guía, hemos dado un ejemplo con PHP 7.2 porque no sabemos si su aplicación web es compatible con la última versión de PHP. Cómo instalar PHP y Apache2 en Ubuntu 22.04 sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo add-apt-repository ppa:ondrej/apache2 sudo apt update sudo apt install apache2 apache2-doc apache2-utilssudo apt-get install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt actualizacionesudo add-apt-repository ppa:ondrej/apache2sudo apt actualizacionessudo apt install apache2 apache2-doc apache2-utilsEn este guía, hemos dado un ejemplo con PHP 7.2 porque no sabemos si su aplicación web es compatible con la última versión de PHP. Siempre puedes cambiar entre diferentes versiones de PHP (por ejemplo, PHP 8.x a PHP 7.x o viceversa): sudo update-alternatives –config phpsudo update-alternatives –config phpLa versión de PHP que usarás es tu asunto. Muchos se ven obligados a utilizar PHP 7.2, 7.4, etc. por problemas de compatibilidad. Este comando instalará todos los componentes necesarios para ejecutar PHP-FPM para la versión 7.2: apt-get -y install libapache2-mod-php php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2- imap php7.2-cli php7.2-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2 -recodificar php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php-imagick php7.2-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap php7. 2-fpmapt-get -y instalar libapache2-mod-php php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi libapache2-mod- fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2 -xmlrpc php7.2-xsl php-imagick php7.2-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap php7.2-fpmCambie el número de versión de PHP de 7.2 a la versión requerida (como 8.2, 8.3). Puede buscar módulos en el repositorio para su versión de PHP: Completar este paso requiere su atención ya que PHP es lo principal para el software web basado en PHP-MySQL. Primero, deshabilite mod_php:A continuación, deshabilite mod prefork: sudo a2dismod mpm_preforksudo a2dismod mpm_preforkEnable mpm_event:Active los módulos Apache2 requeridos: sudo apt install php7.2-fpm sudo apt install libapache2-mod-fcgid sudo a2enconf php7.2-fpm sudo a2enmod proxy sudo a2enmod proxy_fcgisudo apt install php7.2-fpmsudo apt install libapache2-mod-fcgidsudo a2enconf php7.2-fpm sudo a2enmod proxysudo a2enmod proxy_fcgiAhora verifique el siguiente archivo de configuración: cat /etc/apache2/conf-enabled/php7.2-fpm .confcat /etc/apache2/conf-enabled/php7.2-fpm.confEsto no debe estar vacío. Ejecute la prueba de configuración y reinicie Apache: sudo apachectl configtest sudo systemctl restart apache2sudo apachectl configtestsudo systemctl restart apache2Ahora su sitio debería estar ejecutándose en PHP-FPM. sudo apachectl -M | grep ‘mpm’sudo apachectl -M | La salida de grep ‘mpm’ será la siguiente: mpm_event_module (compartido)mpm_event_module (compartido) Verifique el módulo proxy y FastCGI: sudo apachectl -M | grep ‘proxy’ ## salida # proxy_module (compartido) # proxy_fcgi_module (compartido)sudo apachectl -M | grep ‘proxy’## salida# proxy_module (compartido)# proxy_fcgi_module (compartido)Cree una página web de información PHP y compruébela desde el navegador: sudo nano /var/www/html/info.phpsudo nano /var/www/html/info. phpPegue este contenido:No olvide eliminar este archivo después de verificarlo. Para evitar que el servidor sufra ataques HTTPOXY, crearemos el archivo httpoxy.conf: nano /etc/apache2/conf-available/httpoxy.confnano /etc/apache2/conf-available/httpoxy.confPegue esta configuración: RequestHeader unset Proxy early RequestHeader desarmar Proxy temprano Guarde el archivo. Habilite el archivo de configuración HTTPOXY y reinicie Apache: a2enconf httpoxy # active el módulo de encabezados para evitar el error de apache2 sudo a2enmod headers sudo systemctl restart apache2a2enconf httpoxy# active el módulo de encabezados para evitar los errores de apache2udo a2enmod headerssudo systemctl restart apache2 Optimizando Apache2 mpm_event y PHP-FPM Abra mpm_event archivo de configuración: nano /etc/apache2/mods-enabled/mpm_event.confnano /etc/apache2/mods-enabled/mpm_event.confAdd/modify para reflejar el siguiente contenido:

KeepAlive activado KeepAliveTimeout 5 MaxKeepAliveRequests 128 ServerLimit 10 StartServers 4 ThreadLimit 128 ThreadsPerChild 128 MinSpareThreads 256 MaxSpareThreads 512 MaxRequestWorkers 1280 MaxConnectionsPerChild 2048
KeepAlive activado KeepAliveTimeout 5 MaxKeepAliveRequests 128 ServerLimit 10 StartServers 4 ThreadLimit 128 ThreadsPerChild 128 MinSpareThreads 256 MaxSpareThreads 512 MaxRequestWorkers 1280 MaxConnectionsPerChild 2048Pruébelo: sudo systemctl restart apache2 cd ~ apt install python wget https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py chmod a+x ps_mem.py sudo python ps_mem.pysudo systemctl restart apache2cd ~apt install pythonwget https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.pychmod a+x ps_mem.pysudo python ps_mem.py En mi servidor dedicado de prueba de 16 GB, estaba consumiendo 2 GB de RAM: Programa privado + compartido = RAM utilizada. .. … 113,3 MiB + 11,3 MiB = 124,6 MiB apache2 (5) 1,3 GiB + 652,9 MiB = 2,0 GiB php-fpm7.2 (31) 3,0 GiB + 390,5 KiB = 3,0 GiB mysqld ——– ————————- 5,3 GiB Privado + Compartido = RAM utilizada Programa ……113,3 MiB + 11,3 MiB = 124,6 MiB apache2 ( 5) 1,3 GiB + 652,9 MiB = 2,0 GiB php-fpm7.2 (31) 3,0 GiB + 390,5 KiB = 3,0 GiB mysqld———————– ———- 5.3 GiBOabra el archivo de configuración PHP-FPM: nano /etc/php/7.2/fpm/pool.d/​www.confnano /etc/php/7.2/fpm/pool.d/ ​www.confAjuste estos parámetros: pm = dinámico pm.max_children = 100 pm.start_servers = 20 pm.min_spare_servers = 10 pm.max_spare_servers = 30 pm.process_idle_timeout = 10s;pm = dinámicopm.max_children = 100 pm.start_servers = 20 pm. min_spare_servers = 10 pm.max_spare_servers = 30 pm.process_idle_timeout = 10s; Puede ajustar los valores a valores más altos más adelante después de leer diversa documentación y guías disponibles en Internet. Hemos intentado ofrecer un entorno equilibrado. Reinicie Apache y PHP-FPM: sudo systemctl restart php7.2-fpm sudo systemctl restart apache2sudo systemctl restart php7.2-fpm sudo systemctl restart apache2Normalmente, no necesitará más optimización para ejecutar un solo dominio. Para agregar varios sitios web (separados entre sí), debe agregar un nuevo usuario de Apache y agregar un nuevo archivo de configuración en /etc/php/7.2/fpm/pool.d. Habilite HTTP/2 desde el archivo de host virtual y pruébelo. Puede enumerar los módulos que Apache2 ha cargado: Este es nuestro resultado: Módulos cargados: core_module (estático) so_module (estático) watchdog_module (estático) http_module (estático) log_config_module (estático) logio_module (estático) version_module (estático) unixd_module (estático) access_compat_module (compartido) alias_module (compartido) auth_basic_module (compartido) authn_core_module (compartido) authn_file_module (compartido) authz_core_module (compartido) authz_host_module (compartido) authz_user_module (compartido) autoindex_module (compartido) brotli_module (compartido) deflate_module (compartido) dir_module (compartido) env_ módulo (compartido ) expires_module (compartido) fcgid_module (compartido) filtre_module (compartido) geoip_module (compartido) encabezados_module (compartido) http2_module (compartido) mime_module (compartido) mpm_event_module (compartido) negociación_module (compartido) proxy_module (compartido )_farmy_module (compartido) compartido) reqTimeOut_module (compartido) rewrite_module (compartido) setenvif_module (compartido) slotmem_shm_module (compartido) socache_dbm_module (compartido) socache_shmcb_module (compartido) ssl_module (compartido) status_module (compartido) Unique_id_module (compartido)1234567891011121314151617181920 2122232425262728293031323334353637383940414243Módulos cargados: core_module (estático) so_module (estático) watchdog_module (estático) http_module (estático) log_config_module (estático) logio_module (estático) version_module (estático) unixd_module (estático) access_compat_module (compartido) alias_module (compartido) auth_basic_module (compartido) authn_core_module (compartido) authn_file_module (compartido) authz_core_module (compartido) authz_host_module (compartido) authz_user_modul mi ( compartido) autoindex_module (compartido) brotli_module (compartido) deflate_module (compartido) dir_module (compartido) env_module (compartido) expires_module (compartido) fcgid_module (compartido) filter_module (compartido) geoip_module (compartido) headers_module (compartido) http2_module (compartido) mime_module (compartido) mpm_event_module (compartido) negociación_module (compartido) proxy_module (compartido) proxy_fcgi_module (compartido) python_module (compartido) reqtimeout_module (compartido) rewrite_module (compartido) setenvif_module (compartido) slotmem_shm_module (compartido) socache_dbm_module (compartido) socache_shmcb_module (compartido) s sl_module (compartido) status_module ( compartido) Unique_id_module (compartido) Puede instalar y activar los módulos de esta manera: sudo a2enmod expira sudo apachectl configtest # busque la sintaxis OK sudo systemctl restart apache2sudo a2enmod expiressudo apachectl configtest# busque la sintaxis OK sudo systemctl restart apache2 Tomará tiempo instalarlo todos los módulos. Apache en Ubuntu 22.04 tiene un bloque de servidor habilitado de forma predeterminada que está configurado para entregar documentos desde el directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede volverse complejo si aloja varios sitios. Sus archivos de host virtual se encuentran aquí: /etc/apache2/sites-available//etc/apache2/sites-available/Debe seguir esta guía para configurar Let’s Encrypt.

Source link