CMS WordPress не является специальной платформой для создания Интернет магазина, как, например, OpenCart. Чтобы создать Интернет магазина на WordPress нужно выбрать и установить один из плагинов WordPress специально предназначенных для создания магазина электронной торговли. В линейке плагинов электронной торговли для WordPress представлены, как платные, так и бесплатные плагины. В этой статье несколько популярных плагинов, чтобы создать Интернет магазин WordPress.
Архив метки: Wordpress
Как сделать резервную копию сайта WordPress?
Процесс настройки и эксплуатации сайта WordPress может быть довольно сложным. Но последнее, что вы хотите сделать, это остановиться и никогда не делать резервные копии вашего сайта WordPress.
Со временем, когда вы разрабатываете контент для своего сайта и наращиваете трафик, всегда существует риск проблемы с сервером или хакерской атаки, которая может привести к срыву вашего сайта и, возможно, уничтожить ваш сайт.
Создание резервной копии вашего сайта WordPress является критически важной гарантией от потери всего вашего контента и всей работы, которую вы вкладываете в него. В этой статье вы узнаете, как выполнить полное резервное копирование вашего сайта WordPress вручную, и как использовать лучшие плагины WordPress для автоматического резервного копирования.
Компоненты резервного копирования сайта WordPress
Чтобы понять, как работает резервное копирование WordPress, важно понимать компоненты сайта WordPress, резервное копирование которых необходимо выполнить для восстановления.
- База данных MySQL: эта базовая база данных содержит данные о содержимом и конфигурации вашего сайта. Это основная часть содержания вашего сайта.
- Основная установка WordPress: они состоят из большинства файлов и папок, содержащихся в корневом каталоге, где ваш сайт хранится на веб-сервере.
- Содержимое веб-сайта: каталог wp-content содержит все ваши файлы тем и плагинов, которые вы использовали для настройки вашего сайта WordPress.
- Конфигурация WordPress: Для правильного подключения к вашей базе данных, WordPress нужны данные для входа в базу данных, которые хранятся в файле wp-config.php, хранящемся в вашем корневом каталоге.
Пока у вас есть копия версии базовой установки WordPress, которая соответствует версии WordPress, которую вы сейчас используете на своем сайте, вам не нужно создавать резервные копии основных файлов WordPress.
В этом случае вам нужно только сделать резервную копию базы данных MySQL, каталога wp-content и файла wp-config.php.
Как сделать резервную копию вашего сайта WordPress вручную
Если у вас уже есть установочный ZIP-файл Core WordPress, вы можете выполнить самый быстрый тип резервного копирования для вашего сайта WordPress.
- Чтобы создать резервную копию базы данных WordPress MySQL, войдите в cPanel и в разделе «Файлы» выберите «Резервные копии».
- Прокрутите вниз до Частичное резервное копирование и в разделе Загрузка резервной копии базы данных MySQL выберите ссылку для базы данных WordPress, которую вы хотите сделать резервную копию.

- Вы можете сохранить файл *.gz в любом месте на вашем компьютере. Позже, если вам когда-нибудь понадобится восстановить эту базу данных, вы можете вернуться на ту же страницу на cPanel. В разделе Восстановление базы данных MySQL просто нажмите кнопку «Загрузить» и выберите ранее загруженный файл *.gz.
- Чтобы загрузить только каталог wp-contents и файл wp-config.php , подключитесь к своей учетной записи веб-хостинга с помощью своего любимого инструмента FTP. Используйте для входа идентификатор FTP и пароль, предоставленные вашим веб-хостингом.

- Используйте FTP-клиент для загрузки всей папки wp-content и файла wp-config.php.

Примечание. Если вы хотите выполнить полное резервное копирование всего в своем домашнем каталоге, на той же странице резервных копий cPanel в разделе «Частичные резервные копии» вы можете нажать кнопку «Загрузить» в разделе «Загрузить резервную копию домашнего каталога», и это позволит загрузить все папки и файлы в вашем каталоге. домашний каталог сайта.

Выполнять автоматическое резервное копирование WordPress плагинами
Ручное резервное копирование быстрое и удобное, но вы должны помнить, чтобы делать его через регулярные промежутки времени. Если вы забудете сделать резервную копию и создали много нового контента до того, как ваш сайт выйдет из строя или инфицируется вирусом, вы можете потерять весь этот новый контент при восстановлении последней резервной копии.
Более разумное решение — установить один из множества превосходных плагинов WordPress, доступных для автоматизации процесса резервного копирования.
Существует множество отличных плагинов для резервного копирования WordPress (см. Список внизу этого раздела). В приведенном ниже примере используется плагин для резервного копирования UpdraftPlus WordPress.
UpdraftPlus позволяет создавать резервные копии вашего сайта WordPress для любых популярных облачных сервисов, таких как Dropbox, Google Drive, Rackspace Cloud или даже FTP или электронная почта.
- Чтобы установить UpdraftPlus, просто загрузите файлы плагинов и скопируйте их (используя FTP-клиент) в папку плагинов в каталоге wp-content.

- После того, как вы скопировали туда папку, войдите в свою панель администратора WordPress, перейдите в раздел Плагины и активируйте плагин UpdraftPlus.
- После активации вы увидите Резервные копии UpdraftPlus, перечисленные в меню Настройки. Выберите его, чтобы посетить панель управления UpdraftPlus.
- Чтобы настроить частоту резервного копирования, выберите меню «Настройки». Здесь вы можете выбрать, как часто выполнять резервное копирование файлов WordPress (wp-контент) и как часто выполнять резервное копирование базы данных WordPress.

- Здесь вы также выбираете облачный сервис, который хотите использовать для хранения резервных копий. После выбора облачной службы, в которую вы хотите выполнить резервное копирование, информация для аутентификации, которую вам нужно ввести, появится ниже на той же странице.
- Чтобы просмотреть последние три последних резервных копии, просто выберите меню «Существующие резервные копии».

На этой странице вы можете выбрать синюю кнопку Восстановить, чтобы восстановить сайт с использованием резервной копии, которая была сделана в тот день.
Примечание. Каждый раз, когда вы создаете резервную копию своего сайта WordPress, UpdraftPlus сохраняет три файла резервных копий в вашей учетной записи на Google Диске с указанием даты резервной копии в названии. Это означает, что три новых файла добавляются в вашу учетную запись так часто, как вы выполняете резервное копирование.
Поэтому следите за своей папкой резервных копий на Google Диске и обязательно удаляйте очень старые резервные копии, чтобы сохранить пространство учетной записи.
В дополнение к UpdraftPlus есть несколько превосходных плагинов для автоматического резервного копирования WordPress.
- Vaultpress: Этот плагин не бесплатный, но доступный. Помимо выполнения автоматического резервного копирования вашего сайта (хранение резервных копий продолжительностью до 30 дней), он также обеспечивает сканирование безопасности для защиты от хакеров или вредоносных программ.

- BackupBuddy: купите BackupBuddy за один раз и используйте его на своем сайте (или сайтах) навсегда. Он может создавать автоматические резервные копии и сохранять их в любой основной учетной записи облачного хранилища. Он также создает резервные копии основных файлов WordPress, поэтому переустановка WordPress не требуется после полной потери веб-сайта.
- BoldGrid Backup: этот плагин для резервного копирования WordPress похож на другие, за исключением того, что он также имеет очень полезную функцию, которая автоматически откатывает ваш сайт к предыдущему рабочему резервному копированию в случае сбоя обновления WordPress.
- BackWPup: Если вы все о бесплатных плагинах, то это хорошая альтернатива UpdraftPlus. Этот плагин будет выполнять автоматическое резервное копирование с использованием запланированного задания WordPress для одной из предпочитаемых вами облачных учетных записей. Он также будет проверять, оптимизировать или восстанавливать вашу базу данных WordPress.
Практикуйте свое решение для резервного копирования WordPress
Худшее время обнаружить, что выбранное вами решение для резервного копирования WordPress на самом деле не работает так, как вы ожидали, это после того, как ваш сайт потерпел крах или был взломан.
Итак, выбрав одно из решений выше, попробуйте сделать полную резервную копию вашего сайта WordPress, используя это решение. Затем выполните полное восстановление и убедитесь, что ваш сайт по-прежнему работает как требуется.
Прежде чем тестировать любое из автоматизированных плагин-решений WordPress, всегда делайте полное ручное резервное копирование WordPress, используя ручную процедуру, описанную выше. Таким образом, если плагин не работает или как-то портит ваш сайт, у вас будет альтернативная резервная копия, которую вы можете использовать для восстановления сайта вручную.
Лучшие SEO плагины для WordPress
Здесь я привожу самые толковые плагины, которые позволяют провести SEO оптимизацию сайта на Вордпрессе, чтобы он не просто был, а активно рос в поиске и в идеале находился на первых местах – ведь для этого обычно и создаются сайты 
Лучшие плагины для WordPress в каждый сайт
Я думаю, что каждый, кто хоть раз ставил дефолтный шаблон Вордпресса понимает, что без дополнительных плагинов — это просто страничка в интернете со скудным функционалом и примитивным дизайном.
Что делать, если после обновления php до версии 7.1/7.2/7.3 не попасть в админку wordpress
Причиной тому является старая версия самой CMS WordPress
Бывает так, что версию php обновить пришлось, а версию wordpress пока обновлять рано и в итоге мы имеем следующую ошибку:
Error thrown
Cannot create references to/from string offsets
Открываем в корне сайта файл wp-login.php и
Строку:
$user = wp_signon('', $secure_cookie);
Заменяем на:
$user = wp_signon(array(), $secure_cookie);
Установка и настройка кеширующего прокси-сервера VARNISH за NGINX и Apache2 на Ubuntu 18.04 LTS для WordPress в 2019 году
Устанавливаем Varnish:
apt-get install varnish
Файл параметров запуска располагается здесь — /etc/default/varnish. В DAEMON_OPTS задаём следующие параметры:
DAEMON_OPTS="-a :8181
-T 127.0.0.1:8282
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,128m"
-a — задаёт порт, на котором Varnish будет принимать соединения, в нашем случае от фронтенда — nginx;
-T — здесь крутится админка, подробнее в описании к флагу -S;
-f — файл с конфигурацией VCL — специальном языке, предназначенном для определения правил обработки запросов и кэширования в Varnish;
-S — Varnish имеет панель администрирования. Для входа необходимо выполнить команду varnishadm, при этом пользователь должен иметь права на чтение файла /etc/varnish/secret для прохождения аутентификации;
-s указание места хранения кэша и его размер, в данном случае 128Mб в оперативной памяти.
Как вы уже, наверное, поняли, самое интересное нас ждёт в файле с правилами обработки запросов. Во время старта процесса Varnish’а данный файл компилируется. В VCL используется несколько подразделов-функций, в которых описываются эти правила. Кратко расскажу о них, полное описание рекомендую прочитать на официальном сайте.
sub vcl_recv — данная функция используется когда приходит запрос от клиента;
sub vcl_pass — выполняется, когда запрос клиента необходимо передать напрямую бэкенду, не кэшировать и не искать соответствия в кэше;
sub vcl_hash — определяет правила кэширования, можно использовать несколько хранилищ для одного и того же документа, в зависимости от разных условий, например, поддержки сжатия клиентом, или каких-либо других особенностей клиента. В нашем случае не будет использоваться, так как клиент у нас для Varnish’а один — nginx на фронтенде;
sub vcl_backend_response — данная функция используется когда приходит запрос от бэкенда (nginx);
sub vcl_deliver — используется непосредственно перед отправкой данных клиенту, например, для добавления/изменения заголовков.
Схема работы компонентов VCL может быть представлена следующим образом:

Если обращение к бэкенду происходит при этом из функции vcl_miss ответ бэкенда отправляется и в кэш. Сам язык очень похож на C. Приступим к настройке. Открываем файл /etc/varnish/default.vcl и начинаем кодить:
# Сообщаем компилятору о том, что используется новая версия VCL 4
vcl 4.0;
# Настройки бэкенда
backend default {
.host = "127.0.0.1";
.port = "8080";
}
# Диапазон IP/Хостов, которым разрешено выполнять PURGE-запросы для очистки кэша
acl purge {
"localhost";
"127.0.0.1";
}
# Получение запроса от клиента
sub vcl_recv {
# Разрешить очистку кэша вышеописанному диапазону
if (req.method == "PURGE") {
# Если запрос не из списка, то разворачивать
if (!client.ip ~ purge) {
return(synth(405, "This IP is not allowed to send PURGE requests."));
}
return (purge);
}
# POST-запросы а также страницы с Basic-авторизацией пропускать
if (req.http.Authorization || req.method == "POST") {
return (pass);
}
# Пропускать админку и страницу входа
if (req.url ~ "wp-(login|admin)" || req.url ~ "preview=true") {
return (pass);
}
# Пропускать sitemap и файл robots, у меня sitemap генерируется плагином Google XML Sitemaps
if (req.url ~ "sitemap" || req.url ~ "robots") {
return (pass);
}
# Удаляем cookies, содержащие "has_js" и "__*", добавляемые CloudFlare и Google Analytics, так как Varnish не будет кэшировать запросы, для которых установлены cookies.
set req.http.Cookie = regsuball(req.http.Cookie, "(^|;s*)(_[_a-z]+|has_js)=[^;]*", "");
# Удаление префикса ";" в cookies, если вдруг будет обнаружен
set req.http.Cookie = regsub(req.http.Cookie, "^;s*", "");
# Удаляем Quant Capital cookies (добавляются некоторыми плагинами)
set req.http.Cookie = regsuball(req.http.Cookie, "__qc.=[^;]+(; )?", "");
# Удаляем wp-settings-1 cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-1=[^;]+(; )?", "");
# Удаляем wp-settings-time-1 cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-time-1=[^;]+(; )?", "");
# Удаляем wp test cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wordpress_test_cookie=[^;]+(; )?", "");
# Удаляем cookie, состоящие только из пробелов (или вообще пустые)
if (req.http.cookie ~ "^ *$") {
unset req.http.cookie;
}
# Для статических документов удаляем все cookies, пусть себе кэшируются
if (req.url ~ ".(css|js|png|gif|jp(e)?g|swf|ico|woff|svg|htm|html)") {
unset req.http.cookie;
}
# Если установлены cookies "wordpress_" или "comment_" пропускаем напряиую к бэкенду
if (req.http.Cookie ~ "wordpress_" || req.http.Cookie ~ "comment_") {
return (pass);
}
# Если cookie не найдено, удаляем данный параметр из пришедшего запроса как таковой
if (!req.http.cookie) {
unset req.http.cookie;
}
# Не кэшировать запросы с установленными cookies, это уже не касается WordPress
if (req.http.Authorization || req.http.Cookie) {
# Not cacheable by default
return (pass);
}
# Кэшировать всё остальное
return (hash);
}
sub vcl_pass {
return (fetch);
}
sub vcl_hash {
hash_data(req.url);
return (lookup);
}
# Приём ответа от бэкенда
sub vcl_backend_response {
# Удаляем ненужные заголовки
unset beresp.http.Server;
unset beresp.http.X-Powered-By;
# Не хранить в кэше robots и sitemap и .xml файлы
if (bereq.url ~ "sitemap" || bereq.url ~ "robots" || bereq.url ~ ".xml") {
set beresp.uncacheable = true;
set beresp.ttl = 30s;
return (deliver);
}
# Для статических файлов, которые отдаёт бэкенд...
if (bereq.url ~ ".(css|js|png|gif|jp(e?)g)|swf|ico|woff|svg|htm|html") {
# Удаляем все куки
unset beresp.http.cookie;
# Устанавливаем срок хранения в кэше - 70 дней
set beresp.ttl = 70d;
# Устанавливаем заголовки Cache-Control и Expires, сообщая браузеру о том, что эти файлы стоит сохранить в кэше клиента и не нагружать лишниий раз наш сервер
unset beresp.http.Cache-Control;
set beresp.http.Cache-Control = "public, max-age=6048000";
set beresp.http.Expires = now + beresp.ttl;
}
# Не кэшировать админку и страницу логина
if (bereq.url ~ "wp-(login|admin)" || bereq.url ~ "preview=true") {
set beresp.uncacheable = true;
set beresp.ttl = 30s;
return (deliver);
}
# Разрешить устанавливать куки только при обращении к этим путям, всё остальное будет резаться
if (!(bereq.url ~ "(wp-login|wp-admin|preview=true)")) {
unset beresp.http.set-cookie;
}
# Не кэшировать результат ответа на POST-запрос или Basic авторизации
if ( bereq.method == "POST" || bereq.http.Authorization ) {
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# Не кэшировать результаты поиска
if ( bereq.url ~ "?s=" ){
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# Не кэшировать страницы ошибок, только нужные вещи в кэше!
if ( beresp.status != 200 ) {
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# Хранить в кэше всё прочее на протяжении одного дня
set beresp.ttl = 1d;
# Срок жизни кэша после истечения его TTL
set beresp.grace = 30s;
return (deliver);
}
# Действия перед отдачей результата пользователю
sub vcl_deliver {
# Удаляем ненужные заголовки
unset resp.http.X-Powered-By;
unset resp.http.Server;
unset resp.http.Via;
unset resp.http.X-Varnish;
return (deliver);
}
После чего выполняем команду:
service varnish restart
Проблема Varnish и UBUNTU 18.04 LTS
А что если вы захотите изменить порт, на котором Varnish будет принимать входящие соединения или изменить объём кэша. Судя по официальной документации нужно изменить файл с параметрами запуска Varnish, располагающийся по пути: /etc/default/varnish и перезапустить сервис. Но нет! Ничего не изменится, и если мы зайдём в top и нажмем на клавишу ‘c’, то увидим, что сервис запущен с прежними настройками. А всё дело в том, что в новой версии Ubuntu используется systemd вместо init.d в качестве системы инициализации, и поэтому нужно зайти в файл /lib/systemd/system/varnish.service и прописать там в директиве ExecStart те же параметры запуска:
[Unit]
Description=Varnish HTTP accelerator
[Service]
Type=forking
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStartPre=/usr/sbin/varnishd -C -f /etc/varnish/default.vcl
ExecStart=/usr/sbin/varnishd -a :8181 -T 127.0.0.1:8282 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,128m
ExecReload=/usr/share/varnish/reload-vcl
[Install]
WantedBy=multi-user.target
После сохранения выполнить следующие команды для вступления изменений в силу:
systemctl daemon-reload service varnish restart
В данный момент данная проблема отписана разработчикам, когда и как они её решат — неизвестно, поэтому на всякий случай производите одинаковые изменения в обоих файлах, чтобы однажды после апдейта всё не упало.
После чего нужно изменить порт доступа у nginx
proxy_pass: http://127.0.0.1:8181/;
Настройка WordPress — плагин «Varnish HTTP Purge»
Устанавливаем в панели администрирования WP плагин «Varnish HTTP Purge». Теперь при обновлении данных на измененные страницы будет отправлен PURGE-запрос, очищающий кэш в Varnish, и для посетителей данные всегда будут обновлёнными.
После чего нужно ещё настроить пару строчек по примеру:

Varnish Vontrol Key берется из файла: /etc/varnish/secret
Статья на основе: https://habr.com/ru/post/278189/
Настройка множества сайтов на одном сервере: https://stackoverflow.com/questions/3334023/configure-multiple-sites-with-varnish






