Hosting Virtuale · 5 min read · Nov 27, 2025

Hosting Virtuale Con PureFTPd E MySQL (Incl. Gestione Di Quota E Larghezza Di Banda) Su CentOS 6.5

Hosting Virtuale Con PureFTPd E MySQL (Incl. Gestione Di Quota E Larghezza Di Banda) Su CentOS 6.5

Versione 1.0
Autore: Falko Timme, aggiornato da Srijan Kishore
Segui howtoforge su Twitter

Questo documento descrive come installare un server PureFTPd che utilizza utenti virtuali da un database MySQL invece di veri utenti di sistema. Questo è molto più performante e consente di avere migliaia di utenti ftp su una singola macchina. Inoltre, mostrerò l’uso di quota e limiti di larghezza di banda per upload/download con questa configurazione. Le password saranno memorizzate in modo crittografato come stringhe MD5 nel database.

Per l’amministrazione del database MySQL puoi utilizzare strumenti basati sul web come phpMyAdmin che saranno anche installati in questo howto. phpMyAdmin è un’interfaccia grafica comoda che significa che non devi impazzire con la riga di comando.

Questo tutorial è basato su CentOS 6.5. Dovresti già aver configurato un sistema base CentOS 6.5, ad esempio come descritto nei primi sei capitoli di questo tutorial: Il Server Perfetto - CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)

Questo howto è inteso come una guida pratica; non copre gli aspetti teorici. Questi sono trattati in molti altri documenti sul web.

Questo documento viene fornito senza garanzia di alcun tipo! Voglio dire che questo non è l’unico modo per impostare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!

1 Nota Preliminare

In questo tutorial utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

2 Installa MySQL E phpMyAdmin

Per prima cosa abilitiamo il repository EPEL sul nostro sistema CentOS poiché alcuni pacchetti che installeremo nel corso di questo tutorial non sono disponibili nei repository ufficiali di CentOS 6.5:

cd /tmp  
rpm --import https://fedoraproject.org/static/0608B895.txt  
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  
rpm -ivh epel-release-6-8.noarch.rpm
yum install yum-priorities

Modifica /etc/yum.repos.d/epel.repo…

vi /etc/yum.repos.d/epel.repo

… e aggiungi la riga priority=10 alla sezione [epel]:

| [epel] name=Pacchetti Extra per Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |

Ora possiamo installare MySQL e phpMyAdmin come segue:

yum install mysql mysql-server phpMyAdmin httpd

Ora configuriamo phpMyAdmin. Cambiamo la configurazione di Apache in modo che phpMyAdmin consenta connessioni non solo da localhost (commentando tutto nella sezione e aggiungendo la riga Require all granted):

in modo che il file appaia così:

vi /etc/httpd/conf.d/phpMyAdmin.conf

| # phpMyAdmin - Browser MySQL basato sul web scritto in php # # Consente solo localhost per impostazione predefinita # # Ma consentire phpMyAdmin a chiunque altro oltre a localhost dovrebbe essere considerato # pericoloso a meno che non sia adeguatamente protetto da SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin # # # Apache 2.4 # # Require ip 127.0.0.1 # Require ip ::1 # # # # # Apache 2.2 # Order Deny,Allow # Deny from All # Allow from 127.0.0.1 # Allow from ::1 # Require all granted # Apache 2.4 Require ip 127.0.0.1 Require ip ::1 # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 # Queste directory non richiedono accesso tramite HTTP - prese dall'originale # tarball upstream di phpMyAdmin # Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None # Questa configurazione impedisce a mod_security nelle directory di phpMyAdmin di # filtrare SQL ecc. Questo potrebbe compromettere la tua implementazione di mod_security. # # # # SecRuleInheritance Off # # |

Poi creiamo i collegamenti di avvio del sistema per MySQL e Apache (in modo che entrambi si avviino automaticamente ogni volta che il sistema si avvia) e avviamo entrambi i servizi:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start
chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

Crea una password per l’utente MySQL root (sostituisci yourrootsqlpassword con la password che desideri utilizzare):

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

NOTE: E’ RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MySQL IN USO IN PRODUZIONE! PER FAVORE LEGGI OGNI PASSO ATTENTAMENTE!

Per poter accedere a MySQL per metterlo in sicurezza, avremo bisogno della password attuale per l’utente root. Se hai appena installato MySQL e non hai ancora impostato la password per root, la password sarà vuota, quindi dovresti semplicemente premere invio qui.

Inserisci la password attuale per root (premi invio per nessuna): <– INVIO
OK, password utilizzata con successo, procedendo…

Impostare la password per root assicura che nessuno possa accedere all’utente root di MySQL senza la corretta autorizzazione.

Impostare la password per root? [Y/n] <– INVIO
Nuova password: <– yourrootsqlpassword
Reinserisci la nuova password: <– yourrootsqlpassword
Password aggiornata con successo!
Ricaricamento delle tabelle di privilegio..
… Successo!

Per impostazione predefinita, un’installazione di MySQL ha un utente anonimo, che consente a chiunque di accedere a MySQL senza dover avere un account utente creato per loro. Questo è inteso solo per testare e per rendere l’installazione un po’ più fluida. Dovresti rimuoverli prima di passare a un ambiente di produzione.

Rimuovere gli utenti anonimi? [Y/n] <– INVIO
… Successo!

Normalmente, root dovrebbe essere autorizzato a connettersi solo da ‘localhost’. Questo assicura che qualcuno non possa indovinare la password di root dalla rete.

Negare l’accesso remoto a root? [Y/n] <– INVIO
… Successo!

Per impostazione predefinita, MySQL viene fornito con un database chiamato ‘test’ a cui chiunque può accedere. Questo è anche inteso solo per testare e dovrebbe essere rimosso prima di passare a un ambiente di produzione.

Rimuovere il database di test e l’accesso ad esso? [Y/n] <– INVIO

  • Rimozione del database di test…
    … Successo!
  • Rimozione dei privilegi sul database di test…
    … Successo!

Ricaricare le tabelle di privilegio assicurerà che tutte le modifiche apportate finora abbiano effetto immediato.

Ricaricare le tabelle di privilegio ora? [Y/n] <– INVIO
… Successo!

Pulizia…

Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MySQL dovrebbe ora essere sicura.

Grazie per aver utilizzato MySQL!

[root@server1 ~]#

3 Installa PureFTPd Con Supporto MySQL

Il pacchetto PureFTPd di CentOS supporta vari backend, come MySQL, PostgreSQL, LDAP, ecc. Pertanto, tutto ciò che dobbiamo fare è installare il normale pacchetto PureFTPd:

yum install pure-ftpd

Poi creiamo un gruppo ftp (ftpgroup) e un utente (ftpuser) a cui verranno mappati tutti i nostri utenti virtuali. Sostituisci il gruppo e l’ID utente 2001 con un numero che è libero sul tuo sistema:

groupadd -g 2001 ftpgroup  
useradd -u 2001 -s /bin/false -d /bin/null -c "utente pureftpd" -g ftpgroup ftpuser
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.