- PVSM.RU - https://www.pvsm.ru -
Встречаются предприятия, на которых доступ к интернету сильно ограничен или не постоянен, не завидую этим ребятам. Иногда, как в моём случае, политика безопасности предприятия не позволяет хранить исходный код разрабатываемых продуктов на чужом оборудовании. Кроме того, смею предположить, что не каждой группе разработчиков хватает возможностей, предоставляемых например bitbucket [1]. Эти проблемы можно решить, к примеру, связкой RhodeCode [2] и Redmine [3].
После недолгих размышлений и на основании некоторого опыта был определен набор средств для достижения поставленных целей:
Все нижеописанное проделывалось на debian squezee в базовой установке.
На ubuntu (10.04 LTS) должно быть без изменений, так как пакетная база у них схожа.
Установим необходимые пакеты для работы easy_install и virtualenv:
aptitude install python-setuptools python-dev python-virtualenv
Используя virtualenv, создадим новую виртуальную среду:
virtualenv --no-site-packages /var/www/rhodecode-venv
В каталоге /var/www/rhodecode-venv будет создано новое виртуальное окружение.
Активируем виртуальное окружение командой:
source /var/www/rhodecode-venv/bin/activate
Создадим каталог для rhodecode, например:
mkdir /var/www/rhodecode; cd /var/www/rhodecode
Чтобы установить RhodeCode, выполним следующую команду:
easy_install rhodecode
На этом этапе скрипт easy_install установит все необходимые зависимости для RhodeCode в виртуальное окружение, в их числе последняя стабильная версия mercurial.
Создадим файл конфигурации RhodeCode:
paster make-config RhodeCode production.ini
Этот файл конфигурации содержит различные настройки для RhodeCode, например, порт прокси-сервера, электронную почту, использование статических файлов, кэша, настройки celery и логгирования. По умолчанию используется SQLite в качестве базы данных.
Создадим базу данных, выполнив следующую команду:
paster setup-app production.ini
На запрос скрипта введем путь до каталога, где RhodeCode разместит базу данных:
/var/www/rhodecode/
Далее введем имя пользователя, пароль и электронную почту учетной записи администратора приложения. Команда создания базы данных создаст все необходимые таблицы и учетную запись администратора.
Для нашей конфигурации необходимо добавить следующие строки в production.ini:
1) в секцию [app:main]:
filter-with = proxy-prefix force_https = true
2) в конец файла:
[filter:proxy-prefix] use = egg:PasteDeploy#prefix prefix = /hg
Покинем виртуальное окружение:
deactivate
Создадим скрипт запуска /etc/init.d/rhodecode-daemon:
#!/bin/sh -e
########################################
#### THIS IS A DEBIAN INIT.D SCRIPT ####
########################################
### BEGIN INIT INFO
# Provides: rhodecode
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of rhodecode
# Description: starts instance of rhodecode using start-stop-daemon
### END INIT INFO
APP_NAME="rhodecode"
APP_HOMEDIR="/var/www"
APP_PATH="$APP_HOMEDIR/$APP_NAME"
CONF_NAME="production.ini"
PID_PATH="$APP_PATH/$APP_NAME.pid"
LOG_PATH="$APP_PATH/$APP_NAME.log"
PYTHON_PATH="/var/www/rhodecode-venv"
RUN_AS="www-data"
DAEMON="$PYTHON_PATH/bin/paster"
DAEMON_OPTS="serve --daemon
--user=$RUN_AS
--group=$RUN_AS
--pid-file=$PID_PATH
--log-file=$LOG_PATH $APP_PATH/$CONF_NAME"
start() {
echo "Starting $APP_NAME"
PYTHON_EGG_CACHE="/tmp" start-stop-daemon -d $APP_PATH
--start --quiet
--pidfile $PID_PATH
--user $RUN_AS
--exec $DAEMON -- $DAEMON_OPTS
}
stop() {
echo "Stopping $APP_NAME"
start-stop-daemon -d $APP_PATH
--stop --quiet
--pidfile $PID_PATH || echo "$APP_NAME - Not running!"
if [ -f $PID_PATH ]; then
rm $PID_PATH
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
echo "Restarting $APP_NAME"
### stop ###
stop
wait
### start ###
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
Назначим необходимые права доступа:
chmod a+x /etc/init.d/rhodecode-daemon chown www-data:www-data -R /var/www/rhodecode
Для автоматического запуска скрипта выполним:
insserv rhodecode-daemon
В squeeze-backports версия redmine поновее, установим её.
Включим в /etc/apt/sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Выполним в консоли:
aptitude update aptitude -t squeeze-backports install redmine
В процессе установки отобразится диалог выбора базы данных. Я предпочел sqlite, сделайте свой выбор.
Создадим ссылку в директории /var/www:
ln -s /usr/share/redmine/public /var/www/redmine chown -R www-data:www-data /var/www/redmine
Установим apache mod passenger для запуска redmine:
aptitude install libapache2-mod-passenger
Создадим закрытый ключ и сертификат:
openssl req -new -x509 -days 355 -keyout your.domain.ru.key -out your.domain.ru.pem
Common Name следует указать в точности такой, как и доменное имя Вашего сервера.
Удалим пароль:
cp your.domain.ru.key your.domain.ru.key.orig openssl rsa -in your.domain.ru.key.orig -out your.domain.ru.key rm your.domain.ru.key.orig
Скопируем в /etc/ssl:
cp your.domain.ru.pem /etc/ssl/certs/; cp your.domain.ru.key /etc/ssl/private/
Включим необходимые модули:
a2enmod ssl a2enmod proxy a2enmod proxy_http
В файле /etc/apache2/sites-available/default-ssl заменим:
SSLCertificateFile /etc/ssl/certs/your.domain.ru.pem SSLCertificateKeyFile /etc/ssl/private/your.domain.ru.key
Впишем в основную секцию этого же файла строки:
1) для redmine:
RailsBaseURI /redmine
2) для rhodecode:
<Location /hg > ProxyPass http://127.0.0.1:5000/hg ProxyPassReverse http://127.0.0.1:5000/hg SetEnvIf X-Url-Scheme https HTTPS=1 </Location>
Заменим содержимое файла /etc/apache2/sites-available/default на:
<VirtualHost *:80>
ServerName your.domain.ru
Redirect permanent / https://your.domain.ru/
</VirtualHost>
Подключим конфигурацию default-ssl:
a2ensite default-ssl
Перезапустим apache:
/etc/init.d/apache2 restart
RhodeCode доступен по адресу:
https://your.domain.ru/hg пароль установлен на 2 шаге
Redmine доступен по адресу:
https://your.domain.ru/redmine администратор admin, пароль admin
Принудительный https везде.
Автор: VasiliyRylov
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/redmine/4407
Ссылки в тексте:
[1] bitbucket: http://bitbucket.org
[2] RhodeCode: http://www.rhodecode.org/
[3] Redmine: http://www.redmine.org/
[4] Mercurial: http://mercurial.selenic.com/
[5] Debian: http://www.debian.org/
[6] HowTo Install Redmine using Debian package.: http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_using_Debian_package
[7] RhodeCode 1.3.3 documentation. Installation.: http://packages.python.org/RhodeCode/installation.html
[8] RhodeCode 1.3.3 documentation. Setup.: http://packages.python.org/RhodeCode/setup.html#setup
[9] Простой способ настроить Apache для работы по HTTPS в Debian.: http://plashc.livejournal.com/630.html
Нажмите здесь для печати.