• Копируется 2 раза. Как исправить?

    @NinjaNickName
    parger, Не за что, но попробуйте все же удалить foreach совсем, судя по коду он там вообще ни к чему, что есть, что нет, разницы никакой не должно быть.
  • Самый простой пример вывода строк из бд в интупт в шаблон smarty через Ajax?

    @NinjaNickName
    smoky-jo,

    $.ajax({
      url: "ajax.php", //тут ссылка на страницу которая обрабатывает AJAX запрос
    method: "POST", // Переданные данные доступны будут в массиве $_POST в сценарии ajax.php
      context: document.body
    }).done(function() {
    // здесь код который отработает после получения ответа от сервера
      $( this ).addClass( "done" );
    });


    Тут больше вариантов реализации ajax запроса
    https://good-code.ru/ajax-zapros/#post-ajax

    Остальное думаю сможете нагуглить сами
  • Копируется 2 раза. Как исправить?

    @NinjaNickName
    parger, уберите foreach, вроде он тут вообще ни к чему.

    p.s. var_dump($server), чтобы узнать кол-во элементов и как к ним обращаться.
  • Копируется 2 раза. Как исправить?

    @NinjaNickName
    Вероятно массив $server содержит 2 элемента и потому код внутри foreach отрабатывает 2 раза?
    https://www.php.net/manual/ru/control-structures.f...

    p.s. с точки зрения именования переменных, наверное правильней все же было бы foreach ( $servers as $server)
  • Почему на продакшене возникает ошибка Invalid URI Schema, expecting 'mongodb://'?

    @NinjaNickName Автор вопроса
    Действительно, проблема была в PHP, обновил с 7.2 до 7.3 и все заработало.
    Благодарю!
  • Почему на продакшене возникает ошибка Invalid URI Schema, expecting 'mongodb://'?

    @NinjaNickName Автор вопроса
    grinat, Она не может быть другой версии т.к. с локалке на продакшен я тупо копирую
  • Почему на продакшене возникает ошибка Invalid URI Schema, expecting 'mongodb://'?

    @NinjaNickName Автор вопроса
    Хм....ну единственное отличие это PHP 7.2 на сервере и 7,3 на локалке, сейчас попробую обновится, отпишу по результату
  • Как правильно настроить nginx для нескольких сайтов с SSL на одном ip?

    @NinjaNickName Автор вопроса
    при использовании $server_name выдает ошибку:

    nginx: [emerg] BIO_new_file("/var/crt/$server_name/certificate.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/var/crt/$server_name/certificate.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx: configuration file /etc/nginx/nginx.conf test failed


    Полагаю, прежде чем использовать переменную, ее нужно получить как-то, но как?

    Пробовал и вот так:

    server_name _;  # хитрый ключик, обозначающий, что этот конфиг применим для любого сайта
    
    	set $sathost $host;  # В sathost будет лежать имя сайта. Так же должна называться директрия с сайтом
    	# убираем www
    	if ( $host ~ ^(www\.)?(.+)$ ) {
    		set $sathost $2;
    	}
    
     ssl_certificate /var/crt/$sathost/certificate.crt;


    Но результат тот же

    UPDATE
    Переменные в пути до сертификата использовать нельзя.
  • Как правильно настроить nginx для нескольких сайтов с SSL на одном ip?

    @NinjaNickName Автор вопроса
    Сейчас же проще сделать wildcard'ы для всех своих доменов второго уровня и использовать их на всех доменах третьего.


    Дело в том, что у меня много доменов второго уровня. По сути потребность возникла когда решил CMS распространять под SaaS модели (подписка) и использовать 1 экземпляр приложения вместо копии отдельно для каждого клиента. Соответственно, у клиентов должна быть возможность привязать свой домен, вместо использования домена третьего уровня, отсюда и потребность.

    Так не бывает. Ubuntu бывает .04 и .10, однажды(в 2006 году) была .06

    Опечатка разумеется.

    Благодарю за советы!
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Ты скорее всего и так от этой идеи с разными бд откажешься после первого аналитического запроса.

    Честно говоря пока не понимаю минусов этого подхода и какие сложности могут возникнуть с поддержкой. Более того, вот пример, возьмем интернет магазины, это получается нужно в одной базе в одной коллекции хранить товары для всех интернет магазинов? Разве это правильных подход?
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Sanes,
    Не обязательно делать мультисайтовость на одном экземпляре.
    Можно и как обычный хостинг с доступом только к экземпляру CMS. Я бы так сделал.

    А вы не могли бы чуть чуть развернуть ответ? Почему сделали бы так, а не мультисайтовость?
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    grinat, минус такого подхода в том, что при компрометации базы пострадают все клиенты.
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Можно и как обычный хостинг с доступом только к экземпляру CMS. Я бы так сделал.

    Это я понимаю, но а лучше то как?)) Мне думается, что с одним экземпляром приложения на продакшене всяко проще обновлять и поддерживать, поправьте, если ошибаюсь.

    Перестаньте пихать Docker в стек Lamp. Там на уровне пользователей всё прекрасно разруливается с правами.

    Согласен, но если на каждого клиента отдельный экземпляр, то и максимальная изоляция клиентов друг от друга это типа бест практик в екомерс чтоли, по крайней мере так мне думается.
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Дмитрий, Если использовать один экземпляр CMS для всех клиентов и на каждого клиента отдельная БД, я решил целесообразно использовать именно такой подход. К тому же я уже встречал такое решение в других CMS(vBulletin, XenForo); К тому же, в Mongo есть GridFS который позволяет хранить там файлы. ( https://habr.com/ru/post/192390/ )В итоге получится, что все что относится к конкретному клиенту находится в отдельной базе данных,

    Доступ к исходникам шаблона (html\css\js) есть через редактор в панели администратора, а исходники самой CMS распространять не планирую т.к. решение не коробочное, а SaaS.
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Почему база должна быть одна? Я правильно понимаю, что ты предлагаешь хранить данные от всех клиентов в одной базе? В таком случаи, в случаи взлома пострадают все клиенты сервиса, зачем использовать такой подход?
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    изоляции окружения, но не для изоляции пользователей друг от друга

    Не уверен, что правильно понял, не могли бы конкретизировать? Разве пользователи не будут изолированы друг от друга, если каждый будет в отдельном докер окружении т.е. для каждого по сути свой nginx + php-fpm, а БД в Mongo Atlas или в отдельном контейнере?
    UPDATE
    После обновления вашего комментария (CVE-2014-3519, CVE-2016-5195, CVE-2016-9962, CVE-2017-5123, and CVE-2019-5736), понял о чем вы. Спасибо.

    изолировать

    Могли бы аргументировать, почему не стоит использовать одну копию CMS для всех клиентов? Чем такой подход плох?

    начать с изоляции в виде пользователей, отдельных пулов пхп-фпм, отдельный диск для статики, логирование и тд и тп
    Ака вам нужен админ с опытом работы в большом хостинге, где он занимался проектированием систем защиты

    Есть еще вот такая штука
    https://github.com/google/gvisor
    Но опять же - без понимания векторов угроз у вас 0 шансов защититься от злоумышленников


    Мне бы для начала стартануть бы проект, чтобы понять целесообразность, а с увеличением кол-ва клиентов и соответственно денежного потока, все можно будет заняться модернизацией и улучшениями. На данный момент основными угрозами я вижу XSS, SQL inj, CSRP, DDoS. Я полагаю, целенаправленная попытка взлома сайтов клиентов не представляет какого-либо интереса.

    На самом деле, мой вопрос это не попытка поиска защищенной архитектуры, а отсутствие понимания как строить приложения работающие по SaaS; Действительно нужно\целесообразно под каждого клиента устанавливать отдельную копию CMS? Все что уникально для клиента, находиться в БД т.е. на уровне CMS - ядро одинаковое для любого сайта, а единственный экземпляр приложения проще поддерживать и обновлять.
  • Как правильно реализовать архитектуру CMS для распространения по модели SaaS?

    @NinjaNickName Автор вопроса
    Дмитрий, все уникальное в т.ч. дизайн хранятся в БД. Потому и интересует критика подхода при котором одна CMS обрабатывает все сайты.

    sim3x, Вы же про теги? Согласен на счет монги, но докер это инструмент для изоляции окружения, если я правильно понял его предназначение, а вопрос глобально сводиться к тому, изолировать или нет и если изолировать, то каким образом. Хотя вот пока печатал, понял, что наверное не следовало их вписывать, видимо хотел большего охвата для того, чтобы быстрее получить ответ.