Base de conocimientos
1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Esta guía trata sobre el módulo Apache mod_auth_mysql
que permite la autenticación de usuarios y la autorización de acceso a través de una base de datos MySQL.
Con un alojamiento compartido
El módulo mod_auth_mysql
no está disponible con los alojamientos compartidos; hay que considerar un Servidor Cloud o usar scripts PHP y sesiones.
Esta guía explica cómo acceder a InnoDB en Infomaniak.
Utilizar el motor de almacenamiento MySQL InnoDB
Tan pronto como su alojamiento Infomaniak le da acceso a las bases de datos MySQL / MariaDB, InnoDB está disponible al mismo tiempo (antes MyISAM).
InnoDB ofrece funcionalidades avanzadas como las transacciones ACID, los bloqueos a nivel de fila, los índices de texto completo, etc. Puede aprovechar estas funcionalidades utilizando instrucciones SQL adecuadas en sus consultas.
El acceso a los comandos del sistema who
y users
está prohibido para los usuarios LDAP en todos los servidores Infomaniak.
Esta guía se refiere a YAZ una biblioteca de software utilizada para implementar el protocolo Z39.50
, un protocolo de búsqueda y recuperación de información que permite la comunicación entre diferentes sistemas de bibliotecas (SIGB) como PMB ampliamente utilizado en Francia.
Infomaniak para una gestión eficiente de las bibliotecas
En los Alojamientos Web de Infomaniak, PMB es soportado y YAZ está activado por defecto.
Sin embargo, si encuentra errores como Call to undefined function yaz_connect()
será necesario abrir puertos a través del Manager. El puerto 210
es el puerto estándar utilizado para las comunicaciones Z39.50
pero no dude en consultar la documentación de sus aplicaciones.
Para las antiguas fórmulas de alojamiento de Infomaniak, se debe considerar un cambio de oferta.
Esta guía explica cómo especificar un archivo que se cargará antes de la página deseada o al principio de cada script PHP ejecutado en su servidor, incluido como si se hubiera llamado con la función require()
, pero de manera más global utilizando la directiva auto_prepend_file
de PHP.
Prólogo
- Por ejemplo, para declarar los encabezados de un sitio web, es posible crear un archivo
headers.php
que contenga funciones PHPheader()
y que se prepend al principio de cada archivo PHP…- … a través de un archivo
.user.ini
(propio de una carpeta), - … o a través de la configuración del sitio del Manager (global) como se explica a continuación.
- … a través de un archivo
Incluir un archivo globalmente desde el Manager
Para acceder a la gestión del sitio web:
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto correspondiente:
- Haga clic en Gestionar bajo Configuración avanzada:
- Haga clic en la pestaña PHP / Apache.
- Complete la línea correspondiente ingresando la ruta del archivo a incluir.
- Haga clic en el botón para guardar:
Después de definir esta directiva, todas las páginas PHP en su servidor incluirán automáticamente el archivo especificado antes de ejecutar su propio código.
Los encabezados definidos en un archivo .htaccess
solo son válidos para el contenido no PHP (es decir, estático).
Infomaniak utiliza php-fpm
que recibe los diferentes encabezados a través de apache fast_cgi
. En la RFC de cgi_www el encabezado Strict-Transport-Security
no forma parte de los encabezados pasados a través de CGI y la documentación de Apache lo confirma. Consulte esta otra RFC.
⚠️ Para obtener ayuda adicional contacte a un socio o lanza una oferta gratuita — también descubre el rol del proveedor de alojamiento.
Esta guía le ayudará, por ejemplo, si desea desplegar un paquete como pymysql
y este requiere una versión de Python superior a la ofrecida en su alojamiento.
Prólogo
- Anaconda es una distribución libre y de código abierto de los lenguajes de programación Python. Esta distribución tiene como objetivo simplificar la gestión de paquetes y el despliegue.
- Se recomienda usar conda que viene con una versión reciente de python y se instala en el espacio del usuario, de modo que no haya conflictos con el sistema python (como en un entorno virtual, que siempre requiere una instalación del sistema de la versión deseada).
- Consulte la documentación oficial.
⚠️ Para obtener ayuda adicional contacte a un socio o lanza una oferta gratuita — también descubre el rol del proveedor de alojamiento.
Descargar el instalador
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’
Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s
18:21:11 (100 MB/s) - ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’ saved [89026327/89026327]
Verificar el hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Iniciar la instalación
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Iniciar conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Instalar pymysql (por ejemplo)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10
(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Esta guía trata sobre la instalación de extensiones PHP en Hébergements Web Infomaniak.
Uso de extensiones PHP Zend
- Zend Guard Loader es una extensión PHP que permite ejecutar scripts PHP cifrados a través de Zend Guard.
- Zend Guard Loader viene instalado de serie para PHP <= 5.6 en todos los alojamientos web y no está disponible para las versiones de PHP >= 5.6.
- Desde PHP 5.3.x, el módulo Zend Optimizer ha sido reemplazado por ZendGuardLoader
- La extensión ZendOPCache requiere un Servidor Cloud configurado con PHP 5.5 mínimo
Esta guía explica cómo aumentar el valor max_children
en Serveur Cloud para aumentar el número de procesos PHP simultáneos que pueden ser utilizados por su sitio. Esto será muy útil para resolver problemas de carga infinita de las páginas de su sitio.
Prólogo
- Por defecto, en cualquier alojamiento, el límite de
max_children
está fijado a 20.- Aunque es posible aumentar este valor desde el Manager Infomaniak, el límite de
max_children
se ajusta automáticamente según la configuración de su Serveur Cloud. - Para aumentar este límite en alojamiento compartido, migre a Serveur Cloud.
- Aunque es posible aumentar este valor desde el Manager Infomaniak, el límite de
- Para entender cómo calcular con precisión los
max_children
necesarios, consulte este artículo sobre el tema.
Aumentar el valor max_children
Requisitos previos
- Asegúrate de contar con los recursos necesarios en el servidor Cloud.
- Asegurarse de que todos los recursos del servidor Cloud no estén utilizados; si resulta que están completamente utilizados, el aumento del valor
max_children
no tendrá ningún efecto (Modificar los recursos del Serveur Cloud). - Controlar el monitoreo de los recursos de tu servidor, en el caso de que los recursos de tu servidor estén alcanzados, será necesario verificar la optimización de los procesos y de tu sitio antes de considerar aumentar el valor de
max_children
. - Consultar los informes de error de PHP desde la carpeta
/ik-logs
(master process php logs - nombre del archivo: php-fpm.log) para verificar si se ha superado el límite "max_children
". Ejemplo de error:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Para acceder a la gestión de los parámetros PHP / Apache del sitio del cual se debe aumentar el valor max_children
en Serveur Cloud, consulte esta otra guía.
Podrás, entre otras cosas…
- … elegir un nuevo valor de
max_children
:
No olvides guardar los cambios al final de la página.
Límites según el servidor
Límite de max_children
según los recursos del Serveur Cloud:
Configuración Servidor Cloud | max_children |
---|---|
2 CPU / 6 GB RAM | 20 |
4 CPU / 12 GB RAM | 40 |
6 CPU / 18 GB RAM | sesenta |
8 CPU / 24 GB RAM | 80 |
12 CPU / 36 Go RAM | 120 |
16 CPU / 48 Go RAM | 160 |
24 CPU / 72 Go RAM | 240 |
32 CPU / 96 o 128 GB RAM | 320 |
Esta guía explica cómo modificar el valor de la directiva php_value include_path
.
Modificar el include_path
Al igual que cualquier otro parámetro de PHP, include_path se define en el archivo .user.ini.
Aquí tienes un ejemplo de ruta para usar en el archivo .user.ini
:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/include
Consulte este otro guía sobre phpinfo para verificar que se ha aplicado su nueva directiva.
El módulo Apache mod_userdir
no está disponible.
Esta guía está destinada a usted porque ha elegido (o va a elegir) Infomaniak como proveedor de alojamiento. Esta elección no es trivial. Es sensible a la ecología y desea hacer todo lo posible para reducir la huella de carbono en Internet.
Infomaniak ya le agradece por elegir este proveedor de alojamiento que se preocupa por el planeta y por explorar las opciones a continuación para avanzar en el diseño ecológico de su entorno web.
¿Por qué actuar?
Los sitios web consumen energía para funcionar, y el uso de Internet es una de las principales causas del aumento de las emisiones de gases de efecto invernadero.
Además de elegir un proveedor de alojamiento ético que utiliza fuentes de energía renovable para alimentar sus servidores, también puede contribuir a reducir estas emisiones adoptando prácticas ecológicas en el diseño y la gestión de sus sitios web y servicios de correo electrónico.
¿Cómo actuar?
Como se mencionó anteriormente, Infomaniak actúa en diferentes aspectos, incluso en su propio departamento de soporte: le acompañará en la elección de servicios adaptados a sus necesidades con el objetivo de preservar el medio ambiente, recopilará sus comentarios para optimizar nuestras prácticas e inspirarse en sus experiencias, y comunicará los desafíos ambientales en el sector de la hosting para adoptar las mejores prácticas digitales.
A tu nivel, existen varios medios para reducir tu huella de carbono en Internet:
Minimizar el consumo de energía
Para reducir el consumo de energía de los servidores y las computadoras de los usuarios: optimice las imágenes, utilice fuentes web, utilice scripts minimizados y tecnologías de compresión de datos. Los diseños limpios pueden ayudar a reducir los requisitos de ancho de banda.
Ofrez opciones para reducir el consumo de datos utilizando imágenes de menor calidad o proporcionando videos en streaming de diferentes calidades, para desactivar los rastreadores y las publicidades que consumen muchos datos.
Para buenas prácticas dedicadas a WordPress consulte las fichas de GreenIT.
Utilizar tecnologías eco-responsables
Las tecnologías de desarrollo sostenible, como HTML5, CSS3 y JavaScript, son más respetuosas con el medio ambiente.
Promover la sostenibilidad
Sensibilice a los usuarios sobre el impacto ambiental de las tecnologías de Internet e invítelos a adoptar prácticas eco-responsables. Incluyendo con la solución WordPress.
¿Y en cuanto al correo electrónico?
Los mismos reflejos pueden aplicarse a su comunicación por correo electrónico:
- Utilizar una firma ecológica que invite a los destinatarios a reducir su impacto ambiental utilizando tecnologías ecológicas o adoptando prácticas ecológicas…
- Utilizar herramientas de gestión de correos electrónicos ecológicas que utilicen fuentes de energía renovable y que tengan políticas ecológicas en cuanto al consumo de energía…
- Utilizar correos electrónicos en texto plano en lugar de correos electrónicos en HTML, ya que los correos electrónicos en HTML tienden a consumir más energía para ser mostrados…
- Utilizar archivos adjuntos en formato PDF en lugar de formatos más pesados…
- Utilizar funcionalidades de cancelación de suscripción para evitar enviar correos electrónicos no deseados…
- Utilizar herramientas de seguimiento para saber cuántas personas abren sus correos electrónicos y así saber si envía demasiados o muy pocos…
Todas estas acciones pueden realizarse progresivamente y deben adaptarse a la situación de cada sitio web; no hay una solución única.
Supervise regularmente las estadísticas de consumo de energía para seguir mejorando el rendimiento ecológico del sitio. Infomaniak ofrecerá herramientas en este sentido en el futuro, pero mientras tanto puede utilizar https://greenframe.io.
La escritura en los directorios /etc
y /lib
está desactivada por razones de seguridad.
Esta guía presenta las diferentes acciones que son posibles en una tabla MySQL según los derechos otorgados a un usuario.
Acciones sobre las tablas según los derechos del usuario…
… en alojamiento web compartido
Lectura + Escritura + Admin
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW
Lectura + Escritura
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLE
Lectura
GRANT SELECT
… en Servidor Cloud
Lectura + Escritura + Admin
GRANT ALL
Lectura + Escritura
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES
Lectura
GRANT SELECT
Esta guía está destinada a las personas que desean trabajar con la capa de abstracción Propel (que se refiere a un componente clave de la biblioteca Propel, un ORM (Object-Relational Mapping) para PHP).
Prólogo
- El ORM (Object-Relational Mapping) permite vincular los objetos de una aplicación con las tablas de una base de datos relacional. En lugar de escribir SQL, se manipulan los datos a través de objetos.
- Propel, una capa de abstracción en PHP, facilita la creación, manipulación y recuperación de objetos sin preocuparse por los detalles de SQL. Permite gestionar las relaciones, las uniones y la paginación, mejorando la legibilidad y el mantenimiento del código.
Características y limitaciones
- Propel no está instalado por defecto como un paquete Pear; esto significa que deberá instalarlo manualmente en su servidor.
- La versión "Conventionnal Package" de Propel puede ser instalada; descargue e instale bien esta versión específica.
- Dado que las líneas de comandos de Propel (
propel-gen
por ejemplo) no están accesibles, no podrás usarlas directamente. - Esto significa que Propel solo podrá ser utilizado en producción una vez que haya generado las clases y archivos necesarios localmente o en otro entorno de desarrollo.
- Todas las manipulaciones y generaciones de código deberán realizarse en otro lugar antes de transferir los archivos resultantes a su entorno de producción.
Dependencias
- Todas las dependencias necesarias para usar Propel están disponibles, excepto Phing.
- Phing no es necesario para la producción, por lo que no debería ser un problema.
- Asegúrate de tener todas las demás dependencias requeridas para Propel instaladas correctamente.
Esta guía le presenta los puertos abiertos disponibles para los sitios Node.js (solo) alojados en Infomaniak.
Puertos abiertos en salida
Web
- HTTP (tcp/80)
- HTTP alternativo (tcp/8080)
- HTTPS (tcp/443)
- FTP Data (tcp/20)
- FTP Control (tcp/21)
Correo
- POP3 (tcp/110)
- IMAP (tcp/143)
- SMTP submission (+ STARTTLS) (tcp/587)
- SMTPS (tcp/465)
- IMAPS (tcp/993)
- POP3S (tcp/995)
BD
- MySQL (tcp/3306)
- MongoDB (tcp/27017)
- PostgreSQL (tcp/5432)
- Redis (tcp/6379)
- Redis TLS (tcp/6380)
- ElasticSearch (tcp/9200)
Varios
- SSH (tcp/22)
- Transferencia de paquetes de Git (tcp/9418)
Puertos abiertos de entrada
- HTTP (tcp/80)
- HTTPS (tcp/443)
- SSH (tcp/22)
Esta guía le acompañará en la instalación de Ghost en Infomaniak, una plataforma ideal para blogs (escritura regular, formato editorial) y sitios de publicación centrados en el contenido, como Substack o Medium.
Basado en Node.js y utilizando Markdown para la redacción, Ghost se distingue por su ligereza, mientras que WordPress, aunque más flexible y universal, sigue siendo más pesado.
Para obtener ayuda adicional, contacte a un socio o lanza una solicitud de oferta gratuita — también descubra el rol del proveedor de alojamiento.
Requisitos previos
- Haber instalado un sitio vacío de tipo Node.js en un alojamiento web Infomaniak.
- Crear un acceso SSH.
- Crear una base de datos.
- Tener una dirección de correo electrónico válida y funcional (en particular, las funcionalidades de contraseña olvidada).
Instalación de Ghost
Para ello:
- Conéctese al servidor a través de SSH (¿necesita ayuda?).
- Colóquese en el directorio del sitio ejecutando el comando “cd camino-al-sitio” (por ejemplo
cd sitios/ghost.domain.xyz
). Ingrese el siguiente comando:
npx -p ghost-cli ghost install --check-empty=false
y ingrese la información solicitada (nombre del host de la base de datos, URL del sitio web, etc.).
Modifique el archivo
config.production.json
para actualizar los parámetros del puerto y del host:"server": { "port": 3000, "host": "0.0.0.0" },
Especifique también la información relacionada con el correo electrónico:
"mail": { "transport": "SMTP", "options": { "service": "Infomaniak", "host": "mail.infomaniak.com", "port": 465, "auth": { "user": "<<email_username>>", "pass": "<<email_password>>" } }, "from": "<<email_address>>" },
Configuración Node.js
Para ejecutar la aplicación, diríjase al panel de control de Node.js:
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto correspondiente.
- Haga clic en Gestionar bajo Configuración avanzada:
- Haga clic en la pestaña Node.js para acceder a la configuración:
En el campo de comando de ejecución, ingrese:
npx -p ghost-cli ghost run
- Haga clic en el botón Guardar al final de la página.
- En la página principal, haga clic en el botón Start o Restart.
- Observe los registros que muestran la creación de la base de datos y el inicio de la aplicación:
- Luego, vaya a la URL de su sitio para comenzar.
Configuración de usuarios / correo electrónico
Para crear el primer usuario, agregue /ghost
a la URL de su sitio (por ejemplo https://ghost.domain.xyz/ghost
) y siga el asistente.
También puede configurar la "dirección de soporte del portal de miembros": cuando nuevos miembros desean registrarse, el portal envía la confirmación de doble opt-in desde una dirección específica. Por defecto, se trata de la dirección “noreply” de su dominio. Para actualizarla, navegue hacia “Configuración”, “Membresía”, “Configuración del portal”, “Personalizar” y “Página de la cuenta”:
Resolver una incompatibilidad técnica entre Ghost y MariaDB
Existe un problema de compatibilidad entre Ghost y la base de datos MariaDB. Esto da lugar a este tipo de error:
[2025-05-26 12:54:28] ERROR "GET /ghost/api/admin/posts/6834625e35802b06f1496305/?formats=mobiledoc%2Clexical&include=tags%2Cauthors%2Cauthors.roles%2Cemail%2Ctiers%2Cnewsletter%2Ccount.conversions%2Ccount.clicks%2Csentiment%2Ccount.positive_feedback%2Ccount.negative_feedback" 400 27ms
Could not understand request.
Error ID:
8f2b0d90-3a30-11f0-a25f-fd9c83e1cf02
Error Code:
ER_BAD_FIELD_ERROR
----------------------------------------
Error: select `posts`.*, (with `k` as (select `member_id` from `members_subscription_created_events` where posts.id = members_subscription_created_events.attribution_id union select `member_id` from `members_created_events` where posts.id = members_created_events.attribution_id) select count(*) from `k`) as `count__conversions`, `posts`.*, (select count(distinct `members_click_events`.`member_id`) from `members_click_events` inner join `redirects` on `members_click_events`.`redirect_id` = `redirects`.`id` where posts.id = redirects.post_id) as `count__clicks`, `posts`.*, (select COALESCE(ROUND(AVG(score) * 100), 0) from `members_feedback` where posts.id = members_feedback.post_id) as `count__sentiment`, `posts`.*, (select count(*) from `members_feedback` where posts.id = members_feedback.post_id AND members_feedback.score = 0) as `count__negative_feedback`, `posts`.*, (select sum(`score`) from `members_feedback` where posts.id = members_feedback.post_id) as `count__positive_feedback` from `posts` where (`posts`.`type` = 'post' and `posts`.`status` in ('draft', 'published', 'scheduled', 'sent')) and `posts`.`id` = '2834125e33802b06e1433305' limit 1 - Unknown column 'posts.id' in 'where clause'
at Child.<anonymous> (/srv/customer/sites/ghost.domain.xyz/versions/5.120.2/core/server/models/base/plugins/crud.js:194:31)
at Packet.asError (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packets/packet.js:740:17)
at Query.execute (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:475:34)
at PacketParser.onPacket (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:93:12)
at PacketParser.executeStart (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/srv/customer/sites//versions/5.120.2/node_modules/mysql2/lib/base/connection.js:100:25)
at Socket.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:561:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
at Readable.push (node:internal/streams/readable:392:5)
at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
Algunas consultas SQL generadas por Ghost, que utilizan expresiones de tabla comunes (CTE) anidadas en subconsultas escalares, provocan errores HTTP 400
cuando se ejecutan en MariaDB. Estas consultas son válidas en MySQL 8, que admite CTE en subconsultas escalares, pero no en MariaDB hasta la versión 10.6.
Existe un parche para adaptar el comportamiento de Ghost y evitar estos errores (consulte la guía oficial).
Para usar este parche, ingrese este comando:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
Esta guía explica cómo ajustar la configuración de un sitio Node.js alojado en la infraestructura de Infomaniak para adaptar el comportamiento de su aplicación según su evolución, sus dependencias o sus preferencias técnicas.
Requisitos previos
- Instalar un sitio Node.js en tu alojamiento.
- Probar sus modificaciones en local antes de aplicarlas en producción.
- Verificar que sus scripts (
start
,build
) estén bien definidos en su archivopackage.json
. - Si modificas la estructura de tu proyecto, recuerda ajustar la carpeta de ejecución y los comandos asociados.
- El puerto de escucha definido en el Manager debe coincidir exactamente con el utilizado en el código de la aplicación.
Acceder a la configuración
Cada sitio tiene un panel de control dedicado para gestionar la aplicación (iniciar, detener, reiniciar), consultar la consola de ejecución, gestionar las versiones de Node.js, configurar los dominios y activar los certificados SSL:
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿Necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto correspondiente.
- Puede abrir la consola, detener el proyecto (se aplicará una página de mantenimiento) o reiniciarlo.
- Para acceder a los parámetros avanzados, haga clic en Gestionar bajo Configuración avanzada:
- Haga clic en la pestaña Node.js para acceder a los ajustes:
Aplicar los cambios
Para ello:
- Guarde los cambios desde la interfaz del Manager.
- Reinicia tu aplicación para que los cambios surtan efecto.
Consulte este otro guía en caso de problema.
Comandos principales
Carpeta de ejecución
La carpeta de ejecución indica la ubicación en el servidor donde se ejecutarán los comandos de construcción y lanzamiento. Debe apuntar al directorio raíz de su aplicación, es decir, donde se encuentra su archivo package.json
.
Por ejemplo, puede especificar para la raíz del proyecto:
./
o si su aplicación está en un subdirectorio llamado app
:
./app
o si se encuentra en una carpeta backend
:
./backend
Comando de construcción (opcional)
Si su aplicación Node.js requiere un paso de compilación antes de ser ejecutada, ingrese un comando de construcción en el campo correspondiente. Este comando se ejecutará automáticamente antes de iniciar la aplicación.
Por ejemplo, puede indicar:
npm install && npm run build
o, si usas yarn :
yarn install && yarn build
Si su proyecto no requiere ninguna compilación, este campo puede dejarse vacío.
Comando de inicio
El comando de lanzamiento corresponde a la instrucción utilizada para iniciar tu aplicación. Debe ser idéntico a la que usas localmente para ejecutar el proyecto.
Por ejemplo, puede indicar:
node index.js
npm start
o
yarn start
Este comando debe permitir iniciar directamente el servidor o el punto de entrada de su aplicación tal como está definido en su entorno de desarrollo.
Puerto de escucha
Su aplicación debe escuchar en un puerto específico que se define en el Manager. Este puerto se transmite a su aplicación a través de una variable de entorno PORT
.
Ejemplo en su código Node.js:
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});
Asegúrate de que este puerto se tenga en cuenta en tu código.
Versión de Node.js
Puede seleccionar la versión de Node.js que su sitio debe utilizar. Se recomienda usar una versión estable y siempre soportada para garantizar la seguridad y la compatibilidad de su aplicación.
Esta guía se refiere a las aplicaciones OAuth2 para conectarse a sus servicios externos a través de su identificador de inicio de sesión de Infomaniak.
Gestionar las aplicaciones OAuth2 de Infomaniak
Para ello:
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿necesita ayuda?).
- Haga clic en el botón azul Crear una nueva aplicación:
- Elija el tipo adecuado según sus necesidades y proyecto actual.
- Asigne un nombre a la aplicación.
- Ingrese la URL de la aplicación según la información técnica disponible.
- Haga clic en el botón para crear la aplicación:
- Copie la información (
Client ID
,Client secret
) en un lugar seguro - ya no serán accesibles después de esto:
Esta guía se refiere al módulo de WordPress "Infomaniak Connect for OpenID" que permite a los usuarios conectarse a su sitio de WordPress (ya sea alojado por Infomaniak o no) utilizando sus credenciales de Infomaniak.
Preámbulo
- Permitir la conexión a través de una cuenta de Infomaniak en su sitio de WordPress permite a sus visitantes comentar, inscribirse en cursos o acceder a cualquier contenido reservado para miembros con un solo clic, sin tener que crear una nueva cuenta.
- Esto ahorra tiempo y es un método más seguro para usted, ya que no tiene que gestionar contraseñas adicionales.
- El funcionamiento de este módulo externo es idéntico a las opciones "Iniciar sesión con Google", "Iniciar sesión con Facebook" o "Iniciar sesión con Apple"; utiliza los protocolos estándar OAuth2 y OpenID Connect para permitir la autenticación única (SSO).
A. Crear una aplicación con Auth Infomaniak
Para ello:
- Haga clic aquí para acceder a la gestión de su producto Auth en el Gestor de Infomaniak (¿Necesita ayuda?).
- Haga clic en el botón para Crear una nueva aplicación:
- Elija el tipo "Web Front-End".
- Asigne un nombre a su aplicación.
- En el campo URL, indique el nombre de dominio correspondiente a su sitio de WordPress seguido de
/openid-connect-authorize
(consulte la documentación de GitHub si es necesario). - Haga clic en el botón para finalizar la creación de la aplicación:
- Tome nota de las dos informaciones obtenidas al finalizar su aplicación OAuth2:
B. Configurar la extensión de WordPress
Para ello:
- Busque la extensión
Infomaniak Connect for OpenID
en la plataforma de extensiones de WordPress desde su sitio. - Instale y active la extensión:
- Configure la extensión desde el menú Configuración:
- Los únicos campos que debe completar son Client ID y Client Secret Key y provienen de las informaciones obtenidas en el punto A anterior:
- No olvide guardar los cambios realizados en la configuración de la extensión.
- Un botón adicional, para una conexión por identificador Infomaniak, ahora es visible en su página de conexión destinada a los usuarios
/wp-admin
(/wp-login.php
):
Esta guía permite resolver un problema en el CMS Prestashop y más específicamente con su módulo “Búsqueda por facetas” ("Faceted search") que permite la gestión de filtros en las páginas categoría de productos.
El problema
Este módulo de búsqueda específico de Prestashop crea una caché en la base de datos para acelerar la búsqueda, sin embargo, la tabla correspondiente nunca se limpia, lo que genera problemas en la infraestructura de alojamiento.
Primera solución
La primera solución consiste en desactivar la caché propuesta.
Si dispone de un módulo de caché, como por ejemplo Ultimate Cache
, no habrá ningún impacto negativo.
Para ello:
- En el panel de administración de PrestaShop, vaya a Módulos → Gestor de módulos.
- Seleccione Módulos y utilice el campo de búsqueda para encontrar “facet”.
- Haga clic en Configurar junto al módulo obtenido en el resultado:
- Desactive el botón sobre este tema:
Segunda solución
La segunda solución consiste en establecer un cronjob que permita limpiar la tabla, por ejemplo todas las noches:
- Desde los parámetros del módulo, copie la URL existente en el botón
Clear cache
:
Luego, desde el Manager Infomaniak, cree un webcron (consulte esta otra guía sobre este tema) para ejecutar la URL copiada en el punto 1 anterior, por ejemplo 1 vez por día y por noche.