Блог

  • Установка Docker

    Рассмотрим установку Docker на примере CentOS, одно из наиболее используемое ПО в практике DevOPS. При работе с CentOS у вас есть выбор: использовать последнюю версию из upstream или версию, собранную проектом CentOS с дополнениями Red Hat. Описание изменений доступно на странице.
    В основном это обратное портирование исправлений из новых версий upstream и изменения, предложенные разработчиками Red Hat, но пока не принятые в основной код. Наиболее заметным различием на момент написания статьи было то, что в новых версиях сервис docker был разделен на три части: демон docker, containerd и runc. Red Hat пока не считает, что это изменение стабильно, и поставляет монолитный исполнимый файл версии 1.10. Настройки репозитория для установки upstream-версии, как и инструкции для инсталляции в других дистрибутивах и ОС, приведены в руководстве по инсталляции на официальном сайте Docker . В частности, настройки для репозитория CentOS 7:

    # cat /etc/yum.repos.d/docker.repo
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/7
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg

    Устанавливаем необходимые пакеты и запускаем и включаем сервис:

    # yum install -y docker-engine
    # systemctl start docker.service
    # systemctl enable docker.service

    Проверяем статус сервиса:

    # systemctl status docker.service

    Также можно посмотреть системную информацию о Docker и окружении:

    # docker info

    При запуске аналогичной команды в случае установки Docker из репозиториев CentOS увидите незначительные отличия, обусловленные использованием более старой версии программного обеспечения. Из вывода docker info можем узнать, что в качестве драйвера для хранения данных используется Device Mapper, а в качестве хранилища – файл в /var/lib/docker/:

    # ls -lh /var/lib/docker/devicemapper/devicemapper/data
    -rw-------. 1 root root 100G Dec 27 12:00 /var/lib/docker/devicemapper/devicemapper/data

    Опции запуска демона, как это обычно бывает в CentOS, хранятся в /etc/sysconfig/. В данном случае имя файла docker. Соответствующая строчка /etc/sysconfig/docker, описывающая опции:

    OPTIONS='--selinux-enabled --log-driver=journald'

    Для того чтобы пользоваться командой docker без применения sudo, необходимо добавить пользователя, с правами которого вы работаете, в группу docker:

    # usermod -aG docker andrey

    Если бы вы запустили команду docker не пользователем root и не пользователем, входящим в группу docker, вы бы увидели подобную ошибку:

    $ docker search mysql
    Warning: failed to get default registry endpoint from daemon
    (Cannot connect to the Docker daemon. Is the docker daemon
    running on this host?). Using system default: https://index.docker.io/v1/
    Cannot connect to the Docker daemon. Is the docker daemon
    running on this host?

    Обратите внимание, что фактически включение пользователя в группу docker равносильно включению этого пользователя в группу root. У разработчиков RHEL/CentOS несколько иной подход к безопасности демона Docker, чем у разработчиков самого Docker из upstream. Подробнее о подходе Red Hat написано в статье разработчика дистрибутива RHEL Дэна Уолша.
    Если же вы хотите «стандартное» поведение Docker, установленного из репозиториев CentOS (т.е. описанное
    в официальной документации), то необходимо создать группу docker и добавить в опции запуска демона:

    OPTIONS='--selinux-enabled --log-driver=journald --group=docker'

    После чего рестартуем сервис и проверяем, что файл сокета docker принадлежит группе docker, а не root:

    # ls -l /var/run/docker.sock
    srw-rw----. 1 root docker 0 Dec 27 13:32 /var/run/docker.sock

    Поиск образов и тэги Попробуем найти контейнер на Docker Hub.

    $ docker search haproxy
    NAME DESCRIPTION
    haproxy HAProxy - The Reliable, High Perf...
    eeacms/haproxy HAProxy Docker image with docker ...
    million12/haproxy Fully customisable HAProxy load b...
    STARS OFFICIAL AUTOMATED
    607 [OK]
    17 [OK]
    14 [OK]
    ...

    В данном выводе мы получили список ряда образов HA Proxy. Самый верхний элемент списка – это HA Proxy
    из официального репозитория. Такие образы отличаются тем, что в имени отсутствует символ «/», отделяющий имя репозитория пользователя от имени самого контейнера. В примере за официальным показаны два образа haproxy из открытых репозиториев пользователей eeacms и million12.
    Образы, подобные двум нижним, можете создать сами, зарегистрировавшись на Docker Hub. Официальные же поддерживаются специальной командой, спонсируемой Docker, Inc. Особенности официального репозитория:

    • Это рекомендованные к использованию образы, созданные с учетом лучших рекомендаций и практик.
    • Они представляют собой базовые образы, которые могут стать отправной точкой для более тонкой настройки. Например, базовые образы Ubuntu, CentOS или библиотек и сред разработки.
    • Содержат последние версии программного обеспечения с устраненными уязвимостями.
    • Это официальный канал распространения продуктов.

    Чтобы искать только официальные образы, можете использовать опцию –filter “is-official=true” команды docker search.
    Число звезд в выводе команды docker search соответствует популярности образа. Это аналог кнопки Like
    в социальных сетях или закладок для других пользователей. Automated означает, что образ собирается автоматически из специального сценария Dockerfile средствами Docker Hub. Обычно следует отдавать предпочтение автоматически собираемым образам вследствие того, что его содержимое может быть проверено знакомством с соответствующим файлом Dockerfile.
    Скачаем официальный образ HA Proxy:

    $ docker pull haproxy
    Using default tag: latest

    Обратите внимание, что в выводе была указана загрузка образа с тэгом latest. Использование тэгов позволяет
    обращаться к конкретной версии. Помимо самого образа haproxy, был скачен базовый образ и все промежуточные, от которых зависит скачиваемый. Чтобы скачать конкретную версию, используем:

    $ docker pull haproxy:1.5

    Полное имя образа может выглядеть следующим образом:

    [URI репозитория][имя пользователя]имя образа[:тэг]

    Просмотреть список скаченных образов можно командойdocker images:

    $ docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    docker.io/haproxy latest c0a3eb080707 13 days ago 138 MB

    Команда docker images с опцией -q вернет только идентификаторы образов, что может быть полезным для использования идентификаторов в качестве входных значений для другой команды. Например, команды docker rmi, которая удаляет образ. Для того чтобы удалить все имеющиеся в локальном кэше образы, можно воспользоваться такой командой:

    $ docker rmi $(docker images -q)

    Установка, настройка и поддержка Docker контейнеров, обращайтесь office@itfb.com.ua

  • Установка Jira. Опыт чайника

    Установка Jira. Опыт чайника

    Целью моего эксперимента была оценка порога «вхождения» при работе с продуктом JIRA. Поэтому  не судите строго, когда я скажу, что просто решила поставить jIRA  в своей инфраструктуре. Ранее я занималась настройкой Jira для реализации потребностей работы с задачами, но никогда до этого не устанавливала ее. Мои знания об установке Jira сводились к 3м пунктам:

    • Я знала, что ПО кроссплатформенное,
    • Написано на Java
    • Должно работать с внешней базой данных.

    Я намеренно не смотрела ни одной инструкции, чтобы оценить насколько смогу справиться, опираясь только на интуитивный интерфейс и 8ми летний опыт администрирования серверов и систем. Поскольку я специалист в администрировании систем Windows, выбор операционной системы для Jira Server частично был обусловлен ленью и обеспечением чистоты эксперимента, а частично желанием проверить обоснованность утверждения коллег-линкусоидов о том, что JIRA наWindows «жрет» значительно больше ресурсов, чем ее аналог на Linux. Я понимаю, что «правильные» коллеги скажут, что чтение readme.txt помогает предотвратить массу проблем и экономит время (для них я все же приведу ссылки на инструкцию по установке (http://confluence.atlassian.com/adminjiraserver071/installing-jira-applications-802592161.html) и в частности системные требования confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html), но много кто этого не делает. Думаю, материал будет полезен по разным причинам. Что ж – приступим.

    Итак, на заботливо подготовленной виртуальной машинке Windows Server 2016 (c 1 виртуальным процессором, 1 ГБ оперативной памяти и 30Гб пространства на жестком диске) я скачала последнюю доступную версию JIRA – 7.3.1. И запустила инсталляцию.

    Система спросила, имею ли я достаточно опыта, чтобы внятно отвечать на ее вопросы, и я сочла, что я справлюсь.

    установка jira

    На следующих экранах я указала пути к рабочим файлам ПО и к дополнительным объектам, таким как резервные копии, плагины, вложения. Также указала необходимость создания ярлыков программы. Оставила значения портов по умолчанию и указала необходимость инсталляции JIRa как службу Windows. Подучив перед установкой экран с кратким содержанием выбранных настроек я нажала кнопку Install.

    установка жира

    Через пару минут установка была завершена и система предложила открыть браузер. Браузер открыл страницу Http://localhoost:8080, и вуаля!…

    Jira не открывается. Я уж было расстроилась и пошла заварить чай, но обновление страницы с горячей чашкой в руке возымело свою магию: страница успешно загрузилась и предложила продолжить настройку.

    Поскольку я не просто любитель, а планирую заниматься установкой и настройкой Jira и других продуктов Atlassian в продуктивной среде, то мой дальнейший выбор был очевиден.

    настройка жира

    настройка jira

    В  моей инфраструктуре уже есть MySQL сервер, поэтому мой выбор пал именно на него. К слову сказать, это оказался самый интересный вариант с точки зрения сложности установки Jira. Только для MySQL нужно скачать дополнительный драйвер.

    настройка жира

    Я перешла  по ссылке, которая рекомендовалась на экране, скачала предложенный архив с драйвером и разархивировала jar файл в папку LIB , находящуюся среди рабочих файлов JIRA.

    Не удержавшись, я все же заглянула в другие пункты инструкции по подключению MySQL для Jira.

    Проверила параметры MySQL:

    default-storage-engine=INNODB
    max_allowed_packet=256M
    innodb_log_file_size=256M
    // remove this if it exists
    sql_mode = NO_AUTO_VALUE_ON_ZERO

    и отправила систему в перезагрузку для пущей надежности. Пока система грузилась (в моем случае старт сервиса JIRA занял около 4х минут и я наблюдала за этим процессом загрузив страницу http://localhost:8080/secure/SetupMode!default.jspa) я создала новую базу и пользователя.подключение к jira

    установка и настройка jira

    Обратите внимание, что последний скриншот актуален для случая, когда Jira и MySQL установлены на одном хосте. В моем случае в поле Host был указан IP сервера Jira.

    Не забывайте о том, что регистр букв имеет значение. Этот факт заставил меня немного напрячься и несколько раз перепроверить верные настройки перед тем, как тестовое соединение прошло успешно.

    Нажатием Next я перевела установку на стадию создания базы. Этот процесс также оказался достаточно долгим,  в третий раз погрузив меня в мысли о выделенных под виртуальную машину ресурсах. Ну а ошибка, которую я получила на выходе операции, заставила вплотную заняться этим вопросом.

    жира установка

    На самом деле ошибка «JIRA Startup Failed» с пояснением «The following plugins are required by JIRA, but have not been started» может быть вызвана разными проблемами. Но в моем случае память размером 1Гб была полностью занята. Служба Atlassian Jira была отправлена мною в перезагрузку и пока она рестартовала, виртуальной машине был добавлен еще 1ГБ оперативной памяти. Благо Hyper-V на Windows 2016 умеет делать это «на лету». Количество добавляемой памяти было выбрано исходя из системных требований (которые, таки да, пришлось прочитать).

    Все зашевелилось и засуетилось. Система попросила меня указать имя организации и URL для обращения к jira. Здесь я бы рекомендовала использовать доменное имя, желательно такое, которое можно использовать как внутри, так и снаружи организации. Даже если вы планируете использовать Jira только для внутренних нужд предприятия, вполне вероятен сценарий, когда к этой системе потребуется внешний  доступ.

    На следующем шаге решался вопрос с лицензией. Можно использовать имеющуюся, или сгенерировать trial лицензию. Второй вариант устроил и меня и систему. При ее активации jira успешно проглотила выделенный системе гигабайт оперативки, напрягла имеющиеся процессорные мощности, и успешно перешла на страницу настройки административного аккаунта. К слову сказать процессорные мощности она вернула, а вот использование оперативной памяти так и осталось висеть полочкой на 2Гб.

    Не имея дальнейшего терпения, я добавила системе еще 1 Гб оперативной памяти. Настроила административный аккаунт, для конфигурирования которого система требует e-mail, который вполне может оказаться фейковым.

    конфигурация jira

    На следующем шаге сказала, что настрою оповещения по электронной почте позже. И нажала на заветную кнопку Finish.

    О, Ура! Я наконец-то вижу:

    настройка жира и установка

    При этом нагрузка на сервер не отображает чего-то необычного:

    настройка jira

    В следующих статьях я буду наблюдать за потреблением ресурсов при дальнейшей конфигурации и использовании Jira.

    Выводы. Установка Jira вполне по силам среднего уровня техническому специалисту. Нагрузка на систему в период установки не превышает допустимых значений.

    Конечно, если Вы хотите использовать в дальнейшем в продуктивной среде, настроить различные модули и функционал, то установку и настройку лучше доверить моим коллегам профессионалам, office@itfb.com.ua

  • Docker InfraKit

    Погостив в надежном и доверенном мире JVM в последние несколько месяцев, в этой статье мы вернемся в мир самых ярких из самых ярких новинок и уделим внимание только что вышедшему из-под пресса InfraKit от Docker. Продукт был запущен на конференции LinuxCon Europe в начале октября, и цифровые чернила в файле readme.md с описанием InfraKit уже почти высохли. Что же там написано? Цитирую дословно: InfraKit— набор инструментов для создания декларативной само-восстанавливающейся инфрастурктуры и для управления этой инфраструктурой. Он позволяет разложить автоматизацию инфраструктуры на простые подключаемые компоненты. Работая вместе, эти компоненты обеспечивают инфраструктуру, соответствующую спецификациям пользователя. Хотя InfraKit делает акцент на простых компонентах для создания самовосстанавливающейся инфраструктуры, его также можно использовать и пассивно, как традиционные инструменты».

    Внедрение инфраструктуры на основе Docker контейнеров, Ansible, InfraKit, сопровождение, решение проблем, office@itfb.com.ua

    С первого взгляда простительно решить, что это очередной инструмент управления конфигурацией, который Docker создал для себя — из-за синдрома «мы этого еще не изобретали», свойственного многим организациям. Однако судя по комментариям после запуска от осведомленных лиц, Docker считает InfraKit инструментом, состоящим из компонентов для встраивания в системы более высокого уровня, а не прямым конкурентом существующим инструментам. Организация хочет объединить InfraKit с движком Docker, подобно тому как Svuarm стал частью основного продукта. Лучше всего роль fnfraKit отражена в комментарии Соломона Хайкса [Solomon Hykes] (основателя Docker) на сайте Hacker News. Когда я спросил его, в чем отличие InfraKit от Ansibfe, он ответил так: «Ansibfe — автономное средство с очень широким спектром действия (автоматизация для всех»), InfraKit — встраиваемый компонент с очень узким спектром действия (..создание декларативной самовосстанавливающейся инфраструктуры и управление этой инфраструктурой”). Если бы мы создавали Ansible сегодня то, пожалуй, включили бы в нее InfraKit для реализации низкоуровневого управления инфраструктурой».
    Если вы мало что поняли из релиза компании (я-то осознал его смысл отнюдь не сразу), скажу, что InfraKit — это программное обеспечение для управления автоматизацией инфраструктуры, Для этого используются плагины, которые (теоретически) позволят разворачивать объявленную пользователем инфраструктуру с помощью различных инструментов и на различных целевых платформах. Продукт содержит примеры плагинов для Vagrant и Terraform: также есть плагин для AWS, не за горами и поддержка tore (Docker ожидает, что пользователи создадут множество плагинов для проекта сами). Это объясняется тем, что пользователям нужен стандартный способ для создания и управления инфраструктурой, который поддерживался бы любыми типами инфраструктур, от различных облачных провайдеров до локальной установки. У каждого облачного провайдера есть собственная инфраструктура и API — InfraKit пытается решить эту проблему, также добавив самовосстановление. При изменении состояния инфраструктуры fnfraKit вступите действием приведет систему в требуемое состояние.
    Как догадаются читатели этой колонки, этот продукт проставил у меня сразу несколько галочек. Автоматизированное развертывание? Абстрактная инфраструктура? Самовосстанавливающаяся инфраструктура? Я не мог не попробовать InfraKit и не посмотреть, что получится. Однако время для этого продукта еще не пришло, С ним можно только поразвлечься. Нет, я не использовал его в рабочей среде — вы с ума сошли?

  • Visual Studio Team Services создание образа в Docker Hub

    Visual Studio Team Services создание образа в Docker Hub

    Visual Studio Team Services (VSTS) является отличным инструментом для обработки вашей сборки и выпуска релизов, даже для приложений Windows. В этом посте я подробно расскажу, как вы можете использовать расширение Docker для VSTS что бы создавать, деплоить и запускать Docker образы на Linux. Задачей создания и настройки Docker образов должен заниматься DevOps инженер.

    Установка расширения Docker

    Как вы, возможно, уже знаете, Visual Studio Team Services поставляется с Marketplace, где вы можете обнаружить, некоторые задачи и расширения для вашей сборки и выпуска. Расчирение для Docker доступно здесь:https://marketplace.visualstudio.com/items?itemName=ms-vscs-rm.docker

    Добавление расширений к VSTS действительно просто , вы просто должны нажать на кнопку Установить:

    установка расширения docker

    Примечание: это расширение также доступна для Team Foundation Server, так что вы можете скачать и установить его на своем сервере.

    Если вы еще не вошли в систему вам будет предложено ввести учетные данные. После аутентификации, вы должны выбрать учетную запись VSTS, для которой хотите установить расширение:

    docker wondows

    Нажмите на кнопку подтверждения, и все готово!

    Теперь, если вы создаете новые сборки, вы должны увидеть два новых расширения: Docker Docker Compose

    докер установка

    Чтобы использовать расширение, вам нужно настроить две внешних службы в VSTS:

    • Docker host, который будет использоваться для построения, пуша, запуска образов
    • Docker Hub/Registry для хранения образа

    Создание и настройка агента сборки Linux

    Visual Studio Team Services поддерживает агенты сборки ( предоставляемые Microsoft и работающие под управлением Windows) и пользовательские агенты, которые могут запускаться на Windows, Linux или Mac OS. Любая машина,  которая у вас есть, физическая или виртуальная, может быть агентом VSTS.

    Я выбираю , создать машину Ubuntu в Microsoft Azure с помощью командной строки docker-machine. Этот инструмент очень прост в использовании и позволяет запусть Docker хост в течение нескольких минут!

    После этого, вы можете подключиться по ssh с помощью команды:

    docker-machine ssh machine_name

    Вам необходимо установить некоторые пререквизиты для агента VSTS Linux, как описано здесь: https://github.com/Microsoft/vsts-agent/blob/master/docs/start/envubuntu.md

    Теперь вы можете скачать агент со страницы выпуска GitHub, в зависимости от версии Ubuntu например (14.04 или 16.04): https://github.com/Microsoft/vsts-agent/releases

    После загрузки, создайте новую папку на компьютере, например, vsts-agent и распакуйте архив в папку:

    mkdir vsts-agent && cd vsts-agent && tar –zxvf vsts-agent-ubuntu.16.04-x64-2.105.1.tar.gz

    На вашей машине Linux, запустите скрипт config.sh в каталоге VSTS-агента:

    ./config.sh

    Следующий шаг настройки, введите свои данные VSTS,  и выберете контейнер который вы только что создали, а затем запустить run.sh скрипт для запуска агента.

    Перейти в очередь агентов настройках вашего проекта и убедитесь, что ваш агент доступен:

    настройка docker

    Ваш агент сборки готов!

    Используйте расширение Docker в VSTS

    Я работаю над приложением мульти-контейнеров и я использую расширение Docker для создания и пуша 4 образов из репозитория исходного кода, который содержит один Dockerfile для каждого образа. Во-первых, я создал новое определение сборки (запускается из пустого), связано определение сборки в моим репозиторием исходного кода и настроил его, чтобы запускаться каждый раз, когда выполняется коммит.

    Затем я добавил задачу Docker к определению сборки (Мне нужно создавать и пушить каждый образ):

    работа с докер

    Как вы можете видеть на правой стороне каждого случая задачи необходимо обеспечить Docker узел соединения (машину, которая будет строить, пушить, или запустить образ) и соединение Docker реестра (доверенный реестра или учетной записи Docker Hub).

    Нажмите на ссылку Управление , чтобы перейти к управлению Services. В этом разделе вы можете добавить информацию, чтобы соединить Docker host и ваш Docker Hub:

    докер контейнер

    Для Docker host , вам нужно присвоить имя, URL-адрес хоста и информацию о сертификате для подключения к демону Докер (эти сертификаты были сгенерированы docker-machine  в вашей домашней папке):

    контейнер докер

    Docker Registry требует вашего Trusted Registry / Docker Hub информацию об учетной записи (и URL вашего доверенного реестра, если вы не используете общедоступны хаб):

    image_thumb410

    После настройки, вернитесь к определению сборки и настройки хоста / реестра на задаче. Другие данные, которые вам нужно предоставить это путь Dockerfile, действие Докер которые вы хотите выполнить (сборка, пуш, запуск …) и контекст, чтобы перейти к демону Докер.

    Ниже приведен пример конфигурации задачи Docker для создания образа:

    doker образ

    Пример задачи Докер для пуша образа, который был сделан в предыдущем шаге:

    image_thumb412

    Как вы можете видеть, я использовал переменную номер сборки VSTS, чтобы пометить образ.

    Сборка сконфигурирована, и может быть запущена в очереди агента, который содержит пользовательский агент.

    image_thumb413

    После того, как сборка будет выполнена, четыре изображения станут доступны в Докер Hub:

    image_thumb414

    Запуск образа супер просто с задачей Докер, вы просто должны выбрать, образ, который вы хотите выполнить:

    запуск docker

    Примечание: Вы можете также добавить дополнительные параметры , которые будут переданы команде docker run, такие как имя контейнера, конфигурации отображения портов, переменных окружения и аргументов командной строкt.

    Удачи с Докер и VSTS!

    Нужна помощь в настройке поддержке и сопровождении систем с Docker? office@itfb.com.ua

  • Cron. Часто задаваемые вопросы

    • Что такое cron?

    Сгоn автоматически запускает программы в заданное время.

    • Как он это делает?

    Он просыпается раз в минуту и проверяет список заданий, ко­торые нужно запустить. Если для данной минуты есть какие-нибудь задания, он запускает их

    • Где хранится список заданий?

    Он хранится в нескольких местах; основной системный файл — /etc/ crontab. Также есть удобные ката­логи /eic/cron.hourly. /etc/cron.daily

    и т.д. Если скопировать в эти ката­логи любой скрипу то он будет за­пущен в соответствующее время.

    • Почему этих мест несколько?

    Благодаря отдельным катало­гам пакеты могут устанавливать собственные задания сгоn, которые будут запускаться с регулярным интервалом; при этом в главном файле crontab определяется точное время их запуска,

    • Ежечасно, ежедневно, ежене­дельно и ежемесячно – разве и так не понятно?

    Это интервалы запуска, а не время запуска, Скрипты в каждом катало­ге стоит запускать на разных мину­тах, чтобы не перегружать систему.

    • Как запускать мою собствен­ную программу, если эти файлы предназначены для системных заданий?

    У каждого пользователя может быть собственный файл crontab, просмотреть который можно командой crontab -L Имя конфигу­рационного файла и названия про­граммы для редактирования этого файла одинаковы (crontab) —но не проклинайте нас,поскольку это придумали не мы!

    • Где находится мой файл crontab и как его изменить?

    Для изменения файла испопьзуется команда crontab -е, которая за­гружает файл в предпочтитель­ный редактор. Она также проверяет синтаксис файла и сообщает про­грамме сгоn об изменениях после сохранения файла.

    • Что содержит файл crontab?

    Для каждого задания выделена одна строка с шестью полями (в системном crontab полей семь). В первых пяти попях указывают­ся минута, час, день месяца, месяц и день недели, В последнем поле указывается команда для запуска. В системном crontab шестое по­ле — это пользователь, от имени которого запускается задание.

    • Сложновато… можете привести пример или пару примеров?

    При указании строки 30 6 * * * / путь_к_программе программа бу­дет запускаться в 6:30 утра каждый день. Для запуска строки требуется соответствие всех полей; * означа­ет, что поле может принимать лю­бое значение. Если изменить пятое поле на 1 или  “Mon”, задание будет запускаться только по понедельни­кам в 6:30 утра.

    • Можно ли запускать задачу несколько раз в день?

    Конечно, При указании лю­бой из строк: 0 0,6,12,18 * * * / путь_к_программе или 0 74 * * * /путь_к_программе задание бу­дет запускаться каждые шесть часов в ровный час, но вторая строка удобнее для восприятия, Дополнительные примеры см, по man 5 crontab.

    Администрирование и поддержка Linux/Unix серверов, office@itfb.com.ua

  • Как изменить путь сохранения скриншотов в MacOS X

    Как изменить путь сохранения скриншотов в MacOS X

    Я знаю , как сохранить весь мой экран или только его часть. Снимок экрана автоматически сохраняется на моем рабочем столе, и это приводит к захламлению всего рабочего стола  файлами скриншотов  .png. Как я могу изменить путь сохранения скриншотов в моей системе MacOS X вместо расположения по умолчанию рабочего стола?

    Вы можете легко сделать скриншот всего экрана, нажав Shift-Command3keys. По умолчанию, скриншот сохраняется в виде .png файла на рабочем столе. Вы можете нажать Shift-Command4 , чтобы сделать снимок окна. Затем Space, а затем нажав на окно, которое вы хотите захватить. Опять же, скриншот сохраняется в виде .png файла на рабочем столе.

    Как изменить место сохранения экрана

    Шаги следующие:

    Шаг 1: Откройте приложение терминала

    Нажмите CommandSpace , чтобы открыть Spotlight и  терминал

    Шаг 2: Использование стандартных команд, чтобы изменить местоположение файла скриншота по умолчанию

    Синтаксис:

    defaults write com.apple.screencapture location /path/to/save/screenshots/
    killall SystemUIServer

    Для сохранения скриншотов в папку $HOME/screenshots/, введите следующую команду:

    mkdir $HOME/screenshots/
    defaults write com.apple.screencapture location $HOME/screenshots/
    killall SystemUIServer

    изменение сохранения скриншотов

    Шаг 3: Проверим

    Теперь сделайте скриншот, как описано выше, и вы должны увидеть скриншоты, сохраненные в $HOME/screenshots/:

    $ ls $HOME/screenshots/
    -rw-r--r--@ 1 veryv staff 82674 Jan 3 22:23 Screen Shot 2017-01-03 at 10.23.27 PM.png

    Как вернуться к первоначальным настройкам?

    Введите следующие две команды, чтобы сохранить обратно скриншоты в ~/Desktop/, введите следующую команду:

    defaults write com.apple.screencapture location ~/Desktop/
    killall SystemUIServer

    Изменение имени файла снимков экрана на MacOS X: 

    По умолчанию, снимки экрана, сделанные в MacOS X сохранить в файлы с префиксом “Screen Shot” в имени файла. Вы можете изменить префикс имени файла что-то другое. Синтаксис выглядит следующим образом:

    defaults write com.apple.screencapture name "itfb"
    killall SystemUIServe
    ls ~/screenshots/

    Результат

    itfb 2017-01-03 at 10.32.37 PM.png

    Вы можете вернуться к первоначальной приставке, введя следующие две команды:

    defaults write com.apple.screencapture name "Screen Shot"
    killall SystemUIServe

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

  • Администрирование серверов – аутсорсинг  это хорошо

    Администрирование серверов – аутсорсинг это хорошо

    Почему – спросите Вы?

    Да потому что в условиях нестабильной экономики  – это один из вариантов обезопасить себя от неприятных ситуаций.

    Давайте посмотрим, что происходит в экономике нашей родной Украины: деньги обесцениваются, цены растут, покупательская способность падает. А жители нашей страны, также как и другие люди в этом мире заслуживают достойной жизни. Конечно же, все желают иметь работу с заработной платой, способной обеспечить эту достойную жизнь. По скромным прикидкам автора размер такой заработной платы для Украины (кстати, как и для ближнего зарубежья: Польши, Беларуси, России) – это 1000$. Вот только много ли компаний готовы платить своему техническому специалисту такую сумму? А учитывая тот факт, что таких технических специалистов для взаимозаменяемости должно быть хотя бы два, а если требует фронт работ  – то и еще больше. А там – где больше 2х – требуется руководитель, который будет нести дополнительные бюрократические нагрузки, которые также должны быть поощрены материально.  Вот и получается, что достойное содержание ИТ отдела компании обходится в немаленькую сумму. И это все без учета обеспечения нормальных условий труда: рабочего места, социальных гарантий и прочего. А если Вы руководитель небольшого предприятия, которому в условиях нынешнего глубокого кризиса и так не сладко, то что же делать?

    Альтернативой содержания ИТ сотрудников на предприятии является использование услуг аутсорсеров. То есть компаний, которые предоставляют услуги по обслуживанию Вашей информационной инфраструктуры.  Заключив договор с такой компанией, Вы:

    • обеспечиваете себя высокоуровневыми специалистами,
    • снимаете необходимость нести ответственность за сотрудников перед государством,
    • фиксируете стоимость услуг на некоторый период (который согласовывается в договоре).

    Последнее также важно в текущих экономических условиях.

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

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

    server-123Давайте сравним цифры. В нашей компании поддержка бизнес-решений стартует от 200$. Предположим, что стоимость поддержки именно Вашей уникальной системы в 4 раза больше, то есть 800$. Однако эта цифра все-равно ниже, чем цифра (1000$), которая удовлетворит достойного технического специалиста.  Может быть, Вы готовы поспорить, аргументируя свою точку зрения тем, что в нынешних реалиях люди готовы работать и за меньшие деньги. Но подумайте о том, не уйдут ли Ваши сотрудники, если конкурент предложит им на 50$ больше? Готовы ли они заниматься Вашими проблемами средней важности, если на второй работе (которую они вынуждены иметь) у них будет более приоритетная задача? Каждый человек хочет жить хорошо, а в условиях, когда приходится не жить, а выживать, по мнению автора, ответы на поставленные вопросы очевидны.

    Мировой опыт также показывает положительный эффект от использования услуг аутсорсинга. Например, разница во времени даже в один час позволяет эффективнее использовать рабочие часы сотрудников, проводя регламентные работы в рамках рабочего дня технических специалистов и в тоже время за рамками рабочего дня потребителей систем. А мировые тренды, указывающие на эффективность переноса ИТ инфраструктур и данных в облака, только упрощают сотрудничество с аутсорсерами.

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

    Если Вы готовы воспользоваться услугами аутсорсинга для обеспечения качественной работы Ваших ИТ систем, мы готовы сделать Вам выгодное предложение.

    До встречи! Мы надеемся, она обязательно произойдет.

  • Linux / Unix: “-bash: python: command not found”

    Linux / Unix: “-bash: python: command not found”

    Предположим я новичок и пытаюсь запустить программу на Python. У меня есть облако на основе VM / VPS и когда я запускаю mycode.py на терминале моего сервера, я получаю следующее сообщение об ошибке:

    -bash: Python: команда не найдена

    Как решить эту проблему?
    Эта ошибка означает, что Python либо не установлен или ваша установка повреждена. Вот как вы можете решить эту проблему.

    Проверьте путь питона

    Введите одну из команд для проверки существования бинарного файла pyrhon на Linux / Unix

    type -a python

    или

    ls -l /usr/bin/python
    ls -l /usr/bin/python*

    или

    which python

    Пример результата

    Python-command-not-found

    Кажется, что Python отсутствует по неизвестной причине или не был установлен провайдером, чтобы сэкономить дисковое пространство. Как установить его в соответствии с вашим дистрибутивом Linux или Unix вариант:

    Ubuntu / Debian / Mint Linux установка Python

    Ввкдите следующую команду apt-get  или apt

    $ sudo apt-get install python

    Или установить версию пиона 3:

    $ sudo apt-get install python3

    Oracle / RHEL (Red Hat) / CentOS Linux установить Python

    Введите следующую команду :

    $ sudo yum install python

    Fedora Linux установить Python

    Введите следующую команду DNF, чтобы добавить v2.x Python:

    $ sudo dnf install python

    ИЛИ добавить Python v3.x:

    $ sudo dnf install python3

    Arch Linux установка Python

    Введите следующую команду pacman, чтобы добавить v2.x Python:

    $ sudo pacman -S python2

    ИЛИ добавить v3.x Python:

    $ sudo pacman -S python3

    Suse / OpenSUSE Linux установка Python

    Введите следующую команду, чтобы добавить v2.x Python:

    $ sudo zypper install python

    ИЛИ добавить v3.x Python:

    $ sudo zypper install python3

    FreeBSD Unix установка Python

    Введите следующую команду PKG, чтобы добавить v2.x Python:

    # pkg install python2

    ИЛИ Чтобы установить порт Python V2.x:

    # cd /usr/ports/lang/python2/ && make install clean

    Для того, чтобы добавить пакет Python v3.x:

    # pkg install python3

    ИЛИ Чтобы установить порт Python v3.x:

    # cd /usr/ports/lang/python3/ && make install clean

    OpenBSD Unix установка Python

    Введите следующую команду pkg_add, чтобы добавить v2.x Python или 3.x:

    # pkg_add python

    ИЛИ

    $ doas pkg_add python

    Примеры результатов:

    quirks-2.241 signed on 2016-07-26T16:56:10Z
    Ambiguous: choose package for python
    a       0: 
            1: python-2.7.12
            2: python-3.4.5
            3: python-3.5.2
    Your choice:

    MacOS X Unix установка python3

    Введите следующую команду:

    $ brew install python3

    Проверка правильности установки Python

    Введите следующие команды:

    $ type -a python 
    $ which python 
    $ ls -l /usr/bin/python 
    $ ls -l /usr/bin/python*

    Примеры результатов:

    python-installed-on-linux

    Примечание о сломанном линке

    Иногда символические ссылки на исполняемые файлы питонов ломаются по какой-то причине. Например, /usr/bin/python3.4 это реальные исполняемые файлы. Вы можете указать/usr/bin/python на /usr/bin/python3.4 для Python версии 3.4 с помощью команды LN:

    $ sudo ln -s /usr/bin/python3.4 /usr/bin/python

    Теперь вы можете запустить программу:

    $ python mycode.py

    Предоставляем услуги администрирования серверов и DevOps инженеров

  • Как проверить размер файла в Linux / Unix

    Как проверить размер файла в Linux / Unix

    Информация для новичка в командной оболочке bash. Как узнать размер файла через bash скрипт и сохранить этот размер в переменную оболочки Bash?
    Не все команды для подсчета размера файла подойдут для использования в скрипте. Команда stat отображает информацию о файле, включая его размер. Другой вариант заключается в использовании команды wc, которая может подсчитать количество байтов в каждом конкретном файле. Давайте посмотрим, как использовать эти две команды, чтобы проверить размер файла в Linux или Unix-подобной системе.

    Как проверить размер файла в UNIX с помощью команды wc

    Команда wc показывает количество строк, слов и байтов, содержащихся в файле. Синтаксис выглядит следующим образом, чтобы получить размер файла:

    wc -c /path/to/file 
    wc -c /etc/passwd

    Пример результата:

      5353 /etc/passwd

    Вы можете легко извлечь первое поле либо с помощью команды cut или AWK:

    wc -c /etc/passwd | awk '{print $1}'

    Пример результата:

    5353

    ИЛИ присвоить этот размер переменной Баш:

    myfilesize=$(wc -c "/etc/passwd" | awk '{print $1}')
    printf "%d\n" $myfilesize
    echo "$myfilesize"

    Как получить размер файла в Баш скрипт с помощью команды stat

    Команда stat показывает информацию о файле. Синтаксис выглядит следующим образом, чтобы получить размер файла на GNU / Linux:

    stat -c %s "/etc/passwd"

    или

    stat --format=%s "/etc/passwd"

    Чтобы назначить этот размер переменной Баш:

    myfilesize=$(stat --format=%s "/etc/passwd")
    echo "$myfilesize"
    ## or ##
    myFileSizeCheck=$(stat -c %s "/etc/resolv.conf")
    printf "Размер файла = %d\n" $myFileSizeCheck

    Синтаксис выглядит следующим образом, чтобы получить размер файла на BSD / MacOS:

    stat -f %z "/etc/passwd"

    Обратите внимание, что если файл символьная вы получите размер этой ссылки только с помощью команды стат.

    Пример команды du

    Синтаксис

    du --apparent-size --block-size=1  "/etc/passwd"
    fileName="/etc/hosts"
    mfs=$(du --apparent-size --block-size=1  "$fileName" | awk '{ print $1}')
    echo "$fileName size = ${mfs}"

    stat-find-du-wc-command-outputs

    Find пример команды

    Синтаксис:

    find "/etc/passwd" -printf "%s"
    find "/etc/passwd" -printf "%s\n"
    fileName="/etc/hosts"
    mysize=$(find "$fileName" -printf "%s")
    printf "File %s size = %d\n" $fileName $mysize
    echo "${fileName} размер ${mysize} bytes."

    Услуги администрирования серверов и поддержки сайтов.

  • Зачем нужна оптимизация сервера

    Зачем нужна оптимизация сервера

    Современный мир бизнеса давно уже покорил и просторы Интернета. Но создание сайта, приносящего прибыль, – это еще не все, что необходимо для ведения успешного бизнеса. Если у вас такой сайт уже имеется, то стоит задуматься об оптимизации работы сервера.

    Зачем нужна оптимизация работы серверов?

    Дело в том, что с ростом количества клиентов вашего сайта, однозначно требуется их комфортное и быстрое обслуживание (ведь только так можно успешно развивать свой бизнес). Вот в таких ситуациях и начинают возникать следующие проблемы:

    • страницы сайта загружаются медленно,
    • доступ к нему может отсутствовать полностью.

    Именно такие неполадки и будут свидетельствовать о том, что сервер находится в перегруженном состоянии и не может выполнять своих прямых функций.

    Конечно же, в этом случае возникает риск потерять даже своих постоянных клиентов. Даже наиболее терпеливые из них могут перейти на конкурирующий сайт, устав ждать доступа к вашему.

    Специалисты рекомендуют: как можно раньше обратите внимание на производительность сервера и займитесь его оптимизацией. Такой шаг позволит всем клиентам чувствовать себя комфортно на вашем сайте, что, соответственно, отразиться на развитии вашего бизнеса.производительность сайта

    Что собой представляет оптимизация сервера?

    Как видим, оптимальное функционирование любого веб-сайта напрямую связано с оптимизацией сервера. Если клиент заходит на страницу сайта, то запрос об этом посылается на сервер, где происходит его обработка и формирование ответа. Скорость такой ответной процедуры зависит от сервера, а именно от характеристик его производительности. При минимальной скорости работы, сервер нуждается в ускорении – увеличении скорости отклика.

    Многие пользователи для ускорения работы серверов идут на такой шаг, как замена оборудования с более мощными характеристиками. Но такой выход не всегда себя оправдывает и не позволяет решить возникшие проблемы.

    Наши специалисты предлагают идти другим путем:

    1. определить саму проблему (что же мешает серверу функционировать быстро?),
    2. произвести тонкую настройку apache;
    3. установить и настроить под определенную конфигурацию сервера кэширующий веб-сервер nginx;
    4. настроить сервера баз данных mysql:
    • размеры буферов,
    • кэширование запросов,
    • работу с таблицами,
    1. установить и настроить кэширующий модуль для php (XCache, EAccelerator, и др);
    2. оптимизировать необходимые настройки операционной системы.

    Данный подход поможет ускорить быстродействие сервера.

    Обращайтесь к нашим квалифицированным специалистам, которые помогут решить все возможные проблемы с медленной работой сервера и качественно произведут его оптимизацию. Вопросы office@itfb.com.ua