Carregar imagens para o servidor remoto

11

Estou usando o aplicativo de envio de mídia do Wordpress para enviar imagens e fiquei me perguntando se existe uma maneira de fazer o upload para o meu servidor remoto em vez do meu servidor local? Exemplo: Meu blog wordpress está hospedado no Servidor A e quero usar o carregador de mídia para enviar imagens para o Servidor B em vez de para o Servidor A.

Ambos os servidores rodam o Ubuntu 10.04 LTS com nginx como servidor web e ambos suportam ftp & sftp.

    
por Ruriko 28.11.2012 / 13:13

4 respostas

13

Acabei de criar um plugin que faz isso. Não é perfeito, mas faz o seu trabalho.

Você pode encontrá-lo no meu Github: enlace

Então você precisa alterar algumas coisas dentro do arquivo na linha 28:

/**
     * Change this to match your server
     * You only need to change the those with (*)
     * If marked with (-) its optional 
     */

    $settings = array(
        'host'    =>    'ip or hostname',           // * the ftp-server hostname
        'user'    =>    'username',                 // * ftp-user
        'pass'    =>    'password',                 // * ftp-password
        'cdn'     =>    'cdn.example.com',          // * This have to be a pointed domain or subdomain to the root of the uploads
        'path'    =>    '/',                        // - ftp-path, default is root (/). Change here and add the dir on the ftp-server,
        'base'    =>    $upload_dir['basedir']      // Basedir on local 
    );

O que esse plugin faz é que ele muda a estrutura de upload de / year / month para apenas fazer o upload na máquina local no nosso caso Server A . Em seguida, ele usa php para se conectar ao ftp através de: ftp_connect . A função é acionada quando o wp_generate_attachment_metadata é executado. Em seguida, execute um faça o check-in da pasta de uploads para ver se há alguma imagem , se for o caso, fará o upload todos eles para o servidor ftp via ftp_put . Quando o upload for concluído, os arquivos serão removidos da máquina local usando a função unlink .

Em seguida, o plug-in altera a URL das imagens para o ip "público" ou hostname apontado para o servidor ftp. Sugiro usar algo como static.mydomain.com ou cdn.mydomai.com. Eles precisam ser apontados para o servidor ftp (Servidor B), isso permite que você carregue as imagens do servidor FTP.

Como os outros membros dizem que você deve usar um servidor ftp para isso, é melhor com um cdn real, Mounted by fuse ou algo parecido com o Amazon S3.

    
por Pontus Abrahamsson 03.01.2013 / 18:15
0

Parece quase que você só quer usar um CDN. A maneira como a maioria dos CDNs funciona é que você carrega suas imagens localmente e elas são espelhadas no local do CDN. Em seguida, você configura um domínio que aponta para o conteúdo da CDN e reescreve seus URLs de imagem para usar esse domínio em vez de seu URL normal.

Existem vários bons plug-ins e serviços, embora eu tenha experiência apenas com o W3TC e o Cloudfront.

    
por Ed Burns 03.01.2013 / 21:35
0

Você precisa entender como o WP faz o upload de um arquivo. Uma solicitação POST envia o arquivo para o servidor onde ele será armazenado em uma pasta temporária. Depois disso, o WP testará o arquivo carregado, copiá-lo para o diretório de conteúdo e excluir o arquivo temporário.

Este é um processo muito complexo. Para imagens, você pode ligar para 'media_upload_file' e, em seguida, verificar se é uma imagem. Se for uma imagem, copie-a com o WP_Filesystem para o servidor externo (use o método ftpext e forneça suas credenciais de FTP dentro das opções), senão deixe o WP tratar do upload com wp_handle_upload() . No caso de copiar o arquivo para um servidor externo, você deve fornecer o URL e assim por diante para o WP, para que o WP possa configurar os dados (por exemplo, para publicações de anexos).

Este trabalho não é feito com uma mão cheia de código. Se você não é um desenvolvedor, é melhor contratar um. Ou pesquise um plug-in que faça isso para você.

    
por Ralf912 04.01.2013 / 02:48
-1

Você pode usar SSHFS ou FTPFS para montar um diretório no servidor remoto para o seu diretório de uploads. Desta forma, você não precisará alterar nada no próprio WordPress.

A desvantagem é que todo acesso ao arquivo enviado será mais lento, dependendo de onde o servidor B reside.

    
por Mark Kaplun 03.01.2013 / 06:08