Ответы пользователя по тегу Linux
  • Как развернуть war-файл на сервере Tomcat 8.5 в Linux?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Проверьте разрешения. Если tomcat не может прочитать файл, то он и распаковать его не сможет.
    Ответ написан
  • Приготовление сервера для разработки на JAVA?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Позвольте мне посоветовать вам обратить большее внимание на параметризацию настроек вашего web-приложения, чтобы его можно было просто портировать на новый сервер. Например, вынести настройки подключения к БД (connection string) наружу от web приложения. Да и вообще описание внешних ресурсов, которые нужны программе, тоже неплохо хранить вне приложения.
    Ответ написан
    2 комментария
  • Что значит "знание linux" в вакансиях на позицию веб-разработчика?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    В принципе знание среды, в которой работает backend всегда на пользу. Проще объяснить админу чего надо, проще понимать в каком месте надо "нажать". Между фронтом и бэком есть ещё места, где можно программировать. Кроме того админы могут не знать тонкостей настроек и могут поставить настройки по-умолчанию. У меня на работе крутился один сервер приложений. На tomcat. Выделили на виртуалке 16ГБ памяти, запустили. И он проработал не один год до моего появления в компании. Когда я увидел конфиг - офигел. Память была выделена по-умолчанию. 2ГБ. Так что не думайте, что если что-то не ваша обязанность, то и проверять не надо уметь.

    Позвольте дать вам совет - ведите записи своих достижений, скриншоты. Меня такой подход не раз выручал. Лишний раз показать на собеседовании, что вы умеете реально что-то документировать и делиться этим - однозначно плюс на собеседовании. Может даже будущий работодатель увидит как вы разбирались со знакомой ему темой - будет будет легче найти с ним общий язык.
    Ответ написан
    Комментировать
  • Народ как скомпилировать программу с помощью g++ которая работает с библиотекой png++?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Обычно в ./configure --help пишется как подключить библиотеку. Вполне возможно, что нужную библиотеку тоже придётся собрать из исходников.
    Ответ написан
    Комментировать
  • [Решено, Solved] Если linux-комп не в Active Directory, то он не считается компьютером домена?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Проблема решена.
    Вот небольшое расследование.

    Есть два сервера. test-0001/apache,php/Centos 7.2 (нормально аутентифицирует по kerberos) и test-0002/apache,php/OracleLinux 7.2 (сбой аутентификации kerberos).

    Анализ протокола обмена HTTP показал, что «почему-то» web-клиент (IE, FF, Chrome) как один отличают компьютер test-0002 от test-0001. Отличие состоит в том, что ключ аутентификации, которые web-клиент отправляет в качестве авторизации пользователя ооочень сильно отличается «размером»:
    Запрос к test-0002 (сбой аутентификации по Kerberos):
    96706c13d8894210bfe4d0fd2b2516e2.png080ede7e64b0434b9229c520d07af319.png

    Запрос к test-0001 (аутентификация Kerberos выполняется нормально):
    5825189ce16741359c1148fee30b70dd.pngb710650b34bf482d88f77adca35000ff.png

    Давайте всё-таки выясним, почему ключ от test-0002 короче test-0001 ??? Начну с того, что формат ключа - ASN.1 (если интересно, то гляньте https://ru.wikipedia.org/wiki/ASN.1 ). В инете есть просмотрщик этого формата:
    https://lapo.it/asn1js
    Анализ ключа в запросе от test-0002:
    1ceee5434ef44a08b17cee123e5ba515.png
    1. NEGOEX – насколько я понял именно этот формат обеспечивает «объединение» нескольких аутентификаторов одного и того же пользователя в разных протоколах. В данном ключе вложен только протокол NTLM
    2. Данные для протокола NTLM (который не поддерживается компонентом apache mod_auth_gssapi).

    Анализ ключа в запросе к test-0001:
    573bbcfea2e64351a1a27e4db461d303.png
    Как видим во втором ключе уже присутствует протокол Kerberos!!! Занятно! Т.е. проблема для test-0002 не на стороне сервера, раз клиент сразу не отдаёт ему ключ правильного формата!

    Хм. А давайте-ка посмотрим в журнал windows?
    c7d2f48555b348cdb239d1b40e36af8b.png

    0x7 KDC_ERR_S_PRINCIPAL_UNKNOWN
    0x19 KDC_ERR_PREAUTH_REQUIRED

    Опаньки! Это что такое??? Какая-то проблема с принципалом? И почему только с test-0002? (Записей, указывающих на другой компьютер, например, test-0001 не найдено). Получается, что браузер до ответа на запрос серверу уже что-то «подозревает», раз не отдаёт ему нужный ключ (ОЧЕНЬ БОЛЬШАЯ ПРОСЬБА: ЕСЛИ КТО-ТО ПОНИМАЕТ ПРОЦЕСС, КАК БРАУЗЕР ПРИНИМАЕТ РЕШЕНИЕ КАК СОЗДАТЬ КЛЮЧ ДЛЯ АУТЕНТИФИКАЦИИ - РАССКАЖИТЕ МНЕ НЕМНОГО ОБ ЭТОМ!!!).
    Если порыться в интернете, то вопросов по этой ошибке много (https://www.google.ru/search?q=KDC_ERR_S_PRINCIPAL...), но в основном они без ответа. Тупик? Ничего подобного! Давайте глянем в документацию Microsoft по поводу SPN: https://msdn.microsoft.com/en-us/library/ms677949%...
    b5334963f38a4f9ca87c087db77ed639.png
    Т.е. spn моего сервиса должен быть зарегистрирован только в одном аккаунте. ЗАПОМНИМ ЭТО!!! И вот ещё один интересный момент: https://msdn.microsoft.com/en-us/library/ms677601%...
    6545dfe4a1ad44b6acc6577a3163eeb3.png
    Тут написано, что SPN должен быть уникальным. Если он не уникален, то аутентификация даст сбой.

    А вот давайте проверим, а действительно ли SPN для сервера test-0002 уникален? На просторах интернета нашёлся простой скрипт powershell, который после небольшой модификации показывает интересующие нас SPN-ы: social.technet.microsoft.com/wiki/contents/article...
    #Set Search
    cls
    $search = New-Object DirectoryServices.DirectorySearcher([ADSI]“”)
    $search.filter = “(servicePrincipalName=HTTP/test-*)”
    $results = $search.Findall()
    
    #list results
    foreach($result in $results)
    {
           $userEntry = $result.GetDirectoryEntry()
           Write-host "Object Name = " $userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
           Write-host "DN      =      "  $userEntry.distinguishedName
           Write-host "Object Cat. = "  $userEntry.objectCategory
           Write-host "servicePrincipalNames"
           $i=1
           foreach($SPN in $userEntry.servicePrincipalName)
           {
               Write-host "SPN(" $i ")   =      " $SPN       $i+=1
           }
           Write-host ""
    }


    Результат:
    3e67af20a3d041779246cdaeb21598b9.pngWTF???

    ПОЧЕМУ В ДВУХ РАЗНЫХ АККАУНТАХ ОДИН И ТОТ ЖЕ SPN??? (Помните, чуть выше я просил запомнить правило, что spn должен быть уникален и присвоен только одному аккаунту?) Или может быть я что-то неправильно понял? Пойдём дальше и давайте посмотрим атрибуты для учёток test-0002 и test-0001, но не через оснастку AD, а через оснастку ADSI:
    2f16d1f71fcf40779ff6ac36b4824c2f.png
    test-0002 – OK.
    А вот для test-0001 нас ждёт СЮРПРИЗ (удивительно, что сюрприз связан с аккаунтом сервера на котором ВСЁ РАБОТАЕТ!!!):
    a04ac318d20c4844b68b1f7127f8a934.png
    Так, так!!! Оказывается, что spn для сервера test-0002 имеется в AD в двух экземплярах – в учётке test-0002_httpd и в учётке test-0001_httpd ! Чего по документации быть не должно! Вот это и был корень проблемы! Дубликат SPN.
    После удаления дубликата всё заработало!!!

    Всем спасибо за внимание.)))

    P.S.
    Рекомендация для заведения SPN. Нужно использовать команду setspn -S, а не servspn -A, т.к. setspn -S проверяет наличие дубликатов. Очень рекомендую к прочтению статью https://social.technet.microsoft.com/wiki/contents....
    Ответ написан
    Комментировать
  • Как просмотреть активность apache?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Для тестовых условий можно использовать Fiddler. Да, да. Я не оговорился. Именно fiddler. И именно для отладки на сервере. Только нужно немного поколдовать. Ставите перед apache реверс прокси (скорее всего это будет nginx), который будет перенаправлять запросы на fiddler, в fiddler разрешить доступ снаружи:

    10285392485b4bb1bda8df4daac02a4a.png

    , а в fiddler нужно перенаправлять redirect-ы на ваш сайт apache. (вот описание этого кодунства в fiddler). Теперь у вас все запросы к apache видны как на ладони со всем содержимым, куками, паролями и пр.

    Вкратце: пользователь делает запросы на nginx, nginx редиректит на ваш локальный комп с запущенным fiddler, fiddler редиректит на apache. Вы наблюдаете жизнь запросов к апачу вместе с трафиком вживую. Профит.
    Ответ написан
    Комментировать
  • Как в linux перехвать запись в файл php скриптом?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Собственно способ перехвата чего-либо к чему-либо называется одинаково и в linux и в windows: hook.
    linux file write hook

    Мне понравился этот ответ, т.к. его вполне можно адаптировать для вашего случая с php:
    Can a bash script be hooked to a file
    (php тоже можно из консоли запустить, но это не будет выглядеть как http-запрос, так что может оставить как есть)

    Если понадобится что-то такое делать для windows - смотрите тему scriptomatic.
    Ответ написан
    Комментировать
  • Как найти отличия в двух файлах XML?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Удобно ли будет использовать online инструмент сравнения двух xml-файлов? Их по поиску можно найти.

    Например:
    https://www.diffchecker.com/
    https://www.corefiling.com/opensource/xmldiff.html
    Ответ написан
    Комментировать
  • Какую СУБД выбрать для большого объема финансовых данных?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Я бы для начала определился, нормализованные данные или нет? Если нет, то можно в сторону NoSQL посмотреть. Там удобно делать схемы даже для одной записи. И в тоже время есть вариант воспользоваться встроенной аналитикой как у elasticsearch.
    Ответ написан
    Комментировать
  • Как лучше синхронизировать папки?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    А как на счёт sync? Он умеет скачивать разницу. Раньше обновлял им локальный репозиторий rhel6 на работе.

    update: rsync
    Ответ написан
  • Установка deb-пакетов на сервер без интернета?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    А зеркалирование репозитория не подойдёт? Уж потом можно что угодно поставить/обновить без лишних вопросов. (как раз для локалки очень удобно).
    Ответ написан
    Комментировать
  • Система документирования для разрабатываемого проекта

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Самый трудный шаг, после того, как заставишь себя вести логи — это читать их каждый день и за прошлый день, и за неделю назад. ;)
    Ответ написан
    Комментировать