Documentation index
- ReadMe
- Things To Know
-
- New Style Rotation
Апдейты помогают нам и Вам содержать Вашу копию в актуальном состоянии. С апдейтами в скрипте добавляются новые функции и тд. В пределах одного апдейта бывают разные билды с небольшими поправками. Апдейт и билд написан в конце каждой страницы.
Нажать в админке Maintenance - Update или запустить в шеле
cd your_path_to/scj/admin/ php update.php
и скрипт будет проапдейчен до текущей версии
В версии 1 каждый апдейт надо было ставить по очереди те
cd your_path_to/scj/admin/ php update.php номер_апдейта например у вас 49, надо сделать 52 php update.php 50 php update.php 51 php update.php 52
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
<?php require('../includes/prepare.php'); require('../includes/libs/http_functions.php'); // out of space fix $df = disk_free_space("./"); if ($df < 5*1024*1024) { die("No enough space for update"); } // slow connection fix $mysql_version = db_value('ver', 'select version() as ver'); if (stristr($d['ver'], '5.')) { db_query("set wait_timeout=240"); } if ($argv[1] != '') { $num = (int) $argv[1]; if ($num > 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('<br>', "\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 варианта:
Единственный вариант - если у вас есть бекап с нужной версии.
Надо поставить скрипт этой версии и залить бекап мускла той же версии.
Просто так залить в скрипт версии например 45 бекап мускла из версии 44 - нельзя.
Апдейт может быт достаточно тяжелой процедурой для сервера, при этом некоторые страницы могут закешироваться неправильно и тп. Некоторые сервисы например в случае релиза большого апдейта обычно делают это ночью и закрывают сайт, показывая стандартное сообщение о том, что сервис будет доступен через несоклько часов. Но если вы не хотите прерывать работу можно сделать следующим образом. Для этого надо