Wordpress 미디어 업 로더를 사용하여 이미지를 업로드하고 있는데 로컬 서버 대신 원격 서버에 업로드하는 방법이 있는지 궁금합니다. 예 : 워드 프레스 블로그가 서버 A에서 호스팅되고 미디어 업 로더를 사용하여 서버 A 대신 서버 B에 이미지를 업로드하려고합니다.
두 서버 모두 웹 서버로 nginx를 사용하여 Ubuntu 10.04 LTS를 실행하며 ftp 및 sftp를 모두 지원합니다.
Wordpress 미디어 업 로더를 사용하여 이미지를 업로드하고 있는데 로컬 서버 대신 원격 서버에 업로드하는 방법이 있는지 궁금합니다. 예 : 워드 프레스 블로그가 서버 A에서 호스팅되고 미디어 업 로더를 사용하여 서버 A 대신 서버 B에 이미지를 업로드하려고합니다.
두 서버 모두 웹 서버로 nginx를 사용하여 Ubuntu 10.04 LTS를 실행하며 ftp 및 sftp를 모두 지원합니다.
답변:
방금 플러그인을 만들었습니다. 완벽하지는 않지만 그 일을합니다.
내 Github에서 찾을 수 있습니다 : https://github.com/pontusab/wp-ftp-media-library
따라서 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
);
이 플러그인의 기능은 업로드 구조를 / year / month에서 로컬 서버 에만 업로드하도록 변경 하는 것 입니다. 그런 다음 php를 사용하여 ftp_connect 를 통해 ftp에 연결합니다 . wp_generate_attachment_metadata가 실행될 때이 함수가 실행됩니다. 그런 다음 업로드 폴더에서 검사 를 실행하여 이미지가 있는지 확인합니다. 이미지 가 있으면 ftp_put을 통해 ftp-server에 모두 업로드합니다 . 업로드가 완료되면 unlink 기능을 사용하여 파일이 로컬 시스템에서 제거됩니다 .
그런 다음 플러그인은 이미지의 URL을 "public"ip 또는 ftp-server를 가리키는 호스트 이름으로 변경합니다. static.mydomain.com 또는 cdn.mydomai.com과 같은 것을 사용하는 것이 좋습니다. ftp 서버 (서버 B)를 가리켜 야하므로 ftp 서버에서 이미지를로드 할 수 있습니다.
다른 회원이 말한 것처럼 ftp-server를 사용해야한다고 말하면 퓨즈로 마운트 된 실제 cdn 또는 Amazon S3와 같은 것이 좋습니다.
WP가 파일을 업로드하는 방법을 이해해야합니다. POST 요청은 파일을 서버로 전송하여 임시 폴더에 저장합니다. 그 후 WP는 업로드 된 파일을 테스트하고 컨텐츠 디렉토리에 복사 한 후 임시 파일을 삭제합니다.
이것은 매우 복잡한 과정입니다. 이미지의 경우 'media_upload_file'에 연결 한 다음 이미지인지 확인할 수 있습니다. 이미지 인 경우 WP_Filesystem을 사용하여 이미지를 외부 서버로 복사하십시오 (ftpext 메소드를 사용하고 옵션 내에 ftp 신임 정보 제공). 그렇지 않으면 WP가 업로드를 처리하도록하십시오.wp_handle_upload()
. 파일을 외부 서버로 복사하는 경우 WP에 URL 등을 제공해야하므로 WP가 데이터를 설정할 수 있습니다 (예 : 첨부 파일 게시물).
이 작업은 코드로 가득 찬 손으로 수행되지 않습니다. 개발자가 아닌 경우 개발자를 고용하는 것이 좋습니다. 또는이 작업을 수행 할 플러그인을 검색하십시오.
SSHFS 또는 FTPFS 를 사용 하여 업로드 디렉토리의 원격 서버에 디렉토리를 마운트 할 수 있습니다 . 이런 식으로 WordPress 자체에서 아무것도 변경할 필요가 없습니다.
단점은 서버 B가 상주하는 위치에 따라 업로드 된 파일에 대한 모든 액세스 속도가 느려진다는 것입니다.