Filter by tag: linux
  • Windows workspace with WSL and Docker

    Introduction

    5a721f2ec51aasandwich

    As a web developer, I frequently use a lot of command line tools to make my life easier. I prefer to be able to assemble a computer from whatever hardware I want, so I don’t like Macs and stuff like this. Linux desktops are good enough our days, but I love to play video games from time to time, and it wouldn’t be effortless to keep two different operating systems for work and entertainment. My best compromise was to use Windows.
    Read more
  • Бесплатный сертификат от Letsencrypt

    5a64abb85d795letsencrypt

    Зачем это?

    У защищенного соединения есть множество преимуществ перед старым добрым http: защита от перехвата траффика, защита от подмены содержимого, лучшее ранжирование в поисковых системах и т.д. Мне вот, например, нравится зеленый значок в адресной строке. Раньше за всё это удовольствие нужно было платить, поэтому сертификаты можно было увидеть только на крупных проектах, либо платежных системах (где риск компрометации данных велик и без сертификата вас просто не поймут). Проект letsencrypt.org призван изменить это положение вещей раз и навсегда.
    Read more
  • Latest docker for Ubuntu LTS

    For Ubuntu 14.04 LTS

    Latest docker version (automatic update)

    apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" >> /etc/apt/sources.list.d/docker.list
    apt-get update
    apt-get purge lxc-docker*
    apt-get install docker-engine

    And result will be like this:

    docker -v
    Docker version 1.9.0, build 76d6bc9

    Latest docker-compose version

    curl -L https://github.com/docker/compose/releases/download/1.5.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
  • Как показать себя и свои наработки

    grok

    За что мы боремся?

    В жизни разработчика регулярно возникает необходимость показать результаты работы кому-либо еще — коллеге, заказчику, тестировщику. Всё довольно просто, если вы сидите в одной комнате или, хотя бы, здании: можно пригласить его к своему столу (скорее всего придется пообещать кофе или печеньки) и показать лично на собственном мониторе. Всё сложнее, если вы находитесь в разных районах, городах или даже странах. А иногда вам может пригодиться доступный из интернета API, развернутый локально — например, если вы разрабатываете или тестируете мобильные приложения.
    Read more
  • Zsh: больше чем bash

    Нет ничего удобнее хорошей командной оболочки и zsh, наверное, одна из лучших. На большинстве серверов и рабочих машин по-умолчанию стоит bash и многие даже не задумываются, что командная оболочка может или должна делать что-то еще, кроме запуска команд. Например, она должна помогать пользователю выбрать: какую команду запустить.

    Установка

    Установить «базовый комплект» проще простого. Например, в Ubuntu:

    apt-get install zsh
    usermod USER -s /usr/bin/zsh

    Установить дополнительные плюшки тоже не сложно:

    curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

    Результат

    Например, вот так выглядит zsh у меня:

    zsh

  • Собственный VPN за пять минут

    5a64a79fc2d2cspy

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

    «Звук бегущих ног», Рей Бредбери

    Лирическое вступление

    Наиболее устойчивые системы — децентрализованные и, к счастью, интернет из их числа. Своим появлением эта технология изменила всё. Никогда ранее не было возможно так просто обмениваться знаниями и новостями, иметь свободный доступ к практически любой точке земного шара. Это позволяет любому мнению быть услышанным — и это прекрасно и очень важно.
    Read more
  • Docker: оркестрация

    orchestration

    Что такое оркестрация?

    Оркестрация — это координация взаимодействия нескольких контейнеров. В принципе, ничто не мешает создать контейнер, в котором запущены сразу все необходимые процессы, но этот подход лишен гибкости при масштабировании, изменении архитектуры, а также создает проблемы с безопасностью, т.к. в этом случае процессы никак не изолированы и могут без ограничений влиять друг на друга. Оркестрация же позволяет строить информационные системы из небольших кирпичиков-контейнеров, каждый из которых ответственен только за одну задачу, а общение осуществляется через сетевые порты и общие директории. При необходимости контейнеры в таком «оркестре» можно заменять на другие: например, чтобы проверить работу приложения на другой версии базы данных.
    Read more
  • Docker: создание и запуск контейнера

    Docker

    Containerization is the new virtualization

    The Docker Book

    Что такое Docker?

    В отличии от классических систем виртуализации, которые эмулируют работу компьютерного железа и ядра операционной системы поверх него, Docker использует виртуализацию на уровне ядра: все виртуализируемые им процессы делят ядро операционной системы хоста, что позволяет значительно сократить как требуемые ресурсы, так и время, необходимое на запуск/обслуживание таких систем. В идеале, каждый процесс изолируется в собственном контейнере (linux container, lxc), который содержит набор необходимых ему библиотек, что позволяет забыть о dependecy hell, а также легко переносить стек проекта между серверами. В статье ниже я проиллюстрирую, как можно использовать Docker для настройки среды разработчика, повторяющей среду продакшена: предположим, что там используется Ubuntu LTS, PHP 5.4, Nginx.
    Read more
  • «No space left on device» и inodes

    Честно говоря, я тоже не знаю. Это был всего лишь термин, который мы начали использовать. Из-за немного необычной структуры файловой системы, при которой информация о доступе к файлам хранится в виде плоского (двумерного) массива на диске, отдельно от всей информации об иерархии каталогов, лучшее, что я могу предположить (для «и») - это «индекс». Таким образом, и-номер являлся индексом в этом массиве, и-нод - выбираемым элементом массива. (Приставка «и-» использовалась в первой версии руководства; со временем дефис перестали употреблять).

    Деннис Ритчи

    Я был очень удивлен, когда получил ошибку следующего содержания при попытке открытия сессии:

    PHP Warning:  Unknown: open(/tmp/sess_e34ad6u6f51gum3htmqkd7ldn6, O_RDWR) failed: No space left on device (28)
    Read more
  • Добавление файла подкачки в Ubuntu

    Иногда случаются ситуации, когда для корректного совершения всех задуманных операций у компьютера просто не хватает реальной оперативной памяти. В этом случае, можно занять её у диского пространства, поступившись скоростью обращения: прожорливую задачу мы выполним, хоть и не так быстро, как хотелось бы :) Во многих системах файл подкачки создается еще при установке системы. Однако виртуальные сервера, как правило, поставляются без виртуальной памяти вообще. 
    Read more
  • Как привести в порядок репозитарий

    Всегда приятно начинать проект с нуля, самому создавать под него репозитарий, определять принятый в нём стиль кодирования, да и многое другое. Но иногда нам достаются «трудные дети» с тяжелым прошлым, включающим мешанину табуляции и пробелов, разных способов обрыва строки, кодировок. Понятное дело, что все это приводит систему контроля версий к истерике. Но не беда. Linux to the rescue!
    Read more
  • Алиас для подключения по SSH

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

    ssh -p 22 -i ~/.ssh/git_id_rsa git@git.test.com
    ssh repository

    Все, что нам нужно, это описать параметры подключения в конфиге. Например, так.

    # ~/.ssh/config
    Host repository
      Hostname git.test.com
      Port 22
      User git
      IdentityFile ~/.ssh/git_id_rsa
  • Смена пароля пользователя MySQL

    1. Остановите сервер

    Вы должны остановить процесс сервера mysql (одним из указанных способов)

    /etc/init.d/mysql stop
    service mysql stop

    2. Запустите сервер без проверки привилегий

    В этом режиме сервер будет предоставлять полные права, даже если пароль не будет указан.

    mysqld_safe --skip-grant-tables

    3. Меняем пароль!

    Теперь ничего не мешает нам подключиться к серверу и вручную сменить пароль требуемому пользователю

    mysql -u root

    Дальнейшие команды вводятся в командном интерфейсе MySQL

    USE mysql;
    UPDATE user SET password = PASSWORD("SECRET-PASSWORD") WHERE user = "root";
    FLUSH PRIVILEGES;
    QUIT;

    4. Готово? Почти

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

    /etc/init.d/mysql stop
    /etc/init.d/mysql start
    
    service mysql stop
    service mysql start

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

  • Актуальная версия Git на Ubuntu

    Добавляем репозиторий

    add-apt-repository ppa:git-core/ppa
    apt-get update
    apt-get install git-core

    Если в системе нет add-apt-repository, необходимо перед этим поставить еще один пакет

    sudo apt-get install python-software-properties

    Ура, у нас современная версия git!

  • Путевые записки из страны пингвинов

    Удобные сокращения

    Есть такая полезная тема в никсах как сокращения команд «alias». Наверное, каждый хоть раз задумывался об этом, набивая очередной длинный путь до какой-нибудь команды. А все, на самом деле, проще некуда!
    Read more