서버 운영/Nextcloud

Nextcloud 14에서 15로 메이저 업그레이드

씨실과 날실 2019. 2. 4. 10:30

[관련 게시물]

Nextcloud 14

Nextcloud 14 설치

2018/11/28 - [IT/가상머신, 서버, CMS 구축] - Nextcloud 14 설치

Nextcloud 14 DB 백업

2019/01/15 - [IT/가상머신, 서버, CMS 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

Nextcloud 14 마이너 업그레이드

2019/01/14 - [IT/가상머신, 서버, CMS 구축] - Nextcloud 14 마이너 업그레이드


Nextcloud 15

Nextcloud 15 설치

2019/02/05 - [IT/가상머신, 서버, CMS 구축] - Nextcloud 15 설치

Nextcloud 14 DB 백업

2019/01/15 - [IT/가상머신, 서버, CMS 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

Nextcloud 14 → 15 메이저 업그레이드

2019/02/04 - [IT/가상머신, 서버, CMS 구축] - Nextcloud 14에서 15로 메이저 업그레이드

Nextcloud 14, 15 공식 문서

[Nextcloud14]

Nextcloud14 유지보수 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/index.html

Nextcloud 14 백업 공식 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/backup.html

Nextcloud 14 복원 공식 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/restore.html

Nextcloud 14 업그레이드 방법 공식 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/upgrade.html

Nextcloud 14 업그레이드 유지보수 모드 사용 공식 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/upgrade.html#maintenance-mode

Nextcloud 14 업데이터를 이용한 업그레이드 공식 문서

https://docs.nextcloud.com/server/14/admin_manual/maintenance/update.html

[Nextcloud 15]

Nextcloud15 유지보수 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/index.html

Nextcloud 15 백업 공식 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/backup.html

Nextcloud 14 복원 공식 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/restore.html

Nextcloud 15 업그레이드 방법 공식 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/upgrade.html

Nextcloud 15 업그레이드 유지보수 모드 사용 공식 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/upgrade.html#maintenance-mode

Nextcloud 15 업데이터를 이용한 업그레이드 공식 문서

https://docs.nextcloud.com/server/15/admin_manual/maintenance/update.html


[작업환경]

가상머신 : VirtualBox 6.0

OS : Ubuntu 18.04.1

Apache2 : Apache/2.4.29 (Ubuntu)

PHP7 : PHP 7.2.10-0ubuntu0.18.04.1

MariaDB : mysql  Ver 15.1 Distrib 10.3.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

phpMyAdmin : phpMyAdmin 4.6.6deb5

우리는 전에 Nextcloud 14의 설치, 백업, 마이너 업그레이드를 알아보았습니다. 현재 Nextcloud의 최신 버전은 15.02입니다. Nextcloud 14를 Nextcloud 15로 메이저 업그레이드해보겠습니다.

업그레이드는 여러 방법이 있습니다. 그중 저는 마이너 업그레이드 소개 시 알려드린 내장 업데이터를 이용하는 방법과 수동으로 업그레이드하는 방법 이 두 가지를 소개하고자 합니다.

백업

업그레이드를 진행하기 전에 DB와 데이터의 백업은 필수입니다.

DB 백업 방법은 아래 링크를 참고하시기 바랍니다.

2019/01/15 - [IT/가상머신, 서버, CMS 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

내장 업데이터 이용 메이저 업그레이드

Nextcloud에 접속하여 로그인합니다.

위 그림에서 설정을 눌러줍니다. 그럼 아래와 같은 화면이 나옵니다.

왼쪽 메누들 중에서 관리 아래 Overview를 눌러줍니다. 그러면 오른쪽 프레임 하단에 아래와 같이 버전 정보를 확인할 수 있습니다.

현재 사용 중인 버전을 확인할 수 있고, 업데이트 채설을 골라 업그레이드 할 수 있습니다. 각 업데이트 채널에 대해 다음과 같이 설명하고 있습니다.

production will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2).
stable is the most recent stable version. It is suited for regular use and will always update to the latest major version.
beta is a pre-release version only for testing new features, not for production environments.

위 내용을 대충 번역하면 다음과 같습니다.

프로덕션은 항상 최신 패치 레벨을 제공하지만 다음 주요 릴리즈로 즉시 업데이트하지는 않습니다. 이 업데이트는 보통 두 번째 마이너 릴리스 (x.0.2)에서 발생합니다.

stable은 가장 안정적인 버전입니다. 정기적인 사용에 적합하며 항상 최신 버전으로 업데이트됩니다.

베타는 프로덕션 환경이 아닌 새로운 기능을 테스트하기위한 시험판 버전입니다.

기본적으로 stable에 채널을 맞춰놓고 업그레이드를 진행하는 것이 보통이나, 이번처럼 메이저 업그레이드를 진행할 때 프로덕션 채널을 통해 업그레이드합니다. 위 안내처럼 프로덕션 채널은 메이저 버전이 x.02 이후인 경우에 사용할 수 있으나 이번 버전은 15.02가 공개되었음에도 불구하고 이용할 수 없습니다. 아마도 Nextcloud 제작사 측에서 아직 안정화가 덜되었다고 생각하는 것 같습니다. 저는 메이저 업그레이드 방법을 알려드리기 위해 업그레이드 작업을 합니다만 이런 경우 업그레이드를 미루기를 권장합니다.

글을 작성 중인 이 시점에서 버전을 15.02로 업그레이드하려면 업데이트 채널을 베타에 맞춰놓고 실행해야 합니다.

어쨌든 업데이트 채널을 선택하고 업데이터 열기 버튼을 눌러줍니다.

그럼 위처럼 나옵니다.

Initializing

Current version is 14.0.6.
Update to Nextcloud 15.0.2 available. (channel: "beta")
Following file will be downloaded automatically:

https://download.nextcloud.com/server/releases/nextcloud-15.0.2.zip

Start update 버튼을 눌러 업그레이드 준비 작업을 진행합시다.

웹기반 업데이터 사용

No(for usage of the web based updater)를 누립니다.

이후의 과정은 지난번 마이너 업그레이드 글을 참고하시기 바랍니다.

2019/01/14 - [IT/가상머신, 서버, CMS 구축] - Nextcloud 14 마이너 업그레이드

명령행 기반 업그레이드

지난번에는 마이너 업그레이드 글에서는 웹기반 업데이터 사용법을 안내해드렸으므로 이번에는 명령행 기반 업그레이드를 안내해드리겠습니다.

초심자는 웹기반 업데이터를 사용하시기를 바랍니다.

Yes버튼을 눌러줍니다.

그럼 Nextcloud 화면이 다음과 같이 바뀔 것입니다.

아래 버튼을 누르면 아래와 같이 화면이 바뀝니다.

위 화면은 백업과 업그레이드 등 유지보수 작업 도중 제3자에 의한 DB와 데이터의 불일치성을 막기 위해 외부의 입력을 막는 유지보수 모드입니다.

이제 터미널로 작업합시다.

study@study-VirtualBox:/var/www/html/nextcloud$ sudo -u www-data php ./occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database
Updating  ...
Updated  to 1.1.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 2.7.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 18.2.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.4.1
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.10.0
Updating  ...
Updated  to 2.8.2
Updating  ...
Updated  to 0.1.0
Updating  ...
Fix broken values of calendar objects

 Done
    0/0 [>---------------------------]   0%
Updated  to 1.8.1
Updating  ...
Updated  to 1.7.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.8.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 2.4.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 2.3.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.6.0
Checking for update of app accessibility in appstore
Checked for update of app "accessibility" in appstore 
Checking for update of app activity in appstore
Checked for update of app "activity" in appstore 
Checking for update of app cloud_federation_api in appstore
Checked for update of app "cloud_federation_api" in appstore 
Checking for update of app comments in appstore
Checked for update of app "comments" in appstore 
Checking for update of app dav in appstore
Checked for update of app "dav" in appstore 
Checking for update of app federatedfilesharing in appstore
Checked for update of app "federatedfilesharing" in appstore 
Checking for update of app federation in appstore
Checked for update of app "federation" in appstore 
Checking for update of app files in appstore
Checked for update of app "files" in appstore 
Checking for update of app files_pdfviewer in appstore
Checked for update of app "files_pdfviewer" in appstore 
Checking for update of app files_sharing in appstore
Checked for update of app "files_sharing" in appstore 
Checking for update of app files_texteditor in appstore
Checked for update of app "files_texteditor" in appstore 
Checking for update of app files_trashbin in appstore
Checked for update of app "files_trashbin" in appstore 
Checking for update of app files_versions in appstore
Checked for update of app "files_versions" in appstore 
Checking for update of app files_videoplayer in appstore
Checked for update of app "files_videoplayer" in appstore 
Checking for update of app firstrunwizard in appstore
Checked for update of app "firstrunwizard" in appstore 
Checking for update of app gallery in appstore
Checked for update of app "gallery" in appstore 
Checking for update of app logreader in appstore
Checked for update of app "logreader" in appstore 
Checking for update of app lookup_server_connector in appstore
Checked for update of app "lookup_server_connector" in appstore 
Checking for update of app nextcloud_announcements in appstore
Checked for update of app "nextcloud_announcements" in appstore 
Checking for update of app notifications in appstore
Checked for update of app "notifications" in appstore 
Checking for update of app oauth2 in appstore
Checked for update of app "oauth2" in appstore 
Checking for update of app password_policy in appstore
Checked for update of app "password_policy" in appstore 
Checking for update of app provisioning_api in appstore
Checked for update of app "provisioning_api" in appstore 
Checking for update of app serverinfo in appstore
Checked for update of app "serverinfo" in appstore 
Checking for update of app sharebymail in appstore
Checked for update of app "sharebymail" in appstore 
Checking for update of app support in appstore
Checked for update of app "support" in appstore 
Checking for update of app survey_client in appstore
Checked for update of app "survey_client" in appstore 
Checking for update of app systemtags in appstore
Checked for update of app "systemtags" in appstore 
Checking for update of app theming in appstore
Checked for update of app "theming" in appstore 
Checking for update of app twofactor_backupcodes in appstore
Checked for update of app "twofactor_backupcodes" in appstore 
Checking for update of app updatenotification in appstore
Checked for update of app "updatenotification" in appstore 
Checking for update of app workflowengine in appstore
Checked for update of app "workflowengine" in appstore 
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level
study@study-VirtualBox:/var/www/html/nextcloud$ sudo -u www-data php occ maintenance:mode --off
Maintenance mode disabled
study@study-VirtualBox:/var/www/html/nextcloud$

우리는 다음의 명령 두개만 입력해주면 됩니다.

Nextcloud 디렉토리 위치에서 

sudo -u www-data php ./occ upgrade


실행 완료 후

sudo -u www-data php occ maintenance:mode --off

다시 Nextcloud에 접속해봅시다.

다시 Overview 화면으로 들어가봅시다.

버전이 15.02로 무사히 바뀐 것을 확인할 수 있습니다. 

수동 업그레이드

수동 업데이트는 터미널을 통한 명령행 입력으로 업그레이드를 진행합니다.

백업

DB 백업은 아래 링크를 참고하여 진행합니다.

2019/01/15 - [IT/가상머신, 서버, CMS 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

최신 파일 다운로드

Nextcloud 공식 웹사이트에 접속하여 우상단의 Get Nextcloud 메뉴에 마우스를 올립니다. 그러면 하위 메뉴들이 뜨는데 Server packages를 누릅니다.

그럼 위와 같은 화면을 볼 수 있습니다. 여기서 Download Nextcloud 버튼을 누르지 마세요. 아래 Details and download options 버튼을 누릅니다.

아래에 상세 설명과 링크들이 나옵니다.

첫 번째 줄의 .tar.bz2 링크에 마우스를 올리고 오른쪽 버튼을 눌러 팝업 메뉴들 중 링크 주소 복사를 누릅니다.

터미널을 열어 다운로드 디렉토리로 이동 후 wget 옆에 복사한 주소를 붙여 다운로드 명령을 실행합니다.

study@study-VirtualBox:~$ cd ./다운로드
study@study-VirtualBox:~/다운로드$ wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.tar.bz2
그러면 다음과 같이 진행됩니다.

study@study-VirtualBox:~$ cd ./다운로드
study@study-VirtualBox:~/다운로드$ wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.tar.bz2
--2019-01-28 15:47:47--  https://download.nextcloud.com/server/releases/nextcloud-15.0.2.tar.bz2
Resolving download.nextcloud.com (download.nextcloud.com)... 88.198.160.133
접속 download.nextcloud.com (download.nextcloud.com)|88.198.160.133|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: 36224830 (35M) [application/x-bzip2]
Saving to: ‘nextcloud-15.0.2.tar.bz2’

nextcloud-15.0.2.ta 100%[===================>]  34.55M   841KB/s    in 2m 28s  

2019-01-28 15:50:17 (239 KB/s) - ‘nextcloud-15.0.2.tar.bz2’ saved [36224830/36224830]

study@study-VirtualBox:~/다운로드$ 
그럼 다운 받은 파일을 확인해봅시다.

study@study-VirtualBox:~/다운로드$ ls
LocalSettings.php         nextcloud-15.0.2.tar.bz2
mediawiki-1.31.1.tar.gz   nextcloud-sqlbkp_20190115.bak
nextcloud-14.0.3.tar.bz2  nextcloud.sql
study@study-VirtualBox:~/다운로드$  
nextcloud-15.0.2.tar.bz2 파일을 확인할 수 있습니다. 잘 다운되었습니다.

웹서버 중지

아래 명령을 입력해 웹서버를 중지합니다.

study@study-VirtualBox:~/다운로드$ sudo service apache2 stop 

기존 Nextcloud 디렉토리 이름 변경

기존의 Nextcloud 디렉토리 이름을 바꿔줍니다. 이 작업은 실질적으로 데이터의 백업 효과를 가집니다.

study@study-VirtualBox:~/다운로드$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ sudo mv nextcloud nextcloud_old
study@study-VirtualBox:/var/www/html$ ls
index.html  nextcloud_old  phpinfo.php  w
study@study-VirtualBox:/var/www/html$ 

위 명령행 의미는 다음과 같습니다.

서버 루트 디렉토리로 이동

기존 Nextcloud 디렉토리 이름을 Nextcloud_old로 변경

서버 루트 디렉토리 내 하위 디렉토리와 파일 확인

다운받은 새 버전의 압축 파일을 서버 루트 디렉토리에 풀어줍니다.

study@study-VirtualBox:~/다운로드$ sudo tar -xvf nextcloud-15.0.2.tar.bz2 -C /var/www/html
잘 풀렸는지 확인해봅시다.

study@study-VirtualBox:~/다운로드$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ ls
index.html  nextcloud  nextcloud_old  phpinfo.php  w
study@study-VirtualBox:/var/www/html$ 

config.php 파일과 Data 디렉토리 복사

next_old 디렉토리 안의 Data 디렉토리와 config 디렉토리 안의 config.php 파일을 새 nextcloud 디렉토리의 대응되는 위치에 복사해줍니다.

study@study-VirtualBox:/var/www/html$ cd /var/www/html/nextcloud_old
study@study-VirtualBox:/var/www/html/nextcloud_old$ sudo cp -p ./config/config.php /var/www/html/nextcloud/config && sudo cp -pR data /var/www/html/nextcloud
[sudo] study의 암호: 
study@study-VirtualBox:/var/www/html/nextcloud_old$ 

두 번째 줄은 환경설정 파일과 data 파일 복사를 한 줄에 입력한 것입니다.

파일 소유권 및 사용 권한 조정

study@study-VirtualBox:~$ cd /var/www/html
study@study-VirtualBox:/var/www/html$ sudo chown -R www-data:www-data nextcloud
[sudo] study의 암호: 
study@study-VirtualBox:/var/www/html$ sudo find nextcloud/ -type d -exec chmod 750 {} \;
study@study-VirtualBox:/var/www/html$ sudo find nextcloud/ -type f -exec chmod 640 {} \;
study@study-VirtualBox:/var/www/html$ 

위 명령은 공식 문서에서 안내하고 있는 내용입니다.

그러나 nextcloud 디렉토리에 접근하면 허가 거부가 나옵니다. 아마 위 권한 조정의 문제인 듯합니다. 그래서 저는 다음 명령으로 권한 조정을 했습니다.

study@study-VirtualBox:/var/www/html$ sudo chmod -R 775 nextcloud
사실 이 조정은 보안상 문제가 있을 수 있습니다. 유의하시기 바랍니다.

웹서버 재시작

study@study-VirtualBox:/var/www/html$ sudo service apache2 restart 

위 명령은 아파치 서버 재시작 명령법 중 가장 쉬운 방법입니다.

업그레이드 명령

study@study-VirtualBox:/var/www/html$ cd /var/www/html/nextcloud
study@study-VirtualBox:/var/www/html/nextcloud$ sudo -u www-data php occ upgrade

그러면 다음과 같이 진행됩니다.

study@study-VirtualBox:/var/www/html$ cd /var/www/html/nextcloud
study@study-VirtualBox:/var/www/html/nextcloud$ sudo -u www-data php occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Turned on maintenance mode
Updating database schema
Updated database
Updating  ...
Updated  to 1.1.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 2.7.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 18.2.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.4.1
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.3.0
Updating  ...
Updated  to 1.10.0
Updating  ...
Updated  to 2.8.2
Updating  ...
Updated  to 0.1.0
Updating  ...
Fix broken values of calendar objects

 Done
    0/0 [>---------------------------]   0%
Updated  to 1.8.1
Updating  ...
Updated  to 1.7.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.8.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 2.4.0
Updating  ...
Updated  to 1.4.0
Updating  ...
Updated  to 2.3.0
Updating  ...
Updated  to 1.5.0
Updating  ...
Updated  to 1.6.0
Checking for update of app accessibility in appstore
Checked for update of app "accessibility" in appstore 
Checking for update of app activity in appstore
Checked for update of app "activity" in appstore 
Checking for update of app cloud_federation_api in appstore
Checked for update of app "cloud_federation_api" in appstore 
Checking for update of app comments in appstore
Checked for update of app "comments" in appstore 
Checking for update of app dav in appstore
Checked for update of app "dav" in appstore 
Checking for update of app federatedfilesharing in appstore
Checked for update of app "federatedfilesharing" in appstore 
Checking for update of app federation in appstore
Checked for update of app "federation" in appstore 
Checking for update of app files in appstore
Checked for update of app "files" in appstore 
Checking for update of app files_pdfviewer in appstore
Checked for update of app "files_pdfviewer" in appstore 
Checking for update of app files_sharing in appstore
Checked for update of app "files_sharing" in appstore 
Checking for update of app files_texteditor in appstore
Checked for update of app "files_texteditor" in appstore 
Checking for update of app files_trashbin in appstore
Checked for update of app "files_trashbin" in appstore 
Checking for update of app files_versions in appstore
Checked for update of app "files_versions" in appstore 
Checking for update of app files_videoplayer in appstore
Checked for update of app "files_videoplayer" in appstore 
Checking for update of app firstrunwizard in appstore
Checked for update of app "firstrunwizard" in appstore 
Checking for update of app gallery in appstore
Checked for update of app "gallery" in appstore 
Checking for update of app logreader in appstore
Checked for update of app "logreader" in appstore 
Checking for update of app lookup_server_connector in appstore
Checked for update of app "lookup_server_connector" in appstore 
Checking for update of app nextcloud_announcements in appstore
Checked for update of app "nextcloud_announcements" in appstore 
Checking for update of app notifications in appstore
Checked for update of app "notifications" in appstore 
Checking for update of app oauth2 in appstore
Checked for update of app "oauth2" in appstore 
Checking for update of app password_policy in appstore
Checked for update of app "password_policy" in appstore 
Checking for update of app provisioning_api in appstore
Checked for update of app "provisioning_api" in appstore 
Checking for update of app serverinfo in appstore
Checked for update of app "serverinfo" in appstore 
Checking for update of app sharebymail in appstore
Checked for update of app "sharebymail" in appstore 
Checking for update of app support in appstore
Checked for update of app "support" in appstore 
Checking for update of app survey_client in appstore
Checked for update of app "survey_client" in appstore 
Checking for update of app systemtags in appstore
Checked for update of app "systemtags" in appstore 
Checking for update of app theming in appstore
Checked for update of app "theming" in appstore 
Checking for update of app twofactor_backupcodes in appstore
Checked for update of app "twofactor_backupcodes" in appstore 
Checking for update of app updatenotification in appstore
Checked for update of app "updatenotification" in appstore 
Checking for update of app workflowengine in appstore
Checked for update of app "workflowengine" in appstore 
Starting code integrity check...
Finished code integrity check
Update successful
Turned off maintenance mode
Reset log level
study@study-VirtualBox:/var/www/html/nextcloud$

Nextcloud 버전 확인

관리자로 로그인해 설정 - Overview에 들어갑니다. 버전을 확인해봅시다.

위 그림처럼 버전이 15로 나오면 무사히 업그레이드 된 것입니다.

'서버 운영 > Nextcloud' 카테고리의 다른 글

Nextcloud 15 설치  (0) 2019.02.05
Nextcloud 14 마이너 업그레이드  (0) 2019.01.14
Nextcloud 14 설치  (0) 2018.11.28