Различия



Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

wiki:server_git [2013/04/06 13:45]
c61 создано
wiki:server_git [2013/12/10 21:43] (текущий)
c61
Строка 1: Строка 1:
-//**...о том, как сделать из Keenetic Giga git-сервер (dropbear+gitosis+gitlist+(lighttpd+php)) и как настроить клиент под Windows...**//+====== Сервер git ====== 
 + 
 +//или рассказ о том, как сделать из Keenetic Giga git-сервер (dropbear+gitosis+gitlist+(lighttpd+php))как настроить клиент под Windows, и прочее, прочее...//
  
 ---- ----
Строка 21: Строка 23:
 **__Работаем по SSH с сервером__** **__Работаем по SSH с сервером__**
  
-1) Если не поставили web-сервер на lighttpd и php - ставим (ищем инструкции на этом интернет-ресурсе). Затем ставим git, python, для php нужен php5-mod-ctype+1) Если не поставили web-сервер на lighttpd и php - ставим (ищем инструкции на этом интернет-ресурсе). Затем ставим git, python, для php нужен php5-mod-ctype и php5-mod-simplexml
 <code bash>opkg install git <code bash>opkg install git
 opkg install python opkg install python
-opkg install php5-mod-ctype</code>+opkg install php5-mod-ctype 
 +opkg install php5-mod-simplexml</code>
  
 Зачем нам еще и web-сервер с php ? Для того, чтобы добавить web-интерфейс к git, облегчив доступ к репозиторию на чтение. Зачем нам еще и web-сервер с php ? Для того, чтобы добавить web-интерфейс к git, облегчив доступ к репозиторию на чтение.
Строка 104: Строка 107:
  
 6) С сервером надо соединиться первый раз - чтобы PLink его "запомнил" (такая вот "фича"). 6) С сервером надо соединиться первый раз - чтобы PLink его "запомнил" (такая вот "фича").
-<code bash>plink -P port root</code>+<code>plink -P port root@myserver.ru</code>
 Соглашаемся сохранить ключ в кэше (если спросит), вводим пароль root и после того, как видим приглашение ash, выполняем "exit". Соглашаемся сохранить ключ в кэше (если спросит), вводим пароль root и после того, как видим приглашение ash, выполняем "exit".
 +
 +То же самое надо проделывать на других компьютерах, которые ещё ничего не знают о Вашем сервере, например, для gituser1:
 +<code>plink -P port gituser1@myserver.ru</code>
 +Также соглашаемся сохранить ключ в кэше (если спросит), на запрос пароля прерываем выполнение по Ctrl/C. Эта операция наверняка понадобится, если Вы передали кому-то ключ (например, gituser1.ppk).
  
 ---- ----
Строка 118: Строка 125:
 2) Вносим исправления в /media/DISK_A1/system/root/repositories/gitosis-admin.git/hooks/post-update 2) Вносим исправления в /media/DISK_A1/system/root/repositories/gitosis-admin.git/hooks/post-update
 Из-за ограничений на environment в dropbear добавляем пути в PATH после команды "set -e": Из-за ограничений на environment в dropbear добавляем пути в PATH после команды "set -e":
-<code bash>PATH=$PATH:/media/DISK_A1/system/bin:/media/DISK_A1/system/usr/bin:/media/DISK_A1/system/usr/libexec/git-core</code>+<code bash>PATH=$PATH:/media/DISK_A1/system/bin:/media/DISK_A1/system/usr/bin:/media/DISK_A1/system/usr/lib/git-core</code>
 Также надо задать правильные права (из-за особенностей python; для NTFS не обязательно) Также надо задать правильные права (из-за особенностей python; для NTFS не обязательно)
 <code bash>chmod 755 /media/DISK_A1/system/root/repositories/gitosis-admin.git/hooks/post-update</code> <code bash>chmod 755 /media/DISK_A1/system/root/repositories/gitosis-admin.git/hooks/post-update</code>
Строка 134: Строка 141:
     "^/gitlist(/[^\?]*)(\?.*)?" => "/gitlist/index.php$1$2"     "^/gitlist(/[^\?]*)(\?.*)?" => "/gitlist/index.php$1$2"
 )</code> )</code>
 +
 +Также укажем в php.ini свою таймзону
 +<code>[Date]
 +date.timezone = Europe/Kiev</code>
 +
 +Узнать как пишется Ваша таймзона можно здесь http://php.net/manual/en/timezones.php
  
 5) Создадим хранилища c именами "project1", "project2". Перейдем в /root/repositories. Создадим каталог project1.git, перейдем в него и выполним команду создания пустого репозитория 5) Создадим хранилища c именами "project1", "project2". Перейдем в /root/repositories. Создадим каталог project1.git, перейдем в него и выполним команду создания пустого репозитория
Строка 160: Строка 173:
  
 MOUNT="/media/DISK_A1/system" MOUNT="/media/DISK_A1/system"
-PATH=$PATH:$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:$MOUNT/usr/libexec/git-core+PATH=$PATH:$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:$MOUNT/usr/lib/git-core
  
 gitosis-serve $1 $2 $3 $4 $5</code> gitosis-serve $1 $2 $3 $4 $5</code>
Строка 199: Строка 212:
 <code bash>rm $MOUNT/etc/dropbear <code bash>rm $MOUNT/etc/dropbear
 rm -r /tmp/dropbear</code> rm -r /tmp/dropbear</code>
 +
 +а также увеличим размер буфера Dropbear добавим ключ -W 819200
 +
 +<code bash>$DROPBEAR -d $DSS -r $RSA -W 819200</code>
 +
 после чего сохраним файл и **перезапустим роутер**. Ждем, пока произойдет загрузка. после чего сохраним файл и **перезапустим роутер**. Ждем, пока произойдет загрузка.
  
Строка 363: Строка 381:
  
 Если все работает - см. ниже: Если все работает - см. ниже:
 +
 +----
 +
 +**__Известные проблемы и их решение__**
 +
 +1) Попытка создания проектов с большими файлами или с большим количеством файлов вызывает сетевую ошибку
 +<code>FATAL ERROR: Network error: Software caused connection abort
 +fatal: The remote hang up unexpectedly
 +fatal: recursion detected in die handler</code>
 +При этом в журнале есть записи такого вида
 +<code>6 апр 13:01:44 dropbear[24035] Exit (root): Received data after eof</code>
 +
 +Причина в малом буфере Dropbear. Увеличим размер буфера добавим ключ -W 819200 в скрипте запуска S10dropbear
 +
 +<code bash>$DROPBEAR -d $DSS -r $RSA -W 819200</code>
 +
 +2) Если Вы используете gitosis, не устанавливайте python-openssl из-за проявления Segmentation Fault в .../lib/python2.7/lib-dynload/_ssl.so.
  
 ---- ----
Строка 368: Строка 403:
 **__Выводы__** **__Выводы__**
  
-1) На кинетике создан полноценный многопользовательский git-сервер с возможностью удаленного администрирования (gitosis), а также web-интерфейсом для чтения проектов (gitlist).+1) На кинетике создан (почти) полноценный многопользовательский git-сервер с возможностью удаленного администрирования (gitosis), а также web-интерфейсом для чтения проектов (gitlist).
  
 2) Под логином root возможность работы с git-сервером отключена, но git (и gitosis) на сервере работают из-под root. 2) Под логином root возможность работы с git-сервером отключена, но git (и gitosis) на сервере работают из-под root.