Настройка сервера git
Я недавно установил Ubuntu-сервер на Amazon EC2. Я хотел бы использовать его в качестве моего сервера Git, чтобы я мог хранить свои репозитории там.
Итак, где я могу найти некоторые подробные инструкции по настройке git на сервере Ubuntu? Все эти ключи SSH и тому подобное, несколько пользователей и т. Д.
8 ответов
Вы можете использовать это руководство для установки сервера Git, как предлагал aking1012, или вы можете просто установить SSH-сервер на свой экземпляр EC2 (возможно, было бы разумно защитить его и изменить порт по умолчанию).
Git может быть без сервера, вы инициируете свой репозиторий, а затем получаете доступ к нему с удаленного компьютера через SSH. Так что такие инструкции на сервере Ubuntu должны делать это:
GIT_DIR=project.git git init
cd project.git
git --bare update-server-info
cp hooks/post-update.sample hooks/post-update
Наконец, установите SSH на свой сервер:
sudo apt-get install ssh-server
Теперь вы должны настроить SSH для его защиты.
Пришло время разместить ваш проект в сети (данные, которые у вас уже есть на компьютере разработчика):
git push ssh://<username>@<remote-git-hostname>/path/to/project.git master
И теперь вы можете начать клонирование вокруг. Вы идете на своей машине разработки:
git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git
Проверьте этот отличный ресурс на Git.
А для генерации ключей ssh для более безопасной аутентификации вы можете прочитать эту статью об аутентификации SSH.
Для всех моих настроек Git-сервера я использую Gitolite, который обеспечивает гранулярность безопасности доступа "на ветвь". Настройка довольно проста, если вы делаете это на удаленном сервере, это так же просто, как запуск интерактивного скрипта. В дополнение к этому "простому в настройке" характеру у него также есть пакет в Natty и Maverick
sudo apt-get install gitolite
Это не обеспечит веб-интерфейс, такой как Github или Gitweb, но вы можете легко настроить и установить их поверх чего-то вроде Gitolite.
Мне нравится гитолит. В книге Pro Git есть раздел, но я рекомендую прочитать всю книгу.
Что касается вашего требования нескольких пользователей:
Gitolite позволяет вам определять права доступа не только по репозиторию (как это делает Gitosis), но также по именам веток или тегов в каждом репозитории. То есть вы можете указать, что определенные люди (или группы людей) могут выдвигать только определенные "ссылки" (ветви или теги), но не другие.
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way можно немного изменить в соответствии с вашими целями... аналогичное учебное пособие http://blog.agdunn.net/?p=277.
Обязательно следуйте официальной документации: https://help.ubuntu.com/community/Git (раздел Настройка Git и управление проектами)
Лучшим решением для меня была настройка WebDAV.
sudo a2enmod sudo dav_fs
sudo a2enmod dav
добавить новый файл в
/etc/apache2/sites-available
и назовите его, например,git.yourserver.com
, Отредактируйте его и добавьте следующие строки:
<VirtualHost *:80>
DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews
<Location />
DAV On
AuthType Basic
AuthName "git repos"
AuthUserFile /var/www/git.yourserver.net/password.dav
Require valid-user
</Location>
</VirtualHost>
- создать каталог
/var/www/git.yourserver.com
и каталогrepos
внутренний идентификатор sudo chown www-data /var/www/git.yourserver.com/repos
sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login
и введите пароль для имени пользователяuser_login
sudo chown root:www-data /var/www/git.yourserver.com/password.dav
sudo chmod 640 /var/www/git.yourserver.com/password.dav
Сейчас, sudo a2ensite git.yourserver.com
а также sudo service apache2 restart
,
- Войти
/var/www/git.yourserver.com/repos
и создать каталог, например,myrepo.git
cd myrepo.git
git --bare init
git update-server-info
Теперь выйдите из системы с вашего удаленного сервера и перейдите в локальный каталог, в котором вы хотите редактировать свои файлы.
git clone http://user_login:[email protected]/myrepo.git
и ты закончил. Если вы хотите отправить свои зафиксированные изменения на сервер:
git push origin master
Вы можете создать столько пользователей, сколько захотите, используя sudo htpasswd
, Просто помните, чтобы не использовать -c
переключаться при добавлении новых пользователей, поскольку старый файл будет удален.
Это очень легко достичь с помощью гитолита. Менее чем через час вы получите легко настраиваемый и безопасный многопользовательский git-сервер.
У меня есть статья с практическими рекомендациями на моем сайте
Мне также нравится подход gitolite для управления пользователями и безопасностью. У меня есть сервер AMI Git + gitolite для EC2, который в настоящее время тестируется. Не стесняйтесь попробовать; Документация доступна здесь:
Используя этот подход, вы можете создать центральный сервер Git с частными репозиториями, работающими за считанные минуты. Существует кривая обучения для Gitolite и EC2, если вы не знакомы с ними.