Archive for category Інше
Redmine+SVN інтеграція
Спочатку треба ввести правильні папаметри в самому Редмайні (хост, логін, пароль). Щоб все працювало, необхідно, щоб Редмайн мала доступ до встановленого в системі SVN (навіть якщо репозиторій на іншому сайті).
Якщо не працює, то в файлі /var/www/rails/redmine/lib/redmine/scm/adapters/subversion_adapter.rb необхідно прописати правильний шлях до SVN. Тобто замінити
SVN_BIN = "svn" на щось на зразок SVN_BIN = "/path_to_svn/svn –config-dir /etc/subversion"
(Звичайно ж в папці /etc/subversion мають бути скопійовані конфіги)
mkdir /etc/subversion cp -r /root/.subversion/* /etc/subversion/
Після зміни рубі-файлу потрібно не забути перезавантажити Апач
service httpd restart
Якщо все-одно не працює, то слід дивитись логи помилок Апача або SVN-сервера (залежно, що стоїть)
До речі, не так давно весь Рунет захоплено обговорював новину про “взлом” 3 тисяч сайтів двома умільцями завдяки “експлойту” в SVN. Хотілося б поділитись власними враженнями з цього приводу.
В принципі, розгортання через svn update досить зручне – а для безпеки потрібно всього лише заборонити Апачу віддавати папки з розширенням .svn (про що і сказано в статті). І ніякого есплойту не буде.
Інший спосіб “деплоінгу”- робити svn export, але це дуже незручно у випадку частих апдейтів сайту – адже доведеться копіювати ВЕСЬ сайт щоразу.
Зрештою, можна робити svn update на проміжний(бета), недоступний широкій публіці сервер, а вже звідти робити синхронізацію за допомогою rsync.
Встановлення Bugzilla під Denwer
Щоб заявляти, що Redmine зручніший за Bugzilla, треба хоча б спробувати Bugzilla…
(В якості вихідної інструкції я взяв матеріал з цього блогу(рос.))
Bugzilla написана на Perl – а це означає, що нам потрібна підтримка цієї мови на нашому веб-сервері. В пакеті Denwer Perl вже є, але практично без додаткових модулів, їх треба “доустановити”. Спочатку качається Багзілла, встановлюється як звичайний сайт для Денвера
*denwer*\home\site_name\www\
після чого в її каталозі запускається команда
perl checksetup.pl –check-modules
(шлях до Перл зручно прописати в системі, щоб кожного разу не писати щось на зразок E:\Denwer\usr\local\perl\bin\perl.exe)
Скрипт виведе нам список модулів, які необхідно доустановити в Перл.
Далі запускаємо менеджер пакетів Перл
*denver*\usr\local\perl\bin\ppm
В налаштуваннях (Ctrl+P) вказуємо шлях куди будуть встановлены модулі і додаємо репозиторій (http://ppm.tcool.org/archives/package.xml )
Після того як всі модулі знайдені та встановлені, можна перейти до налаштувань БД.
В Денвері відключено по замовчуванню механізм використання таблиць InnoDB. Потрібно включити. В файлі my.cnf знаходимо рядок
skip-innodb
і закоментовуємо його:
#skip-innodb
Перезапускаємо Денвер. (БЕЗ підтримки innoDB Багзілла не працюватиме; MySQL підтримує 2 типи таблиць з транзакціями:Berkeley DB і InnoDB. По замовчуванню використовує MyISAM)
Далі в каталозі Багзілла необхідно створити файл .htaccess і додати рядки
Options +Indexes +ExecCGI DirectoryIndex index.cgi
Цим самим ми дозволяємо серверу виконувати скрипти з www каталога (по замовчуванню це заборонено) і вказуємо файл по замовчуванню.
Виконуємо команду
perl checksetup.pl
В каталозі буде створено файл localconfig. Його потрібно відкрити і задати вірні параметри для змінних $db_host, $db_name, $db_user, $db_pass
Знову
perl checksetup.pl
Цього разу буде задано кілька питань (про і-мейл і т.д.) Після відповіді на ці питання встановлення вважається завершеним – можна заходити, логінитись і користуватись.
P.S. Вважаю за необхдне додати, що в такому випадку Perl працює через CGI. Для кращої швидкості роботи можна встановити mod_perl – спеціальний модуль під Apache
А як ви запускаєте Ruby-додатки?
Ruby… Знайомо звучить, чи не так? “Модно!”- кричать одні. “Гальмує!”- кричать другі. А треті не заморочуються і продовжують використовувати PHP. Як нескладно здогадатись, я відношусь саме до третьої категорії і з Ruby практично не знайомий. Проте використання системи баг-трекінгу Redmine все-таки змусило мене дещо прояснити для себе в цій області. Основне питання було не “як щось написати під Рубі”, а “як це щось запустити?”.
Запустити не просто так, а запустити під Windows – на даний момент я використовую саме цю операційну систему. Отже, певні факти…
На сьогоднійшній день найбільш ефективним способом використання Ruby на сервері є Phusion Passenger (також відомий як mod_rack і mod_rails) Це модуль для веб-серверів Apache та Nginx. Його принцип дії схожий на принцип дії mod_wsgi для python та mod_php для PHP. Тобто ресурси сервера виділяються динамічно. Версії під Віндовс НЕ ІСНУЄ. І автори відмовляються її створювати, оскільки рішення вийде занадто повільним. Тому цей спосіб лише для Unix-систем. (раніше пробували розробляти mod_ruby, але так і не довели до стабільності і закинули, найбільш глючний)
До цього використовували зв’язку Apache/Nginx плюс ОДНОПОТОЧНИЙ сервер Mongrel. Через однопоточність доводилось запускати кілька копій Mongrel. Що було дуже неефективно з точки зору використання ресурсів. Ось цитата:
Балансировщик + Mongrel-ы
Рельса — не может работать в несколько потоков (а MRI не умеет системные потоки, т.е. не более 100% CPU), поэтому для масштабирования запускается N-ое количество монгрелов на каждой машине. Запросы к ним приходят от балансировщика.Проверенные балансировщики: nginx, apache, lighttpd. Рекомендуется nginx как наиболее стабильный, легкий и удобный в настройке.Количество монгрелов не должно быть слишком большим, чтобы зазря не сжирать память и не тратить время процессора на планировщик задач, но и не должно быть слишком малым чтобы обеспечить необходимую пропускную способность. Как правило, количество бекендов (backend, в данном случае — монгрел) наращивают по мере необходимости и до тех пор, пока производительность не перестанет расти. Когда это случится, нужно думать об оптимизации приложения и/или устанавливать дополнительный физический сервер.
Третій спосіб полягав у інтерпретації Ruby через cgi. Тобто до Apache підключались спеціальні модулі як-то FastCGI. Теж неефективно. Цей спосіб частенько зустрічається на shared-хостингах.
В поставці Ruby є власний сервер WEBrick, але його використання є недоцільним. Він тільки для “відладочних” цілей.
Підсумки. Під Windows певний час я використовував спеціальну збірку Redmine скачану з сайту Bitnami. Це такий собі флакон з веб-сервером Апач, Mongrel, Ruby i Redmine. Глючило просто неймовірно. В кінці-кінців я відмовився від таких експериментів і встановив Redmine на лінукс-платформі з використанням Phusion Passenger…
До речі, більш детально про цю установку можна почитати в попередньому пості.
Встановлення Redmine під Linux
Вирішили використовувати систему баг-трекінгу? Багзілла не вражає, Trac на Пітоні, на Mантіс глянути страшно, а тут ще й всі Redmine розхвалюють… Ставимо! Під Лінукс!
(вважається, що Апач та MySQL вже встановлені)
(для збереження нервів всі команди подані нижче краще виконувати через sudo)
sudo apt-get install ruby irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libdbm-ruby libdbi-ruby libxml-ruby libxml2-dev
Скачати GEM з RubyForge (http://rubyforge.org/frs/?group_id=126) розпакувати і виконати команду
sudo ruby setup.rb
sudo gem install rails
sudo gem install rake
sudo gem install passenger
sudo passenger-install-apache2-module
Скопіювати вміст скачаного архіва з Redmine в /var/www/redmine
Налаштувати конфіг для БД(перед паролем в налаштуваннях має бути пробіл!)
В параметрах БД вказати
socket: /var/run/mysqld/mysqld.sock
rake db:migrate RAILS_ENV=”production”
rake redmine:load_default_data RAILS_ENV=”production”
Не забути видалити .htaccess з папки Public
Відредагувати конфіг Апача(/etc/apache2/apache2.conf), додавши рядки(вони копіюються з інсталятора Песенджера. Віртуал Хост прописується самостійно)
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5
PassengerRuby /usr/bin/ruby1.8
<VirtualHost 127.0.0.2:80>
ServerName redmine.com
DocumentRoot /var/www/redmine/public
</VirtualHost>
sudo /etc/init.d/apache2 restart
P.S. Мене важко віднести до фанатів Лінукс, але якщо вже ставити Редмайн, то тільки на юнікс-систему.Чому? Вся справа в тому, що Redmine написана на Ruby on Rails, а для цієї технології не існує по справжньому ефективного та надійного рішення під Windows. Трохи більше на цю тему я, можливо, розповім в одному із наступних постів.