воскресенье, 1 марта 2015 г.

Установка и настройка сервера Git на Windows Server (20xx)

Тут я, вкратце, опишу один из возможных вариантов установки сервера Git под Windows Server. Хотя эти рекомендации так же можно применить и для установки сервера Git на обычную рабочую станцию под Windows  от XP и выше.

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

Вообще эти ребята взяли этот проект, довели его чуток до ума, то есть просто автоматизировали весь процесс установки и плюс дописали свои плюшки и стали его продавать. Но для использования этого сервера Git максимум двумя людьми он бесплатен. Ну все это вы можете почитать на сайте от куда скачаете дистриб.

И так скачали. Понеслась установка.

G0001

G0002

G0003

Рекомендую поставить Git в комплекте который идет с инсталлятором, тем более если у вас нет установленного на сервере. Если есть, и если прописаны правильно пути к нему, то заработает и без установки из дистриба.

G0004

G0004

Ну и все устанавливается. У меня на сервере уже стоит Apache, поэтому его надо было потушить, так как этот Git сервер по умолчанию запускается на портах 80 и 443, но это можно поменять.

И так тушим Apache.

G0005

И запускаем GitStack сразу по окончании установки. Просто оставляем галку включённой.

G0006

Запустится ваш браузер по умолчанию и выведет вас сразу на страничку сервера

G0007

Логинимся с учеткой по умочанию

G0008

Сразу же меняем пароль администратора

G0009

G0010

GitStack по умолчанию запускается под системной учетной записью, что не есть гуд для веб сервиса. Поэтом меняем это дело, на локальную учетку.

G0012

G0011

И перезапускаем сервис. Идем опять в админку сервера и меняем порты на которых он будет висеть.

G0013

Так как у меня сервер находится за файрволом, то я оставил оба и HTTP и HTTPS, развесил их на порты на которых у меня не слушает Apache. Вы можете поставить какие вашей душеньке угодно.

После смены портов естественно в адресной строке надо будет указывать уже порт, чтобы дальше рулить админкой. Рестартуем GitStack

G0016

G0017

Ну и я стартовал свой Apache. У вас этого может и не быть. То есть по ходу у меня запущено два веб сервера.

G0018

Заходим по новому порту и донастраиваем чтобы слушал еще и по HTTPS.

G0014

Проверяем работу HTTPS

G0015

Все теперь можно высовывать морду сервера наружу в большой мир. Но осторожно ….

И чтобы большой мир увидел эту морду надо открыть порт на локальном файрволе сервера, так как по умолчанию GitStack открывает порт 80

G0019

Все, теперь уже можно заходить на сервак удаленно через доменное имя, ну или его внешний IP.

Далее создаем пользователя

GS000102

GS00090

Создаем репозиторий

GS000101

И даем пользователю права на репозиторий

GS00091

GS00092

И еще немного настроек безопасности. Если зайти на сервер без указания папки GitStack то увидим такое

GS000107

Это не есть гуд. Правим указанный файлик настроек

GS000108

Рестартуем вебсервис GitStack и видим уже такую картину.

GS000109

Теперь клонируем репозиторий с нашего сервера на локальную машину

GS000103

Настраиваем локально Git и делаем первый локальный коммит

GS000104

И далее заливаем его на сервер. Но делаем это по особенному, так как у нас на сервере само подписанный сертификат.

GS000105

Все залилось

У сервера достаточно приятная и понятная морда для отслеживания коммитов через веб интерфейс

GS000112

Ну и на последок надо заметить что на момент написания статьи в комплекте с GitStack шла не самая последняя версия Git

GS000110

Я установил последнюю версию Git, переписал пути в переменной PATH и все заработало на новой версии

GS000111

Ну и на последок можно сказать что можно вписать в конфиг проекта строку

$ git config --local http.sslVerify false

Чтобы каждый раз не писать в командах отмену проверки валидности сертификата.

P.S. Существует еще несколько вариантов сервера Git под Windows. Но мне этот как то больше приглянулся.

17 комментариев:

  1. Почему-то нет доступа из вне, хотя порт открыт, его видно из сети.. Почему так может быть?

    ОтветитьУдалить
  2. Тут может быть воз и маленькая тележка причин, начиная от настройки Apache и кончая настройками файрвола на сервере или же на границе сети. Ну и еще с маршрутизацией тоже могут быть проблемы. Я же не знаю как у вас настроена сеть и т.д. и т.п.

    ОтветитьУдалить
    Ответы
    1. в апаче была причина, у гитстека есть получается свой апач, вернее его конфиг.. я там vhost настроил и заработало. Но не пойму, все же, это каким образом работает с моим апачем?

      Удалить
    2. Он работает не с вашим апачем :) у него свой в кармашке :). По существу у вас запущено два инстанса апача. Посмотрите в процессах и сами все увидите и поймете, а так же в сервисах.

      Удалить
    3. Я все сделал, сделал пуш на сервер, в интерфейсе гитстека все отображается, а где файлы эти там лежат? в папке с репозиторием их нет. В общем как сделать так, что б после пуша эти изменения отображались в рабочем проекте? (извиняюсь ели вопрос не по теме)

      Удалить
    4. Запустите шел на папке репозитория на сервере и увидите что все ваши файлы на месте лежат. Просто из шела посмотрите историю коммитов

      Удалить
    5. Как это сделать? этот шел вшит в гитстек?

      Удалить
    6. Ну так же как вы пользуетесь шелом на локальном компе у себя. Да можно просто в виндовой консоли дать команды git.

      Удалить
    7. И да, GitBash уже есть в гитстеке, так как он содержит полный дистриб гита под винду.

      Удалить
  3. Если же вы имели в виду что хотите физически увидеть файлы на диске в каталогах гитстека, то вы их там естествпенно не увидите. Так как у серверной версии нет рабочего каталога, поскольку он там просто не нужен.

    ОтветитьУдалить
    Ответы
    1. А вы можете изложить, что нужно сделать чтоб при пушах на сервер - файлы обновлялись в проекте, на сайте, чтобы эти изменения были видны?
      Ну например, есть сайт, вот подправил я js какой-нибудь, сделал пуш, и мне надо так чтоб тут же эти изменения были видны...

      Удалить
  4. Извините я не понял вопрос. Вы можете запушить файлы в удаленное хранилище и они там сразу же должны появляться, в хранилище в смысле. Разве у вас они там не появляются?

    ОтветитьУдалить
    Ответы
    1. В смысле, я хочу чтоб при пуше изменения применяли сразу на сайте. Ну типа если через FTP мы редактируем файл и сохраняем его - то тут же видим изменения, вот я хочу чтоб было так же только через гитстек, при пуше, эти изменения на сайте применялись.

      Удалить
    2. Извините, но мне кажется, что вы не совсем понимаете что такое Git, как и для чего его использовать и базовые принципы его работы.

      Сервер Git, наподобие того что вы установили или GitHub или Bitbucket - это просто репозитории (хранилища) кода со всей историей его изменений. Ко всему прочему позволяющие вести совместную разработку проектов командой разработчиков.

      Релиз (сборка) же продукта, делается из рабочего каталога, на машине разработчика, но ни как не на сервере Git.

      Удалить
    3. Да, вы правы, я плохо знаком с Git. Вот хочу получить нужную мне информацию для определенных целей

      Удалить
  5. Тогда почитайте мой блог от начала до конца. Кроме того в сети и частности на youtube можно найти множество курсов по Git на русском языке.

    То что вы хотите сделать у вас не получится, просто в силу архитектуры Git, которая предназначена совсем не для этого. Git - это система контроля версий. Что такое система контроля версий об этом тоже много чего есть в сети.

    Если кратно то эта система позволяет вам хранить историю изменений кода и быстро откатываться к той или иной сохраненной точке, и кроме всего прочего хранить централизованно эти изменения на сервере Git, чтобы можно было вести совместную разработку. То есть сервер Git предназначен для совместной разработки.

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

    Теперь я понял зачем вы искали файлы на сервере Git. Вы их там ни когда не найдете, по крайней мере в том виде, в каком вы хотите их увидеть.

    ОтветитьУдалить