helpcenter/Web/Controls/Help/Server/Docker/Community/UpgradeDocker/UpgradeDocker.ru.ascx
2016-11-21 11:30:37 +03:00

198 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ Control Language="C#" Inherits="BaseContentUserControls"%>
<%@ Register Namespace="TeamLab.Controls" Assembly="__Code" TagPrefix="cc" %>
<script runat="server">
protected override void Init()
{
PageTitle = PageCaption = "Как обновить Сервер совместной работы для Docker до последней версии?";
MetaKeyWords = "";
MetaDescription = "Обновите Сервер совместной работы для Docker до последней версии.";
var guides = new GuidesModel();
guides.CaptionRelatedTips = "Связанные советы и приемы";
guides.Title = "Установка Ascensio System Plug-in";
guides.TitleVideo = "Как стать переводчиком ONLYOFFICE?";
guides.RelatedTips = "Вы хотите создавать новые документы, редактировать загруженные текстовые файлы прямо на портале? Это просто!";
guides.LearnMore = "Подробнее...";
(Page as BasePage).Guides = guides;
}
</script>
<div class="MainHelpCenter">
<h1 class="subHeaderFeaturesCaption Guides_Video_Captions">Как обновить Сервер совместной работы для Docker до последней версии?</h1>
<cc:localizecontent runat="Server" controlname="~/Controls/Help/VariousControls/Versions/CommunityServer/CommunityServer_8_1.ascx" />
-
<cc:localizecontent runat="Server" controlname="~/Controls/Help/VariousControls/Versions/CommunityServer/CommunityServerDocker_Current.ascx" />
<div class="keyword_block">
<ul>
<li>
<cc:LocalizeContent ID="LocalizeContent3" runat="Server" ControlName="~/Controls/Help/Tags/local-server/local-server.ascx" />
</li>
<li>
<cc:LocalizeContent ID="LocalizeContent4" runat="Server" ControlName="~/Controls/Help/Tags/server-version/server-version.ascx" />
</li>
<li>
<cc:LocalizeContent ID="LocalizeContent2" runat="Server" ControlName="~/Controls/Help/Tags/community-server/community-server.ascx" />
</li>
<li>
<cc:LocalizeContent ID="LocalizeContent10" runat="Server" ControlName="~/Controls/Help/Tags/docker-version/docker-version.ascx" />
</li>
<li>
<cc:LocalizeContent ID="LocalizeContent12" runat="Server" ControlName="~/Controls/Help/Tags/upgrade-server/upgrade-server.ascx" />
</li>
</ul>
</div>
<div class="video_ground video_trips">
<h2 id="introduction">Введение</h2>
<div class="block_of_step">
<div class="screen_text">
<p>Docker-файлы для <b>Сервера совместной работы</b> можно найти здесь:
<br /><a target="_blank" href="https://hub.docker.com/r/onlyoffice/communityserver/">https://hub.docker.com/r/onlyoffice/communityserver/</a></p>
<p>В новых версиях используются другие имена пакетов, и хотя данные должны переноситься автоматически, настоятельно рекомендуется выполнить резервное копирование всех папок с данными.</p>
<p>Первой выпущенной Docker-версией для <b>Сервера совместной работы</b> была версия 8.1, поэтому в данной инструкции мы будем считать ее самой старой версией, которую можно было установить на компьютере, и покажем процесс обновления с нее до последней доступной версии.</p>
</div>
</div>
</div>
<h2 id="Step1">Создание резервной копии базы данных</h2>
<div class="block_of_step">
<div class="screen_text">
<p>Прежде всего необходимо выполнить резервное копирование папок, которые содержат данные портала, чтобы предотвратить потерю данных. Если при установке <b>Сервера совместной работы</b> вы <a href="<%=VirtualPathUtility.ToAbsolute("~/server/docker/community/docker-installation.aspx#StoringData")%>">монтировали папки</a> для хранения данных вне контейнера Docker, надо создать резервную копию следующих папок, расположенных на хост-машине:</p>
<ul>
<li><code>/app/onlyoffice/CommunityServer/data</code></li>
<li><code>/app/onlyoffice/CommunityServer/logs</code></li>
<li><code>/app/onlyoffice/CommunityServer/mysql</code></li>
</ul>
<div class="notehelp">
<p>Если вы не монтировали папки при установке <b>Сервера совместной работы</b>, надо выполнить резервное копирование следующих папок внутри Docker-контейнера:</p>
<ul>
<li><code>/var/www/onlyoffice/Data</code></li>
<li><code>/var/log/onlyoffice</code></li>
<li><code>/var/lib/mysql</code></li>
</ul>
<p>Эти папки с данными можно скопировать из Docker-контейнера в папку на хост-машине:</p>
<pre><code>sudo docker cp {{COMMUNITY_SERVER_ID}}:var/www/onlyoffice/Data /home/user/Backup
sudo docker cp {{COMMUNITY_SERVER_ID}}:var/log/onlyoffice /home/user/Backup
sudo docker cp {{COMMUNITY_SERVER_ID}}:var/lib/mysql /home/user/Backup
</code></pre>
<p>Где <b>{{COMMUNITY_SERVER_ID}}</b> означает имя или ID контейнера <b>Сервера совместной работы</b>, а <b>/home/user/Backup</b> - путь к любой папке на хост-машине.</p>
</div>
<p>Можно также создать образ контейнера с помощью команды Docker <b>build</b>:</p>
<pre><code>docker build -t [image name]
</code></pre>
<p>Для резервного копирования <b>базы данных MySQL</b> в большинстве случаев достаточно скопировать папку <code>/var/lib/mysql</code>. Но можно также создать дамп базы данных с помощью любой программы, которую вы используете для этой цели. Например, можно использовать утилиту <b>mysqldump</b>.</p>
<ol>
<li>Войдите в контейнер:
<pre><code>sudo docker attach {{COMMUNITY_SERVER_ID}}
</code></pre>
</li>
<li>Создайте файл дампа:
<pre><code>mysqldump -u root onlyoffice > dumpfile.sql
</code></pre>
<p>Чтобы выйти из контейнера, не останавливая его, нажмите сочетание клавиш <b>Ctrl + P + Q</b>.</p>
</li>
<li>Скопируйте файл дампа на хост-машину:
<pre><code>sudo docker cp {{COMMUNITY_SERVER_ID}}:/dumpfile.sql /home/user/
</code></pre>
</li>
</ol>
</div>
</div>
<h2 id="Step2">Обновление автономной версии Сервера совместной работы для Docker</h2>
<div class="block_of_step">
<div class="screen_text">
<h5>Обновление с версии 8.1 до 8.5</h5>
<p>Теперь можно удалить с компьютера <b>Сервер совместной работы</b> 8.1. Для этого выполните следующую команду <b>внутри Docker-контейнера</b>:</p>
<pre><code>sudo apt-get remove onlyoffice
</code></pre>
<div class="notehelp nh_notice">Не требуется дополнительно удалять никакие файлы вручную, просто выполните указанную выше команду, чтобы удалить с компьютера <b>Сервер совместной работы</b>.</div>
<p>Затем выполните следующую команду, чтобы обновить <b>Сервер совместной работы</b> до версии 8.5</p>
<pre><code>sudo apt-get install onlyoffice-communityserver
</code></pre>
<p>База данных и все необходимые файлы должны быть автоматически получены из предыдущей версии. Запустите портал и убедитесь в его корректной работе и целостности данных.</p>
<p>При обновлении пакета с версии 8.1 до 8.5 обновляется база данных, поэтому необходимо еще раз выполнить резервное копирование.</p>
<h5>Обновление с версии 8.5 до последней версии</h5>
<p>Чтобы обновить <b>Сервер совместной работы</b> до последней версии, необходимо выполнить следующие действия:</p>
<h6>Шаг 1: Перенесите данные в хранилище вне контейнеров Docker</h6>
<p>Если вы уже установили <b>Сервер совместной работы</b> с возможностью сохранения данных в папках вне контейнеров Docker, можно пропустить этот шаг. В противном случае необходимо вручную выполнить резервное копирование данных портала, как описано в разделе <a href="<%=VirtualPathUtility.ToAbsolute("~/server/docker/community/upgrade-docker.aspx#Step1")%>">Создание резервной копии базы данных</a>.</p>
<h6>Шаг 2: Убедитесь, что смонтированы все внешние папки для хранения данных</h6>
<p>С помощью следующей команды убедитесь, что смонтированы все тома данных контейнера, используемые для хранения данных портала <b>Сервера совместной работы</b>:</p>
<pre><code>sudo docker inspect --format='{{range $p,$conf:=.HostConfig.Binds}}{{$conf}};{{end}}' {{COMMUNITY_SERVER_ID}}
</code></pre>
<p>где <b>{{COMMUNITY_SERVER_ID}}</b> означает имя или ID контейнера <b>Сервера совместной работы</b>.</p>
<div class="notehelp">Имя или ID текущего контейнера <b>Сервера совместной работы</b> можно легко узнать с помощью команды Docker, которая выводит список всех существующих контейнеров:
<pre><code>docker ps -a
</code></pre>
</div>
<h6>Шаг 3: Удалите текущий контейнер</h6>
<pre><code>sudo docker rm -f {{COMMUNITY_SERVER_ID}}
</code></pre>
<p>где <b>{{COMMUNITY_SERVER_ID}}</b> означает имя или ID контейнера <b>Сервера совместной работы</b>.</p>
<h6>Шаг 4: Удалите текущий образ</h6>
<p>Образ, который использовался для установки <b>Сервера совместной работы</b>, также необходимо удалить, иначе он будет использоваться и для последующей установки, и обновления не произойдет:</p>
<pre><code>sudo docker rmi -f $(sudo docker images | grep onlyoffice/communityserver | awk '{ print $3 }')
</code></pre>
<h6>Шаг 5: Запустите новый образ с такими же путями привязки</h6>
<pre><code>sudo docker run -i -t -d -p 80:80 \
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/CommunityServer/mysql:/var/lib/mysql onlyoffice/communityserver
</code></pre>
<p>Убедитесь, что запускаете новый образ, указав пути к папкам, привязанным <b>точно так же</b>, как они были смонтированы до удаления образа <b>Сервера совместной работы</b>, в противном случае данные, сохраненные в этих папках, не будут получены автоматически.</p>
<h6>Шаг 6: Восстановите резервную копию данных, если это необходимо</h6>
<p>Если вы не монтировали папки при установке предыдущей версии, потребуется восстановить данные вручную. Для этого скопируйте резервную копию данных из папок на хост-машине в новый контейнер:</p>
<pre><code>sudo docker cp /home/user/Backup/Data/. {{COMMUNITY_SERVER_ID}}:var/www/onlyoffice/Data
sudo docker cp /home/user/Backup/onlyoffice/. {{COMMUNITY_SERVER_ID}}:var/log/onlyoffice
sudo docker cp /home/user/Backup/mysql/. {{COMMUNITY_SERVER_ID}}:var/lib/mysql
</code></pre>
<p>Где <b>{{COMMUNITY_SERVER_ID}}</b> означает имя или ID контейнера <b>Сервера совместной работы</b>, а <b>/home/user/Backup</b> - путь к любой папке на хост-машине.</p>
<p>Или можно скопировать резервную копию данных из папок на хост-машине в новые смонтированные папки на хосте, указанные при установке новой версии:</p>
<pre><code>sudo cp -a /home/user/Backup/Data/. /app/onlyoffice/CommunityServer/data
sudo cp -a /home/user/Backup/onlyoffice/. /app/onlyoffice/CommunityServer/logs
sudo cp -a /home/user/Backup/mysql/. /app/onlyoffice/CommunityServer/mysql
</code></pre>
<p>Где <b>/home/user/Backup</b> - это путь к любой папке на хост-машине.</p>
<p>Если вы создавали дамп базы данных MySQL, его можно восстановить следующим образом:</p>
<ol>
<li>Скопируйте файл дампа базы данных MySQL с хост-машины в новый контейнер:
<pre><code>sudo docker cp /home/user/dumpfile.sql {{COMMUNITY_SERVER_ID}}:/dumpfile.sql
</code></pre>
</li>
<li>Войдите в контейнер:
<pre><code>sudo docker attach {{COMMUNITY_SERVER_ID}}
</code></pre>
</li>
<li>Восстановите дамп базы данных:
<pre><code>mysql -u root onlyoffice < dumpfile.sql
</code></pre>
</li>
</ol>
<p>Перезапустите Docker-контейнер:</p>
<pre><code>sudo docker restart {{COMMUNITY_SERVER_ID}}
</code></pre>
<p>Запустите портал и убедитесь в его корректной работе и целостности данных.</p>
</div>
</div>
<h2 id="Step3">Обновление Сервера совместной работы с интегрированными модулями Сервер документов и Почтовый сервер</h2>
<div class="block_of_step">
<div class="screen_text">
<p>Если вы используете <b>Сервер совместной работы</b> с уже привязанным <b>Сервером документов</b> и <b>Почтовым сервером</b> в Docker-контейнере, действия будут другими:</p>
<ol>
<li>После выполнения резервного копирования всех файлов и базы данных остановите Docker-контейнер <b>Сервера совместной работы</b>.</li>
<li>Создайте сеть для Docker-контейнеров и запустите новый контейнер <b>Сервера документов</b>, контейнер <b>Почтового сервера</b>, а затем контейнер <b>Сервера совместной работы</b>, связав их, как описано <a href="<%=VirtualPathUtility.ToAbsolute("~/server/docker/community/docker-installation.aspx#IntegratedInstallation")%>">здесь</a>. При запуске контейнеров также необходимо <a href="<%=VirtualPathUtility.ToAbsolute("~/server/docker/community/docker-installation.aspx#StoringData")%>">монтировать</a> папки с данными <b>точно так же</b>, как они были смонтированы в предыдущей версии.</li>
<li>Войдите в новый контейнер <b>Сервера совместной работы</b> и восстановите базу данных.</li>
</ol>
<p>Затем запустите портал и убедитесь в его корректной работе и целостности данных. Если все в порядке, теперь можно удалить старый контейнер с <b>Сервером совместной работы</b>.</p>
</div>
</div>
</div>