ownCloud는 오픈 클라우드 스토레지 소프트웨어로 아직까지 활발하게 개발이 진행되고 있다[1].

다음에 도움이 될 것 같아서 이번에는 이 오픈소스를 이용해서 클라우드 스토레지를 Ubuntu 20.04에 구축하는 방법을 서술하려고 한다.

구축환경은 다음과 같다.

운영체제: Ubuntu 20.04.2 LTS (without GUI)

스토레지: RAID5(12TB * 4), 마운트경로 => /RADI5

소프트웨어: ownCloud 10.6.0 (stable)

*시작전 방화벽 80번 포트가 잘 열려있는지 확인하고 진행한다.

ownCloud는 설치 메뉴얼과 패키지 설치 파일을 이용해서 설치를 진행한다[2, 3].

1. 패키지를 업데이트한다.

$ sudo apt update && apt upgrade

2. ownCloud 패키지를 설치한다.

$ wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_20.04/Release.key -O - | sudo apt-key add -
$ echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_20.04/ /' | sudo tee -a /etc/apt/sources.list.d/owncloud.list
$ sudo apt update
$ sudo apt install owncloud-complete-files

/var/www/owncloud 경로가 잘 생성되었는지 확인하고 다음 작업을 진행한다.

3. occ 실행을 위한 헬퍼 스크립트를 vim을 이용해서 작성한다.

$ sudo vi /usr/local/bin/occ
> #! /bin/bash
> cd /var/www/owncloud
> sudo -u www-data /usr/bin/php /var/www/owncloud/occ
$ sudo chmod +x /usr/local/bin/occ

4. 필수 패키지를 설치한다.

$ apt install apache2 libapache2-mod-php mariadb-server openssl php-imagick php-common php-curl \
> php-gd php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu php-redis redis-server wget

occ --version을 입력하고 버전이 잘 나오는지 확인한다.

5. 권장되는 php 패키지를 설치해준다.

    5.1. 패키지 레포지토리 추가

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/php.list
$ sudo apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com:443 4F4EA0AAE5267A6C

    5.2. 패키지 설치

$ sudo apt install ssh bzip2 rsync curl jq inetutils-ping smbclient php-smbclient coreutils php-ldap

    5.3 패키지 레포지토리 제거(나중에 실수로 php 업데이트를 방지하기 위함)

$ sudo add-apt-repository --remove ppa:ondrej/php
$ sudo rm -rf /etc/apt/sources.list.d/php*

6. 아파치 설정을 해준다.

    6.1 아파치 root site를 변경해준다.

$ sudo sed -i "s#html#owncloud#" /etc/apache2/sites-available/000-default.conf
$ sudo systemctl restart apache2

    6.2 아파치 호스트 설정및 적용한다.

$ sudo vi /etc/apache2/sites-available/owncloud.conf
> Alias /owncloud "/var/www/owncloud/"
> 
> <Directory /var/www/owncloud/>
>   Options +FollowSymlinks
>   AllowOverride All
> 
>  <IfModule mod_dav.c>
>   Dav off
>  </IfModule>
> 
>  SetEnv HOME /var/www/owncloud
>  SetEnv HTTP_HOME /var/www/owncloud
> </Directory>
$ sudo a2ensite owncloud.conf
$ sudo systemctl reload apache2

7. 데이터베이스 생성 및 유저권한을 설정한다. (유저 및 패스워드는 직접 정해도 된다, 다만 잊어버리지 말것)

$ sudo mysql
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS owncloud;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'password';

8. 추천 아파치 모듈을 활성화 한다.

$ sudo a2enmod dir env headers mime rewrite setenvif
$ sudo systemctl reload apache2

여기까지 진행하면 그림 1 과 같이 해당 컴퓨터 ip로 접속하여 web 으로 유저 설정을 진행할 수 있다. (만약 local에 GUI환경에 설치를 진행하고 있다면 localhost를 입력하면 된다.)

그림 1. ownCloud 설치가 끝난 Ubuntu 20.04 서버에 접속한 화면

데이터베이스 사용자: owncloud

데이터베이스 암호: password (혹은 직접 설정한 암호)

데이터베이스 이름: owncloud

여기까지 진행하면 사용하는데는 문제가 없으나 데이터 저장공간을 마운트된 /RAID5로 변경 하고싶다. (혹은 또 다른 외부 마운트된 스토레지, 예로 외장하드 같은 경우) 그래서 [4] 문서를 따라 데이터를 옮겨주고 데이터베이스를 수정하는 작업을 추가로 진행해야 한다.

*시작전 ownCloud는 기본적으로 /var/www/owncloud/data 를 기본 저장 디렉토리로 사용을 한다. 그림 2 처럼 이를 확인하고 내가 추가한 관리자명으로 된 디렉토리도 잘 있는지 확인하고 작업을 진행한다.

* 시작전 사용할 외부 스토레지가 잘 마운트 되어있고 재부팅시 자동으로 마운트 되도록 잘 설정했는지 확인한다.

그림 2. 관리자명을 admin으로 했으며, 해당 디렉토리가 잘 생성됨을 확인 할 수 있다.

1. 아파치 서비스를 중단한다.

$ sudo systemctl stop apache2

2. 관리자 모드를 활성화 한다.

$ sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on

3. 기존에 있는 데이터를 옮긴다.

$ sudo rsync -avz /var/www/owncloud/data /RAID5

/RAID5 에 잘 옮겨졌는지 확인하고 다음 작업을 진행한다.

4. /RAID5의 모든파일의 권한을 www-data에 넘겨준다.

$ sudo chown -R www-data:www-data /RAID5

5. 변경된 경로를 적용하기 위한 설정수정을 진행한다.

    5.1 데이터베이스 수정

$ sudo mysql
MariaDB [(none)]> use owncloud;
MariaDB [(none)]> UPDATE oc_storages SET id='local::/RAID5/data/' WHERE id='local::/var/www/owncloud/data/';
MariaDB [(none)]> UPDATE oc_accounts SET home='/RAID5/data/admin' WHERE id=1;

    5.2 ownCloud 설정수정

$ sudo -u www-data php /var/www/owncloud/occ config:app:set --value /RAID5/data fictitious datadir
$ sudo vi /var/www/owncloud/config/config.php
> 'datadirectory' => '/var/www/owncloud/data', 를 'datadirectory' => '/RAID5/data', 로 수정

6. 관리자모드 해제 및 아파치 서비스를 시작한다.

$ sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
$ sudo systemctl start apache2

여기까지 진행하면 그림 3, 그림 4 와 같이 문제없이 마운트한 외부 스토레지에 데이터 이동이 완료되고 이제부터 /RAID5에만 저장된다. (기본적으로 들어있는 파일은 새로 생성된 파일들의 확실한 구분을 위해 다 지워버렸다.)

그림 3. 새롭게 스토레지를 변경한 ownCloud에 Test 디렉토리 및 Test.txt 파일을 생성한 화면
그림 4. 새롭게 작성한 Test 디렉토리와 Test.txt 파일이 /RAID5 에 잘 옮겨짐을 확인할 수 있다.

참고문헌

1. ownCloud GitHub Organizations, Available online github.com/owncloud 11 Feb 2021.

2. Install ownCloud on Ubuntu 20.04, Available online doc.owncloud.com/server/10.6/admin_manual/installation/quick_guides/ubuntu_20_04.html 11 Feb 2021.

3. Install package owncloud-complete-files, Avaiable online download.owncloud.org/download/repositories/production/owncloud/ 11 Feb 2021.

4. How To Manually Move a Data Directory, Available online doc.owncloud.com/server/admin_manual/maintenance/manually-moving-data-folders.html 11 Feb 2021.

+ Recent posts