helpcenter/Web/Controls/Help/Server/Docker/Community/UpgradeDocker/UpgradeDocker.ru.ascx

198 lines
18 KiB
Plaintext
Raw Normal View History

2016-08-29 13:51:20 +00:00
<%@ 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>
2016-08-29 13:51:20 +00:00
<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>