Base di conoscenze
1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
La piattaforma di hosting per i tuoi siti *perso.ch, *.users.ch, *.geneva-link.ch si evolve e questa guida presenta la procedura da seguire per connetterti al tuo spazio FTP.
Modifica delle credenziali di accesso
La piattaforma di hosting attuale si basa sull'uso di un prefisso nel nome utente FTP. Questo ha il seguente formato: "persoch_"
Quindi, se il tuo nome utente era infomaniak, dovrai utilizzare l'utente seguente per connetterti tramite FTP: persoch_infomaniak.
Questa guida spiega come lavorare senza il modulo PECL SSH2 client non disponibile sugli hosting Web e Server Cloud Infomaniak, utilizzando invece la libreria phpseclib, che funziona in PHP nativo senza richiedere estensioni specifiche.
Premessa
- L'uso di
PECL SSH2 clientprovoca errori di tipoNo compatible key exchange algorithms foundoUnable to exchange encryption keysnella sua ultima versione disponibile. Phpseclibconsente di:- Effettuare l'autenticazione SSH tramite password o chiave privata.
- Eseguire comandi remoti.
- Trasferire file sicuri (SFTP).
- Gestire le chiavi SSH.
Utilizzare phpseclib
Per integrare una connessione SSH in uno script PHP, utilizzare phpseclib come segue:
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('domain.xyz');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private_key'));
if (!$ssh->login('utilisateur', $key)) {
exit('Authentication Failed');
}
echo $ssh->exec('ls -la');Questa guida dettaglia le regole specifiche da rispettare durante la creazione di una password utente con mysqli_connect() che contiene il carattere “dollar” $ sulle piattaforme Infomaniak.
Premessa
- Se durante l'uso di
mysqli_connect(), ricevi il messaggio di errore "Access denied for user" e la tua password del database contiene il carattere$, il problema potrebbe essere legato al funzionamento delle stringhe in PHP. - Il problema può verificarsi anche con gli script di messaggistica.
Regole da rispettare
Quando viene utilizzato il carattere speciale $ in una password utente e questo è seguito da qualsiasi carattere diverso da un numero, il nome della variabile non è valido e la sostituzione non avviene correttamente.
Ecco alcune soluzioni per correggere questo:
- Metti la password tra virgolette semplici:
'$******' - Assicurati che un numero segua direttamente il dollaro:
"$2*****" - Utilizza una barra rovesciata per "scappare" il dollaro nella password:
“\$****”
Questa guida riguarda il modulo Apache mod_auth_mysql che consente l'autenticazione degli utenti e l'autorizzazione all'accesso tramite un database MySQL.
Con un hosting condiviso
Il modulo mod_auth_mysql non è disponibile con gli hosting condivisi; è necessario considerare un Server Cloud o utilizzare script PHP e sessioni.
Questa guida spiega come accedere a InnoDB su Infomaniak.
Utilizzare il motore di archiviazione MySQL InnoDB
Non appena il tuo hosting Infomaniak ti dà accesso ai database MySQL / MariaDB, InnoDB è disponibile contemporaneamente (precedentemente MyISAM).
InnoDB offre funzionalità avanzate come le transazioni ACID, i blocchi a livello di riga, gli indici di testo completo, ecc. È possibile sfruttare queste funzionalità utilizzando istruzioni SQL appropriate nelle vostre query.
Questa guida riguarda l'installazione di estensioni PHP su Hosting Web Infomaniak.
Utilizzo delle estensioni PHP Zend
- Zend Guard Loader è un'estensione PHP che consente di eseguire script PHP cifrati tramite Zend Guard.
- Zend Guard Loader è installato di default per PHP <= 5.6 su tutti gli hosting web e non è disponibile per le versioni di PHP >= 5.6.
- Da PHP 5.3.x, il modulo Zend Optimizer è stato sostituito da ZendGuardLoader
- L'estensione ZendOPCache richiede un Server Cloud configurato con PHP 5.5 minimo
Questa guida riguarda YAZ una libreria software utilizzata per implementare il protocollo Z39.50, un protocollo di ricerca e recupero delle informazioni che consente la comunicazione tra diversi sistemi di biblioteche (SGB) come PMB ampiamente utilizzato in Francia.
Infomaniak per una gestione efficace delle biblioteche
Sugli Ospedalaggi Web Infomaniak, PMB è supportato e YAZ è attivato per impostazione predefinita.
Tuttavia, se si riscontrano errori come Call to undefined function yaz_connect() sarà necessario aprire delle porte tramite il Manager. La porta 210 è la porta standard utilizzata per le comunicazioni Z39.50 ma non esitate a consultare la documentazione delle vostre applicazioni.
Per le vecchie formule di ospedalaggio Infomaniak, è necessario considerare un cambiamento di offerta.
L'accesso ai comandi di sistema who e users è vietato agli utenti LDAP su tutti i server Infomaniak.
Questa guida vi aiuterà, ad esempio, se desiderate distribuire un pacchetto come pymysql e questo richiede una versione di python superiore a quella proposta sul vostro hosting.
Premessa
- Anaconda è una distribuzione libera e open source dei linguaggi di programmazione Python. Questa distribuzione mira a semplificare la gestione dei pacchetti e la distribuzione.
- È quindi consigliabile utilizzare conda fornito con una versione recente di python e che si installa nello spazio utente, in modo che non ci siano conflitti con il sistema python (come in un ambiente virtuale, che richiede sempre un'installazione di sistema della versione desiderata).
- Prendete visione della documentazione ufficiale.
⚠️ Per un ulteriore aiuto contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite anche il ruolo dell'hosting provider.
Scaricare l'installatore
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]Controllare l'hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OKAvviare l'installazione
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/miniconda3added / 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_3The 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_3Preparing transaction: done
Executing transaction: done
installation finished.Avviare conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)Installare pymysql (ad esempio)
(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
Questa guida spiega come specificare un file che verrà caricato prima della pagina desiderata o all'inizio di ogni script PHP eseguito sul tuo server, incluso come se fosse stato chiamato con la funzione require(), ma in modo più globale utilizzando la direttiva auto_prepend_file di PHP.
Premessa
- Ad esempio, per dichiarare gli header di un sito web, è possibile creare un file
headers.phpche contiene funzioni PHPheader()e che venga prepend all'inizio di ogni file PHP…- … tramite un file
.user.ini(proprio di una cartella), - … o tramite la configurazione del sito del Manager (globale) come spiegato di seguito.
- … tramite un file
Includere un file globalmente dal Manager
Per accedere alla gestione del sito web:
- Clicca qui per accedere alla gestione del tuo prodotto sul Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato:
- Clicca su Gestisci sotto Impostazioni avanzate:

- Clicca sulla scheda PHP / Apache.
- Completa la riga interessata inserendo il percorso del file da includere.
- Clicca sul pulsante per salvare:

Dopo aver definito questa direttiva, tutte le pagine PHP sul tuo server includeranno automaticamente il file specificato prima di eseguire il proprio codice.
Gli header definiti in un file .htaccess sono validi solo per il contenuto non PHP (quindi statico).
Infomaniak utilizza php-fpm che riceve i vari header tramite apache fast_cgi. Nella RFC di cgi_www l'header Strict-Transport-Security non fa parte degli header passati tramite CGI e la documentazione Apache lo conferma. Prendi visione di questa altra RFC.
⚠️ Per ulteriori assistenze contatta un partner o lancia gratuitamente una richiesta di offerta — scopri anche il ruolo dell'hosting provider.
Questa guida spiega come regolare la configurazione di un sito Node.js ospitato sull'infrastruttura Infomaniak per adattare il comportamento della tua applicazione in base alla sua evoluzione, alle sue dipendenze o alle tue preferenze tecniche.
Prerequisiti
- Installare un sito Node.js sul tuo hosting.
- Testare le vostre modifiche in locale prima di applicarle in produzione.
- Verificare che i vostri script (
start,build) siano correttamente definiti nel filepackage.json. - Se modificate la struttura del vostro progetto, ricordate di regolare la cartella di esecuzione e i comandi associati.
- La porta di ascolto definita nel Manager deve corrispondere esattamente a quella utilizzata nel codice dell'applicazione.
Accedere alla configurazione
Ogni sito dispone di un pannello di controllo dedicato per gestire l'applicazione (avviare, fermare, riavviare), consultare la console di esecuzione, gestire le versioni di Node.js, configurare i domini e attivare i certificati SSL:
- Clicca qui per accedere alla gestione del tuo prodotto su Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato.
- Puoi aprire la console, fermare il progetto (verrà applicata una pagina di manutenzione) o riavviarlo.
- Per accedere alle impostazioni avanzate, clicca su Gestisci sotto Impostazioni avanzate:

- Fai clic sulla scheda Node.js per accedere alle impostazioni:

Applicare le modifiche
Per fare questo:
- Registra le modifiche dall'interfaccia del Manager.
- Riavviare la tua applicazione affinché le modifiche siano applicate.
Consultate questa altra guida in caso di problemi.
Comandi principali
Cartella di esecuzione
La cartella di esecuzione indica la posizione sul server dove verranno eseguiti i comandi di costruzione e avvio. Deve puntare alla directory radice della tua applicazione, cioè dove si trova il tuo file package.json.
Ad esempio, è possibile specificare per la radice del progetto:
./o se la tua applicazione si trova in una sottocartella chiamata app:
./appo se si trova in una cartella backend:
./backendComando di costruzione (facoltativo)
Se la tua applicazione Node.js richiede una fase di compilazione prima di essere eseguita, inserisci un comando di costruzione nel campo previsto a tale scopo. Questo comando verrà eseguito automaticamente prima dell'avvio dell'applicazione.
Ad esempio, puoi indicare:
npm install && npm run buildo, se usi yarn :
yarn install && yarn buildSe il tuo progetto non richiede alcuna compilazione, questo campo può essere lasciato vuoto.
Comando di avvio
Il comando di avvio corrisponde all'istruzione utilizzata per avviare la tua applicazione. Deve essere identico a quello che usi localmente per eseguire il progetto.
Ad esempio, è possibile indicare:
node index.jsnpm starto
yarn startQuesto comando deve consentire di avviare direttamente il server o il punto di ingresso della tua applicazione come definito nel tuo ambiente di sviluppo.
Porta di ascolto
La tua applicazione deve ascoltare su una porta specifica che è definita nel Manager. Questa porta viene trasmessa alla tua applicazione tramite una variabile d'ambiente PORT.
Esempio nel tuo codice Node.js:
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Application lancée sur le port ${port}`);
});Assicurati che questa porta sia correttamente considerata nel tuo codice.
Versione di Node.js
È possibile selezionare la versione di Node.js che il sito deve utilizzare. È consigliabile utilizzare una versione stabile e sempre supportata per garantire la sicurezza e la compatibilità della tua applicazione.
ATTENZIONE: Questo metodo modifica i file principali di Magento per disattivare la verifica dei privilegi avanzati (triggers, routines), il che è una pratica rischiosa in termini di sicurezza, stabilità e complica gli aggiornamenti futuri.
Oggi, Magento (ora Adobe Commerce o Magento Open Source) è una piattaforma moderna che richiede un ambiente server che rispetti i suoi rigorosi prerequisiti. La versione stabile attuale è spesso la 2.4.8 o una versione di correzione più recente. Queste versioni richiedono tecnologie aggiornate come PHP 8.2/8.3, MySQL 8.0/MariaDB 10.6 e un motore di ricerca dedicato come Elasticsearch o OpenSearch.
Per qualsiasi nuova installazione o migrazione, è fortemente consigliato utilizzare l'ultima versione stabile senza alcuna modifica manuale del codice sorgente. È necessario scegliere un tipo di hosting performante (Server Cloud o VPS/Dedicato) che garantisca l'accesso a tutti i privilegi di sistema necessari per un funzionamento sicuro e stabile.
Evitate assolutamente di utilizzare questo vecchio patch riportato di seguito. Si noti che questo patch è inutile in caso d'installazione su un Server Cloud.
Questa guida spiega come patchare l'installazione di Magento in modo che possa essere eseguita su un hosting condiviso Infomaniak, anche senza i privilegi di tipo triggers & routines.
Risolvere i problemi di installazione di Magento 2
Modificate il file DbValidator.php:
--- setup/src/Magento/Setup/Validator/DbValidator.php.orig 2019-04-11 17:01:45.154767893 +0200
+++ setup/src/Magento/Setup/Validator/DbValidator.php 2019-04-13 21:37:02.560386985 +0200
@@ -150,12 +150,8 @@
'ALTER',
'CREATE TEMPORARY TABLES',
'LOCK TABLES',
- 'EXECUTE',
'CREATE VIEW',
- 'SHOW VIEW',
- 'CREATE ROUTINE',
- 'ALTER ROUTINE',
- 'TRIGGER'
+ 'SHOW VIEW'
];
// check global privilegesIn caso di errore SOAP/PHPfpm
A seconda della versione di Magento utilizzata, la funzione soap non funziona correttamente e può restituire il seguente messaggio di errore: «Uncaught SoapFault exception: [Client] looks like we got no XML document».
Il problema non deriva da una cattiva configurazione del server, ma piuttosto da un cattivo design di Magento che non tiene conto del caso di esecuzione di PHP in ambiente FPM. Pertanto, le richieste SOAP generate da Magento contengono doppi header (non conformi alla specifica SOAP) e generano un errore.
Prendete visione di questa soluzione (non sviluppata da Infomaniak).
Questa guida spiega come aumentare il valore max_children su Server Cloud per aumentare il numero di processi PHP simultanei che possono essere utilizzati dal tuo sito. Questo sarà molto utile per risolvere problemi di caricamento infinito delle pagine del tuo sito.
Premessa
- Per impostazione predefinita su qualsiasi hosting, il limite di
max_childrenè impostato su 20- Sebbene sia possibile aumentare questo valore dal Manager Infomaniak, il limite di
max_childrenviene automaticamente regolato in base alla configurazione del tuo Server Cloud. - Per aumentare questo limite su hosting condiviso, migra su Server Cloud.
- Sebbene sia possibile aumentare questo valore dal Manager Infomaniak, il limite di
- Per capire come calcolare al meglio i
max_childrennecessari, consulta questo articolo sull'argomento.
Aumentare il valore max_children
Prerequisiti
- Assicurarsi di disporre delle risorse necessarie sul server Cloud.
- Assicurarsi che tutte le risorse del server Cloud non siano utilizzate; se risulta che queste sono completamente utilizzate, l'aumento del valore
max_childrennon avrà alcun effetto (Modificare le risorse del Server Cloud). - Controllare il monitoraggio delle risorse del tuo server, nel caso in cui le risorse del tuo server siano esaurite, sarà necessario verificare l'ottimizzazione dei processi e del tuo sito prima di considerare l'aumento del valore
max_children. - Consultare i rapporti di errore PHP dalla cartella
/ik-logs(master process php logs - nome del file: php-fpm.log) per verificare se il limite "max_children" è stato superato... esempio di errore:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Per accedere alla gestione dei parametri PHP / Apache del sito di cui è necessario aumentare il valore max_children su Server Cloud, consulta questa altra guida.
Potrai in particolare…
- … scegliere un nuovo valore di
max_children:
Non dimenticare di salvare le modifiche in fondo alla pagina.
Limiti in base al server
Limite dei max_children in base alle risorse del Server Cloud:
| Configurazione Server Cloud | max_children |
|---|---|
| 2 CPU / 6 Go RAM | 20 |
| 4 CPU / 12 Go RAM | 40 |
| 6 CPU / 18 Go RAM | 60 |
| 8 CPU / 24 Go 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 Go RAM | 320 |
Questa guida spiega come modificare il valore della direttiva php_value include_path.
Modifica il include_path
Come qualsiasi altro parametro PHP, include_path è definito nel file .user.ini.
Ecco un esempio di percorso da utilizzare nel file .user.ini:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/includeConsulta questa altra guida riguardo a phpinfo per verificare l'applicazione della tua nuova direttiva.
Il modulo Apache mod_userdir non è disponibile.
Questa guida è destinata a te perché hai scelto (o stai per scegliere) Infomaniak come host. Questa scelta non è casuale. Sei sensibile all'ecologia e desideri fare il massimo per ridurre l'impronta di carbonio su Internet.
Infomaniak vi ringrazia già per aver scelto questo hosting che si preoccupa del pianeta e per esplorare le piste seguenti per avanzare nell'eco-design del vostro ambiente web.
Perché agire?
I siti internet consumano energia per funzionare, e l'uso di Internet è una delle principali cause dell'aumento delle emissioni di gas serra.
Oltre al fatto che è importante scegliere un host etico che utilizza fonti di energia rinnovabile per alimentare i suoi server, puoi anche contribuire a ridurre queste emissioni adottando pratiche eco-responsabili nella progettazione e nella gestione dei tuoi siti e servizi Mail.
Come agire?
Come visto sopra, Infomaniak agisce su diversi punti, fino al suo stesso dipartimento di supporto: vi accompagnerà nella scelta di servizi adatti alle vostre esigenze con l'obiettivo di preservare l'ambiente, raccoglierà i vostri feedback per ottimizzare le nostre pratiche e ispirarsi alle vostre esperienze, comunicando nel contempo le sfide ambientali nel settore dell'hosting per adottare le migliori pratiche digitali.
A livello tuo, esistono diversi modi per ridurre la tua impronta di carbonio su Internet:
Ridurre il consumo di energia
Per ridurre il consumo di energia dei server e dei computer degli utenti: ottimizza le immagini, utilizza i caratteri web, utilizza script minificati e tecnologie di compressione dei dati. I design essenziali possono aiutare a ridurre la necessità di larghezza di banda.
Offri opzioni per ridurre il consumo di dati utilizzando immagini di qualità inferiore o proponendo video in streaming a diverse qualità, per disattivare i tracker e le pubblicità che consumano molti dati.
Per buone pratiche dedicate a WordPress consultate le schede di GreenIT.
Utilizzare tecnologie eco-responsabili
Le tecnologie di sviluppo sostenibile, come HTML5, CSS3 e JavaScript, sono più rispettose dell'ambiente.
Promuovere la sostenibilità
Sensibilizza gli utenti all'impatto ambientale delle tecnologie di Internet e invitali ad adottare pratiche eco-responsabili. Inclusa la soluzione WordPress.
E a livello di posta elettronica?
Gli stessi riflessi possono essere applicati alla tua comunicazione via e-mail:
- Utilizzare una firma eco-responsabile che invita i destinatari a ridurre il loro impatto ambientale utilizzando tecnologie eco-responsabili o adottando pratiche eco-responsabili…
- Utilizzare strumenti di gestione delle e-mail eco-responsabili che utilizzano fonti di energia rinnovabile e che hanno politiche eco-responsabili in materia di consumo energetico…
- Utilizzare e-mail in testo semplice invece che e-mail in HTML, poiché gli e-mail in HTML tendono a consumare più energia per essere visualizzati…
- Utilizzare allegati in formato PDF invece di formati più pesanti…
- Utilizzare funzionalità di disiscrizione per evitare di inviare e-mail non desiderate…
- Utilizzare strumenti di tracciamento per sapere quante persone aprono le vostre e-mail e così sapere se ne inviate troppe o troppo poche…
Tutte queste azioni possono essere realizzate gradualmente e devono essere adattate alla situazione di ogni sito web, non esiste una soluzione unica.
Monitora regolarmente le statistiche di consumo energetico per continuare a migliorare le prestazioni ecologiche del sito. Infomaniak proporrà in futuro strumenti in questo senso, ma nel frattempo puoi utilizzare https://greenframe.io.
La scrittura nelle directory /etc e /lib è disattivata per motivi di sicurezza.
Questa guida ti accompagna nell'installazione su Infomaniak di Ghost, una piattaforma ideale per i blog (scrittura regolare, formato editoriale) e i siti di pubblicazione incentrati sul contenuto, come Substack o Medium.
Basato su Node.js e che utilizza Markdown per la stesura, Ghost si distingue per la sua leggerezza, mentre WordPress, pur essendo più flessibile e universale, rimane più pesante.
Per ulteriori assistenze contatta un partner o lancia gratuitamente una richiesta di offerta — scopri anche il ruolo dell'hosting provider.
Prerequisiti
- Avere installato un sito vuoto di tipo Node.js su un hosting web Infomaniak.
- Creare un accesso SSH.
- Creare un database.
- Possedere un indirizzo email valido e funzionante (in particolare le funzionalità di recupero password).
- Arresta la tua applicazione Node.JS prima di eseguire i passaggi successivi!
Installazione di Ghost
Per fare questo:
- Connetterti al server tramite SSH (hai bisogno di aiuto?).
Clona ed esegui lo script di installazione (esegui questi comandi uno alla volta):
git clone https://github.com/Infomaniak/hosting-tools.git cd hosting-tools/h3-ghost bash ./install.sh
Lo script ora:
- Ti farà alcune domande (come l'URL del tuo sito, le informazioni del database, ecc.)…
- Scaricherà e configurerà automaticamente Ghost…
- Impiegherà alcuni minuti — sii paziente!
Rispondi alle domande con attenzione utilizzando i dettagli del database che hai annotato in precedenza. Non chiudere il terminale finché non ha finito!
Configura il tuo hosting (tramite il pannello Infomaniak)
Una volta terminato lo script, vai nel tuo Pannello di controllo Infomaniak:
- Clicca qui per accedere alla gestione del tuo prodotto sul Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato.
- Clicca su Gestisci sotto Impostazioni avanzate:

- Clicca sulla scheda Node.js per accedere alle impostazioni.
Nel campo di esecuzione del comando, inserisci:
/srv/customer/node_modules/ghost-cli/bin/ghost run- Verifica che il numero di porta sia
3000. - Casella di comando di build : disattivala.
- Clicca sul pulsante Salva in fondo alla pagina:

- Nella pagina principale, clicca sul pulsante Start (o Restart se già in esecuzione).
- Osserva i log che mostrano la creazione del database e l'avvio dell'applicazione:

Fatto! Accedi al tuo blog Ghost
Successivamente, vai all'URL del tuo sito per iniziare:
- Apri il tuo browser e vai a
https://iltuosito.com/ghost(sostituisciiltuosito.comcon il tuo dominio attuale). - La prima volta:
- Crea un account amministratore (il tuo identificativo per il blog)…
- Poi, potrai iniziare a scrivere articoli!
Configurazione degli utenti / email
Per creare il primo utente, aggiungi /ghost all'URL del tuo sito (ad esempio https://ghost.domain.xyz/ghost) e segui la guida.
È possibile configurare anche l'indirizzo di supporto del portale dei membri: quando nuovi membri desiderano iscriversi, il portale invia la conferma del doppio opt-in da un indirizzo specifico. Per impostazione predefinita, si tratta dell'indirizzo “noreply” del tuo dominio. Per aggiornarlo, vai su “Impostazioni”, “Iscrizione”, “Impostazioni del portale”, “Personalizza” e “Pagina dell'account”:
Risolvere un'incompatibilità tecnica tra Ghost e MariaDB
Esiste un problema di compatibilità tra Ghost e il database MariaDB. Ne consegue questo tipo di errore:
[2025-01-01 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)Alcune richieste SQL generate da Ghost, che utilizzano espressioni di tabella comuni (CTE) annidate in sotto-queries scalari, provocano errori HTTP 400 quando vengono eseguite su MariaDB. Queste richieste sono valide in MySQL 8, che supporta i CTE nelle sotto-queries scalari, ma non in MariaDB fino alla versione 10.6.
Una correzione esiste per adattare il comportamento di Ghost e evitare questi errori (prendi visione della guida ufficiale).
Per utilizzare questa patch, inserisci questo comando:
cd current
curl -L https://gist.githubusercontent.com/reneluria/8cbbfbc001e542c77d6d5887fbafe5d3/raw/65e0ce31753b4687d0eb67fc030734a35d3ffbad/ghost-post.patch | patch -p0
Questa guida presenta le diverse azioni che è possibile eseguire su una tabella MySQL in base ai diritti concessi a un utente.
Azioni sulle tabelle in base ai diritti dell'utente…
… su hosting web condiviso
Lettura + Scrittura + Amministrazione
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEWLettura + Scrittura
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLELettura
GRANT SELECT… su Server Cloud
Lettura + Scrittura + Amministrazione
GRANT ALLLettura + Scrittura
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLESLettura
GRANT SELECT
Questa guida è destinata alle persone che desiderano lavorare con la layer di astrazione Propel (che si riferisce a un componente chiave della libreria Propel, un ORM (Object-Relational Mapping) per PHP).
Premessa
- L'ORM (Object-Relational Mapping) consente di collegare gli oggetti di un'applicazione alle tabelle di un database relazionale. Invece di scrivere SQL, si manipolano i dati tramite oggetti.
- Propel, un livello di astrazione in PHP, facilita la creazione, la manipolazione e il recupero degli oggetti senza preoccuparsi dei dettagli SQL. Consente di gestire le relazioni, le giunzioni e la paginazione, migliorando al contempo la leggibilità e la manutenzione del codice.
Caratteristiche e limitazioni
- Propel non è installato per impostazione predefinita come pacchetto Pear; ciò significa che dovrete installarlo manualmente sul vostro server.
- La versione "Conventionnal Package" di Propel può essere installata; scaricate e installate bene questa versione specifica.
- Poiché i comandi di Propel (
propel-genad esempio) non sono accessibili, non sarà possibile utilizzarli direttamente. - Questo significa che Propel può essere utilizzato solo in produzione, dopo aver generato le classi e i file necessari localmente o in un altro ambiente di sviluppo.
- Tutte le manipolazioni e la generazione del codice devono essere effettuate altrove, prima di trasferire i file risultanti nel vostro ambiente di produzione.
Dipendenze
- Tutte le dipendenze necessarie per utilizzare Propel sono disponibili, tranne Phing.
- Phing non è necessario per la produzione, quindi non dovrebbe essere un problema.
- Assicurarsi che tutte le altre dipendenze richieste per Propel siano installate correttamente.