
Зачастую статический контент сайта может занимать большую часть дискового пространства сервера. В таком случае может быть полезно перенести его в другое место вместо расширения диска сервера. Но как при этом организовать его отдачу? Один из хороших вариантов – облачное объектное хранилище. В этой статье мы расскажем, как подключить облачное объектное хранилище в 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.