Поддержка Проблемы и решения Оптимизация места на хостинге

  • Не могу сказать, что я ханжа, да и использую достаточно безлимитный хостинг (по крайней мере лишь раз получал письмо от хостера, да и то по причине какой-то невнятной DDoS), но на сегодняшний день «на мне» лежит с десяток сайтов и почти все из них на WordPress.
    Все эти сайты используют одни и те же плагины. Таким образом каждая директория с «сайтом» жутко раздувается, да и для обновления нужно заходить в админку каждого жмакать-жмакать-жмакать по кнопкам…
    Таким образом, насколько я понимаю, единственным отличием этих директорий является только файл wp-config.php, wp-settings.php, папка uploads (т.к. я детально не знаю структуру wp — могу предположить, что настройки и путь к плагинам и темам все-таки хранятся в базах данных и в конфигах).

    И собственно вопрос: Возможно ли как-то сэкономить место на хостинге и время на всевозможные обновления, каким-то образом объединить все общие файлы в одну относительную директорию и сделать так, чтоб все, что хранится в папке-ресурсе было только файлом конфигом с прописанными адресами на основу php, адресом и ключом в базу данных и конфигурацией настроек плагинов и дизайна.

    Надеюсь, что объяснился достаточно ясно и кто-нибудь сможет подсказать

Просмотр 15 ответов — с 1 по 15 (всего 23)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Я не очень понял как это будут работать и что мне делать в данном конкретном случае, условно говоря у меня есть:
    — сайт http://www.1.local — прикреплен к папке public_html/site/1
    — сайт http://www.2.local — прикреплен к папке public_html/site/2
    — сайт http://www.3.local — прикреплен к папке public_html/site/3
    — сайт http://www.4.local — прикреплен к папке public_html/site/4

    каждая папка содержит полный каталог вордпреса: wp-admin, wp-content, wp-includes
    Для каждого сайта создана своя база данных.

    Насколько я понял из объяснений по ссылке — я должен прикрепить каждый домен к одной директории, к примеру public_html/site/main, но у меня в голове не укладывается как это будет работать если я только изменю префиксы, как каждый домен же будет приводить в одну папку с одним конфигом?

    Насколько я представляю структуру файлов — то это будет папка public_html/site/main содержащая полный вордпрес со всеми темами и плагинами и будут директории, прикрепленные к доменам (public_html/site/1,2,3,4) в которых будут лежать конфиги с прописаным путем к файлам и ключем баз данных.

    Поясните пожалуйста что я не так понимаю

    Atrax

    (@atrax)

    Ethical engineer

    Вы можете поставить мультисайт «для себя», без регистрации пользователей. И использовать domain mapping. И все сайты будут в одной базе, на на одних и тех же файлах, но достаточно автономно, чтобы не мешать друг другу.

    Про «ханжу» не понял совсем.

    Модератор Yuri

    (@yube)

    Поясните пожалуйста что я не так понимаю

    Всё. Не будет никаких директорий, прикрепленных к доменам (разве что Вы настроите аплоады для сайтов в разные директории). Изменение префиксов будет делать скрипт wp-config.php. Посмотрит, какой домен просили, и установит соответствующий этому домену префикс.

    Юрий, а если используются не разные префиксы, а разные базы?
    я совсем не знаю php

    $prefix = str_replace( array( ‘www.’, ‘-‘, ‘.’ ), », $_SERVER[‘HTTP_HOST’] );
    $table_prefix = $prefix . ‘_’;

    Подскажите, как это записать для примера к запросу на домен 1.com с префиксом wp1_ и домен 2.com с префиксом wp2_ ?

    И еще как можно записать для примера
    к запросу на домен 1.com база данных wp1 с префиксом wp1_ и домен 2.com база данных wp2 с префиксом wp2_ ?

    Модератор Yuri

    (@yube)

    Можно и базы. Префиксы выбраны потому, что мелкие хостинги дают только один домен (с возможностью алиасинга) и одну базу.

    Пример «меняем всё»

    if ($_SERVER['HTTP_HOST'] == 'domen_1.com') {
     define('DB_NAME', 'wp1b');
     define('DB_USER', 'wp1u');
     define('DB_PASSWORD', '1234');
     define('DB_HOST', '127.0.0.1');
     $table_prefix  = 'wp1_';
    }
    elseif ($_SERVER['HTTP_HOST'] == 'domen_2.com') {
     define('DB_NAME', 'wp2b');
     define('DB_USER', 'wp2u');
     define('DB_PASSWORD', '5678');
     define('DB_HOST', '192.168.0.1');
     $table_prefix  = 'wp2_';
    }
    elseif ($_SERVER['HTTP_HOST'] == 'domen_3.com') {
     define('DB_NAME', 'wp3b');
     define('DB_USER', 'wp3u');
     define('DB_PASSWORD', '9876');
     define('DB_HOST', 'localhost');
     $table_prefix  = 'wp3_';
    }
    else {
     header('Location: http://domen_1.com/');
     exit;
    }

    Юрий, спасибо! Хотелось бы уточнить — это будет записано вместо

    // ** Настройки MySQL: Эту информацию можно получить у вашего хостинг-провайдера ** //
    /** Имя базы данных для WordPress */
    define(‘DB_NAME’, ‘wp1’);

    /** Имя пользователя MySQL */
    define(‘DB_USER’, ‘wp1’);

    /** Пароль пользователя MySQL */
    define(‘DB_PASSWORD’, ‘wp1’);

    /** Адрес сервера MySQL */
    define(‘DB_HOST’, ‘localhost’);

    /** Кодировка базы данных при создании таблиц. */
    define(‘DB_CHARSET’, ‘utf8’);

    и значение

    $table_prefix = ‘wp_’;

    нужно будет удалить?

    И можно ли, примеру записать так:

    if ($_SERVER[‘HTTP_HOST’] == ‘domen_1.com, http://www.domen_1.com, domen_8.com’) {
    define(‘DB_NAME’, ‘wp1b’);
    define(‘DB_USER’, ‘wp1u’);
    define(‘DB_PASSWORD’, ‘1234’);
    define(‘DB_HOST’, ‘127.0.0.1’);
    $table_prefix = ‘wp1_’;
    }
    elseif

    ?

    Модератор Yuri

    (@yube)

    1. Да, то что будет переопределяться в зависимости от домена, из «общего» надо убрать. А DB_HOST в 99% случаев будет общий, то есть его оставить в общих и убрать в условных.

    2. «так» — дважды нет. Во-первых, никаких http, во-вторых, == — это равно. Для списка нужно писать регулярное выражение, типа такого:
    if (preg_match('/(domen_1|domen_8)\.com$/, $_SERVER['HTTP_HOST'])) {

    Юрий, есть последний вопрос на эту тему 🙂

    if ($_SERVER[‘HTTP_HOST’] == ‘y.ru’) {
    define(‘DB_NAME’, ‘db1’);
    $table_prefix = ‘dowp_’;
    }

    elseif ($_SERVER[‘HTTP_HOST’] == ‘x.ru’) {
    define(‘DB_NAME’, ‘db1’);
    $table_prefix = ‘wp_’;
    }

    elseif ($_SERVER[‘HTTP_HOST’] == ‘z.ru’) {
    define(‘DB_NAME’, ‘db3’);
    $table_prefix = ‘wp_’;
    }

    elseif (preg_match(‘/(site1|site2|www.site1|www.site2)\.ru$/, $_SERVER[‘HTTP_HOST’])) {
    define(‘DB_NAME’, ‘db4’);
    $table_prefix = ‘wp_’;
    }

    else {
    header(‘Location: http://1.ru/’);
    exit;
    }

    define(‘DB_HOST’, ‘localhost’);
    define(‘DB_CHARSET’, ‘utf8’);
    define(‘DB_USER’, ‘wp’);
    define(‘DB_PASSWORD’, ‘1234’);

    Так будет правильно? Или жирный else лишний?

    Модератор Yuri

    (@yube)

    Как на первый [еще сонный] взгляд (ну нет у меня в голове php:))), то правильно. Жирный else не лишний. А вот www. sitе1 и www. sitе2 — лишние, потому что www. sitе1.ru попадает под маску site1.ru. Под ту же маску попадает вообще любой домен, заканчивающийся на site1.ru, например blog.site1.ru, erunda.site1.ru и даже govnosite1.ru 😉

    UPD Пришлось насовать лишних пробелов в имена доменов, чтобы автоматом в ссылки не превращало. Кстати, а зачем движок и в коде делает якобы-ссылки кликабельными? imho это неправильно.

    Спасибо! И еще созрел вопрос))
    есть зеркало .ru и .рф
    как прописать

    elseif (preg_match('/(сайт1|site1)\.ru$/, $_SERVER['HTTP_HOST'])) {
    define('DB_NAME', 'db4');
    $table_prefix = 'wp_';
    }

    ?

    upd: это не в коде, я по ошибке ставил тег <blockquote

    Модератор Yuri

    (@yube)

    С рф — это отдельная песТня. Может, Сергей чего-то подскажет. А как по мне, то кириллические (равно как арабические и китаичейские:)) вообще не имеют права на существование, по крайней мере до тех пор, пока не будет принято решение об использовании юникода в доменных именах.

    Юрий, вопрос фактически о том, как оформить эту строку для двух различных доменов первого уровня к примеру site1.ru и site2.com

    и да, в коде была опечатка по закрытию кавычки

    elseif (preg_match('/(site2|site1)\.(ru|com)/', $_SERVER['HTTP_HOST']) {
     define('DB_NAME', 'wp');
     $table_prefix  = 'wp_';
    }

    я правильно предоложил написание?

    А по поводу несуразности .рф — согласен полностью, но пришлось купить в защиту от сквотеров

    Модератор Yuri

    (@yube)

    можно так (site2\.ru|site1\.com)

Просмотр 15 ответов — с 1 по 15 (всего 23)
  • Тема «Оптимизация места на хостинге» закрыта для новых ответов.