Установка Git

Система синхронизации Git – очень мощная система. И ее работа сильно зависит от того, что Вы указываете в момент установки. Экспериментальным подходом установлено, что для того, чтоб сертификаты Windows подхватывались и можно было работать без проблем через ssh, необходимо отметить такие галочки при установке:

Read more

Включение отладки на серверной стороне в 1С

По умолчанию, при использовании клиент-серверного режима работы 1С-предприятия никакие серверные функции и процедуры не будут поддаваться пошаговой отладке. Система будет выполнять их «на сервере 1С 8.3″, такие процедуры не видны для клиентской машины. Для включения режима отладки 1С в режиме клиент-сервер достаточно последовать простым инструкциям для каждой версии 1С: Отладка на сервере для платформы 1С 8.1 Остановить службу 1C Enterprise Server Agent. Запустить редактор системного реестра. Чтобы открыть редактор реестра, необходимо нажать Windows + R (или Пуск-Выполнить) и ввести в командную строку regedit. Найти ветку реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent]. Скорректировать атрибут «ImagePath»= , добавив «-debug». Запустить службу 1C Enterprise Server Agent. Пример:До включения:«C:\Program Files\1cv81\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files\1cv81\server»После включения отладки:«C:\Program Files\1cv81\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d «C:\Program Files\1cv81\server» Если не работает отладка в 1С 8.2 и 8.3 Остановить службу 1C:Enterprise 8.2 Server Agent. Запустить редактор системного реестра. Чтобы открыть редактор реестра, необходимо нажать Windows + R (или Пуск-Выполнить) и ввести в командную строку regedit. Найти ветку реестра [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.2 Server Agent\]. Находим свойство «ImagePath»= , добавляем в строку «-debug». Записываем и запускаем службу. Пример:До включения:«»C:\Program Files (x86)\1cv82\8.2.18.109\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv82\srvinfo»»После включения отладки:«»C:\Program Files (x86)\1cv82\8.2.18.109\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv82\srvinfo» -debug» Источник: https://programmist1s.ru/vklyuchenie-otladki-na-servere-1s/

Read more

Удаление огромного количества файлов в Linux без завешивания сервера

Удаление большого количества файлов

Периодически, каждый администратор сталкивается с проблемой удаления огромного количества мелких файлов. Такие файлы могут генерироваться веб-серверами при создании сессий или другими сервисами. Дело в том, что когда удаляешь много файлов, дисковая система очень сильно загружается. При удалении мелких файлов, они удаляются быстро и происходит быстро переход на следующий файл. Как результат, сервисы операционной системы могут не успевать получать свое время – все время дисковой системы будет выделено на удаление бесконечного списка файлов ))). В интернет много различных решений удаления файлов. Большинство из которых “вешает сервер”. Для того, чтоб Ваши службы оставались работающими Вы можете воспользоваться perl-скриптом размером в 1 строчку ))). perl -e ‘$dir=”/mnt/k2bigdata/lib/php/sessions_old/”;opendir(D,$dir)||die(“Err\n”);while($f=readdir(D)){print $dir.$f.”\n”;unlink($dir.$f);select(undef, undef, undef, 0.1);}’   В скрипте я выделил жирным то, что Вам нужно поменять. /mnt/k2bigdata/_old/sessions2_old/ – это путь откуда удаляются файлы. 0.1 – это время в секундах, которое ожидает скрипт после удаления каждого файла. В данном случае, 0,1 = 100 миллисекунд или 0,1 секунды. Выставляется эта пауза экспериментальным путем. Запускаете скрипт в терминале, если службы продолжают нормально работать – можете понижать время, если нет, тогда прерываете выполнение скрипта и выставляете паузу побольше. Расчет скорости удаления файлов Выставляя паузу, расчитывайте за сколько Вы удалите файлы, чтоб их не удалять “всю жизнь” ))). Так, например, если пауза 0,1, то Вы удалите 10 файлов в секунду. 10*60*60*24=864 000 файлов в сутки. Таким образом, если у Вас несколько миллионов файлов, то Вы с такой скоростью удалите их за несколько суток.  Не заметно для пользователей. Если же Вам нужно удалить больше файлов, то возможно Вам нужно повысить скорость удаления. А […]

Read more

Копирование всех фотографий альбомного формата из одной папки в другую (Linux, Imagemagick)

Возникла необходимость перенести все фотографии альбомного формата из одной папки в другую, при этом, не копируя фотографии других форматов. В ручную, с многими тысячами фотографий сделать такое долго, начал искать путь автоматизации. Гугл не дал ответ на данную задачу, поэтому пришлось писать решение самому. У меня операционная система Linux Mint. Поэтому, сделал решение с помощью командного интерпретатора Bash с использованием библиотеки Imagemagick. Такое решение работает в Linux, но, как я писал ранее, можно сделать и в Windows, перенеся команды Linux в Windows вместе с библиотекой Imagemagick. Получившийся скрипт: # Перемещает фотографии с альбомной ориентацией #!/bin/bash export src=”/photo/photo_2020″ export dest=”/photo/album_2020″ echo “src=$src” echo “dest=$dest” for file in `find “$src” -type f -name “*.jpg”` do width=$(identify -ping -format “%w” “$file”) height=$(identify -ping -format “%h” “$file”) orient=$(identify -format ‘%[EXIF:Orientation]’ “$file”) echo “file=$file”; # Orientation: # Undefined – 0 # Undefined – [When no metadata] # TopLeft – 1 # TopRight – 2 # BottomRight – 3 # BottomLeft – 4 # LeftTop – 5 # RightTop – 6 # RightBottom – 7 # LeftBottom – 8 if (((orient==1))&&((width > height)))||(((orient==6))&&((height > width))) ; then echo “Yes! h=$height; w=$width”; echo “Orient=$orient”; mv $file $dest else echo “NO. $height; w=$width”; echo “Orient=$orient”; fi done Src – каталог, откуда копируем. Dest – каталог, куда копируем. Пробегаемся по всем jpg-файлам. Переносим только файлы альбомного размера. Автор: Рудюк С.А.  

Read more

Взлом 1С7.7. Почему нужно переходить на новые технологии

Программный продукт 1С получил на наших просторах большую популярность. Многие компании, начав использовать 1С7.7 продолжают с ним работать, хоть давно есть новые версии продукта 1С: Предприятия. 1С7.7 перестала обновляться в 1999 году. Т.е. 21 год назад данный программный продукт не изменялся. В те времена мало задумывались о безопасности систем. Как результат – полное отсутствие механизмов безопасности в данном программном продукте. Многие компании, которые используют 1С7.7, используют его файловый вариант на базе устаревших на данный момент dbf-файлов. Даже если используется 1С7.7 с MsSQL (что редко бывает), этот вариант взламывается в 2 счета с помощью перехвата пароля и логина администратора базы данных, который пересылается при подключении к базе данных клиент-серверными программами. В данной статье, не будем рассматривать вопрос взлома 1С7.7 на базе MsSQL, т.к. хоть этот взлом прост, тем не менее, требует некоторых специальных знаний от взломщика. Взлом же 1С7.7 на базе dbf-файлов может провести даже не квалифицированный пользователь компьютера (не то, что “продвинутый пользователь”). Взлом 1С7.7 на базе DBF-файлов Имеем базу данных 1С7.7. Запускаем 1С7.7. В открывшемся окне смотрим путь к базе данных: При входе в базу данных запрашивается пароль и имя пользователя. Создается впечатление защищенности программы. Идем в каталог, который посмотрели при входе в программу. Видим ВСЮ БАЗУ ДАННЫХ. Нам никто не помешает скопировать всю базу данных, сделать в ней изменения или удалить её. При этом, сложно будет обнаружить, кто это сделал. И админ даже не увидит, что базу данных “увели”. Если хочется получить административный доступ, переименовываем каталог usrdef, входим под админом – не запросится ВООБЩЕ пароль и логин. Сделав […]

Read more

Введение в интерфейс Мemcached для MySQL InnoDB

В предыдущих статьях серии: Простое разделение чтения и записи с помощью MySQLnd в PHP Продвинутое разделение чтения и записи с помощью MySQLnd в PHP: часть 1, часть 2 В MySQL 5.6 появилось memcache-совместимое хранилище ключ-значение на базе движка Innodb. InnoDB Memcache Daemon предоставляет вам стабильность innodb для данных вида ключ-значение, доступ к которым может быть организован через более быстрый и оптимизированный протокол memcached. При использовании данного протокола будут пропущены: парсинг запроса, его оптимизация и остальные части обработки, которые не требуются. С помощью mysqlnd_memcache, вы можете прозрачно направлять ваши запросы к такому memcache-совместимому интерфейсу. Установка Стандартные пакеты MySQL 5.6, которые поставляются Ubuntu (Trusty), не включают в себя плагин memcache. Для использования этого плагина вам потребуется установить его из официальных apt-репозиториев MySQL-я (для Debian 7.x Wheezy, Ubuntu 12.04 Precise и Ubuntu 14.04 Trusty). После того как вы установили MySQL 5.6 (или выше), необходимо войти в MySQL под суперпользователем и выполнить следующее: SOURCE /usr/share/mysql/innodb_memcached_config.sql; INSTALL PLUGIN daemon_memcached SONAME “libmemcached.so”; Скрипт innodb_memcached_config.sql делает несколько вещей, и первое, что он делает – это создаёт базу данных innodb_memcache, которая содержит три таблицы: cache_policies: в этой таблице хранятся правила, как выполняются команды GET, SET, DELETE и FLUSH. containers: эта таблица содержит список ваших таблиц, к которым возможен доступ с помощью memcache config_options — в этой таблице хранятся настройки memcache, а именно — разделитель многоколоночных значений – separator (по умолчанию вертикальная черта “|”) и разделитель обращения к таблицам table_map_delimiter (по умолчанию точка “.”) Второе, что выполняет скрипт – загружает сам плагин и запускает memcache демона внутри MySQL. Теперь всё […]

Read more

Включение Slow Query Log без перезапуска MySQL

Порой при работе приложений, работающих с бд, возникает падение производительности, в качестве одного из вариантов может быть убогий неоптимизированый запрос, выполняемый дольше чем планировалось. Для отслеживания данных запросов придумали Slow Query Log, состоит журнал из SQL выражений, времени начала запроса, общего времени выполнения, времени блокировки и прочей полезной информации.Включать данный лог можно на ходу, не перезапуская сервер, единственное что необходимо – доступ на запись для процесса от имени которого будет создан лог-файл. Логинимся… mysql -u root -p Устанавливаем месторасположение лог-файла mysql> SET GLOBAL slow_query_log_file = ‘/var/log/mysql/slow.log’; Определям что считать медленным запросом, по-умлочанию 10 секунд, с версии 5.1.21 можно выставить 0, что позволяет собирать все запросы mysql> SET GLOBAL long_query_time = 5; Ну и осталось включить mysql> SET GLOBAL slow_query_log = ‘ON’; Еще можно включить логирование запросов неимеющих индексов mysql> SET GLOBAL log_queries_not_using_indexes = ‘ON’; Данные значения будут сохранены до следующей перезагрузки mysql, если необходимо чтобы оно сохрянялось следует добавить в my.cnf [mysqld] … slow_query_log = ON slow_query_log = /var/log/mysql/slow.log long_query_time = 5 log_queries_not_using_indexes = ON Для того что бы узнать текущие значения: mysql> SHOW GLOBAL VARIABLES LIKE ‘slow\_%’; +————————————+————————-+ | Variable_name | Value | +————————————+————————-+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/log/mysql/slow.log | | slow_query_log_timestamp_always | OFF | | slow_query_log_timestamp_precision | second | | slow_query_log_use_global_control | | +————————————+————————-+ mysql> SHOW GLOBAL VARIABLES LIKE ‘long_query_time’; +—————–+———–+ | Variable_name | Value | +—————–+———–+ | long_query_time | 5.000000 | +—————–+———–+ mysql> SHOW GLOBAL VARIABLES LIKE ‘log_queries_not_using_indexes’; +——————————-+——-+ | Variable_name | Value | +——————————-+——-+ | log_queries_not_using_indexes | […]

Read more

Запуск приложения в режиме «daemon» в Linux

Часто случается ситуация, что нужно запустить приложение в Linux, которое не должно быть завершено при выходе пользователя, а режима демона у приложения нет. На этот случай можно воспользоваться парой приемов. Первый способ Запустить в сессии программы screen, которая не завершается при выходе пользователя. screen -d -m команда использованные параметры: -d -m — Запустить новый сеанс screen, но не подключаться к нему. Так же можно использовать параметр: -S имя — задать имя сессии screen для удобства поиска сессии по имени. Пример: screen -d -m -S backgroud_ping ping 127.0.0.1 1 screen -d -m -S backgroud_ping ping 127.0.0.1 Эта команда запустит пинг адреса 127.0.0.1 и присвоит сессии имя backgroud_ping. Для возврата к приложению и получению управления нужно: посмотреть список активный сессий screen: screen -ls 1 screen -ls в выводе консоли мы увидим имя и PID процесса: There is a screen on: 1218.backgroud_ping (13.05.2016 15:43:34) (Detached) 1 Socket in /var/run/screen/S-root. 123 There is a screen on:        1218.backgroud_ping     (13.05.2016 15:43:34)   (Detached)1 Socket in /var/run/screen/S-root. запущенная сессия будет иметь имя backgroud_ping, и в данном случае, PID будет 1218. теперь остается подключиться к процессу screen, это делается командой: screen -r номер_PID 1 screen -r номер_PID в нашем случае это будет: screen -r 1218 1 screen -r 1218 Мы получили обратно управление над приложением. Второй способ Использовать утилиту nohup, которая запустит приложение с игнорированием сигналов потери связи (SIGHUP), что позволит продолжить выполнение приложения после выхода пользователя из системы. nohup команда & 1 nohup команда & вывод будет перенаправлен вместо консоли в файл nohup.out, который будет находиться в папке из […]

Read more

НАСТРОЙКА UWSGI И NGINX ДЛЯ ОБСЛУЖИВАНИЯ ПРИЛОЖЕНИЙ PYTHON В UBUNTU 14.04

Данное руководство поможет настроить простое приложение WSGI, обслуживаемое uWSGI. Веб-сервер Nginx используется в качестве обратного прокси-сервера для более надёжного соединения. Примечание: Все компоненты установлены на сервер Ubuntu 14.04. Основные понятия и подходы Прежде чем приступить к работе, нужно разобраться с основными терминами и понятиями. Следующие три термина на первый взгляд кажутся взаимозаменяемыми, но на самом деле они совсем разные: WSGI: спецификация Python, которая определяет стандартный интерфейс для взаимодействия приложения/фреймворка с сервером приложений/веб-сервером. Её цель – упростить и стандартизировать взаимодействие этих компонентов. По сути, WSGI определяет интерфейс API, который можно использовать с другими протоколами. uWSGI: сервер приложений, который обеспечивает полноценную платформу для разработки и развертывания веб-приложений и сервисов. Этот сервер приложений может обрабатывать приложения, написанные на разных языках. Он взаимодействует с приложением согласно спецификации WSGI. Он может взаимодействовать с другими веб-серверами при помощи различных протоколов. Этот компонент трансформирует запросы стандартного веб-сервера в формат, который может обработать приложение. uwsgi: быстрый бинарный протокол, который реализуется сервером uWSGI для взаимодействия с другими полнофункциональными протоколами. Это wire протокол, а не транспортный протокол. Он лучше всего подходит для взаимодействия с веб-серверами, которые проксируют запросы для uWSGI. Требования к приложениям WSGI WSGI определяет интерфейс между веб-сервером и приложением. В данном контексте веб-сервером является uWSGI, который отвечает за передачу запросов клиента приложению в понятном формате. Это упрощает взаимодействие и создаёт слабосвязанные компоненты, которые можно легко заменить или удалить. Веб-сервер (uWSGI) должен иметь возможность отправлять запросы приложению. Callable (или точка входа)– псевдотип данных, «нечто, что можно вызвать как функцию». Ожидаемым параметром является словарь с переменными окружения и точка входа […]

Read more

Копирование большого количества файлов через SSH

SCP (Secure CoPy) — программа для удаленного копирования фалов по сети между хостами. Она использует SSH для передачи данных, ту же аутентификацию и те же меры безопасности, что и SSH. Во время копирования исходного фала в файл назначения, который уже существует, SCP перезаписывает файл назначения. Если файл назначения еще не существует, тогда создается пустой файл, ему задается имя файла назначения и уже в него записывается содержимое копируемого файла. Пример 1: Копируем файл «file.txt» из удаленного сервера на локальный компьютер. $ scp user@remote.host:file.txt /some/local/directory Пример 2: Копируем файл «file.txt» с локального компьютера на удаленный сервер. $ scp file.txt user@remote.host:/some/remote/directory Пример 3: Копируем папку «dir1» с локального хоста в директорию «dir2» на удаленном хосте. $ scp -r dir1 user@remote.host:/some/remote/directory/dir2 Пример 4: Копируем файл «file.txt» с одного удаленного сервера «remote.host1» на другой удаленный сервер «remote.host2». $ scp user@remote.host1:/directory/file.txt user@remote.host2:/some/directory/ Пример 5: Копируем файлы «file1.txt» и «file2.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. $ scp file1.txt file2.txt user@remote.host:~ Пример 6: Копируем файл «file.txt» с локального хоста на удаленный хост, используя порт 2222. $ scp -P 2222 file.txt user@remote.host:/some/remote/directory Пример 7: Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Сохраняем время изменения и время доступа и права копируемого фала. $ scp -p file.txt user@remote.host:~ Пример 8: Копируем файл «file.txt» с локального компьютера в Ваш домашний каталог на удаленном сервере. Увеличиваем скорость работы SCP изменяя алгоритм шифрования с AES-128 (по умолчанию) на Blowfish. $ scp -c blowfish file.txt user@remote.host:~ Пример 9: Копируем файл «file.txt» с локального компьютера […]

Read more
1 2 3