====== Updates ====== Апдейты помогают нам и Вам содержать Вашу копию в актуальном состоянии. С апдейтами в скрипте добавляются новые функции и тд. В пределах одного апдейта бывают разные билды с небольшими поправками. Апдейт и билд написан в конце каждой страницы. ====== How to run update ====== Нажать в админке Maintenance - Update или запустить в шеле cd your_path_to/scj/admin/ php update.php и скрипт будет проапдейчен до текущей версии ====== TCMS (Smartcj 2.X) Updates ====== [[ru:tcms_update_1|Update 1]] ====== SmartCJ v 1.X Updates ====== В версии 1 каждый апдейт надо было ставить по очереди те cd your_path_to/scj/admin/ php update.php номер_апдейта например у вас 49, надо сделать 52 php update.php 50 php update.php 51 php update.php 52 [[Update 52]] [[Update 51]] [[Update 50]] [[Update 49]] [[Update 48]] [[Update 47]] [[Update 46]] [[Update 45]] [[Update 44]] [[Update 43]] [[Update 42]] [[Update 41]] [[Update 40]] [[Update 39]] [[Update 38]] [[Update 37]] [[Update 36]] [[Update 35]] [[Update 34]] [[Update 33]] [[Update 32]] [[Update 31]] [[Update 30]] [[Update 29]] [[Update 28]] * Базовая строка для проведения всех апдейтов. Она обновит ваш скрипт до послденией версии cd /path_to_scj/admin; env HTTP_HOST=yourdomain.com php update.php ===== Как провести какой-то определенный апдейт ===== cd /path_to_scj/admin; env HTTP_HOST=yourdomain.com php update.php номер_апдейта например cd /home/vasya/domain.com/scj/admin; env HTTP_HOST=domain.com php update.php 45 Исходник update.php 0) { ProcessUpdate($num); exit; } } $tmp = get_url("http://smartcj.com/smartnews.php?action=last_update"); if ($tmp['status'] != 200) { die("Can not get last update number, please, contact support"); } $last_script_version = $tmp['body']; if ($last_script_version == $settings['last_update_number'] and !$_REQUEST['force_update']) die("You have the lastest version."); while ($settings['last_update_number'] < $last_script_version) { echo "Processing " . ($settings['last_update_number']+1) . "\n"; if (ProcessUpdate($settings['last_update_number']+1)) { $settings['last_update_number']++; } } function ProcessUpdate($update_id) { global $settings; $tmp = get_url("http://smartcj.com/updates/".(int)$update_id."/update.txt"); if ($tmp['status'] != 200) { echo "Sorry, can not find update {$update_id}"; return false; } $_REQUEST['terms_read'] = true; ob_start(); eval ('?>' . $tmp['body']); $res = ob_get_clean(); $res = str_replace('
', "\n", $res); echo strip_tags($res); return true; }
====== Как проапдейтить сразу все домены ====== Можно создать файл например update.sh в котором будут строки по примеру cd /path_to_domain/scj/admin; env HTTP_HOST=yourdomain.com php update.php cd /path_to_domain2/scj/admin; env HTTP_HOST=yourdomain2.com php update.php и так далее нужное кол-во строк. И запустить его из шела sh update.sh При установке и апдейте скрипт не пишет index.php и вообще какие-либо файлы на корень домена, что б случайно не переписать если у вас там что-то свое. Соответственно при апдейтах, возникает вопрос копирвоания инедкса смарта, если он используется на руте домена. Есть 2 варианта: - добавить в update.sh строки типа cp ../cgi/index.php ../../index.php - или сразу при инстале не копировать индекс, а сделать симлинк на соотв каталог. ====== Как откатить апдейт ====== Единственный вариант - если у вас есть бекап с нужной версии. Надо поставить скрипт этой версии и залить бекап мускла той же версии. Просто так залить в скрипт версии например 45 бекап мускла из версии 44 - нельзя. ====== Как провести апдейт на сайте с очень большой базой ====== Апдейт может быт достаточно тяжелой процедурой для сервера, при этом некоторые страницы могут закешироваться неправильно и тп. Некоторые сервисы например в случае релиза большого апдейта обычно делают это ночью и закрывают сайт, показывая стандартное сообщение о том, что сервис будет доступен через несоклько часов. Но если вы не хотите прерывать работу можно сделать следующим образом. Для этого надо - Поставить скрипт на другой (суб)домен, идеально на другом серваке - Залить туда дам базы с главного домена - Запустить апедйт на этом отдельном субдомене - На нем отработают все тяжелые процедуры по базе, при этом основной сайт затронут не будет - Перелить базу со вспомогательного домена на основной - Провести апедйт на основном - он пройдет быстро тк база уже изменена, надо будет только скачать файлы.