이번에는 취미로 구매한 라즈베리파이 제로를 사용하기 위한 가장 기초적인 headless setup을 진행한다.

 

필자는 일반 버전과 w 버전 둘다 시도해보았으며 작업 환경은 windows 11 이다.

 

  1. 라즈베리파이 일반 버전 (Without wireless)
    일반 버전은 추가적인 장비 없이 터미널을 여는 가장 쉬운 방법은 usb로 접근하는 방법이며 여기서는 usb로 ssh에 접근하는 방법에 대해서 다룬다.
    1. Raspberry Pi OS Imager를 다운로드하고 설치 후 Raspbian Lite 버전으로 부팅 카드를 만들고 그림 1 과 같이 생성된 디렉토리 내부에 ssh 이름으로 빈 파일을 만들고 config.txt와 cmdline.txt 파일을 각각 그림 2 와 그림 3과 같이 수정한다.
      그림 1 빈 ssh 파일 제작

      그림 2 config.txt 파일 수정
      그림 2 cmdline.txt 파일 수정
    2. usb를 통한 네트워크 통신을 하기 위해 RNDIS 드라이버를 다운로드 하고 호스트네임으로 쉽게 라즈베리파이제로에 접근하기 위해 Bonjour를 설치한다.
    3. Bonjour 설치가 끝났다면 이제 라즈베리파이제로에 부팅 카드를 삽입하고 usb로 컴퓨터랑 연결한다. (이때 그림 4 처럼 PWR 포트가 아니라 USB 포트로 연결해야 한다.)
      그림 4 컴퓨터랑 라즈베리파이제로와 연결 (초록색 LED는 부팅이 정상적으로 되면 켜진다.)
    4.  그림 5 와 같이 인식하는 usb 포트번호를 확인하고 그림 6 과 같이 해당 포트의 드라이버를 다운로드한 RNDIS 드라이버로 업데이트한다. 그러면 그림 7 과 같이 네트워크 어댑터가 생성됨을 확인할 수 있다.
      그림 5 usb7 확인
      그림 6 다운받은 드라이버로 업데이트
      그림 7 네트워크 어댑터가 생성됨을 확인
    5. 마지막으로 그림 8과 같이 pi@raspberrypi.local 로 접속해 본다. (비밀번호는 raspberry 이다.)
      그림 8 접속이 가능함을 확인
      드라이버를 설치했지만 접속이 안되는 경우는 Bonjour 설치 확인 또는 라즈베리파이제로를 컴퓨터에서 분리하고 다시 연결해본다.
  2. 라즈베리파이 w 버전 (With wireless)
    w 버전은 와이파이를 지원하기 때문에 이를 이용하면 쉽게 ssh 접근이 가능하며 여기서는 wifi로 ssh에 접근하는 방법에 대해서 다룬다.
    1. Raspberry Pi OS Imager를 다운로드하고 설치 후 Raspbian Lite 버전으로 부팅 카드를 만들고 해당 디렉토리의 내부에 그림 9 와 같이 비어있는 ssh 와 wpa_supplicant.conf 파일을 만들어준다.
      그림 9 ssh 파일과 wpa_supplicant.conf 파일 생성

      생성한 wpa_supplicatn.conf 파일은 다음과 같이 수정한다.
      ctrl_interface=DIR=/var/run/wpa_supplicant
      update_config=1
      network={
              ssid="wifi이름"
              psk="비밀번호"
              key_mgmt=WPA-PSK
              proto=RSN
              pairwise=CCMP
      }​

       위 설정은 WPA2-PSK 알고리즘과 AES 암호 알고리즘을 사용하는 공유기를 위한 설정이다. 기본적으로 대부분 이렇게 설정이 되어있을 것 같지만 아닌경우 각자 자신에게 맞는 설정을 해야할 필요성이 있다. 좀더 자세한 설명과 예제는 wpa_supplicant.conf 에서 확인할 수 있다.

      다음 cmdline.txt 파일을 그림 10 과 같이 수정해서 이더넷 모듈을 활성화 한다.
      그림 10 cmdline.txt 파일 수정
    2. 전원을 인가한 후 2 분 정도 기다리면 그림 11 과 같이 공유기 웹 페이지에서 raspberrypi라는 호스트 정보가 나온다.
      그림 11 라즈베리파이제로의 아이피를 확인할 수 있다.
       
    3. 마지막으로 그림 12 와 같이 확인한 ip 정보를 이용해 ssh 접속을 시도한다. (비밀번호는 raspberry 이다.)
      그림 12 ip 접속이 가능함을 확인
       
     

참고문헌

1. Headless Pi Zero SSH Access over USB

2. Raspberry pi zero 설정 (headless)

WSL은 Windows 커널 위에서 동작하기 때문에 Windows에서 쉽게 WSL위에서 동작하는 OS 디렉토리에 쉽게 접근할 수 있다.

 

방법은 쉽다. 파일 탐색기를 켜고 \\wsl$ 주소를 입력하고 자신이 설치한 OS 버전 이름에 접근하면 된다.

 

그림 1 WSL에 Ubuntu 20.04를 설치하고 파일 탐색기로 접근하는 모습

 

참고자료

1. What is the home directory on Windows Subsystem for Linux?

Windows 라이센스는 인증 채널은 종류가 여러가지 있다. 하지만 이 중에서 일반 사용자가 접할 수 있는 라이센스 인증 채널은 아마 Retail과 OEM 그리고 Volume 채널이라고 생각한다.

 

Retail 채널은 정식적으로 Windows 구매를 하고 인증이 된 컴퓨터에서 확인할 수 있으며 자유롭게 다른 컴퓨터로 인증 이동이 가능하다.

 

OEM 채널은 컴퓨터 제조업체에서 구매한 컴퓨터에서 확인할 수 있으며 한 컴퓨터에만 인증이 고정된다.

 

Volume 채널은 비즈니스, 교육용이면 확인이 가능하지만, 전자상거래에서 단돈 몇천원에 판매하는 라이센스에서도 발견된다. 만약 싸게 구매한 라이센스라면 비즈니스 또는 교육용 라이센스가 유출된 라이센스를 구매한 경우이며 이는 불법이고 종류에 따라서 인증이 쉽게 풀리는 경우도 발생한다. 물론 다른 컴퓨터로 인증 이동이 불가능하다.

 

채널 종류는 (Win 키 + R -> cmd -> slmgr -dli 입력) 을 순서대로 진행하면 그림 1과 같이 메세지창에서 확인이 가능하다.

 

그림 1 라이센스 채널을 확인하는 모습 (Partial Product Key는 제품 키의 마지막 부분을 가리키고 있어서 지웠다.)

 

참고자료

1. How to tell if your Windows 10 license type is OEM, Retail, or Volume

2. 윈도우 라이선스 버전 총정리

*시작하기에 앞서 본 글의 목적은 WSL에서 CUDA를 설치하는 게 목표이다. 하지만 이 과정에서 Windows 11로 업그레이드가 진행되기 때문에 업그레이드를 원하지 않는 유저는 다른 방법을 찾아봐야 한다. 그리고 단순히 Windows 11로 업그레이드가 하고 싶은 유저는 Windows 11 설치단계까지만 진행하면 된다.

 

본 글은 사용자 가이드 문서를 바탕으로 설치를 진행하고 요약한 글이다.

 

1. Windows Insider Program 등록하기

Windows Insider Program 등록 없이 바로 WSL를 설치할 수 있지만, 본인이 직접 진행해 본 결과 CUDA를 사용할 수 없었다. 아쉽지만 문서에서 요구하는 대로 설치를 진행할 수밖에 없다. (OS build 20262 or higher)

 

등록 방법은 쉽다. Settings에 들어가서 왼쪽 메뉴에서 Windows Insider Program을 클릭하고 Microsoft 계정으로 로그인해서 등록하면 끝이다. 그리고 그림 1과 같이 Insider Channel을 Dev Channel로 변경하고 Windows Update 메뉴로 들어가 업데이트를 확인해주면 자동으로 Windows 11을 다운로드하고 설치를 진행한다.

 

그림 1 Insider Channel 선택 창

 

이 과정에서 발생할 수 있는 이슈를 아래와 같이 정리했다.

Issue 1. Insider Channel이 하나밖에 없는 경우

본 이슈 해결은 유튜브 영상을 참고하였다.

이 경우에는 레지스트리를 바꿔서 채널을 바꿀 수 있다. 레지스트리 편집기를 열고(Win + R) 아래 경로로 순차적으로 접근하여 레지스트리를 수정한다.

1. Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\UI\Selection 경로에서 UIBranch의 값을 Dev로 변겅

2. Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\Applicability 경로에서 BranchName을 Dev로 변경

이 과정을 모두 끝내면 Insider Channel이 Dev로 바뀌어 있음을 확인할 수 있다.

 

그림 2 Windows 11 설치 에러

 

Issue 2. 그림 2와 같이 The PC must support TPM 2.0 에러가 발생하는 경우

이는 메인보드에서 TPM 기능을 활성화하지 않아서 발생하는 에러로 그림 3과 같이 BIOS에서 활성화가 가능하다. 모든 메인보드가 본인이 사용하는 메인보드와 같지 않기 때문에 그림 3은 참고용으로만 확인하고 TPM 기능 활성화 옵션은 자신의 메인보드 메뉴얼을 직접 검색해서 찾아야 한다.

 

그림 3 TPM 설정

 

Issue 3. 그림 2와 같이 The PC must support Secure Boot 에러가 발생하는 경우

본 이슈 해결은 유튜브 영상을 참고하였다.

이는 메인보드에서 Secure Boot 기능을 활성화 하지 않아서 발생하는 에러로 마찬가지로 BISO에서 설정이 가능하지만 이를 위해서 부팅모드를 기존 Legacy에서 UEFI로 전환해야 한다. 그리고 이 과정에서 UEFI는 GPT 파티션 스타일만 지원하기 때문에 기존 MBR에서 GPT로 파티션 스타일을 전환하는 과정도 거처야 한다.

 

1. Settings에서 Recovery 메뉴로 진입하고 Advanced Startup설정의 Restart Now를 클릭한다.

2. 재시작후 Troubleshoot -> Command Prompt 옵션을 순차적으로 클릭하고 프롬프트 창에다 "mbr2gpt.exe /convert" 입력하고 파티션 스타일을 변환한다.

3. 완료 후 컴퓨터를 재시작하고 BIOS로 진입한 후 그림 4, 5와 같이 설정을 진행하고 저장 후 재부팅을 한다. 마찬가지로 그림 4, 5 또한 참고용으로만 확인하고 자세한 메뉴 위치는 직접 검색해서 찾아봐야 한다.

 

그림 4 CSM 비활성화

 

그림 5 Secure Boot 설정

 

2. WSL 설치 및 CUDA 설치

첫 번째 과정에서 Windows 11 설치가 완료되면 그림 6과 같이 예쁜 화면을 만날 수 있다.

 

그림 6 설치가 끝난 Windows 11의 모습

 

세부적인 설치과정은 아래와 같다.

 

1. WSL을 위한 NVIDIA 드라이버 설치

 

2. WSL 설치

다음은 WSL 설치 단계로 Control Panel에서 Programs and Features 메뉴에 진입하고 Turn Windows Features On or Off를 클릭해서 그림 7과 같이 Virtual Machine Platform 과 Windows Subsystem for Linux 옵션을 켜준다.

 

그림 7 Windows 추가 기능 켜기

 

컴퓨터를 재부팅 한 후 그림 7과 같이 Microsoft Store App을 실행하고 우분투를 설치한다.

 

그림 7 Microsoft Store 에서 Ubuntu 20.04를 설치한 모습

 

3. WSL에 CUDA 설치(반드시 WSL 전용 패키지를 사용해야 한다.)

설치한 우분투를 시작하고 아래 명령어를 차례대로 입력한다.

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

 

모든 과정을 순조롭게 진행했다면 최종적으로 그림 8과 같이 WSL에서 CUDA 사용이 가능함을 확인할 수 있다.

 

그림 8 WSL에서 CUDA 버전 확인과 사용 가능함을 Pytorch로 확인하는 모습

 

마지막으로 WSL를 최신 버전으로 유지하기 위해서 그림 9와 같이 Settings의 Windows Update 메뉴의 Advanced Options에서 Receive Updates for Other Microsoft Products 옵션을 활성화 한다.

 

그림 9 WSL를 최신상태로 유지하기 위한 옵션을 활성화 하는 모습

 

vscode로 자바를 사용하면서 JavaFX를 사용하려면 수동으로 직접 해당 라이브러리를 추가 해야한다.

JavaFX 다운로드

 

설정은 이클립스에서 진행한 방식이랑 비슷하다.

 

1. 다운받은 라이브러리를 추가하고

2. vmargs 설정

 

자세한 설명은 아래 그림과 같다.

 

그림 1 아무런 설정이 안되어있는 상태

 

그림 2 클래스 경로 설정 하기

 

그림 3 가장 아래 Referenced Libraries 항목에서 Add 클릭하기

 

그림 4 압축을 해제한 JavaFX SDK 폴더 내부의 lib 폴더에 있는 jar 파일 전부 추가하기

 

그림 5 .vscode 폴더에 launch.json 파일을 만들고 본 그림과 같이 설정하기(--module-path는 본인의 경로로 입력할 것)

 

그림 6 모든 설정을 끝내면 본 그림처럼 잘 작동됨

구글 크롬을 잘 사용하다가 어느 순간 갑자기 입력하고 스크롤을 내리는데 엄청 렉이 심했다.

컴퓨터 문제인가 했는데, Edge를 켜보니 잘 되었다...

 

찾아보니 해결법을 몇 가지 얻을 수 있었고[1] 나의 경우는 다음과 같은 해결방법이 효과가 있었다.

 

그림 1. 과 같이 "크롬 설정 -> 고급 -> 가능한 경우 하드웨어 가속 사용" 을 끈다.

그림 1. 가능한 경우 하드웨어 가속 사용을 끈다.

 

참고문헌

1. Input lag fix on google chrome, Available Online: www.reddit.com/r/Stadia/comments/e87agy/input_lag_fix_on_google_chrome/ Mar 17 2021.

Relevance Feedback(RF)란 보다 더 나은 검색 결과를 얻기 위해서 초기에 얻은 검색 결과에서 연관된 결과를 다시 새롭게 입력으로 넣는 방법들을 의미하며 크게 Explicit Relevance Feedback(ERF), Implicit Relevance Feedback(IRF), Pseudo Relevance Feedback(PRF)이 있으며 PRF는 Blind Relevance Feedback(BRF)이라고도 한다 [1].

 

RF는 검색엔진이 내놓은 결과에서 관련성이 있는 결과를 피드백 해주어야 하는데 PRF는 RF와 다르게 유저와 추가적인 상호작용 없이 효과적인 검색결과를 얻는 방법을 의미한다 [2, 3].

 

이러한 PRF는 유저의 추가적인 개입이 필요가 없기 때문에 검색관련 논문들에서 많이 사용된다. PRF는 아래와 같은 과정을 거친다 [4].

 

1. 유저가 쿼리를 보낸다.

 

2. 검색엔진이 유저가 보낸 쿼리에 맞는 초기 검색 결과를 내놓는다.

 

3. 검색결과의 top-k는 연관성이 있는 결과로 간주하고 나머지는 관련성이 없다고 간주한다.

 

4. 이렇게 나온 top-k의 결과를 다시 유저 쿼리로 간주하여(Query Expansion) 다시 검색엔진에 넣고 새로운 검색 결과를 가져온다.

 

[4] 그림 1. PRF의 과정을 나타낸 그림으로 (1)에서 검색엔진이 최초로 결과를 내놓고 (2)에서 top-k결과를 가져와 관련있는 내용과 관련 없는 내용으로 나눈다. 그리고 (3)에서 관련이 있는 top-k결과를 유저쿼리로 간주하여 다시 검색엔진에 넣는다.

 

참고로 이러한 기법들은 반드시 문서(text, document)에만 적용된다는 법은 없다.(쉽지는 않지만 상상을 펼치면 곧 논문이 된다 ㅇㅅㅇ;)

 

참고문헌

1. Relevance Feedback, Available Online: en.wikipedia.org/wiki/Relevance_feedback 18 Feb 2021.

2. Relevance feedback and pseudo relevance feedback, Available Online: nlp.stanford.edu/IR-book/html/htmledition/relevance-feedback-and-pseudo-relevance-feedback-1.html 18 Feb 2021.

3. Pseudo relevance feedback, Available Online: nlp.stanford.edu/IR-book/html/htmledition/pseudo-relevance-feedback-1.html 18 Feb 2021.

4. EE448 project2: Query Expansion In class project for EE448(2020) in SJTU, Available Online: www.kaggle.com/c/ee448-project2-query-expansion/overview/description 18 Feb 2021.

나의 경우에는 리눅스를 ssh로만 접속해서 사용한다. 그런데 당연하지만 ssh로 웹서핑이 안되기에 데이터를 가져오는 다른 방법을 사용해야한다. 드롭박스와 구글드라이브는 많은 서드파티 유틸도 존재해서 그걸 사용해도 되지만 난 간편하게 사용할 수 있는 방법을 선호하는 편이라서 이번에 wget만을 사용해서 각 스토레지 클라우드로부터 데이터를 가져오는 방법에 대해서 서술하려고 한다.

 

1. google drive[1]

 

그림 1. 테스트 파일인 README.txt를 만들어 놓는다.

 

그림 2. 만들어놓은 README.txt파일의 공유링크를 만들고 전체공유로 바꾼다.

 

google drive를 위한 wget 명령어는 아래와 같고 결과는 그림 3 과 같다.(공유파일의 고유 아이디는 공유링크에서 확인 가능하다.)

$ wget --no-check-certificate "https://docs.google.com/uc?export=download&id=<공유파일의 고유 아이디>" -O "README.txt"

 

그림 3. wget 명령어를 사용하여 google drive로 부터 README.txt를 가져온다.

 

2. dropbox[2]

 

그림 4. 테스트 파일인 README.txt를 만들어 놓는다.

 

그림 5. 만들어놓은 README.txt파일의 공유링크를 만든다.(dropbox는 기본적으로 전체공유다.)

 

dropbox를 위한 wget 명령어는 아래와 같고 결과는 그림 6 과 같다.(복사한 공유링크 맨 뒷부분 ?dl=0 부분만 제거한다.)

$ wget --no-check-certificate <공유링크에서 ?dl=0 부분만 제거한다.>

 

그림 6. wget 명령어를 사용하여 dropbox로 부터 README.txt를 가져온다.

 

3. owncloud[3]

 

그림 7. 테스트 파일인 README.txt를 만들어 놓는다.

 

그림 8. 만들어놓은 README.txt파일의 공유링크를 만든다.

 

owncloud를 위한 wget 명령어는 아래와 같고 결과는 그림 9 과 같다.(복사한 공유링크 뒤에 /download 만 붙힌다.)

$ wget --no-check-certificate --content-disposition <공유링크 뒤에 /download 를 추가로 붙힌다.>

 

그림 9. wget 명령어를 사용하여 owncloud로 부터 README.txt를 가져온다.

 

참고문헌

1. wget/curl large file from google drive, Available Online: stackoverflow.com/questions/25010369/wget-curl-large-file-from-google-drive 16 Feb 2021.

2. how to download dropbox files using wget command?, Available Online: superuser.com/questions/470664/how-to-download-dropbox-files-using-wget-command 16 Feb 2021.

3. How to download a file from owncloud with curl, wget, Available Online: stackoverflow.com/questions/27602395/how-to-download-a-file-from-owncloud-with-curl-wget 16 Feb 2021.

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.

Owncloud를 사용하면서 꼭 웹을 통해서 업로드를 해야하나 생각했고 알아보니 수동으로 추가할 수 있었다.

 

방법은 다음과 같다.

  1. 먼저 추가하고 싶은 유저의 디렉토리에 파일을 mv 나 cp 로 옮기거나 복사를 한다.
  2. 다음 명령어를 실행하여 상태를 업데이트한다.(복사해서 넣는다고 알아서 인식하지 않음)

모든 유저의 디렉토리를 업데이트할 때

$ sudo -u www-data /var/www/owncloud/occ files:scan --all

특정한 유저의 디렉토리를 업데이트할 때(아래 작성된 경로는 예로 그대로 복사해서 넣지말고 자신이 업데이트하고 싶은 경로를 넣을것)

$ sudo -u www-data /var/www/owncloud/occ files:scan --path=/hcir/files/ActivityNet

* 입력할 경로는 유저의 이름부터 시작해서 입력해야한다.(위의 예로는 hcir유저의 ActivityNet을 업데이트 하고 싶다는 의미다.)

 

참고문헌

1. Manually add file to cloud and refresh file list in cloud, Available online: central.owncloud.org/t/manually-add-file-to-cloud-and-refresh-file-list-in-cloud/3264 Feb 10 2021.

+ Recent posts