Latest Posts

Использование Sendgrid в Yii2

Использование Sendgrid в Yii2

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

Хотя API очень прост и удобен, мы все же воспользуемся готовым расширением wadeshuler/yii2-sendgrid

Read more

Множество процессов в bash скрипте

Множество процессов в bash скрипте

Пример скрипта ниже позволяет создавать множество процессов внутри одного bash скрипта, показывать код возврата и выводить логи вывода после завершения задачи:

#!/usr/bin/env bash

# Do smth
for job in 1 2 3; do
  echo "Starting job #${job}"
  echo "Job done" > $job.log 2>&1 &
done

echo "Waiting for job results..."

FAIL=0
for job in $(jobs -p)
do
  wait "$job" || (( FAIL++ ))
  echo "Job PID #${job}  finished with code: $?"
done

for job in 1 2 3; do
  echo -e "\\n ======== Results for job #${job} ========"
  cat $job.log
done

if [ "$FAIL" != "0" ];
then
  exit 1
fi

 

Read more

Скрипт мониторинга криптовалютных бирж

Скрипт мониторинга криптовалютных бирж

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

  • Poloniex
  • Bitfinex
  • Binance
  • Wex
  • Kucoin
  • Okex
  • Bithumb
  • Bittrex
  • Bitstamp
  • Kraken
  • Gemini
  • Huobi

Что входит в поставку?
В поставку входит обработчик-демон, который опрашивает настроенные биржи и торговые пары каждую минуту и обновляет внутреннее хранилище курсов.

Уведомление происходит при наступлении определенного сигнала: максимум — минимум цены за определенный промежуток времени. Для этого отдельный скрипт делает запрос на callback url вашего обработчика с данными по сигналу, чтобы ваш скрипт мог обработать данный сигнал.

Read more

Скрипт проверки Stellar платежей

Скрипт проверки Stellar платежей

Разработан и оттестирован скрипт для проверки и проведения платежей через систему Stellar.

Скрипт работает с официальным horizon сервером Stellar, для работы необходим действующий активированный адрес.

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

По вопросам по поставке и внедрению обращаться через раздел контакты

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Использование Docker swarm в DigitalOcean

Использование Docker swarm в DigitalOcean

Приведу простой пример использования swarm режима докера в DigitalOcean. Для раблоты нам потребуется сам docker, docker-machine, аккаунт с ключом в DigitalOcean и немного терпения.

1. Создадим новый дроплет и установим докер:

docker-machine create --driver digitalocean --digitalocean-image ubuntu-18-04-x64 --digitalocean-access-token $DOTOKEN machine-name

2. Проверим что машина была успешно создана:

Read more

SSL в docker nginx/proxy

SSL в docker nginx/proxy

Сегодня невозможно представить веб сервис без поддержки https. Если вы уже пользуетесь докером и поставили jwilder/nginx-proxy как реверс прокси то поддержка SSL у вас уже имеется. Для этого нужно всего лишь добавить пару новых переменных.

  1. Для начала поставьте себе jrcs/letsencrypt-nginx-proxy-companion:
    docker run -d \
        -v /some-path/volumes/certs:/etc/nginx/certs:rw \
        -v /var/run/docker.sock:/var/run/docker.sock:ro \
        --volumes-from entry-nginx \
        jrcs/letsencrypt-nginx-proxy-companion

    —volumes-from entry-nginx — где entry-nginx имя вашего докер контейнера jwilder/nginx-proxy

    Read more

Nginx reverse proxy для docker контейнеров

Nginx reverse proxy для docker контейнеров

Для размещения нескольких докер контейнеров на одной машине которые будут доступны на 80 порту (т.е для веба) нам необходимо воспользоваться каким-то обратным прокси, который будет в зависимости от запроса возвращать ответы с различных контейнеров.

Удобнее всего воспользоваться контейнером jwilder/nginx-proxy:

docker run -d -p 80:80 \
    -e DEFAULT_HOST=sassoft.ru \
    --name entry-nginx \
    -v /etc/nginx/vhost.d \
    -v /usr/share/nginx/html \
    -v /var/run/docker.sock:/tmp/docker.sock:ro \
    jwilder/nginx-proxy

Что делает данный контейнер?

Read more

Gitlab CI docker deployment

Gitlab CI docker deployment

После достижения лимитов на билды в Bitbucket Pipelines (напомню бесплатный аккаунт дает 50 минут в месяц) единственной нормальной альтернативой стал выглядеть Gitlab.

После просмотра документации и множества различных рецептов созрел следующий элегантный pipeline:

variables:
  CONTAINER_IMAGE: registry.gitlab.com/username/project
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2

stages:
  - build
  - deploy

build:
  stage: build
  image: docker:stable
  services:
    - docker:dind
  script:
  - ./docker/build.sh

deploy:
  image: username/yourimage
  when: manual
  stage: deploy
  only:
    - master
  script:
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan $TARGET_HOST >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - ./docker/deploy.sh

Дополнительно можно добавить шаг по запуску тестов перед сборкой контейнера.

Read more

Yii2 bitbucket-pipelines docker deployment

Yii2 bitbucket-pipelines docker deployment

После долгих экспериментов остановился на следующем yml файле для bitbucket pipelines CI:

image: sassoftinc/base # base image contains php 7.1

pipelines:
  default:
    - step:
        name: Unit tests & Build
        caches:
          - composer
          - docker
        script:
          - composer install
          - php yii migrate --interactive=0
          - mysql -h 127.0.0.1 -u user --password=some_password db < config/dev.sql #loading fixtures
          - vendor/bin/codecept run
          - ./docker/build.sh # start building docker image
        services:
          - db
          - docker
    - step:
        name: Deploy to staging
        deployment: staging
        trigger: manual
        script:
          - ./docker/deploy.sh # your deployment script, could be also done via ansible
    - step:
        name: Deploy to live
        deployment: live
        trigger: manual
        script:
          - ./docker/deploy.sh # your deployment script, could be also done via ansible

definitions:
  services:
    db:
      image: mysql:5.7.22
      environment:
        MYSQL_DATABASE: 'db'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'

CI проводит все базовые операции:

Read more

Уничтожить процесс в Postgres

Уничтожить процесс в Postgres

Эффективный метод если вы запустили какую-то долгую и неправильную транзакцию или изменение таблицы и хотите откатиться быстренько назад.
Для этого для начала получим PID процесса:

SELECT * FROM `pg_stat_activity` WHERE `state` = 'active';

В списке нужно будет найти вашу транзакцию, которую хотите отменить и записать её PID.

Теперь отменим процесс:

Read more