Показаны сообщения с ярлыком Redmine. Показать все сообщения
Показаны сообщения с ярлыком Redmine. Показать все сообщения

29 июня 2010 г.

musicmans.ru | Как сделать сайт на Django | Начало

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

Технологии.

Серверная сторона - django. Конечно будем использовать сторонние django приложения, и не будем писать тесты, тестировать будут пользователи. :) Элементарные вещи о django рассматриваться не будут, для этого есть django book.

Клиентская сторона - наверное gwt. Пока не определился, но думаю внедрим.

Инструменты и техническая сторона

Техническая сторона - покупайте домен и vds. VDS можете купить два или сделать собственный сервер, например, дома, один для сайта, другой для хранения и управления кодом.
Собственно, предыдущие посты как раз были подготовкой к работе.
Система контроля версий - Subversion.
Управление проектом и баг-трекер - Redmine.
Среда разработки Eclipse (кстати вышел Helios 3.6) с pydev, Subversive + расширения по вкусу плюс второй экземпляр Eclipse для gwt.

Ну вот вроде бы и все. Если не все, допишу позже.
Сроки. Ориентируюсь на полгода до более-менее приличного сайта (потому что есть еще основная работа, к сожалению :) ).
Все этапы разработки сразу будут выкладываться на сайт http://musicmans.ru .

Следить за постами о разработке можно по тегу musicmans.ru.

27 июня 2010 г.

Дружим redmine и eclipse: mylyn

Продолжим заниматься redmine'ом.

Mylyn («майлин») — подсистема Eclipse управления заданиями.

Mylyn динамически подстраивает интерфейс Eclipse, оставляет только те элементы в дереве ресурсов, которые соответствуют текущей задаче. Mylyn логически продолжает такие «диалоги», как «Go Into», «Open Associated Perspective?»

Ставим в эклипс поддежку redmine для mylyn:

Eclipse redmine mylyn update site: http://redmin-mylyncon.sourceforge.net/update-site/nightly/

Скачиваем плагин для сервера отсюда.

Закачиваем плагин в директорию /vendor/plugins/ .

Перезапускам lighttpd:
# /etc/init.d/lighttpd restart

Заходим по адресу https://srv/redmine/mylyn/version , должны увидеть нечто такое:


2.6.4.stable
0.9.4.stable
2.3.5


а также сюда https://srv/redmine/admin/plugins

Другие варианты установки здесь.

Настройка клиента:

Далее, открываем перспективу planning в eclipse.



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





Настраиваем примерно следующим образом и нажимаем validate settings (что приятно не возникло проблем с http auth и https):



Далее создаем запрос задач (спросит автоматом после установки соединения) из redmine которые мы хотим видеть.

Далее пробуем создать задачу в eclipse: правой кнопкой на task list->New->Task...

25 июня 2010 г.

Установка redmine на lighttpd в debian squeeze

Начинаем как здесь:

#apt-get install mysql-server rails lighttpd
#apt-get install librmagick-ruby
#apt-get install libmysql-ruby
#apt-get install subversion git-core
#apt-get install libfcgi-ruby1.8

Создаем пользователя и базу:

# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 63
Server version: 5.1.47-1 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.08 sec)

mysql> create user 'redmine'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.47 sec)

mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Query OK, 0 rows affected (0.01 sec)

Добавляем системного пользователя redmine:

#adduser --disabled-password redmine
#su redmine

Качаем релиз wget'ом redmine (я работал с версией redmine-0.9.4.tar.gz).

Распаковываем содержимое в ~/redmine (tar zxf)

Создаем файл redmine*/config/database.yml (можно скопировать из примера):

production:
adapter: mysql
database: redmine
host: localhost
username: rbuser
password: password
encoding: utf8

Генерируем секретный ключ сессий.

~/redmine$ rake generate_session_store
(in /home/redmine/redmine)

Заполняем базу данных.

~/redmine$ RAILS_ENV=production rake db:migrate
(in /home/redmine/redmine)
rake aborted!
Could not find RubyGem rack (~> 1.0.1)

Я получил такую ошибку.

#gem install rack -v 1.0.1
Successfully installed rack-1.0.1
1 gem installed
Installing ri documentation for rack-1.0.1...
Installing RDoc documentation for rack-1.0.1...

Запускаем повторно из под пользователя redmine:

#su redmine
redmine@srv:/root$ cd ~/redmine/
redmine@srv:~/redmine$ RAILS_ENV=production rake db:migrate
(in /home/redmine/redmine)

Должно все успешно заполниться.

Настройка lighttpd.

Создаем файл /etc/lighttpd/conf-available/20-redmine.conf :

/etc/lighttpd/conf-available# cat 20-redmine.conf
server.modules += ( "mod_fastcgi" )

$HTTP["url"] =~ "^/redmine/" {
alias.url = ("/redmine" => "/home/redmine/redmine/public")
server.document-root = "/home/redmine/redmine/public/"
server.error-handler-404 = "/redmine/dispatch.fcgi"
index-file.names = ("dispatch.fcgi")
fastcgi.server += (
".fcgi" => (
"localhost" => (
"min-procs" => 1,
"max-procs" => 2,
"check-local" => "disable",
"socket" => "/home/redmine/redmine/tmp/sockets/redmine_fcgi.socket" + var.PID,
"bin-path" => "/home/redmine/redmine/public/dispatch.fcgi",
"bin-environment" => (
"RAILS_ENV" => "production",
"RAILS_RELATIVE_URL_ROOT" => "/redmine",
"RAILS_ROOT" => "/home/redmine/redmine"
)
)
)
)
}

Включаем конфигурацию:

#lighttpd-enable-mod redmine

Создаем файл:

srv:/home/redmine/redmine/public# cp dispatch.fcgi.example dispatch.fcgi
srv:/home/redmine/redmine/public# chmod +x dispatch.fcgi

Даем права пользователю www-data (запускает lighttpd)

srv:/home/redmine#chown -R www-data:www-data redmine

Даем права на директории

srv:/home/redmine#chmod 755 logs tmp files

Перезапускаем конфигурации lighttpd:

#/etc/init.d/lighttpd force-reload

Заходим: http://srv/redmine/

По умолчанию, логин admin, пароль admin.

Если что-то пошло не так, смотрим логи:

#tail -F /var/log/lighttpd/access.log /var/log/lighttpd/error.log /home/redmine/redmine/log/production.log

3 июня 2009 г.

Установка Redmine на FreeBSD 7.2, используя apache, mod_rails и postgres sql

Разобравшись с git сервером и GUI клиентами в прошлой статье, я обещал рассмотреть установку GitPlugin для Trac (пользуюсь давно, все устраивало, когда был SVN). Но сейчас меня смутили несколько вещей:
1. Trac не поддерживает git из коробки (реализован в виде плагина, что не есть уже хорошо).
2. Trac хорош для одного крупного проекта (для запуска дополнительного надо много телодвижений), а мы хотим построить СКВ для многих проектов.
3. В trac нет русификации, а она желательна (возможен доступ пользователей программ для создания задач или сообщений о багах).
4. В trac нет удобной системы распределения прав (есть конечно дополнительные пакеты, но если все это сложить, получается уж очень громоздко).

Поэтому я решил поискать систему, которая бы меня устраивала.
И я ее нашел, redmine. Он написан на Ruby, поддерживает кучу баз данных, есть русский язык, лишен всех недостатков перечисленных выше, самое главное, поддерживает git "из коробки"!

Краткий обзор возможностей отсюда:

* Поддержка нескольких проектов в одной базе данных;
* Гибкая система настройки пользовательских прав доступа;
* Гибкая система тикетов и заданий;
* Поддержка календаря и графиков Гантта
* Поддержка файлового архива, документация и новостных лент по проекту
* Сквозное логирование событий в системе и поддержка отсылки на еmail
* Встроенная система Wiki по проекту
* Встроенная система форумов по проекту
* Простая система учета времени
* Возможность добавлять произвольные пользовательские поля к проектам, заданиям и пользователям
* Интеграция с системами контроля версий (SVN, CVS, Mercurial, Bazaar and Darcs)
* Поддержка LDAP авторизации
* Поддержка регистрации пользователей
* Мультиязычность (Русский и Украинский присутствуют)
* Поддержка различных баз данных


Дополню, что git тоже поддерживается.

Начнем.

Системе 3 года, но уже информации по ней много, все хвалят, соответственно в поиске можно найти много мануалов по установке прямо под вашу систему.
Но мы пройдем этот путь заново :)
Считаем, что apache2 и postgres 8.3 уже установлен.

Следуем официальному руководству по установке:

1. Проверяем и устанавливаем необходимые пакеты:

#ruby --version
ruby 1.8.7 (2007-03-13 patchlevel 0) [i386-freebsd7]
#cd /usr/ports/www/rubygem-rails
#make clean install

Этот пакет содержит все компоненты, которые необходимы для запуска Ruby On Rails (собственно, на котором и написан redmine).
Таблицу с необходимыми версиями смотрим здесь.

У меня с портами REALEASE-7.2 встала версия 2.3.2

#cd /usr/ports/converters/ruby-iconv
#make clean install

2. Скачиваем стабильную ветку:

#wget http://rubyforge.org/frs/download.php/56909/redmine-0.8.4.tar.gz
#tar -zxvf redmine-0.8.4.tar.gz

3. Конфигурируем базу данных.
Добавляем пользователя redmine в базу данных postgres:

#su pgsql
$createuser redmine -–no-superuser -–no-createdb -–no-createrole -–login –-pwprompt -–encrypted
$createdb --owner=redmine --encoding=utf-8 redmine
$exit

Редактируем pg_hba.conf при необходимости.

Копируем ~/redmine-0.8.4/config/database.yml.example в ~/redmine-0.8.4/config/database.yml и редактируем:

production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: password
encoding: utf8

Заполняем базу данных схемой Redmine, выполнив команду в директории redmine-0.8.4:

#rake db:migrate RAILS_ENV="production"

Загружаем первоначальную конфигурацию Redmine:

#rake redmine:load_default_data RAILS_ENV="production"

4. Устанавливаем права.
Пользователь www должен иметь право писать в директории files, log, tmp.

#cd redmine-0.8.4
#chown -R www:www files log tmp public/plugin_assets
#chmod -R 755 files log tmp public/plugin_assets

5. Пробный запуск.

#sudo -u www ruby script/server webrick -e production

Переходим по адресу http://SERVER:3000/, все должно работать.
Можно залогиниться от admin, пароль admin.

Примеры настройки smtp сервера здесь.

6. Связываем apache и Redmine.
Есть официальное how to.

Мне оно не понравилось, использует CGI, в общем все кисло :)
Гораздо более интересно решение "Настройка Redmine на работу через apache and mongrel_cluster по HTTPS", изначально подсмотренное здесь.
Предлагается использовать mongrel в качестве бэкенда к серверу apache.
Mongrel является HTTP-сервером и библиотекой на Ruby, которая предназначена для хостинга разнообразных веб-приложений написанных на языке программирования Ruby, используя HTTP протокол, а не FastCGI или SCGI.
Вот это уже гораздо интересней. Тем более https.

Но я решил пойти немного другим путем, установкой Phusion Passenger (aka mod_rails).

# cd /usr/ports/www/rubygem-passenger
# make clean install

Настраиваем апач:

Доступные настройки mod_rails:
* RailsEnv - задает среду выполнения приложения. Значение по умолчанию: production.
* RailsBaseURI - задает директорию, в которую размещается приложение. По этому адресу должна находиться директория public приложения.
* RailsRuby - задает интерпретатор, который будет использован для выполнения приложения. Имеет смысл, если у Вас установлено несколько интерпретаторов Руби.
* RailsMaxPoolSize - максимальное количество запущенных экземпляров приложения. Оптимально значение зависит от конфигурации системы. Значение по умолчанию: 20.
* RailsPoolIdleTime - максимальное время бездействия экземпляра приложения в секундах. По истечении этого времени экземпляр приложения будет остановлен для экономии памяти. Разработчики рекомендуют в качестве оптимального значения 2*x, где x - время, которое пользователь тратит на просмотр страницы. Значение по умолчанию: 120.

Настроен апач примерно так.
Создаем сертификаты.

А потом настраиваем секьюрный хост:

SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLMutex file:/usr/local/etc/apache22/logs/ssl_mutex
SSLSessionCache shm:/usr/local/etc/apache22/logs/ssl_cache_shm
SSLSessionCacheTimeout 600


AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl


SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

NameVirtualHost *:80

LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassengerRuby /usr/local/bin/ruby18

PassengerDefaultUser www
PassengerMaxPoolSize 1
PassengerUseGlobalQueue on
PassengerMaxInstancesPerApp 1


ServerName SERVER

ErrorLog etc/apache22/logs/httpd-redmine.log

RewriteEngine On
Options +FollowSymlinks
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]



RailsEnv production
ServerName SERVER

SSLEngine on
SSLVerifyClient none
SSLCertificateFile etc/apache22/keys/new.crt
SSLCertificateKeyFile etc/apache22/keys/new.key
SSLCACertificateFile etc/apache22/keys/cacert.pem
SSLProtocol all -SSLv2
DocumentRoot /tank/redmine/redmine-0.8.4/public
ErrorLog etc/apache22/logs/httpsd-redmine.log


Options FollowSymLinks
AllowOverride None
SSLOptions +StdEnvVars
Order allow,deny
Allow from all



Проверяем конфигурацию apache:

#/usr/local/etc/rc.d/apache22 configtest

Стартуем и может быть получаем ошибку

Error message:
No such file or directory - /nonexistent
Exception class:
Errno::ENOENT

если у нашего пользователя www нет домашней директории. Решается это так:

Покопавшись немного обнаружил, что проблема вызвана конфликтом Passenger и gem и исправляется внесением изменений в файл rubygems.rb в метод self.set_paths.
Необходимо заменить код

# only create by matching user
next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid

на:

# only create by matching user
home_folder_uid = File::Stat.new(Gem.user_home).uid rescue nil
next if Etc.getpwuid.uid != home_folder_uid

Файл находится здесь /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb .

Перезапускаем апач, http://SERVER (должен выполниться редирект на https://SERVER).

Настройка самого redmine через веб-интерфейс интуитивно понятна, удачи!



PS. Кстати, напоследок линк: Git User's Manual