Я ведущий разработчик в команде из двух человек. Мой партнер только что присоединился к проекту, и, несмотря на то, что мы используем GIT для управления версиями и т.д., мы все еще застряли в темноте, когда дело касается развертывания кода.
В настоящее время я делаю все обновления сайта через FTP (таким образом, я контролирую / отвечаю за все, что идет вживую), используя Filezilla.
Я делал это годами, но теперь у нас есть несколько больших классов PHP (300 КБ) и большой трафик.
Короче говоря, каждый раз, когда я загружаю ключевой класс, например, «общий», сайт отключается до тех пор, пока загрузка файла не завершится. Это всего 5/6 секунд за раз, но это становится все более неприемлемым.
Я понимаю, что могу загрузить файл под другим именем, а затем переименовать оба файла ... но на самом деле должен быть способ получше?
Я слышал о синхронизации кода с другого сервера, но не понимаю, как это предотвращает переключение на новый файл во время загрузки.
У нас есть только один сервер (для БД и Apache), но мы также используем несколько облачных серверов (например, для openx).
rsync делает именно это в режиме передачи по умолчанию: он создает новый файл в месте назначения на время передачи и переименовывает его после завершения передачи.
Тем не менее, это не поможет в ситуациях, когда ваша загрузка «непоследовательна», т. Е. Вы загрузили файлы, которые зависят от других, еще не загруженных файлов. Если это вызывает беспокойство, вам нужно будет выполнить загрузку в совершенно другую структуру каталогов и переключиться после завершения всей передачи.
WinSCP имеет функцию «синхронизации» каталогов, которая автоматически синхронизируется с удаленным FTP-сервером, например, Filezilla Server. Клиент Filezilla не имеет этой функции. Ты можешь получить сервер SFTP в этом списке. Если вы выберете правильный SFTP-сервер, блокировка файла не будет удерживаться во время загрузки, пока не будет передан самый последний бит и файл не будет заменен.
В качестве альтернативы вы можете сохранить каталог FTP неактивного сервера, который вы загружаете, а затем использовать другое локальное программное обеспечение (например, WinSCP) для мгновенной синхронизации с действующим каталогом на том же сервере. Таким образом вы избежите блокировки файла во время задержки загрузки.