Přeskočit na hlavní obsah

WP Media Folder Addon: Integrace DigitalOcean

1. Jak vytvořit nový API klíč v DigitalOcean?

Nejprve byste se měli přihlásit ke svému účtu DigitalOcean na webu. Pak jděte zde nebo přejděte do sekce API v levém menu, klikněte na Generate New Key tlačítko.

 

generate-new-key

 

Po té zadejte název klíče a klikněte na zelené zaškrtávací tlačítko.

 

name-new-key

 

Nakonec se zde zobrazí ID klíče a tajný klíč. Uchovejte jej pro další krok přihlášení do WP Media Folder.

 

new-key-generate

 

Vytvořit nový prostor

Nový prostor lze vytvořit v DigitalOcean nebo v pluginu WP Media Folder.

První způsob je vytvořit na stránce DigitalOcean a kliknout na tlačítko Vytvořit > Spaces v pravém horním rohu řídicího panelu.

 

create-space

 

Vyberte region datacentra a zadejte název prostoru. Klikněte na Vytvořit prostor tlačítko.

 

název-prostor-digital-ocean

 

Druhá možnost je vytvořit v nastavení WP Media Folder. Přejděte do nabídky Nastavení > WP Media Folder > Cloud > Offload Media > DigitalOcean, klikněte na Nastavení prostoru a výběr tlačítko.

 

Nastavení-prostoru-výběr

 

Poté vyberte region a název prostoru.

 

vytvořit-prostor-mf

 

2. Přihlášení k DigitalOcean z WP Media Folder

Vraťte se na WordPress Thing dashboardu a klikněte na nabídku Nastavení > WP Media Folder > Cloud > Offload Media. Další, klikněte na Upravit ikonu u Vyberte poskytovatele cloudu a vyberte DigitalOcean

 

vyberte-poskytovatele-cloudu-digital-ocean

 

Poté vložte následující do polí formuláře:

  • ID přístupového klíče
  • Tajný přístupový klíč

 

zadejte-klíč-digital-ocean

 

Poté uložte nastavení a připojení by mělo být úspěšné. Poté klikněte na Nastavení a výběr prostoru tlačítko pro výběr prostoru nebo vytvoření nového. Prosím přejděte na další krok a objevte funkce DigitalOcean.

 

vyberte-prostor

 

3. Jak to funguje? Co mohu dělat s DigitalOcean?

Jak to funguje?

Jakmile jste připojili WP Media Folder k DigitalOcean a povolili Kopírovat do DigitalOcean možnost, veškerá nově nahraná média budou odeslána do DigitalOcean .

 

kopirovat-do-DigitalOcean

 

Nezapomeňte vytvořit a vybrat prostor, kde budou uložena všechna vaše data. A pokud chcete synchronizovat nahraná média před použitím integrace DigitalOcean, klikněte na Synchronizovat s DigitalOcean tlačítko. Poté odešle celou vaši existující knihovnu médií do vašeho prostoru DigitalOcean.

 

sync-media-tlacitko-digital

 

Poznámka: Když provedete tuto akci, URL vašeho média bude nahrazeno URL DigitalOcean. Podívejte se na příklad níže.
Z https://joomunited.com/wp-content/uploads/2019/02/image.jpg na >> https://joomunited-space.nyc3.digitaloceanspaces.com/wp-media-folder-joomunited/wp-content/uploads/2019/02/image.jpg

 

Aby bylo možné odlehčit média na vašem webu, měli byste povolit Odstranit po nahrání volba, vaše knihovna médií bude zcela uložena na DigitalOcean místo na vašem serveru.

 

odstranit-po-nahrani-digital-ocean

 

Povolením Popisek přílohy volby, informace o každém médiu se zobrazí, když najedete kurzorem na štítek DigitalOcean v pravém horním rohu.

 

label-digitalOcean

 

Když chcete změnit umístění médií nebo odebrat plugin, klikněte na Obnovit Média tlačítko, poté budou všechna vaše média zkopírována z DigitalOcean do vaší knihovny médií. Všechny dříve přidané odkazy ve vašem obsahu zůstanou na místě (žádné nefunkční odkazy).

 

retrieve-media-digitalocean

 

Poznámka: Můžete synchronizovat soubory z DigitalOcean do knihovny médií pouze pokud jsou nahrány prostřednictvím našeho pluginu.

 

Jak připojit CloudFront?

Cloudfront je integrován s naším pluginem. DigitalOcean poskytuje dvě metody pro navázání spojení s CloudFront. Jedna je pomocí Amazon S3 a druhá je prostřednictvím výchozí metody DigitalOcean'.

Začneme s výchozí metodou DigitalOcean'.

Nejprve byste měli jít na svůj Spaces na DigitalOcean a vybrat bucket, který jste připojili k vašemu webu. Pak přejděte na Nastavení záložku.

Na CDN (síť pro doručování obsahu) možnost, klikněte na Upravit tlačítko, pak zaškrtněte Povolit CDN možnost. A klikněte na Uložit tlačítko.

 

digital-ocean-cdn-default

 

Vyskakovací oznámení ukazuje, že CDN bylo po několika sekundách načítání povoleno. V pravém rohu vyberte CDN koncový bod možnost, pak zkopírujte URL a vložte ji do Vlastní doména (CNAME) pole.

 

cdn-endpoint-url-digital-ocean-default


Nakonec můžete vidět změny v URL souboru pole u každého obrázku.

 

file-url-cdn-digital-ocean-default

 

A druhý způsob, můžete použít Amazon S3 Cloudfront. Nejprve v řídicím panelu Amazonu přejděte na Služby > CloudFront nebo přejděte na tento odkaz.

 

cloudfront-menu

 

Zde klikněte na Vytvořit distribuci tlačítko v pravém rohu.

 

create-distribution-button

 

Poté vložte svou doménu do Origin domény pole. Např.: "https://joomunited.us-east-1.digitaloceanspaces.com"

 

vytvořit-distribuce-digitální-oceán

 

V Výchozí chování cache > Klíč cache a požadavky na původ sekce, vyberteLegacy nastavení cache možnost. 

 

legacy-cache-setting

 

Dále posuňte dolů k Web Application Firewall (WAF) sekci a vyberte "Nezapínat bezpečnostní ochrany" možnost. Nakonec posuňte dolů na konec a klikněte na Vytvořit distribuci tlačítko.

 

webova-aplikacni-firewall-digital-ocean

 

Pak se zobrazí podrobnosti distribuce, zkopírujte název domény distribuce. A přejděte do nastavení Amazon v WP Media Folder a vložte jej do Vlastní doména (CNAME) pole.

 

copy-distribution

 

Počkejte prosím několik minut, než se obrázek plně načte, když se pole Poslední úpravy změní z "Nasazování" na aktuální datum a čas.

Nakonec můžete vidět změny v File URL poli u každého obrázku.

 

soubor-url-cdn-digital-ocean-s3

 

Pokročilá nastavení a akce

Můžete vybrat prostor pro import složek a souborů ze serveru DigitalOcean do vaší mediální knihovny. Nebo zkopírovat všechny soubory z jednoho prostoru do druhého.

 

kopirovat-prostory

 

Duplicate entry 'e60381473f15a637e39772d4f26ce283-cs' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry 'e60381473f15a637e39772d4f26ce283-cs' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#896
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry 'e60381473f15a637e39772d4f26ce283-cs' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()