как жить, если сайт большой
От: Рома Мик Россия http://romamik.com
Дата: 24.08.09 09:14
Оценка:
Я не веб-программист, но понемногу приходится этим заниматься. Есть сайт на drupal, это не так уж важно, но друпал — довольно большой сам по себе, и файлов в нем очень много. Плюс на сайте лежат еще всякие файлы, их много и некоторые из них довольно большие, общей суммой всё это под полгигабайта.

С маленькими сайтами я делал так: брал тотал коммандером копировал весь сайт к себе на компьютер, из phpMyAdmin делал копию базы, загружал эту копию в локальную базу. Запускал локальный сервер. Редактировал, что нужно, отлаживал, потом копировал обратно. Всё это копирование занимало совсем немного времени. Да и базу обратно не надо было перегружать обычно. Сейчас же даже скопировать весь сайт не считая статических файлов уже занимает весьма прилично времени (часы) из-за того, что много файлов и тотал коммандер на этом сильно тормозит. Копию базы делать тоже неудобно через phpMyAdmin.

Хотелось бы одной двумя кнопками получить заархивированную копию сайта (причем некоторые каталоги исключить) и копию базы. И обратно всё это тоже быстро восстановить. Shell доступ в данном случае есть, но не умею я *nix командной строкой пользоваться, а во вторых на другом хостинге, где
то тоже всё актуально нету его.
Re: как жить, если сайт большой
От: servancho Россия https://dedis.ru
Дата: 24.08.09 09:47
Оценка: 4 (1)
Здравствуйте, Рома Мик, Вы писали:

РМ>Я не веб-программист, но понемногу приходится этим заниматься. Есть сайт на drupal, это не так уж важно, но друпал — довольно большой сам по себе,


Как мне рассказывал один знакомец:
Терминология:
сайт — исходники + БД в настроенном виде
продакшен — сайт на сервере, то что доступно публично
тест environment — нечто у девелопера на машине. Часто присвоить версию не представляется возможным, т.к. часто берутся только части проекта.
svn — сорцконтрол

Workflow примерно такой:

1. Очень общо, в сорцконтроле исходники организованы так:
\VerXXX
Dev\ — девелоперская версия, то, над чем ведется работа и то куда делается чекин
Prod\ — сюда мерджится код из Dev когда пройдено тестирование.

2. На сервере работает скриптик, который при появлении изменений в \VerXXX\Prod обновляет сайт. Т.о. когда определенный набор фич создан и протестирован, манагер или тим лид мерджит из Dev в Prod, после чего проект обновляется скриптом. Понятно что там при необходимости обновление БД было, но это уже детали.

3. При обновлении структуры базы, а далее раз в неделю — делается выгрузка базы на сервер. Девелопер берет ее просто копированием. Взяв последнюю версию исходников он должен влить еще и выгрузку базы, чтобы синхронизироваться с изменениями базы.

Вобщем, по кругу: (имплементация -> (тестирование -> багфикс -> чекин в Dev) x N) x K -> мердж в Prod) x Ver

Таким образом копируются только изменения и всегда при появлении каких-то критикал багов в свежем проде можно вернуться к прошлой версии, опять же без аврала. У них так была работа построена со всеми проектами.
Если руки золотые, не важно из какого места они растут.
Re[2]: как жить, если сайт большой
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.08.09 09:52
Оценка:
Здравствуйте, servancho, Вы писали:

S>1. Очень общо, в сорцконтроле исходники организованы так:

S> \VerXXX
S> Dev\ — девелоперская версия, то, над чем ведется работа и то куда делается чекин
S> Prod\ — сюда мерджится код из Dev когда пройдено тестирование.

А с чем мерджить? Продакшн версию кто-то кроме разработчиков править может чтоли?
Re[3]: как жить, если сайт большой
От: Рома Мик Россия http://romamik.com
Дата: 24.08.09 12:05
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, servancho, Вы писали:


S>>1. Очень общо, в сорцконтроле исходники организованы так:

S>> \VerXXX
S>> Dev\ — девелоперская версия, то, над чем ведется работа и то куда делается чекин
S>> Prod\ — сюда мерджится код из Dev когда пройдено тестирование.

К>А с чем мерджить? Продакшн версию кто-то кроме разработчиков править может чтоли?

У сайта кроме кода есть еще и контент, и они не очень-то разделены.
Re[4]: как жить, если сайт большой
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.08.09 13:05
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, Курилка, Вы писали:


К>>Здравствуйте, servancho, Вы писали:


S>>>1. Очень общо, в сорцконтроле исходники организованы так:

S>>> \VerXXX
S>>> Dev\ — девелоперская версия, то, над чем ведется работа и то куда делается чекин
S>>> Prod\ — сюда мерджится код из Dev когда пройдено тестирование.

К>>А с чем мерджить? Продакшн версию кто-то кроме разработчиков править может чтоли?

РМ>У сайта кроме кода есть еще и контент, и они не очень-то разделены.

Переведи?
У тебя файл может быть под контролем системы контроля версий и не быть подконтрольным одновременно?

svn update (или другая VCS) проапдейтит мне только то, что надо проапдейтить, или есть что-то о чём я не подозреваю?
Re[5]: как жить, если сайт большой
От: Рома Мик Россия http://romamik.com
Дата: 24.08.09 14:59
Оценка:
Здравствуйте, Курилка, Вы писали:

На самом деле проблема в том, что сайт на хостинге живет своей жизнью, отдельной от того, что у разработчика. И копирования информации оттуда сюда (как и наоборот) дорогая операция. И не доступная svn. Т.е. мы можем взять из svn текущую продакшен версию, но заливать на сайт ее придется руками, в течение часа-двух. И нельзя гарантировать что найте именно то, что в svn, т.к. там информацию меняют редакторы, по идее только в БД, но я в этом на 100% не уверен на самом деле. Но даже если и только в БД, всё равно проблема, т.к. например у нас могла поменяться структура БД и если мы вначале обновим файлы, а потом БД будет какое-то время рассинхронизация одного и другого. Друпал может перевести сайт в выключенное состояние, когда он на все запросы показывает "зайдите попозже", но такое обновление занимает слишком много времени, чтобы так делать. О чем собственно и был вопрос, как это всё обновить побыстрее.
Re: как жить, если сайт большой
От: TheOldMan  
Дата: 24.08.09 16:50
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Я не веб-программист, но понемногу приходится этим заниматься. Есть сайт на drupal, это не так уж важно, но друпал — довольно большой сам по себе, и файлов в нем очень много. Плюс на сайте лежат еще всякие файлы, их много и некоторые из них довольно большие, общей суммой всё это под полгигабайта.


Я живу вот как. Копирую весь проект к себе на локал и работаю с ним: делаю правки, тестирую, а потом выкладываю в svn. Но svn доступен только для теста. Тоесть, как только правки выложил в svn, то сразу обновляется веб-директория обновленными файлами. Для прода это не актуально. Так вот. На прод выкладываю только те файлы которые были изменены. Нету нужды кидатся туда-сюда огромным количеством траффика. Если произошли изменения в базе данных, то делаю прямо на проде соответсвующие sql-запросы и жизнь продолжается. Да, конечно, есть промежуток времи в котором код пытаеться выполнить такие sql-запросы которые еще не могут выполниться корректно так как база не обновлена. Но эти все операции можно делать вне бизнес время, тогда, когда сайтом пользуется минимальное количество пользователей. И если вы будете делать это очень редко, вплоть даже с использованием странички что-то вроде "Site under constuction" то, надеюсь, пользователи вам простят.

PM>И нельзя гарантировать что найте именно то, что в svn, т.к. там информацию меняют редакторы, по идее только в БД, но я в этом на 100% не уверен на самом деле.


Всё-таки очень полезно быть уверенным на все 100% когда дело имеешь с таким вот случаем...

*nix команды вам очень пригодятся. Если есть время, советую подучить. Очень економит время и крайне удобно. Например, приходится иногда закачивать или скачивать даже несколько мегабайт но большого количества файлов. Я сначала архивую их в один файл и только потом скачиваю. Если есть shell то архивую в tar: tar -cf archive.tar some_folder/. Если нету shell'a, то иногда удается воспользоваться вот каким ухищрением. Пишу php-сприпт которые выполняет эту же самую shell-команду:

<?php
`tar -cf archive.tar some_folder`
?>

И потом спокойно скачиваю целый архив. Огромная економия времени! Только жаль что не всегда включен режим в котором есть возможность выполнить shell-команды из скрипта. Но есть еще один вариант. Поставщики хостинг-услуг часто используют разные инструменты для управление хостингом. Среди таких инструментов можно вспомнить cpanel, у которой есть в стандартном наборе функция делающая backup. Делаю бекап и потом скачиваю.

Раньше приходилось жить с другим большим проектом. Так вот проблема была в том что его прямо по ftp редактировали несколько программистов. Но в этом случае пытались разделить функциональность таким образом чтобы их части не пересекались. SVN не было. Сделал локальный сервер, с которым работал некоторое время, но так как файлы постоянно обновлялись, локальная версия постоянно делалась неактуальной. Да, вот тогда и у самого гудела голова от вопроса как же сделать так чтобы всем было хорошо. Вопрос так и не решил, а работали вот как. Если нужно что-то поправить, делали бекап файла который нужно поменять, у себя или прямо на ftp, редактировали, проверяли всё ли впорядке и там образом разрабатывался сайт...
суть в простоте, а простота в сути
Re[2]: как жить, если сайт большой
От: Рома Мик Россия http://romamik.com
Дата: 24.08.09 18:03
Оценка:
Здравствуйте, TheOldMan, Вы писали:

TOM>Я живу вот как. Копирую весь проект к себе на локал и работаю с ним: делаю правки, тестирую, а потом выкладываю в svn. Но svn доступен только для теста. Тоесть, как только правки выложил в svn, то сразу обновляется веб-директория обновленными файлами. Для прода это не актуально. Так вот. На прод выкладываю только те файлы которые были изменены.

А можно поподробнее вот эти моменты. Во-первых как так сделано, что из svn сразу веб-директория обновляется? Я так понимаю, что это на тестовом локальном сервере, который на том же компьютере или в любом случае рядом. Скрипт какой-то запускается руками? Или как-то можно сделать чтоб само при коммите?
Какая-то автоматизация определения какие файлы были изменены есть или глядится в логи svn и определяется?
Re[3]: как жить, если сайт большой
От: TheOldMan  
Дата: 24.08.09 18:14
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, TheOldMan, Вы писали:


РМ>А можно поподробнее вот эти моменты. Во-первых как так сделано, что из svn сразу веб-директория обновляется?


Это сделано с помощью svn hook'ов, которые могут выполнятся, например, после комита и копировать файлы в определенное место.

РМ>Я так понимаю, что это на тестовом локальном сервере, который на том же компьютере или в любом случае рядом.


Нет, не рядом. Но на той же машине что и SVN репозиторий.

РМ>Скрипт какой-то запускается руками? Или как-то можно сделать чтоб само при коммите?

РМ>Какая-то автоматизация определения какие файлы были изменены есть или глядится в логи svn и определяется?

Всё автоматизировано.
суть в простоте, а простота в сути
Re[4]: как жить, если сайт большой
От: Рома Мик Россия http://romamik.com
Дата: 25.08.09 07:20
Оценка:
Здравствуйте, TheOldMan, Вы писали:

РМ>>Какая-то автоматизация определения какие файлы были изменены есть или глядится в логи svn и определяется?

TOM>Всё автоматизировано.
А как?
Re[5]: как жить, если сайт большой
От: TheOldMan  
Дата: 25.08.09 08:11
Оценка: 12 (1)
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, TheOldMan, Вы писали:


РМ>>>Какая-то автоматизация определения какие файлы были изменены есть или глядится в логи svn и определяется?

TOM>>Всё автоматизировано.
РМ>А как?

Автоматизировано c помощью SVN и его hook'ов.
суть в простоте, а простота в сути
Re: как жить, если сайт большой
От: paucity  
Дата: 30.08.09 14:03
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Я не веб-программист, но понемногу приходится этим заниматься. Есть сайт на drupal, это не так уж важно, но друпал — довольно большой сам по себе, и файлов в нем очень много. Плюс на сайте лежат еще всякие файлы, их много и некоторые из них довольно большие, общей суммой всё это под полгигабайта.


а может следовать рекомендациям разработки под Друпал?
по правилам разработанные / доработанные модули должны содержаться в отдельной папке — так что необходимость таскать кучу гигабайт туда-сюда отпадет. Да и базу таскать туда сюда не надо будет, если будете разрабатывать в Друпаловой идеологии.
Многие и рады были бы испытать когнитивный диссонанс, но нечем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.