Ana içeriğe geçin
  Salı, 14 Ocak 2020
  6 Cevaplar
  3.1k ziyaretler
  Abone
Merhaba,

Digitalocean Spaces ve diğer S3 versiyonlarıyla uyumlu mu?

Ayrıca Flatsome UX Builder ile uyumlu mu

? Teşekkürler!
A
5 yıl önce
MERHABA,

Bu uzantıyla ilgili olarak bizimle buradan iletişime geçtiğiniz için teşekkür ederiz.

Digitalocean spaces ve diğer S3'lerle uyumlu mu?

Digital Ocean'ı henüz desteklemedik, şu anda Amazon S3'ü kullanabilirsiniz: Daha fazla bilgi için:

https://www.joomunited.com/wordpress-urunleri/wp-media-folder/amazon-s3-entegrasyon-ile-wordpress-media-library

Ve Flatsome UX Builder ile uyumlu mu?

Evet, hemen hemen tüm sayfa oluşturucularla uyumludur.

Umarım yardımcı olur!
Şerefe,
W
5 yıl önce
Merhaba,

Cevabınız için teşekkürler.

DO S3 uyumlu olduğundan belki DO kimlik bilgileri ve sunucu adresiyle çalışır, hayır?:) Denediniz mi?
A
5 yıl önce
MERHABA,

Daha fazla bilgi için bana geri döndüğün için teşekkürler.

DO S3 uyumlu olduğundan belki DO kimlik bilgileri ve sunucu adresiyle çalışır, hayır mı?:) denediniz mi?


DO ile test etmedik ve bunun mümkün olduğunu düşünmüyorum.

Şerefe,
R
5 yıl önce
Bunu DigitalOcean ile kullanabilirsiniz, bunun için basit bir yöntem var:

digitalocean.png

Bunu bir müşterim için yaptığım için, önce hileyi ayrıntılı olarak anlatacağım, sonra da bunu ayrı olarak nasıl çalıştıracağınızı açıklayacağım.

--

Henüz %100 çalışır durumda olmasa da önemli ilerleme kaydettik:

1. Kesmek

DigitalOcean Spaces, S3'ün API'si etrafında oluşturulmuştur ve Amazon'un "AWS SDK" PHP kütüphanesi (eklentiyle birlikte gelen d bundle).

Bunu keşfettiğimde, o zamandan beri anladım ki DigitalOcean, SDK'nın kendi ürünüyle kullanılmasını teşvik ediyor, çalışmasını sağlamak için bazı kodları kırmak çok da zor olmayacaktır.

Bunu yapmak için eklentinin çalışma şeklinin iki sınıf dosyasıyla (her servis için) olduğunu buldum -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(S3 için).

"Yönetici" dosyası ön uç işlevselliğinin bulunduğu yerdir; diğeri ise S3 SDK ile arayüz oluşturmak içindir. Kısacası, "yönetici" dosyası Ajax veya WP ön ucu aracılığıyla yüklenir ve işlevselliği, depolanan kimlik bilgilerini kullanarak S3 dosyasını çağırır ve bu sayede S3 kovanızla senkronizasyon gibi eylemler gerçekleştirmesine olanak tanır. Bu yöntem gayet iyi çalışır, ancak DigitalOcean ile çalışmasını sağlamada büyük bir sorun vardır:

uç nokta.png

DigitalOcean OLUMSUZ Bölgeden bağımsız. Bu, her isteğin belirli bir bölgeye yönelik olduğu, S3'ün ise böyle olmadığı anlamına gelir. Bu kendi başına bir sorun değil (bizim yöntemimiz yine de işe yarayacaktır), ancak "tam" işlevselliğe (farklı bölgeler/kovalar) ulaşmak istiyorsanız, her seferinde özel kimlik bilgisi ayarlarıyla "yönetici olmayan" sınıfını çağırmanız gerektiğinden emin olmanız gerekir.

-

Hile şu şekildedir:

a) DigitalOcean Spaces bölgeniz için "endpoint"i kullanmak üzere "admin" dosyasını değiştirin
b) 'us-east-1' bölgesinin her zaman ayarlandığından emin olun
c) Medya kitaplığınızdaki senkronize edilmiş eklerin her biri için "ek URL'sini" değiştirin

-

İlk adım "admin" dosyasındaki "varsayılan" seçenekleri değiştirmektir:

yönetici.png

34. satırdan başlayarak
./class/wpmfAddonAws3Admin.php
, diğer sınıf için bir dizi varsayılan ayarın oluşturulduğunu göreceksiniz. Aşağıdakileri yapmanız gerekir:


  • "Bölge"yi 'us-east-1' olarak değiştirin
  • Satırı ekle
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



Yukarıdaki durumda "bölgemiz" AMS3'tür. Bu, alanınızın bulunduğu yere bağlı olarak farklılık gösterebilir.

Bu kodu değiştirmek aslında çok fazla bir şey yapmıyor, ancak her seferinde aynı varsayılanların kullanılmasını (ve tüm hack'in temeli olan "uç noktanın" ayarlanmasını) sağlıyor.

-

Bunu yaptıktan sonra diğer sınıf dosyasına geçiyoruz
./class/wpmfAws3.php
:

sınıf.png

Bu, daha önce de belirtildiği gibi, "admin" sınıfının S3/DO ile iletişim kurmak istediği her seferinde çağrılır.

Burada yapacağımız şey, uç noktayı "sahtelemek", yani sabit kodlamak. Bu, AWS SDK'sının istekleri gönderdiği URL'yi değiştirecek ve bu da DigitalOcean kimlik bilgilerimizin kabul edilmesi gerektiği anlamına geliyor. Bunu yapmak için, sırasıyla 73. ve 74. satırlara aşağıdaki iki satırı eklemeniz yeterli:

#73 $args['bölge'] = 'us-east-1';
#74 $args['bitiş noktası'] = 'https://ams3.digitaloceanspaces.com';

Yukarıdakiler, "admin" işlevselliğinden herhangi birini kullandığınızda "uç noktanın" değiştirilmesini zorunlu kılacaktır.

Yukarıdaki bilgileri alıp depolanan S3 kimlik bilgilerinizle (sizin durumunuzda DigitalOcean API anahtarı) birleştirerek çalışır ve betiğin DO ile iletişim kurmasına olanak tanır. Yukarıda bunun sınırlı olduğunu, çünkü yalnızca tek bir DO bölgesiyle iletişim kurabileceğiniz anlamına geldiğini açıklamıştım (bu konuya birazdan ayrıntılı olarak değineceğim).

-

Bunu yaptıktan sonra yapmamız gereken son şey, DO ile senkronize edilen her bir ek için "URL"yi değiştirmektir.

Bu, "admin" sınıfının içinde, "wpGetAttachmentUrl" (#2048) ve "addMetaInfo" (#1121) fonksiyonlarında yapılır:

1121.png

2048.png

Bu işlevlerden hangisinin gerçekten işlevselliği sağladığından emin değilim (sanırım #2048), ama yine de ikisini de değiştirdim.

Sonuç olarak, tek yaptığınız AWS bağlantısını DigitalOcean bağlantısıyla değiştirmek. Bu hack için işe yarayan yöntem şuydu:

#2057 'https://' . $infos['Kova'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['Anahtar']); döndür

Bu, WP medyasının DigitalOcean Spaces'e olan "bağlantısını" değiştirir ve bu bağlantıyı sitenizin arka ve ön yüzünde göstermelidir.

--

Daha geniş kapsamlı çözümü başka bir yazıda anlatacağım.
R
5 yıl önce
2. "Tam dolu"

Yukarıda belirtildiği gibi, "tam" düzeltme, DigitalOcean'ın AWS SDK ile nasıl arayüz kurduğuna bağlıdır.

Basitçe ifade etmek gerekirse, S3 herhangi bir bölgede "bağlanmanıza" ve ardından bir kova seçmenize olanak tanır; DigitalOcean yalnızca bir kovaya bağlanmanıza ve etkileşimde bulunmanıza izin verir Bekar bölge her seferinde.

Eklentinin tüm işlevselliğinden (DigitalOcean ile) yararlanmak istiyorsanız, "admin" sınıfında yapılması gereken birçok özelleştirme bulunuyor. Temel olarak, HER isteğin doğru uç noktaya yönelik olduğundan emin olmanız gerekiyor; bu da hem zaman alıcı hem de oldukça maliyetli (API bağlantıları açısından).

-

Bunu "bir nevi", gevşek de olsa, hallettik. Bunu, ilerlemeyi paylaşmak için buraya yazıyorum ve belki başka biri de bunu ele almak ister.

--

Ayrı ayrı çalışmasını sağlamak için 4 önemli şey yapmanız gerekiyor:

1. Ayrı bir "DigitalOcean" kullanıcı arayüzü akışı oluşturun
2. S3'e yapılan tüm referansları kaldırın (gerektiğinde DigitalOcean ile değiştirin)
3. Bölgeler arası desteğe izin vermek için belirli özelliklerin akışını değiştirin
4. DO'nun S3 ile etkileşime girmediğinden emin olun

-

1. Ayrı bir "DigitalOcean" sekmesi eklemek için orijinal eklentiye gitmeniz ve "cloud.php" dosyasını (./class/pages/settings/cloud.php) bulmanız gerekir:

<div id="do" class="tab-content">
<div class="wpmf_width_100 p-tb-20 wpmf_left top_bar">
<h1 class="wpmf_left"><?php esc_html_e('DigitalOcean', 'wpmf') ?></h1>
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/submit_button.php';
?>
</div>
<div class="content-box content-wpmf-general">
<?php
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- View request, no action
if (isset($_POST['btn_wpmf_save'])) {
?>
<div class="wpmf_width_100 top_bar saved_infos" style="padding: 20px 0">
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/saved_info.php';
?>
</div>
<?php
}
?>

<div>
<div class="wpmf_row_full">
<?php
if (is_plugin_active('wp-media-folder-addon/wp-media-folder-addon.php')) {
// phpcs:ignore WordPress.Security.EscapeOutput -- Content already escaped in the method
echo $html_tabdo;
}
?>
</div>
</div>
</div>
</div>


Ben bunu S3 sekmesinden sonra ekledim.

Bunu çalıştırmak için, iki dosyayı değiştirerek $html_tabdo değişkeninin doldurulması gerekir.

Birincisi ./class/pages/settings/wp-folder-options.php dosyasıdır (ana/orijinal eklenti):

S3.png

İkincisi ise ./class/class-wp-folder-option.php:

html_do.png

Bu, sekmeyi çeşitli DigitalOcean ayarlarıyla dolduracaktır.

-

2. S3'ü DO ile değiştirmek için, iki sistemin çakışmamasını sağlamak amacıyla tamamen farklı dosya ve kuyruk ayarlarına sahip olduğunuzdan emin olmanız gerekir.

Bunun için bir dizi işlem yapmanız gerekir; özellikle de yeni bir "admin" ve "connection" sınıfı kümesi oluşturmanız gerekir. Bunu nasıl yapacağınızı ayrıntılı olarak anlatmayacağım, ancak temel olarak kendi yapılandırma ayarlarını oluşturan yeni bir sınıf kümesi oluşturmanız ve bunları DO uç noktalarına bağlanmak için kullanmanız gerekir:

api_kodu.png

-

3. Bölgeler arası destek.

Yukarıdaki yazıda da belirtildiği gibi, DO'nun sistemi S3'ten farklı çalışır; her istek belirli bir bölgeye yöneliktir (S3'ün sistemi bölgeden bağımsızdır).

Bu, diğer bölgelerdeki kovalarla/alanlarla çalışmak istiyorsanız, her şeyin birlikte çalışmasını sağlamak için biraz sihir yapmanız gerektiği anlamına gelir.

Zamanım daralıyor, bu yüzden burada her şeyi ele almayacağım, ancak sistemin çalışmasını sağlamak istiyorsanız, arka uçtaki "./class/wpmfDo.php" dosyasını düzenlemeniz gerektiğini söyleyeceğim - SDK örneğini çağırmak istediğiniz "uç noktayı" geçebildiğinizden emin olun...

uç nokta.png

Bu bize farklı "son noktaları" ("bölgeler") tanımlama olanağı sağlar;) farklı alanları listelemeniz gerektiğinde vb.

Bunun eylem halinde iyi bir örneği, mevcut kovaları listelemek istediğiniz zamandır:

bölge.png

Yukarıdakileri başarmak için, DO'da mevcut tüm bölgeler arasında geçiş yapmanız ve ardından kullanılabilir kovalardan oluşan yeni bir dizi oluşturmanız gerekir. Anlayacağınız gibi, bu çözümü oluşturmak zordu:

kovalar_listesi.png

Bu, farklı bölgelerden (sadece bağlanmak için kullandığınız bölgeden değil) $list_buckets değişkenini oluşturur.

-

4. Bunu henüz yapmadım

Temel olarak, S3 mevcut olsa bile DigitalOcean'ı S3 ile çalıştırabilmeniz gerekir.

Bunun için "senkronizasyon" fonksiyonunun çalışmasını sağlamam ve henüz tamamlamadığım bir dizi başka şey yapmam gerekecek.
T
Merhaba,

Bu özellik yakın zamanda eklentiye eklendi. Ayrıntıları aşağıda görebilirsiniz.:)

Saygılarımla,
  • Sayfa :
  • 1
Bu yazıya henüz yanıt verilmedi.