Создаём свой git репозитарий с веб интерфейсом

Опубликовано: 01.09.2018

видео Создаём свой git репозитарий с веб интерфейсом

Git - Свой редактор для комментариев #7

Довольно давно, я, да и наверное многие люди хранят свои конфиги на github . Оно и понятно, ибо это крайне удобно. Для хранения конфигов он подходит на ура, да и для проектов тоже, но вот бесплатный аккаунт, имеет некоторые ограничения, которые меня весьма сильно смущали. Главным из них, была невозможность бесплатно создать приватный репо. Конечно, сумма там незначительная, но платить мне ой как не хотелось, да и зачем, когда есть парочка личных серверов под рукой? Поэтому, сев писать с другом небольшой проект, решили «поднять» репо, на одном из «личных» серверов.



Я уже ни раз упоминал, и думаю будет не лишним сделать это ещё раз, что на серверах я использую Debian. Нам понадобятся: git, perl (нужен для веб интерфейса) и всё это будет под управлением lighttpd.

sudo aptitude install git-core perl perl-base perl-modules lighttpd

Далее создадим собственно репо. Создадим пользователя, и инициализируем репо:


Git: командная строка

sudo adduser git su git cd ~ mkdir .ssh/

Теперь необходимо добавить публичные ключи в файл /home/git/.ssh/authorized_keys. Предположим, что публичный ключ уже находится в директории /tmp. Просто добавим содержимое ключа, в файл authorized_keys:

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

Теперь необходимо создать директорию для проектов, и инициализировать там репозиторий:


ПРОСОФТ: Приложение IoT на NodeMCU и Cayenne

mkdir -p /opt/git/project.git cd /opt/git/project.git git --bare init

В папке /opt/git/, находятся все проекты. Чтобы создать новый проект, нужно создать в этой директории ещё одну директорию, и инициализировать репозиторий командой git --bare init.

Кстати, всё манипуляции что были выше, необходимо производить от пользователя git. Разве что заведомо создать директорию /opt/git с правами записи для пользователя git, и группы www-data (веб сервер).

Фактически, репозиторий уже работает. Проверим это:

mkdir project cd project git init touch README git add README git commit -m 'First commit' git remote add origin [email protected]:/opt/git/project.git git push origin master

Можно проверить просто сделав git clone [email protected]:/opt/git/project.git.

Теперь осталось настроить gitweb, и lighttpd для работы с ним.

cd /tmp git clone git://git.kernel.org/pub/scm/git/git.git cd git/ make GITWEB_PROJECTROOT = "/opt/git" prefix = /usr gitweb/gitweb.cgi sudo cp -Rf gitweb /var/www/www.yourcite.com/html sudo chown -Rc git:www-data /var/www/www.yourcite.com/html

Этими действиями, мы скачаем последнюю версию gitweb (с той версией что в репозитарии, у меня как-то не сложилось), соберём, и скопируем полученное в папку с сайтом. У меня это git.the-bosha.ru (можете не пытаться открыть, он за натом :) ).

Осталось добавить gitweb.cgi в index.file_names в /etc/lighttpd/lighttpd.conf:

## files to check for if .../ is requested index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html", "gitweb.cgi" )

Я сделал именно так, потому что не хотел чтобы случайно, непонятно как попавшие скрипты на сервер выполнялись. Теперь перезапустим сервер:

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

Вот в общем всё. Удачного коммита ;)

rss