Hospedagem Virtual · 5 min read · Nov 27, 2025

Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No CentOS 6.5

Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No CentOS 6.5

Versão 1.0
Autor: Falko Timme, atualizado por Srijan Kishore
Siga o howtoforge no Twitter

Este documento descreve como instalar um servidor PureFTPd que utiliza usuários virtuais de um banco de dados MySQL em vez de usuários reais do sistema. Isso é muito mais eficiente e permite ter milhares de usuários ftp em uma única máquina. Além disso, mostrarei o uso de limites de quota e largura de banda de upload/download com esta configuração. As senhas serão armazenadas criptografadas como strings MD5 no banco de dados.

Para a administração do banco de dados MySQL, você pode usar ferramentas baseadas na web como o phpMyAdmin, que também será instalado neste howto. O phpMyAdmin é uma interface gráfica confortável, o que significa que você não precisa se preocupar com a linha de comando.

Este tutorial é baseado no CentOS 6.5. Você já deve ter configurado um sistema básico do CentOS 6.5, por exemplo, conforme descrito nos primeiros seis capítulos deste tutorial: O Servidor Perfeito - CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)

Este howto é destinado como um guia prático; não cobre os fundamentos teóricos. Eles são tratados em muitos outros documentos na web.

Este documento vem sem garantia de qualquer tipo! Quero dizer que este não é o único modo de configurar tal sistema. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Neste tutorial, uso o nome do host server1.example.com com o endereço IP 192.168.0.100. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado.

2 Instalar MySQL E phpMyAdmin

Primeiro, habilitamos o repositório EPEL em nosso sistema CentOS, pois alguns pacotes que vamos instalar no decorrer deste tutorial não estão disponíveis nos repositórios oficiais do 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

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

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

… e adicione a linha priority=10 à seção [epel]:

| [epel] name=Pacotes Extras para 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 [...] |

Agora podemos instalar o MySQL e o phpMyAdmin da seguinte forma:

yum install mysql mysql-server phpMyAdmin httpd

Agora configuramos o phpMyAdmin. Mudamos a configuração do Apache para que o phpMyAdmin permita conexões não apenas de localhost (comentando tudo na seção e adicionando a linha Require all granted):

para que o arquivo fique assim:

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

| # phpMyAdmin - Navegador MySQL baseado na web escrito em php # # Permite apenas localhost por padrão # # Mas permitir phpMyAdmin a qualquer um além de localhost deve ser considerado # perigoso, a menos que devidamente protegido por 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 # Esses diretórios não requerem acesso via HTTP - retirado do tarball original # do 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 # Esta configuração impede que o mod_security nos diretórios do phpMyAdmin # filtre SQL etc. Isso pode quebrar sua implementação do mod_security. # # # # SecRuleInheritance Off # # |

Em seguida, criamos os links de inicialização do sistema para o MySQL e o Apache (para que ambos iniciem automaticamente sempre que o sistema for iniciado) e iniciamos ambos os serviços:

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

Crie uma senha para o usuário root do MySQL (substitua yourrootsqlpassword pela senha que você deseja usar):

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

NOTA: EXECUTAR TODAS AS PARTES DESTE SCRIPT É RECOMENDADO PARA TODOS OS SERVIDORES MySQL EM USO DE PRODUÇÃO! POR FAVOR, LEIA CADA ETAPA CUIDADOSAMENTE!

Para fazer login no MySQL para protegê-lo, precisaremos da senha atual do usuário root. Se você acabou de instalar o MySQL e não definiu a senha root ainda, a senha estará em branco, então você deve apenas pressionar enter aqui.

Digite a senha atual para root (pressione enter para nenhum): <– ENTER
OK, senha usada com sucesso, prosseguindo…

Definir a senha root garante que ninguém possa fazer login no usuário root do MySQL sem a devida autorização.

Definir senha root? [Y/n] <– ENTER
Nova senha: <– yourrootsqlpassword
Reinsira a nova senha: <– yourrootsqlpassword
Senha atualizada com sucesso!
Recarregando tabelas de privilégios..
… Sucesso!

Por padrão, uma instalação do MySQL tem um usuário anônimo, permitindo que qualquer um faça login no MySQL sem ter que ter uma conta de usuário criada para eles. Isso é destinado apenas para testes e para facilitar um pouco a instalação. Você deve removê-los antes de passar para um ambiente de produção.

Remover usuários anônimos? [Y/n] <– ENTER
… Sucesso!

Normalmente, o root deve ser permitido apenas conectar-se de ‘localhost’. Isso garante que alguém não possa adivinhar a senha root pela rede.

Desabilitar login remoto do root? [Y/n] <– ENTER
… Sucesso!

Por padrão, o MySQL vem com um banco de dados chamado ‘test’ que qualquer um pode acessar. Isso também é destinado apenas para testes e deve ser removido antes de passar para um ambiente de produção.

Remover banco de dados de teste e acesso a ele? [Y/n] <– ENTER

  • Removendo banco de dados de teste…
    … Sucesso!
  • Removendo privilégios no banco de dados de teste…
    … Sucesso!

Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora tenham efeito imediato.

Recarregar tabelas de privilégios agora? [Y/n] <– ENTER
… Sucesso!

Limpando…

Tudo pronto! Se você completou todas as etapas acima, sua instalação do MySQL deve agora estar segura.

Obrigado por usar o MySQL!

[root@server1 ~]#

3 Instalar PureFTPd Com Suporte A MySQL

O pacote PureFTPd do CentOS suporta vários backends, como MySQL, PostgreSQL, LDAP, etc. Portanto, tudo o que precisamos fazer é instalar o pacote PureFTPd normal:

yum install pure-ftpd

Em seguida, criamos um grupo ftp (ftpgroup) e um usuário (ftpuser) ao qual todos os nossos usuários virtuais serão mapeados. Substitua o grupo e o ID do usuário 2001 por um número que esteja livre em seu sistema:

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

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.