Я интересуюсь тем как именно вы содержите свои сайты. Для этого я создал опрос, но поскольку ответы не всегда точно совпадают с предложенными вариантами, то можно ответить подробнее в этой теме.
Вопрос ко всем у кого есть сайты, и динамические и статические и те которым нужен сервер приложений и те которые работают через обычный CGI, в общем любые. Интересно как именно вы делаете деплоймент, т.е. как вы обновляете код сайта. Конечно интересны и всякие навороченные способы, кастомный код и всё такое, но еще интереснее как же делает большинство.
Кроме вариантов ответов в самом голосовании интересно какие именно инструменты и протоколы учавствуют в процессе (скажем FTP + Far или rsync или Mercurial итп) и насколько это автоматизировано -- те же обновления на сервере можно вызывать вручную а можно автоматически.
Еще любопытно на чем именно ваши сайты (чистый HTML, PHP, Perl или все сразу), какой они сложности и сколько из них вы регулярно обновляете.
Если можете рассказать как это делают ваши знакомые (а то за себя сами не все признаются :), то это совсем здорово.
Я в этой области не спец. Самому интересно "как правильно".
Тем не менее выскажу свои соображения. Речь идет о php и shared хостинге, а также не слишком частых обновлениях, т.к. другие условия могут все поменять.
Сайт должен быть сделан так, чтобы весь его код, за исключением может быть папки с тяжелыми файлами, лежал не в document root, а в подпапке с произвольным названием, причем название этой папки должно быть прописано в одном месте, например в htaccess. Кроме того нужно, чтобы два сайта могли работать паралельно, т.е. так чтобы в document root две папки, и например все uri начинающиеся /test/ перенаправлялись в одну из них, причем для кода сайта этого /test/ видно быть не должно.
В итоге обновление делается так: создается новая подпапка, в нее заливается новая версия, база копируется в новую и обновляется. В настройках указываем новую базу. Настраивается редирект /test/ на эту папку. Всё тестируется. Старая версия сайта продолжает работать. После теста, перенастраиваем редирект на новую версию сайта, старую удаляем.
Если есть что-то, что добавляется в процессе работы на сайт, то после тестирования, настраивается редирект на "ведутся работы", а база обновляется заново с учетом произошедших за время тестирования изменений.
Re[2]: Как вы обновляете сайты? (в дополнение к опросу)
Хороший вариант, единственное что лучше оставить .htaccess постоянным, ссылающимся скажем на /www/dev и /www/production, а сами эти папки сделать симлинками, то есть рядом создавать деплойменты в /www/r100, /www/r101 итд итп и указывать их в симлинках. Так остается полная история предыдущих задеплоенных версий на которые можно откатиться и можно также иметь постоянно стояющую наготове папку с уведомлением "ведутся работы" итп.
Re[3]: Как вы обновляете сайты? (в дополнение к опросу)
Здравствуйте, mlk, Вы писали:
mlk>Здравствуйте, Рома Мик, Вы писали:
mlk>Хороший вариант, единственное что лучше оставить .htaccess постоянным, ссылающимся скажем на /www/dev и /www/production, а сами эти папки сделать симлинками, то есть рядом создавать деплойменты в /www/r100, /www/r101 итд итп и указывать их в симлинках. Так остается полная история предыдущих задеплоенных версий на которые можно откатиться и можно также иметь постоянно стояющую наготове папку с уведомлением "ведутся работы" итп.
Кому-то проще симлинки, кому-то проще htacсess. Я как эти симлинки делать без shell доступа вообще не знаю, а htaccess через ftp можно редактировать. А в остальном всё так, и историю можно хранить и "ведуться работы" иметь наготове.
Re[4]: Как вы обновляете сайты? (в дополнение к опросу)
Здравствуйте, Рома Мик, Вы писали: РМ>Кому-то проще симлинки, кому-то проще htacсess. Я как эти симлинки делать без shell доступа вообще не знаю, а htaccess через ftp можно редактировать.
И вправду, про этот момент я не подумал.
Re: Как вы обновляете сайты? (в дополнение к опросу)
mlk>Вопрос ко всем у кого есть сайты, и динамические и статические и те которым нужен сервер приложений и те которые работают через обычный CGI, в общем любые. Интересно как именно вы делаете деплоймент, т.е. как вы обновляете код сайта. Конечно интересны и всякие навороченные способы, кастомный код и всё такое, но еще интереснее как же делает большинство.
mlk>Кроме вариантов ответов в самом голосовании интересно какие именно инструменты и протоколы учавствуют в процессе (скажем FTP + Far или rsync или Mercurial итп) и насколько это автоматизировано -- те же обновления на сервере можно вызывать вручную а можно автоматически.
mlk>Еще любопытно на чем именно ваши сайты (чистый HTML, PHP, Perl или все сразу), какой они сложности и сколько из них вы регулярно обновляете.
dmitriid.com, на котором:
— dmitriid.com, janus.dmitriid.com (PHP)
— erlanger.ru (Erlang + PHP)
— beepbeep.dmitriid.com (Erlang)
— два проекта на питоне (пока еще не в публичном доступе)
— еще несколько поддоменов по мелочи (в основном, PHP)
все это свалено в git. git-сервер там же, на dmitriid.com.
Разработка ведется на своем ноуте с VMWare, где настроено такое же окружение, как на сервере. Изменения вручную закидываются в git и вручную вытяиваются из git'а на сервере (то есть команда git pull на сервере выполняется вручную). Периодически на сервер выполняется
Здравствуйте, mlk, Вы писали:
mlk>Интересно как именно вы делаете деплоймент, т.е. как вы обновляете код сайта.
Есть две ветки, стабильная и текущая. На сервере есть директории /srv/web/coolsite и /srv/web/dev.coolsite, которые соответствуют www.coolsite.com и dev.coolsite.com. На компьютерах, где ведется разработка, есть свои ветки, которые регулярно делают pull и, соответственно, push. Заказчик любит иногда сам поковыряться в HTML и CSS, поэтому у него тоже есть ветка на ноутбуке с Убунту, настроенном точно так же, как и сервер. Иногда мелкие работы выполняются прямо на /srv/web/dev.coolsite, потом там же и коммитятся. Когда dev-ветка готова к употреблению, делается pull ../dev.coolsite. Центрального репозитария нет, де факто им можно считать dev.coolsite, куда нацелены все push и pull.
mlk>Еще любопытно на чем именно ваши сайты (чистый HTML, PHP, Perl или все сразу), какой они сложности и сколько из них вы регулярно обновляете.
Python/Django, 4 тыс. строк, переписан из PHP, где их было где-то 35 тыс. (без учета комментариев и строк из одной пунктуации). 750 ревизий за полтора года, бóльшую часть времени я работал один.