Como configurar o D7 para que os arquivos sejam enviados para um servidor diferente

9

No Drupal 7, o caminho padrão para upload é definido nas opções do sistema de arquivos no caminho do sistema de arquivos público. É possível especificar um servidor diferente nesse caminho? Eu tenho um site do Drupal 7 que estamos desenvolvendo que terá cerca de 20k arquivos e eu gostaria de colocá-los em um servidor diferente do servidor da web. Se não for possível especificar um servidor diferente, existem módulos contribuídos pelo usuário que possam lidar com isso?

John81
fonte
Você concluiu esta tarefa.
Cindrella #
Algum módulo sobre isso?
Dushyant Joshi

Respostas:

8

Eu faço algo muito parecido. Se você estiver executando uma infraestrutura capaz dessa configuração, recomendo que você compartilhe seu servidor de arquivos (Linux ou Windows Server) e monte-o no caminho de arquivo público do Drupal, onde quer que o diretório público seja para esse campo específico.

Por exemplo, considere a seguinte configuração do Samba (encontrada em /etc/samba/smb.conf se você executa um servidor de arquivos baseado em Linux). Isso ocorre no final do arquivo, após todas as outras opções de configuração:

[data]
    comment = Data directory
    browseable = yes
    writable = yes
    valid users = "@DOMAIN\Domain Admins"
    path = /data
    create mask = 0664
    force create mode = 0664

A valid users sintaxe lá diz "permite que este grupo de usuários" acesse esse compartilhamento. Nesse caso, estamos usando o PAM para conectar nosso servidor de arquivos ao Active Directory, e esse grupo específico é disponibilizado assim que você conectar os dois.

No servidor da Web, o que estiver hospedando o site Drupal, navegue até o diretório de arquivos públicos. Diga que o campo específico para o qual você precisa disponibilizar os arquivos é público: // field_with_20k_files /. Você executaria um comando de montagem semelhante da seguinte maneira:

sudo mount -t cifs -o user=domainadministrator,uid=domainadministrator,gid=apache //fileserver/data /path/to/field_with_20k_files

Eu tenho o gidconjunto para qualquer processo que esteja executando o servidor web, para que ele tenha acesso a esse diretório. Provavelmente, você desejará garantir que o serviço da Web tenha acesso de leitura e gravação ao servidor da Web seja realmente capaz de carregar arquivos.

Lester Peabody
fonte
Todas as respostas são boas, mas como temos controle da infraestrutura, essa resposta é a mais fácil e direta do ponto de vista do Drupal para ser implementada, pois não precisamos instalar nenhum módulo novo. Estamos em um ambiente Windows, mas obrigado pelas etapas incrivelmente detalhadas fornecidas!
John81
Nesse caso, você pode basicamente pular a configuração do Samba e executar o comando mount diretamente usando um nome de usuário e senha que possuam a configuração de permissões apropriada do Windows. Deixe-me saber se você tiver alguma dúvida.
Lester Peabody
Estou tentando fazer isso, mas estou tendo problemas. Meu centro de serviço conseguiu montar o servidor Windows, mas não sabíamos para onde ir a partir daí. Tentei usar / mount_file_path como o diretório público do arquivo, mas recebo um erro de que ele não existe e não pôde ser criado.
N
5

Também uma excelente opção seria a API de armazenamento . Aqui está uma citação sobre isso (na página do projeto do módulo):

... é uma estrutura de baixo nível para armazenamento e veiculação gerenciada de arquivos. O módulo e todas as funções principais permanecerão independentes de outros módulos para fornecer essa funcionalidade de baixo nível. Os submódulos são bem-vindos para permitir que a API de armazenamento interaja com outros módulos contribuídos, mas nunca deve haver uma declaração de dependências [] no arquivo storage.info, a menos que seja necessário para a função de baixo nível deste módulo.

Possui os seguintes recursos:

  • Arquitetura conectável - pode ser estendida para funcionar com qualquer serviço de armazenamento.
  • Redundância - pode ser configurada para armazenar seus arquivos em vários serviços e alterar instantaneamente qual deles está sendo veiculado. Isso significa que seu site não será desativado por um serviço com problemas .
  • API de controle de acesso - pode ser usada para comércio eletrônico.
  • Desduplicação - quando arquivos idênticos são armazenados no mesmo contêiner, apenas uma instância será criada. Isso economiza largura de banda e armazenamento.
  • Integração de arquivos e campos de imagem - ative o submódulo "ponte principal".
  • Módulo de auditoria - compara um manifesto de arquivos com o que é registrado no banco de dados para garantir que o registro seja preciso.
ropic
fonte
4

Dois módulos que também podem ajudar nessa área são o CDN (usado por muitos sites grandes, incluindo o Economist.com) e o Amazon S3 (especificamente para usar o Amazon S3 em vez do sistema de arquivos local).

Patrick Kenny
fonte