Linux: Загрузка файлов на живой сервер - Как автоматизировать процесс? - PullRequest
1 голос
/ 15 июля 2011

Я работаю на своей локальной машине (apache2, php, mysql).Когда я хочу загрузить файлы на мой работающий сервер (nginx, mysql, php5-fpm), я сначала делаю резервную копию своей папки www, извлекаю базы данных, копирую все на свой сервер (что утомительно, потому что он защищен с помощью opiekey), регистрируюсь самскопируйте файлы из моего домашнего каталога на сервере в мой каталог www и, если мне повезет, разрешения для файлов и все остальное сработает, я смогу просмотреть изменения в Интернете.Если мне не повезет, мне придется исследовать, что пошло не так.

Сегодня я изменил только один файл, и мне пришлось пройти весь процесс только для этого файла.Вы можете себе представить, как это раздражает.Есть ли более быстрый способ сделать это?Способ автоматизировать все это?Может быть, что-то вроде «коммит» в SVN и вы летите?

Как вы, ребята, справляетесь с такими вещами?

PS: я очень новичок во всем этом, так что терпитемне!Например, я всегда копирую файлы в свой домашний каталог на сервере, потому что кажется, что scp не может скопировать их прямо в папку / var / www?!

Ответы [ 3 ]

2 голосов
/ 15 июля 2011

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

Если у вас есть ферма серверов, о которых можно позаботиться, эти два могут не работать в нужном вам масштабе. Для более чем 10 серверов, посмотрите на chef или puppet , чтобы полностью управлять вашими серверами.

Независимо от того, осуществляете ли вы развертывание из локального извлечения, упакованного источника (мое предпочтительное решение), удаленного хранилища или чего-то совершенно другого, зависит только от вас. Все, что работает для вас, в порядке. Просто убедитесь, что ваши развертывания воспроизводимы (то есть вы всегда можете сказать: «5 минут назад он не был сломан, я хочу иметь то, что сейчас у меня было 5 минут назад»). Какой бы способ версионирования вы ни использовали, лучше, чем отсутствие версионирования (помеченные выпуски, вероятно, наиболее удобны).

1 голос
/ 16 июля 2011

Я думаю, что подход "SVN" очень близок к тому, что вы действительно хотите.Вы делаете задание cron, которое будет запускать «svn update» каждые несколько минут (или hg pull -u, если используется mercurial, аналогично git).Другой вариант - использовать Dropbox (иногда мы используем его для наших веб-серверов) - его очень легко настроить и поделиться с другими разработчиками (например, дизайнерами пользовательского интерфейса) ...

0 голосов
/ 15 июля 2011

rsync будет отправлять только изменения между вашим локальным компьютером и удаленным компьютером. Это была бы альтернатива scp. Вы можете посмотреть, как его настроить, чтобы делать то, что вам нужно.

Вы не можете копировать в / var / www, потому что учетные данные, которые вы используете для входа в сеанс копирования, не имеют доступа для записи в / var / www. Предполагая, что у вас есть root-доступ, измените группу (chown) на / var / www (или, что еще лучше, подкаталог) на вашу группу и измените разрешения, чтобы разрешить вашей группе доступ на запись (chmod g + w).

rsync довольно легок, поэтому его легко запустить.

...