Używam programu do przesyłania multimediów Wordpress do przesyłania zdjęć i zastanawiałem się, czy istnieje sposób, aby przesłać je na mój zdalny serwer zamiast na serwer lokalny? Przykład: Mój blog wordpress jest hostowany na serwerze A i chcę użyć programu do przesyłania multimediów do przesyłania obrazów na serwer B zamiast na serwer A.
Na obu serwerach działa Ubuntu 10.04 LTS z nginx jako serwerem WWW i oba obsługują ftp i sftp.
Odpowiedzi:
Właśnie zbudowałem wtyczkę, która to robi. Nie jest idealny, ale spełnia swoje zadanie.
Możesz go znaleźć w moim Githubie: https://github.com/pontusab/wp-ftp-media-library
Musisz więc zmienić niektóre rzeczy w pliku w wierszu 28:
Co to jest plugin robi, zmienia structur przesyłania z / rok / miesiąc do przesłać tylko na lokalnym komputerze w naszym przypadku Serwer . Następnie używa php, aby połączyć się z ftp przez: ftp_connect . Funkcja jest uruchamiana po uruchomieniu wp_generate_attachment_metadata. Następnie uruchom sprawdzanie w folderze przesyłania, aby sprawdzić, czy są jakieś obrazy , jeśli tak, prześle je wszystkie na serwer ftp przez ftp_put . Po zakończeniu przesyłania pliki zostaną usunięte z komputera lokalnego za pomocą funkcji unlink .
Następnie wtyczka zmienia adres URL obrazów na „publiczny” adres IP lub nazwę hosta wskazaną na serwer ftp. Sugeruję użycie czegoś takiego jak static.mydomain.com lub cdn.mydomai.com. Należy je wskazać na serwer ftp (serwer B), co umożliwia ładowanie obrazów z serwera ftp.
Jak mówią inni członkowie, powinieneś użyć do tego serwera ftp, lepiej z prawdziwym cdn, montowanym przez bezpiecznik lub coś w rodzaju Amazon S3.
źródło
Brzmi prawie tak, jakbyś chciał po prostu użyć CDN. Większość sieci CDN działa w ten sposób, że ładujesz obrazy lokalnie i są one dublowane w lokalizacji CDN. Następnie skonfigurujesz domenę wskazującą na zawartość CDN i przepisz adresy URL obrazów, aby używać tej domeny zamiast normalnego adresu URL.
Istnieje kilka dobrych wtyczek i usług, chociaż mam tylko doświadczenie z W3TC i Cloudfront.
źródło
Musisz zrozumieć, w jaki sposób WP przesyła plik. Żądanie POST wysyła plik na serwer, gdzie będzie przechowywany w folderze tymczasowym. Następnie WP przetestuje przesłany plik, skopiuje go do katalogu zawartości i usunie plik tymczasowy.
To bardzo złożony proces. W przypadku obrazów możesz podłączyć się do pliku „media_upload_file”, a następnie sprawdzić, czy jest to obraz. Jeśli jest to obraz, skopiuj go z WP_Filesystem na zewnętrzny serwer (użyj metody ftpext i podaj poświadczenia ftp w ramach opcji), w przeciwnym razie pozwól WP obsłużyć przesyłanie
wp_handle_upload()
. W przypadku skopiowania pliku na zewnętrzny serwer, musisz podać adres URL i tak dalej do WP, aby WP mógł skonfigurować dane (np. Dla postów załączników).Ta praca nie jest wykonywana przy pomocy ręki pełnej kodu. Jeśli nie jesteś programistą, lepiej go wynająć. Lub poszukaj wtyczki, która zrobi to za Ciebie.
źródło
Możesz użyć SSHFS lub FTPFS, aby zamontować katalog na zdalnym serwerze dla swojego katalogu przesyłania. W ten sposób nie będziesz musiał niczego zmieniać w samym WordPressie.
Wadą jest to, że każdy dostęp do przesłanego pliku będzie wolniejszy w zależności od tego, gdzie znajduje się serwer B.
źródło