
Зачастую статический контент сайта может занимать большую часть дискового пространства сервера. В таком случае может быть полезно перенести его в другое место вместо расширения диска сервера. Но как при этом организовать его отдачу? Один из хороших вариантов – облачное объектное хранилище. В этой статье мы расскажем, как подключить облачное объектное хранилище в WordPress и настроить загрузку и хранение изображений сайта в нем.
В данной статье мы будем использовать плагин S3-Uploads, поскольку он бесплатно предоставляет возможности миграции и настройки хранения медиафайлов WordPress в S3-совместимых облачных хранилищах, однако для работы с самим плагином потребуется использование командной строки. Есть и другие плагины (например, WP Media Offload), но они могут ограничивать функционал плагина в бесплатной версии – к примеру, количество загружаемых файлов или возможность миграции файлов в объектное хранилище.
Установка и настройка плагина
Мы разработали видеоинструкцию, где в удобном формате объяснили, как настроить отдачу изображений из S3 для WordPress.
Перед настройкой плагина настоятельно рекомендуется создать резервную копию сайта, подробно процесс описан в нашем руководстве.
Для установки плагина подключитесь к серверу, на котором расположен сайт, по SSH либо воспользуйтесь терминалом в панели управления. Перейдите в директорию сайта командой cd <путь до директории сайта>
, например:
cd ~/betutorial.ru/public_html
Перейдите в директорию плагинов сайта:
cd wp-content/plugins
Создайте директорию плагина командой:
mkdir s3-uploads
Перейдите в нее:
cd s3-uploads
Загрузите архив с плагином со страницы плагина:
wget https://github.com/humanmade/S3-Uploads/releases/download/3.0.7/manual-install.zip
Распакуйте и удалите архив:
unzip manual-install.zip
rm manual-install.zip
Перейдите в директорию wp-content
:
cd ../..
Создайте директорию mu-plugins
, если ее еще нет:
mkdir -p mu-plugins
После чего создайте файл mu-plugins/s3-endpoint.php
:
<?php
// Filter S3 Uploads params.
add_filter( 's3_uploads_s3_client_params', function ( $params ) {
$params['endpoint'] = 'https://s3.ru1.storage.beget.cloud';
$params['use_path_style_endpoint'] = true;
$params['debug'] = false; // Set to true if uploads are failing.
return $params;
} );
Затем перейдите в public_html
:
cd ~/betutorial.ru/public_html
Откройте файл wp-config.php
для редактирования удобным вам текстовым редактором, например, vim
:
vim wp-config.php
После строки /* Произвольные значения добавляйте между этой строкой и надписью "дальше не редактируем". */
добавьте следующие строки:
define( 'S3_UPLOADS_BUCKET', '<bucket_name>' );
define( 'S3_UPLOADS_REGION', '<region>' );
define( 'S3_UPLOADS_KEY', '<access_key>' );
define( 'S3_UPLOADS_SECRET', '<secret_key>' );
define( 'S3_UPLOADS_BUCKET_URL', '<public_url>' );
Скорректируйте значения в соответствии с данными, указанными на странице объектного хранилища:
'S3_UPLOADS_BUCKET'
– название бакета, указанное в реквизитах доступа'S3_UPLOADS_REGION'
– регион бакета, для российской локации ru1'S3_UPLOADS_KEY'
– Access key, указанный в реквизитах доступа'S3_UPLOADS_SECRET'
– Secret key, указанный в реквизитах доступа'S3_UPLOADS_BUCKET_URL'
– Path style, указанный в реквизитах доступа
define( 'S3_UPLOADS_AUTOENABLE', false );
в wp-config.php
– в таком случае для включения/отключения поведения будут использоваться команды wp s3-uploads enable
и wp s3-uploads disable
соответственно.После чего сохраните файл и закройте его. Далее создайте в директории сайта файл wp-cli.yml
со следующим содержимым:
require:
- wp-content/plugins/s3-uploads/inc/class-wp-cli-command.php
Активируйте плагин командой:
wp plugin activate s3-uploads
И проверьте его работу командой:
wp s3-uploads verify
Плагин попробует загрузить и удалить тестовый файл в облачное хранилище:
wp s3-uploads verify
Attempting to upload file s3://f6bcd57c2800-shortsighted-katja/uploads/1168017065.txt
File uploaded to S3 successfully.
Attempting to delete file. s3://f6bcd57c2800-shortsighted-katja/uploads/1168017065.txt
File deleted from S3 successfully.
Success: Looks like your configuration is correct.
Если плагин выведет сообщение об успешной проверке конфигурации, установка плагина завершена. В противном случае убедитесь, что данные подключения указаны корректно в файле wp-config.php
.
Миграция существующих файлов в объектное хранилище
Для миграции файлов в облачное хранилище используется команда wp s3-uploads upload-directory <path_to_dir> <s3_dir>
Например, чтобы загрузить директорию wp-content/uploads
в облачное хранилище, необходимо выполнить команду:
wp s3-uploads upload-directory wp-content/uploads uploads
Если вам необходимо скопировать определенное изображение WordPress в объектное хранилище, можно воспользоваться командой cp
:
wp s3-uploads cp <from> <to>
В данной статье мы рассмотрели подключение облачного объектного хранилища S3 к WordPress для хранения статического контента, а в одной из будущих статей разберем, как выполняется оптимизация изображений WordPress.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить, как получить изображение WordPress, настроив отдачу из S3, с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.