blogs.dir em diferente diretório

Há bom tempo uso o WordPress como ferramenta básica para a criação de blogs, seja para uso próprio ou para clientes. Mesmo trabalhando com Drupal e Joomla!, desconheço ferramenta melhor para fazer blogs.

Uma de suas vantagens é a facilidade de gerenciar vários blogs em uma única instalação, permitindo assim que administradores de sistemas não arranquem os cabelos quando precisam atualizá-los, uma tarefa constante visto a quantidade de updates e upgrades lançados não somente do núcleo do sistema mas também de seus plugins. E quando se tem diversos destes plugins instalados, o problema se torna exponencial.

Até o lançamento da série 3 do WordPress, esta função era destinada ao WordPress mU, ou versão “multiblogs”. A partir da versão 3, as funcionalidades do mU foram absorvidas pela versão padrão e descontinuada (nada mais sensato). Neste momento também migrei vários de meus blogs para uma única plataforma facilitando meu trabalho de atualização do sistema, como esperado.

Entretanto um problema começou a surgir. A configuração padrão do WordPress série 3 quando habilitada a opção de multiblogs, cria um diretório chamado blogs.dir para o armazenamento de arquivos em detrimento ao antigo wp-content/files. Até aí tudo bem, exceto que em minha configuração, o diretório blogs.dir precisava ficar em outro disco rígido do servidor devido a quantidade de arquivos versus o espaço disponível.

Pode-se pensar que um link simbólico (symbolic link ou simlink) resolveria o problema em conjunto com as permissões corretas. Entretanto isso não foi verdade devido uma configuração existente em meu servidor que inibe o uso de diretórios fora da raíz do site com a opção open_basedir. Resultado: por mais que tentasse, não conseguia acessar o diretório com imagens e arquivos e tampouco fazer o upload de novos arquivos para o disco montado.

Depois de muito quebrar a cabeça com permissões, usuários, grupos e outros, encontrei a solução para o problema justamente neste open_basedir. Acrescentando mais uma diretiva na configuração do Apache, é possível mover o diretório blogs.dir para qualquer lugar. Assim é possível organizar melhor a baderna dos arquivos de imagens e outros, separados do core do sistema.

Como fazer

Meu servidor usa o Plesk, um gerenciador gráfico para as funções de administração do mesmo. Para a configuração do mesmo a fim de permitir o uso de links simbólicos é necessário acrescentar o caminho real do diretório de destino dos arquivos dentro das configurações do Apache. Para isso, faça:

1) Crie um arquivo chamado vhost.conf dentro do diretório conf de seu domínio (deve estar em /var/www/domínio/conf). A forma mais fácil de fazê-lo é com o comando touch:

touch /var/www/vhost/domínio/conf/vhost.conf

2) Edite este arquivo, colocando as seguintes linhas no mesmo:

<Directory /var/www/vhosts/SEU-DOMINIO/httpdocs/>
php_admin_value open_basedir "/var/www/vhosts/SEU-DOMINIO/httpdocs:/tmp:/CAMINHO/PARA/OS/ARQUIVOS"
</Directory>

3) Execute o seguinte comando para o Plesk:

/usr/local/psa/admin/sbin/websrvmng -u --vhost-name=<SEU-DOMINIO>

4) Reinicie o Apache

/etc/init.d/httpd restart

Feito isso, crie o link simbólico do diretório blogs.dir dentro de wp-content:

cd /var/www/vhosts/SEU-DOMINIO/httpdocs/wp-content/
ln -s /SEU-DIRETORIO-NOVO .

Pronto. Se tudo estiver ok você poderá fazer o upload de arquivos dentro do novo diretório independente das configurações do WordPress.

Dúvidas, comente abaixo.