Как доработать производительный RLS
Неоднократно в последнее время поступали задачи, когда требовалось доработать новый производительный RLS. В своей статье Ретунский Александр, программист компании АО «Корпоративные ИТ-проекты» (официальный партнер ИнфоСофт) опишет последовательность действий при доработке нового RLS, ключевые моменты и сложности, с которыми столкнулся. В Интернете статей или инструкций, которые подробно и просто описывают – как доработать производительный RLS, не так много и автор делиться своим опытом.
В данной статье не будут описаны различия и плюсы/минусы между стандартным и производительным RLS, в Интернете по этому вопросу есть много информации.
Vagrant — это удобно и просто.
Vagrant — это инструмент, который помогает работать с виртуальной машиной. Установив Vagrant — вы можете получить операционку на виртуальной машине с Ubuntu, Apache/Nginx, MySql, php и т.д. Также, Vagrant синхронизирует папки на вашей ОС с папками на виртуальной машине (т.е. вы работаете со своим проектом в своем любимом каталоге на своей любимой ОС). Вообще, Vagrant дает море преимуществ, а именно:
- Можно легко перенести свою виртуалку с домашнего компа на рабочий и не парится с настройками софта
- Можно поучиться, если не сталкивались раньше, методам распределенной нагрузки создав несколько виртуалок и пробовать работать с такими технологиями как RabbitMQ, шардинг и т.д.
- Тестировать производительность установив нужные параметры виртуалки
- Установить ПО как на сервере заказчика
- Делать разные настройки для PHP
- Не устанавливать на вашу ОС PHP, MySql и прочий софт
Vagrant имеет много сборок конфигураций системы (их называют боксами), а также, можно самому собрать нужную конфигурацию на сайте
Plugins
Plugins can be installed with Vagrant’s built-in plugin manager. You can specify multiple plugins to install:
$ vagrant plugin install vagrant-vbguest vagrant-share
vagrant-libvirt
This plugin adds a libvirt provider to Vagrant. libvirt and related packages (e.g. QEMU) must be installed and configured before using the provider.
To install the plugin, make sure is installed and has been started.
Then run
$ vagrant plugin install vagrant-libvirt
Once the plugin is installed the provider will be available:
$ vagrant up --provider=libvirt
vagrant-lxc
First install from the official repositories, then:
$ vagrant plugin install vagrant-lxc
This article or section needs expansion.
VAGRANTFILE_API_VERSION = "2" Vagrant.configure("2") do |config| config.vm.define "main" do |config| config.vm.box = 'http://bit.ly/vagrant-lxc-wheezy64-2013-10-23' config.vm.provider :lxc do |lxc| lxc.customize 'cgroup.memory.limit_in_bytes', '512M' end config.vm.provision :shell do |shell| shell.path = 'provision.sh' end end end
The file should be a shell script beside the . Do whatever setup is appropriate; for example, to remove puppet, which is packaged in the above box:
rm /etc/apt/sources.list.d/puppetlabs.list apt-get purge -y puppet facter hiera puppet-common puppetlabs-release ruby-rgen
Начало работы с Vagrant
Создать проект Vagrant так же просто, как настроить корневой каталог проекта и определить файл Vagrant.
Выполните следующие команды для создания каталога и перейдите в него с помощью:
mkdir ~/my-vagrant-projectcd ~/my-vagrant-project
Затем инициализируйте новый Vagrantfile с помощью команды vagrant init, а затем укажите поле, которое вы хотите использовать.
Коробки представляют собой формат пакета для сред Vagrant и зависят от поставщика. Вы можете найти список общедоступных ящиков Vagrant на странице каталога ящиков Vagrant.
В этом примере мы будем использовать centos/8:
vagrant init centos/8
A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
Vagrantfile – это файл Ruby, который описывает, как настроить и подготовить виртуальную машину. Вы можете открыть Vagrantfile, прочитать комментарии и внести изменения в соответствии с вашими потребностями.
Запустите команду vagrant up для создания и настройки виртуальной машины, как указано в Vagrantfile:
vagrant up
==> default: Configuring and enabling network interfaces... default: SSH address: 192.168.121.74:22 default: SSH username: vagrant default: SSH auth method: private key ==> default: Rsyncing folder: /home/linuxize/Vagrant/my-vagrant-project/ => /vagrant
Vagrant монтирует каталог проекта на виртуальной машине /vagrant. Это позволяет вам работать с файлами вашего проекта на хост-компьютере.
Чтобы войти в виртуальную машину, запустите:
vagrant ssh
Вы можете остановить виртуальную машину с помощью следующей команды:
vagrant halt
Чтобы уничтожить все ресурсы, созданные при создании машины, введите:
vagrant destroy
Contribute
To contribute, fork then clone the repository, and then the following:
Developing
- Ideally, install the version of Vagrant as defined in the
- Currently the Bundler version is locked to 1.14.6, please install this version.
- Then install vagrant-hostmanager dependancies:
Testing
- Build and package your newly developed code:
- Then install the packaged plugin:
- Once you’re done testing, roll-back to the latest released version:
- Once you’re satisfied developing and testing your new code, please submit a pull request for review.
Releasing
To release a new version of vagrant-hostmanager you will need to do the following:
(only contributors of the GitHub repo and owners of the project at RubyGems will have rights to do this)
- First, bump, commit, and push the version in ~/lib/vagrant-hostmanager/version.rb:
- Then, create a matching GitHub Release (this will also create a tag):
- Preface the version number with a .
- https://github.com/devopsgroup-io/vagrant-hostmanager/releases
- You will then need to build and push the new gem to RubyGems:
- Then, when John Doe runs the following, they will receive the updated vagrant-hostmanager plugin:
Остановка виртуальных боксов (Teardown)
Чтобы завершить запущенное виртуальное окружение в Vagrant существует три разных способа сделать это:
- Suspend — уход в спящий режим с сохранением текущего состояния системы,
- Halting — обычное завершение работы (как на любом компьютере),
- Destroing — завершение работы с очисткой места на диске, которое занимало запущенное виртуальное окружение.
Все эти типы остановки виртуальных боксов рассмотрены далее.
Suspend — уход в спящий режим с сохранением текущего состояния системы
Завершение работы с уходом в спящий режим выполняется командой . При этом происходит сохранение текущего состояния виртуального окружения и затем завершение его работы. Для возобновления работы достаточно выполнить команду .
Основное преимущество данного режима завершения работы — это то, что возобновление работы происходит очень быстро, быстрее чем при всех остальных режимах завершения работы, т.к. сохраняется предыдущее состояние виртуальной машины. Однако этот режим требует дополнительного места на жестком диске — приблизительно в 1 Гб для сохранения состояния системы.
Halting — обычное завершение работы
Это завершение работы выполняется командой . При этом выполняется обычное завершение работы (как в обычной Linux системе при выполнении команды ). Чтобы возобновить работу виртуального окружения после такого выключения надо выполнить команду .
При таком завершении работы не требуется дополнительное место на диске, т.к. состояние системы не сохраняется. Возобновление работы при этом длится немного дольше чем в предыдущем случае, т.к. виртуальное окружение загружается как при загрузке обычного компьютера.
Destroing — завершение работы с очисткой всех файлов бокса
Наконец, последний — третий способ выключения виртуального окружения. Выполняется командой . При этом происходит завершение работы с полной очисткой места на диске, которое занимало виртуальное окружение. Чтобы возобновить работу необходимо также как и в предыдущем случае выполнить команду .
Основное преимущество этого способа в том, что вы экономите до 1 Гб места на жестком диске. Но при этом возобновление работы будет самым долгим процессом, т.к. Vagrant’у придётся заново ставить весь необходимы софт из рецептов.
Обычно не рекомендуется пользоваться данным способом завершения работы, если только вы не стремитесь любой ценой сэконмить место на жестком диске, что при текущих размерах современных жестких дисков крайне редкая необходимость.
Автоматическое обеспечение
Теперь файл Vagrant можно сконфигурировать на использование бокса для быстрого запуска гостевой машины Ubuntu. Что же делать дальше?
Предположим, нужно установить Apache на гостевую машину Ubuntu, созданную в предыдущем руководстве. К ней можно подключиться по SSH и выполнить команды вручную. Тем не менее, это означает, что всякий раз, когда возникнет необходимость использовать данную гостевую машину после ее уничтожения, все эти операции нужно выполнить снова.
Одно из удобнейших свойств Vagrant – обеспечение автоматизации. Это означает, что указанный скрипт оболочки будет запускаться всякий раз при использовании команды vagrantup. Для примера можно указать, что гостевая машина должна всегда разворачиваться с уже установленным Apache. Чтобы это сделать, нужно внести все соответствующие команды в файл в root-папке проекта (следующий после Vagrantfile):
Внесите следующий скрипт в данный файл:
Данный скрипт устанавливает Apache и связывает папки varwww и vagrant (последняя папка синхронизируется с root-папкой проекта на главной машине). Таким образом, можно редактировать файлы сервера Apache с главной машины, не беспокоясь о синхронизации.
Затем нужно отредактировать Vagrantfile и указать, что при развёртывании гостевой машины следует использовать следующий скрипт:
Внесите следующую строку в данный файл под указанным боксом по умолчанию:
Это говорит Vagrant использовать обеспечение оболочки и запустить скрипт, расположенный в этом файле (путь к которому соответствует пути к root-папке проекта на главной машине).
Сохраните изменения и запустите команду «vagrantup», чтобы развернуть новую гостевую машину, на которой уже установлен Apache. Если гостевая машина уже запущена, ее можно перезагрузить с помощью следующей команды:
Это перезагрузит машину и запустит обеспечение. Теперь при каждом запуске vagrantup or vagrantreload будет запускаться гостевая машина с уже установленным Apache.
Система и инструменты
OS X Yosemite 10.10.1 с установленными VirtualBox 4.3.18 и Vagrant 1.6.5. А также воспользуемся online-конструктором Vagrantfile — PuPHPet.
Что касается PuPHPet, то это отличный инструмент для экономии времени, к тому же это позволяет сделать все быстро и не заниматься работой DevOps.
На чем остановим свое внимание:
- Деплой (настройки памяти, проброс портов, IP-адрес, синхронизация директорий);
- Серверные пакеты (будем использовать для указания списка дополнительных утилит);
- PHP (модули, библиотеки, настройки конфигурации);
- База данных (MySQL);
- Веб-сервер (Nginx).
Есть и другие конструкторы Vagrantfile, список постараюсь привести в конце поста.
Ниже быстро пробегусь по основным блокам PuPHPet.
Сперва предлагается выбор, где будет развернута виртуалка (Locally, Rockspace, Linode, Softlayer, AWS). Сейчас интересен вариант использования на локальной машине.
В принципе, указывать необходимые пакеты и конфигурации можно в любом порядке.
В качестве провайдера будет VirtualBox, ОС — Ubuntu Precise 12.04 LTS x64. А также укажем IP-адрес гостевой машины и количество выделяемой памяти.
Пробросим порты и засинхронизируем директории. Синхронизация директорий вообще полезная штука, т.к. нет необходимости в разворачивании окружения для каждого проекта. В моем случае я все проекты на ряду с всё тем же localhost кладу в /var/www или можно /home/<%username&>/www. Прописываем в конфигураторе пути к директориям на хост и гостевой машинах.
Во вкладке «Server Packages» укажем пару полезных утилит. Естественно, в дальнейшем можно будет поправить конфигурационный файл, добавив нужные пакеты, которые будут установлены при очередном vagrant up.
Далее вкладки «Webservers» и «Languages». В качестве веб-сервера выберем Nginx. Apache ставить не будем, т.к. он врядли понадобится. Здесь же можно указать настройки Virtual Hosts.
В языковых настройках выберем посвежее версию PHP, пропишем требуемые настройки ini-файла и поставим требуемые модули. Раз уж мы не устанавливаем Apache, а устанавливаем Nginx, следовательно, нужно не забыть поставить PHP-модуль fpm. Также поставим xdebug, для которого есть отдельный блок настроек и до кучи можно поставить xhprof.
При создании виртуальных хостов, настройки для fast cgi будут прописаны автоматически, поэтому заботиться об этом не нужно будет.
Далее базы данных. Тут все просто. Поставим MySQL, а также можно поставить Redis.
Во вкладке «Additional Tools» можно указать установку того же RabbitMQ, или Mailcatcher и так далее. Все они могут быть поставлены вручную при желании, либо при помощи добавления соответствующих настроек в config.yaml.
На этом всё. Переходим во вкладку «Create» и жмем на кнопку генерации config-пакета. После чего будет предложено скачать архив. Извлекаем файлы из скаченного архива и помещаем в удобную вам директорию.
Из этой папки в консоли запускаем vagrant up. После чего будет произведено скачивание Box-а (образа ОС), если он не скачивался вами ранее и затем будет создана виртуальная машина. При первом запуске будут установлены все выбранные пакеты и произведена их настройка согласно указанным параметрам в config-файле.
Для того, чтобы получить доступ к гостевой системе в консоли вводим vagrant ssh. После чего можно посмотреть список запущенных служб — в консоли sudo netstat -tlnp.
Т.к. мы указали параметры для синхронизации директорий, можно создать для localhost файл index.php и проверить, что все работает.
На этом все. В следующем посте постараюсь описать как можно работать с vagrant в любимом PhpStorm.
Конфигурация Vagrant
На самом деле есть боксы с уже настроенным окружением, но у автоматической конфигурации есть важное преимущество: конфигурацию можно передать, например, через системы контроля версий, и ваш коллега, да или вы сами в будущем, сможете быстро развернуть нужное окружение. Конфигурация виртуальной ОС определяется файлом , для генерации которого тоже есть несколько инструментов
Я использовал PuPHPet — очень классный и понятный конфигуратор
Конфигурация виртуальной ОС определяется файлом , для генерации которого тоже есть несколько инструментов. Я использовал PuPHPet — очень классный и понятный конфигуратор.
В качестве ОС я использовал Ubuntu 14.04 LTS, а в качестве web-стека — классический LAMP. PuPHPet позволяет настроить множество параметров: веб сервер, сервер БД, версия PHP и т.д. Приятный бонус для работы с Drupal — это возможность установки Drush.
В конце вы получите возможность скачать архив с файлом конфигурации и всеми необходимыми скриптами. Его нужно распаковать в папку, в которой вы собираетесь вдальнейшем вести разработку. Vagrant сделает ее доступной внутри виртуальной ос.
В моем случае понадобилось одно движение надфилем, связанное со спецификой Parallels, в , в секцию:
надо добавить флаг:
чтобы выполнить обновление Parallels Tools.
Начало
Vagrant это менеджер ваших виртуальных окружений для разработки. Фактически он является надстройкой над программой от Oracle, и обеспечивает быстрое создание и настройку виртуальных машин. Созданные таким образом виртуальные машины — боксы (boxes) используются разработчиками web-приложений для построения необходимой среды разработки. Затем они могут быть упакованы в специальные контейнеры (боксы), для установки и использования другими разработчиками в команде.
Где взять VirtualBox
Vagrant полностью зависит от программы и использует ее для создания виртуальных образов. Основным назначением VirtualBox является полная виртуализация x86 оборудования. Это проект с открытым исходным кодом, который обеспечивает виртуализацию на профессиональном уровне и может быть использована как на серверах так и на десктопных компьютерах для построения виртуальных сред. VirtualBox доступен для Windows, Mac OS X, Linux и Solaris.
Вот ссылка на .
На текущий момент Vagrant поддерживает VirtualBox 4.0.x, 4.1.x и 4.2.x.
Установка Vagrant
Чтобы установить Vagrant, необходимо скачать соответствующий пакет или установщик с и установить его, используя стандартную процедуру установки приложения на вашей системе. В операционных системах Windows и Mac OS X после установки приложения будет доступна команда из командной строки. На остальных системах вам необходимо будет самим добавить этот путь в переменную окружения .
Если вы не нашли для вашей системы установщик Vagrant, то вы можете установить его используя с помощью команды . Но помните, что установка из пакетов или через установщик является наиболее предпочтительным способом установки приложения.
Ваше первое виртуальное окружение Vagrant
В командной строке наберите:
$ vagrant box add precise32-box http://files.vagrantup.com/precise32.box $ vagrant init precise32-box $ vagrant up
Эти команды необходимы для запуска виртуальной машины с помощью Vagrant. Учтите, что команды выше запускают полнофункциональную виртуальную машину на операционной системе с объемом памяти по умолчанию в 512Мб.
Подключение папок и доступ по SSH
Этой автоматизацией развертывания VM, достоинства Vagrant не ограничиваются! Во первых, после создания VM командой vagrant up, Вы можете автоматически подключиться к ней по ssh со своей основной машины командой vagrant ssh *machive name* — не нужно ни адресов, ни логинов, ни паролей! Более того, запуск командной оболочки под правами root так же происходит без какого либо подтверждения паролем ( на самом деле тут нет никакой магии, Vagrant просто подготавливает авторизацию по ключам ssh).
Еще одним приятным нюансом ( как для разработчика, так и для администратора), является тот факт, что при запуске VM, папка проекта автоматически монтируется в директорию /vargrant/ (в корне фс гостевой ос). Таким образом, если Вы хотите проверить свой код или скрипты, нет необходимости править их на своей машине, потом переносить в вм и там запускать — просто поместите их в папку проекта и они сразу окажутся в пространстве файловой системы гостевой ос. При этом Вы сможете легко и удобно продолжать работу с ними из своей основной ОС. Подробней про опцию с подключением каталогов ( например подключить другой каталог или сразу несколько), можно так же прочесть в документации Vagrant.
На сегодня на этом все, жду Ваших вопросов!