Přeskočit na hlavní obsah

WP Media Folder Addon: integrace s Amazon S3

1. Přihlášení k Amazon S3 z WP Media Folder

Vraťte se na WordPress Thing dashboard a klikněte na nabídku Nastavení > WP Media Folder > Cloud > Offload Media > Amazon S3. Vložte následující do polí formuláře:

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

 

vstupní-klíč

 

Poté uložte nastavení a připojení by mělo být úspěšné. Přejděte na další krok a objevte funkce AWS S3.

 

2. Jak to funguje? Co mohu dělat s Amazon S3?

Jak to funguje?

Jakmile připojíte WP Media Folder k Amazon S3, vyberte prosím bucket nebo vytvořte nový, kde budou uložena všechna vaše data.

 

vytvořit-bucket

 

Můžete povolit Kopírovat do Amazon S3 možnost a veškerá nově nahraná média budou odeslána do Amazon S3.

 

kopírovat-do-aws

 

Pokud chcete synchronizovat nahraná média před použitím integrace Amazon S3, klikněte na Synchronizovat média tlačítko. Poté odešle celou vaši existující knihovnu médií do vašeho S3 bucketu.

Poznámka: Když provedete tuto akci, URL vašich médií bude nahrazena URL Amazon S3. Podívejte se na níže uvedený příklad.
Z https://joomunited.com/wp-content/uploads/2019/02/image.jpg to >> https://s3.amazonaws.com/{bucket}/wp-media-folder-joomunited/wp-content/uploads/2019/02/image.jpg

Struktura složek na Amazon S3: Zadejte vlastní cestu, kam budou odložené soubory uloženy ve vašem S3 bucketu.

Aby bylo možné odložit média na vašem webu, měli byste povolit Odstranit po nahrání možnost, vaše knihovna médií bude kompletně uložena na Amazon S3 místo na vašem serveru.

 

offload-media-amazon-s3

 

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

 

amazon-štítek

 

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

 

načíst-aws

 

Poznámka: Soubory můžete synchronizovat z S3 do knihovny médií pouze pokud jsou nahrány pomocí našeho pluginu.

Jak připojit CloudFront?

Cloudfront je integrován s naším pluginem. Pro vytvoření vlastního doménového jména (CNAME) nejprve v Amazon dashboardu 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. Pokud je vaše doména: "https://s3-us-west-1.amazonaws.com/joom-united" prosím přepněte na "https://joom-united.s3-us-west-1.amazonaws.com"

 

create-distribution

 

Na Výchozí chování cache > Klíč mezipaměti a požadavky na původ sekce, vybert Legacy nastavení mezipaměti možnost. Nakonec posuňte dolů na konec a klikněte na Vytvořit distribuci tlačítko.

 

legacy-cache-setting

 

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.

 

file-url-cdn-s3

 

Pokročilá nastavení a akce

Můžete vybrat bucket pro import složek a souborů ze serveru S3 do vaší knihovny médií. Nebo zkopírovat všechny soubory z jednoho bucketu do druhého.

 

copy-buckets

 

3. Vytvořit uživatele IAM


Integrace Amazon S3 s WP Media Folder je součástí doplňku. Musíte nainstalovat tento doplněk (plugin) kromě WP Media Folder. Doplňek zahrnuje integraci pro Google Drive, Google Photo, Dropbox a OneDrive.

Nejprve se musíte přihlásit k Amazon Console nebo se zaregistrovat, pokud nemáte účet AWS S3.

Jakmile se přihlásíte do konzole, budete muset vytvořit nového uživatele IAM. Pak přejděte na stránku uživatelů IAM v konzoli AWS, klikněte na tlačítko Přidat uživatele.

Krok 1: zadejte jméno uživatele, pak klikněte na Další tlačítko.

 

vytvořit-uživatele

 

Krok 2: Chcete‑li umožnit novému uživateli spravovat bucket‑y a objekty ve službě S3, musíte udělit konkrétní oprávnění. Klikněte na “Připojit zásady přímo” tlačítko a poté zadejte “S3” do vstupního pole pro filtrování zásad. Vyberte “AmazonS3FullAccess” zásadu, poté klikněte na Další tlačítko.

 

uživatelská oprávnění

 

Krok 3: Pokud vše vypadá v pořádku, klikněte na Vytvořit uživatele tlačítko.

 

revize uživatele

 

Vytvořit přístupový klíč

Po úspěšném vytvoření nového uživatele byste měli přejít na Správa přístupu > Uživatelé > {select a user} > Bezpečnostní údaje záložku.

 

bezpečnostní-údaje

 

Poté posuňte dolů na Klíče přístupu sekci a klikněte na Vytvořit přístupový klíč tlačítko.

 

vytvořit-přístupový-klíč

 

V kroku 1: Nejlepší postupy pro přístupové klíče & alternativy, vyberte Aplikace běžící mimo AWS volbu. Poté klikněte na Další tlačítko.

 

krok1-vytvořit-klíč

 

Další v kroku 2: pojmenujte popis v poli. Poté klikněte na Vytvořit přístupový klíč tlačítko.

 

krok2-název-klíč

 

Nakonec se zobrazí obrazovka pro získání přístupových klíčů s bezpečnostními údaji pro uživatele, která obsahuje ID přístupového klíče a tajný přístupový klíč. Amazon je již znovu nezobrazí, proto si je prosím stáhněte jako .csv a také je zkopírujte na bezpečné místo. Pokud je ztratíte, můžete vždy vytvořit nový soubor klíčů v konzoli, ale tajný klíč již později znovu získat nemůžete.

 

step3-retrieve-access-key

 

Vytvořit bucket

Aby bylo možné používat Amazon S3, měli byste vytvořit nový bucket. Přejděte do oblasti bucketu: https://s3.console.aws.amazon.com/s3/buckets. Pak klikněte na Vytvořit bucket tlačítko.

 

vytvořit-bucket

 

V Obecná konfigurace, zadejte název bucketu, vyberte AWS region a v Vlastnictví objektu sekci, vyberte ACL povoleny > Objektový zapisovatel možnost.

 

název-bucket

 

V nastavení Blokování veřejného přístupu pro tento bucket sekce, zrušte zaškrtnutí možnosti: "Blokovat veškerý veřejný přístup" a zaškrtněte možnost: "Potvrzuji, že aktuální..." jak na obrázku níže.

 

block-public-access-s3

 

Pak nechte všechny ostatní možnosti jako výchozí a klikněte na Vytvořit bucket tlačítko.

 

final-step-create-bucket

 

Nakonec by měl být nový bucket úspěšně vytvořen se stavem sloupec Přístup: "Objekty mohou být veřejné".

 

created-new-bucket

 

Nebo můžete vytvořit nový bucket v nastavení WP Media Folder. Přejděte do nabídky Nastavení > WP Media Folder > Cloud > Offload Media > Amazon S3, klikněte na Nastavení bucketu a výběr tlačítko. Ve spodní části vyskakovacího okna zadejte název bucketu a klikněte na Vytvořit tlačítko.

 

create-bucket-wp

 

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}()