Télécharger des images sur un serveur distant

11

J'utilise WordPress Media Uploader pour télécharger des images et je me demandais s’il était possible de le télécharger sur mon serveur distant au lieu de mon serveur local? Exemple: mon blog wordpress est hébergé sur le serveur A et je souhaite utiliser l'outil de téléchargement de média pour télécharger des images sur le serveur B au lieu du serveur A.

Les deux serveurs exécutent Ubuntu 10.04 LTS avec nginx en tant que serveur Web et prennent en charge ftp & sftp.

    
posée Ruriko 28.11.2012 - 13:13

4 réponses

13

Je viens de construire un plugin qui fait cela. Ce n'est pas parfait mais ça fait son travail.

Vous pouvez le trouver dans mon Github: enlace

Vous devez donc modifier certains éléments du fichier à la ligne 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 
    );

Ce plugin modifie la structure de téléchargement de / année / mois pour ne télécharger que sur la machine locale, dans notre cas, Serveur A . Ensuite, il utilise php pour se connecter au ftp via: ftp_connect . La fonction se déclenche lorsque wp_generate_attachment_metadata est exécuté. Il exécute ensuite un vérifier dans le dossier de téléchargement pour voir s'il n'y a pas d'images , le cas échéant, il sera téléchargé. connectez-les tous au serveur ftp via ftp_put . Une fois le téléchargement terminé, les fichiers sont supprimés de la machine locale à l’aide de la fonction unlink .

Ensuite, le plug-in modifie l'URL des images sur l'adresse IP "publique" ou le nom d'hôte pointé sur le serveur FTP. Je suggère d'utiliser quelque chose comme static.mydomain.com ou cdn.mydomai.com. Ils doivent être dirigés vers le serveur ftp (serveur B), ce qui vous permet de charger les images à partir du serveur ftp.

Comme les autres membres disent que vous devez utiliser un serveur ftp pour cela, il vaut mieux utiliser un véritable cdn, monté par fusible ou similaire à Amazon S3.

    
réponse donnée Pontus Abrahamsson 03.01.2013 - 18:15
0

On dirait presque que vous voulez simplement utiliser un CDN. La plupart des CDN fonctionnent lorsque vous chargez vos images localement et qu'elles sont reflétées à l'emplacement du CDN. Ensuite, vous configurez un domaine qui pointe vers le contenu du CDN et réécrivez vos URL d’image pour utiliser ce domaine à la place de votre URL normale.

Il existe plusieurs bons plugins et services, même si je n’ai que de l’expérience avec W3TC et Cloudfront.

    
réponse donnée Ed Burns 03.01.2013 - 21:35
0

Vous devez comprendre comment WP télécharge un fichier. Une demande POST envoie le fichier au serveur où il sera stocké dans un dossier temporaire. Après cela, WP testera le fichier téléchargé, le copiera dans le répertoire de contenu et supprimera le fichier temporaire.

Il s’agit d’un processus très complexe. Pour les images, vous pouvez vous connecter à 'media_upload_file', puis vérifier s'il s'agit d'une image. S'il s'agit d'une image, copiez-la avec WP_Filesystem sur le serveur externe (utilisez la méthode ftpext et indiquez vos informations d'identification ftp dans les options), sinon laissez WP gérer le téléchargement avec wp_handle_upload() . En cas de copie du fichier sur un serveur externe, vous devez fournir l’URL, etc., à WP, afin que WP puisse configurer les données (par exemple, pour les publications de pièces jointes).

Ce travail ne se fait pas avec une main pleine de code. Si vous n'êtes pas un développeur, mieux vaut en engager un. Ou recherchez un plugin qui le fera pour vous.

    
réponse donnée Ralf912 04.01.2013 - 02:48
-1

Vous pouvez utiliser SSHFS ou FTPFS pour monter un répertoire sur le serveur distant pour votre répertoire de téléchargement. De cette façon, vous n’avez rien à changer dans WordPress lui-même.

L'inconvénient est que chaque accès au fichier téléchargé sera plus lent en fonction de l'emplacement du serveur B.

    
réponse donnée Mark Kaplun 03.01.2013 - 06:08

Lire d'autres questions sur les étiquettes