Hosting Virtuale · 3 min read · Dec 16, 2025

Hosting Virtuale Con PureFTPd E MySQL (Inclusi Gestione Quota E Larghezza Di Banda)

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 crittografate 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 Debian Sarge (Debian 3.1). Dovresti già aver configurato un sistema Debian di base, come descritto qui: https://www.howtoforge.com/perfect_setup_debian_sarge e https://www.howtoforge.com/perfect_setup_debian_sarge_p2. Dovrebbe applicarsi ad altre distribuzioni basate su Debian come Ubuntu, Knoppix, ecc. senza modifiche. Su altre distribuzioni come SuSE, Fedora, Mandriva, ecc. solo l’installazione di PureFTPd è diversa; la configurazione di PureFTPd dovrebbe applicarsi anche a queste distribuzioni.

Questo howto è inteso come una guida pratica; non copre i fondamenti 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 scelgo. Non rilascio alcuna garanzia che questo funzionerà per te!

1 Installa MySQL E phpMyAdmin

Tutto questo può essere installato con un solo comando:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

Ti verranno poste alcune domande:

Abilitare suExec? <– Sì
Configurazione di mysql-server (Suggerimenti per l’installazione) <– OK
Quale server web desideri riconfigurare automaticamente? <– apache, apache2
Vuoi che riavvii apache ora? <– Sì

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

mysqladmin -u root password yourrootsqlpassword

2 Installa PureFTPd Con Supporto MySQL

Per Debian è disponibile un pacchetto preconfigurato pure-ftpd-mysql. Installalo come daemon standalone in questo modo:

apt-get install pure-ftpd-mysql

Esegui pure-ftpd da inetd o come server standalone? <– standalone
Vuoi che pure-ftpwho venga installato setuid root? <– No

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 sia libero sul tuo sistema:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “utente pureftpd” -g ftpgroup ftpuser

3 Crea Il Database MySQL Per PureFTPd

Ora creiamo un database chiamato pureftpd e un utente MySQL di nome pureftpd che il daemon PureFTPd utilizzerà in seguito per connettersi al database pureftpd:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.
TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd. TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;

Sostituisci la stringa ftpdpass con qualsiasi password desideri utilizzare per l’utente MySQL pureftpd. Ancora nella shell MySQL, creiamo la tabella del database di cui abbiamo bisogno (sì, c’è solo una tabella!):

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘’,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘’,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘
‘,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;*

quit;

Come avrai notato, con il comando quit; siamo usciti dalla shell MySQL e siamo tornati sulla shell di Linux.

A proposito, (sto suggerendo che il nome host del tuo sistema server ftp sia server1.example.com) puoi accedere a phpMyAdmin su http://server1.example.com/phpmyadmin/ (puoi anche usare l’indirizzo IP invece di server1.example.com) in un browser e accedere come pureftpd. Poi puoi dare un’occhiata al database. In seguito puoi usare phpMyAdmin per amministrare il tuo server PureFTPd.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.