Настройка репозитория git в моем хостинговом плане GoDaddy
У меня есть проект, который управляется версиями с помощью git.
То, что я хочу сделать, - настроить репо на моем (ssh-enabled) GoDaddy общем пакете хостинга, чтобы я мог развертывать с помощью push, а не перетаскивания на FTP.
Любые советы будут оценены. Лучше всего была бы учетная запись от кого-то, кто уже сделал это, но я не смог лично найти онлайн.
Ответы
Ответ 1
С небольшой работой я смог запустить Git в моей учетной записи GoDaddy. Там длиннее сообщение, подробно описывающее процесс мой блог, но короткий ответ:
- установите Git в свою учетную запись (возможно, используя архив, упомянутый в моем сообщении в блоге).
- создать репозиторий Git (голый или нет) в вашей учетной записи
-
проверьте свой репозиторий, используя -u, чтобы указать путь к git-upload-pack
% Git clone -u libexec/ git -core/git -upload-pack mysite: myrepo.git
-
настройте конфигурацию локального репозитория, указав правильные пути на git-upload-pack
и
git-receive-pack
:
% Git config remote.origin.receivepack libexec/git -core/git -receive-pack
% Git config remote.origin.uploadpack libexec/git -core/git -upload-pack
Поскольку блог больше не доступен, вот полный пост, вытащенный из archive.org:
Использование Git в GoDaddy
Этот блог размещен на дешевой учетной записи GoDaddy. Когда доступ к оболочке через SSH был недавно доступен, я подумал, что было бы забавно установить локальные репозитории Git. Это не было тривиально, но я, наконец, начал работать. Вот как я это сделал:
Шаг 0. Настройте SSH
Вы хотите создать открытый ключ, чтобы без проблем использовать SSH для своей учетной записи GoDaddy. Создайте пару ключей, если у вас ее еще нет, и добавьте ее в ~/.ssh/authorized_keys
. Я предполагаю запись в ~/.ssh/config
примерно так:
Host mysite
HostName mygodaddysite.com
User mylogin
Шаг 1. Установите Git
После того, как я зашел на мой хост GoDaddy, я обнаружил, что он запускает CentOS 5.2. Бинартеры, работающие на моем ноутбуке, не совместимы, поэтому я использовал VirtualBox для установки локальной установки Centos 5.2 и сборки Git. Я делил tarball, содержащий предварительно созданные CentOS 5.2 Git двоичные файлы. Вы должны иметь возможность загружать и устанавливать с помощью команд:
wget http://johntrammell.com/centos5.2-git.tar.gz
tar xzf centos5.2-git.tar.gz
Наслаждайтесь этой частью - Ive спас вам пару часов работы здесь.
Шаг 2. Настройте среду.
Добавьте в свой .bash_profile следующее:
export EDITOR=vim
export PATH=$PATH:$HOME/bin:$HOME/libexec/git-core
export LD_LIBRARY_PATH=$HOME/lib
export GIT_EXEC_PATH=~/libexec/git-core
export GIT_TEMPLATE_DIR=~/share/git-core/templates
Это правильно настроит вашу среду на интерактивной оболочке. К сожалению, я не могу заставить PATH правильно установить неинтерактивные команды SSH. Например, когда я запускаю эту команду с моего ноутбука:
ssh mysite env
Я вижу PATH по умолчанию. Это также имеет место, когда я устанавливаю путь в .bashrc. Я не обнаружил, что именно SSH делает для неинтерактивного доступа, но это может быть связано с параметром PermitUserEnvironment в sshd. К счастью, мы можем обойти это.
Шаг 3. Создание репозитория
Войдите в свою учетную запись GoDaddy и создайте простой "голый" репозиторий Git:
% mkdir myrepo
% cd myrepo
% touch README
% git init
% git add README
% git commit -m 'empty git repository'
% cd ..
% git clone --bare myrepo myrepo.git
Теперь у вас есть голый репозиторий в ~/myrepo.git/
в корне вашей учетной записи GoDaddy.
Шаг 4. Проверка вашего репозитория
Единственная сложная часть этого - рассказать Git, где найти git -upload-pack. Это работает вокруг проблемы PATH, упомянутой выше. На вашей локальной машине сделайте следующее:
git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git
Теперь вы должны получить копию исходного минимального репозитория.
Шаг 5. Дополнительные настройки Git конфигурации
К сожалению, мы не делаем:
% cd myrepo
% echo "foo" > README
% git commit -am 'updated'
[master 044c086] updated
1 files changed, 1 insertions(+), 0 deletions(-)
% git push
bash: git-receive-pack: command not found
fatal: The remote end hung up unexpectedly
Наши проблемы PATH теперь мешают операции push. В качестве обходного пути мы можем либо указать -receive-pack в командной строке, либо установить его в локальной конфигурации (то же самое относится к операциям выборки и -upload-pack):
% git config remote.origin.receivepack libexec/git-core/git-receive-pack
% git config remote.origin.uploadpack libexec/git-core/git-upload-pack
Поздравляем, вы должны работать и сейчас!
Ресурсы
Ответ 2
Во-первых, вам нужно будет установить git на GoDaddy. Я не уверен, что это возможно. git поддерживает локальные пользовательские установки, но для этого вам нужны определенные средства разработки. Загрузите git и посмотрите, можете ли вы ./configure && make && make install
- если это так, он поместит его в ваш каталог ~/bin
.
Мы широко используем git для управления производством. Но вместо того, чтобы развертывать при нажатии, могу ли я предложить вам ssh в поле и сделать git pull
?
В частности, создайте ветвь "Release", а затем, когда вы будете готовы к развертыванию, просто объедините свои изменения в ветки Release, ssh на сервер и git pull.
Например
ssh [email protected]
cd /path/to/project
#ok, assuming you are on the Release branch
git fetch
git merge branch-with-new-changes-on-it
# update the remote Release branch with the merge
git push origin HEAD
Этот простой рабочий процесс позволяет разработчикам постоянно видеть точно, что на рабочем сервере, и объединить другие изменения с их запросами, прежде чем запрашивать развертывание. Фактически, мы требуем, чтобы все производственные изменения были полностью объединены, прежде чем запрашивать развертывание вашего ветки.
-
Если вам удастся установить git на GoDaddy, и вы действительно хотите автоматически развернуть его, когда вы нажимаете на него, посмотрите на post-update
hook.
http://git-scm.com/docs/githooks
-
Если вы не можете установить git на GoDaddy, посмотрите, поддерживают ли они rsync. Тогда вы можете иметь простой bash script, где будет
- потяните ваши изменения.
- rsync их для godaddy
-
Есть много способов сделать это. Возможно, это немного поможет в руководстве...
Ответ 3
Я успешно прошел следующие указания:
http://www.krizka.net/2010/12/30/setting-up-a-public-git-repository-with-godaddy-shared-hosting/
Ключи (для меня) были
- Получение предварительно скомпилированного бинарного файла для CentOS (из ссылки выше)
- Настройка "uploadpack" и "receivepack". Это шаг 1 в разделе "Предоставление локальному значению git о удаленном git" ближе к концу сообщения.
Ответ 4
I maitain git локально и использовать scp для push live... это не изящно, но godaddy имеет scp, установленный по умолчанию.
"scp -r fooDirectory [email protected]:/path/to/document/root/"
который переместит локальный каталог "fooDirectory" в "/path/to/document/root/fooDirectory" на удаленном хосте.
когда вы вошли в систему go daddy, используйте "pwd
Ответ 5
Подключить через ssh.
Установите git в ~/ git.
После этого создайте/обновите эти файлы:
~/.ssh/authorized_keys
command="~/connect.sh" ssh-rsa AAAAB3NzaC...
~/connect.sh
#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
source ~/.env_profile
fi;
if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
$SHELL --login
else
eval "${SSH_ORIGINAL_COMMAND}"
fi;
~/.env_profile
export ENV_VARIABLE=value
git:
export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
Я потратил около недели на это, но теперь он работает как шарм... Я не думаю, что есть еще одно решение от аккаунтов godaddy, возможности слишком ограничены ими...
Ответ 6
Я нашел еще одно полезное руководство по установке git в GoDaddy на http://www.612softwarefoundry.com/getting-git-on-godaddy/
Ответ 7
Существует учебник YouTube, в котором объясняется, как настроить Git в учетной записи Godaddy Shared Hosting. Ссылка здесь:
http://youtu.be/z60GLfsGGsY
Существует также веб-страница с командами, которые вам нужно выполнить на видео. Вот адрес страницы:
http://www.drupalfever.com/linux-how-to/git/set-up-git-in-a-godaddy-shared-hosting-account
Если у вас есть какие-либо вопросы, оставьте мне примечание или предложение.
Ответ 8
Инструкции в этом блоге работали для меня, за исключением того, что мне пришлось посетить EPEL и найти самую новую версию git RPM: http://hire.chrisjlee.net/node/139
Получить двоичные файлы
cd ~
mkdir git
cd git
# Download the rpm from EPEL ( http://fedoraproject.org/wiki/EPEL )
# Find the latest version by checking http://dl.fedoraproject.org/pub/epel/5/i386/
wget http://dl.fedoraproject.org/pub/epel/5/i386/git-1.8.2.1-1.el5.i386.rpm
# Extract binaries from the rpm
rpm2cpio git-1.7.4.1-1.el5.i386.rpm | cpio -imdv
rm git-1.7.4.1-1.el5.i386.rpm
Настройка
echo "
export GIT_BIN=${HOME}/git
export PATH=${GIT_BIN}/usr/bin:${PATH}
export GIT_EXEC_PATH=${GIT_BIN}/usr/bin
export GIT_TEMPLATE_DIR=${GIT_BIN}/usr/share/git-core/templates
export GIT_SSL_NO_VERIFY=true" >> ~/.bashrc
Настроить git
mkdir ~/.git
git config --local --add remote.origin.uploadpack ~/git/usr/bin/git-upload-pack
git config --local --add remote.origin.receivepack ~/git/usr/bin/git-receive-pack
Ответ 9
Мне пришлось настроить git на VPS, размещенную на http://netgonian.com (реселлер GoDaddy). То, что заняло 3 часа, могло быть сделано примерно за 15 минут и было очень просто.
Установка git должна быть такой же простой, как запуск yum install git
, но, к сожалению, попытка, которая давала мне всевозможные ошибки, не могла найти ошибки файла. Ниже было окончательное решение.
Вот шаги:
- ssh на ваш виртуальный сервер
- перейдите к пользователю root с помощью команды
su -
- следуйте инструкциям здесь, чтобы создать новый файл centos-base.repo
- в том же каталоге, где вы только что создали указанный файл (/etc/yum.repos.d), переименуйте файл CentoOS-Base.repo в CentOS-Base.repox
- теперь вы можете запустить
yum install git
, и он будет работать.
Основная проблема заключалась в том, что все базовые URL-адреса для yum указывали на какой-то сервер на secureserver.net, в котором отсутствовали все необходимые файлы. То, что мы делаем выше, указывает на базовые URL-адреса для серверов, которые имеют необходимые файлы.