2013-06-28 2 views
21

Я хочу переместить все мои сайты в GitHub для всех очевидных преимуществ. Я не большой поклонник командной строки, поэтому мне нравится GitHub, потому что это позволяет мне не касаться всего этого. Настройка репозитория на GitHub, а затем синхронизация его с моим компьютером достаточно проста. Мне нужно иметь возможность автоматически переходить от GitHub к веб-серверу, поэтому, когда я обновляю что-то локально в главном ветви, синхронизируйте его с GitHub, он переходит в прямом эфире на сайт. Из Googling объекта кажется, что большинство методов требуют командной строки или кажутся довольно сложными. Я хочу сделать это примерно с 15-20 сайтами (многие из которых размещены на разных серверах от разных клиентов). Я хочу найти вариант, который входит в мой набор навыков и не занимает 2-3 часа на сайт. Кто-нибудь знает лучший и самый простой способ настроить это?Перемещение с GitHub на веб-сервер

+5

Первым шагом будет научиться использовать командную строку. Вы направляетесь к какой-то довольно развитой схеме, и без использования командной строки вы не получите очень далеко. Кроме того, будьте осторожны, вероятно, есть некоторые файлы, которые вы не ставите в github (изображения и документы могут не требовать управления исходным кодом), а также базы данных для развертывания, и это не будет сделано, как магия ... Я думаю, что вы должны look for - инструмент развертывания –

+0

Независимо от того, используете ли вы OSX, этот удобный графический интерфейс, основанный на графическом интерфейсе (я также использую это для некоторых материалов WordPress): http://eppz.eu/blog/push-git-to-ftp/ – Geri

+0

Возможно, вам понадобится использовать PAAS, например https://www.heroku.com/, который поддерживает развертывание через простой push, т.е. 'git push heroku master' –

ответ

8

Часть, которая является сложным является webhook on GitHub

Каждый репозиторий GitHub имеет возможность взаимодействовать с веб-сервером, когда хранилище выталкивается.

Это означает, что на вашем веб-сайте должен быть процесс прослушивания этих сообщений JSON, отправленных GitHub после получения фиксации.

Вы можете увидеть несколько примеров таких слушателей, как этот webhook-deployer, с auto.php (для сервера PHP):

<?php 

// Prevent accidental XSS 
header("Content-type: text/plain"); 

// Run the script 
if ($_POST['payload']) { 
    shell_exec("./pull.sh"); 
} 

Этот проект GitHub рекомендует ключ SSH с не ключевой фразы, которую я согласен сначала (для проверки).
Однако, особенно для частных проектов, лучше всего запускать ssh-agent и управлять защищенной парольной фразой ssh.
Как Яноша comments:

  • Если хранилище GitHub является открытым, то он даже не нужен.
  • Если репо является закрытым, то он нуждается в нем, но это не следует воспринимать так легко. Если возможно, он должен использовать ключевой агент.
    Если это слишком сложно, он может использовать выделенный SSH-ключ без кодовой фразы только для этого развертывания, и этот ключ никогда не должен покидать ПК развертывания.
+1

Почему вы поощряете SSH-ключи без кодовой фразы? Если репозиторий GitHub является общедоступным, то он даже не нужен. Если репо является приватным, то он нуждается в нем, но это не следует воспринимать так легко. Если возможно, он должен использовать ключевой агент. Если это слишком сложно, он может использовать выделенный SSH-ключ без кодовой фразы только для этого развертывания, и этот ключ никогда не должен покидать ПК развертывания. – janos

+0

@janos очень хорошие моменты. Я изменил ответ и включил в него свои баллы, для большей наглядности. – VonC

5

Я знаю, что этот билет старый, но для тех, кто находит это каким-то образом, проверку dploy.io. Это размещенная служба, созданная специально для развертывания вашего репо из GitHub/Bitbucket на ваш сервер. Он поддерживает команды SFTP/FTP/S3/Heroku/SSH и многое другое.

Отказ от ответственности: Я работаю на dploy.io

2

Вы можете посмотреть на этот PHP скрипт:
https://github.com/JohannesHoppe/easy-git-deploy
(Это делает мерзавец клон, мерзавец тянуть, мерзавец толчок для вас)

С нескольких лет я управляю всеми установками wordpress с этим скриптом.

Подсказка: Если вы используете общедоступную среду хостинга, то пределы сценария могут прервать первое исполнение.В этом случае вход через SSH и сделать первый клон вручную:

git clone 'https://user:[email protected]//github.com/user/repo.git' 

Здесь вы также можете вручную подтвердить отпечаток ключа SSH.

Второй совет: Вы должны защитить каталог файлом .htaccess/.htpasswd.