User Tools

Site Tools


ru:updates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revision Both sides next revision
ru:updates [2017/04/07 15:02]
admin
ru:updates [2018/03/16 17:32]
admin [Как провести апдейт на очень старом сайте]
Line 1: Line 1:
 +====== Updates ======
 +
 +Апдейты помогают нам и Вам содержать Вашу копию в актуальном состоянии. С апдейтами в скрипте добавляются новые функции и тд. В пределах одного апдейта бывают разные билды с небольшими поправками. Апдейт и билд написан в конце каждой страницы.
 +
 +
 +====== How to run update ======
 +
 +<code>
 +cd your_path_to/scj/admin/
 +php update.php (опционально номер апдейта)
 +</code>
 +
 +
 +====== TCMS (Smartcj 2.X) Updates ======
 +
 +
 +[[ru:tcms_update_1|Update 1]]
 +
 +
 +====== SmartCJ v 1.X Updates ======
 +
 +
 +[[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]]
 +
 +  * Базовая строка для проведения всех апдейтов. Она обновит ваш скрипт до послденией версии
 +<code>  
 +cd /path_to_scj/admin; env HTTP_HOST=yourdomain.com php update.php 
 +</code>    
 +
 +
 +===== Как провести какой-то определенный апдейт =====
 + 
 +
 +<code>  
 +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
 +</code>  
 +
 +
 +
 +Исходник update.php
 +
 +<code>
 +
 +<?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;
 +
 +}
 +
 +
 +
 +</code>
 +
 +
 +
 +====== Как проапдейтить сразу все домены ======
 +
 +Можно создать файл например 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 - нельзя. 
 +  
 +  
 +====== Как провести апдейт на сайте с очень большой базой ======
 +
 +Апдейт может быт достаточно тяжелой процедурой для сервера, при этом некоторые страницы могут закешироваться неправильно и тп. Некоторые сервисы например в случае релиза большого апдейта обычно делают это ночью и закрывают сайт, показывая стандартное сообщение о том, что сервис будет доступен через несоклько часов. Но если вы не хотите прерывать работу можно сделать следующим образом. Для этого надо 
 +
 +  - Поставить скрипт на другой (суб)домен, идеально на другом серваке
 +  - Залить туда дам базы с главного домена
 +  - Запустить апедйт на этом отдельном субдомене
 +  - На нем отработают все тяжелые процедуры по базе, при этом основной сайт затронут не будет
 +  - Перелить базу со вспомогательного домена на основной
 +  - Провести апедйт на основном - он пройдет быстро тк база уже изменена, надо будет только скачать файлы.
 +  
 +  
  
ru/updates.txt · Last modified: 2024/03/08 13:27 by admin