작성일 댓글 31개

자작NAS – Nextcloud 설치

* 반드시 이전 글인 “Nextcloud 설치 준비”의 과정을 거치고 나서 설치해야 합니다.

1. Nextcloud 설치할 위치 선택

우선 Nextcloud를 설치할 위치를 정합니다.

아파치 서버의 기본 디렉토리는 /var/www/html 입니다. 여기에 설치해도 되고, /var/www/nextcloud 와 같은 다른 위치나 아니면 자신의 홈 디렉토리 하위에 넣어도 관계는 없습니다(제가 실제로 사용하는 서버에서는 홈디렉토리 안에서 모든 자료와 웹서버 파일을 관리합니다). 기본 디렉토리에 설치하든 다른 위치에 설치하든 소유자와 권한, 아파치 가상호스트 설정만 제대로 되어 있다면 도메인주소로 접속할 수 있습니다.

여기서는 /var/www/nextcloud 위치에 설치하는 것으로 설명하겠습니다. /var/www로 이동합니다.

$ cd /var/www

2. Nextcloud 다운로드 및 압축 해제

1) Nextcloud Server 다운로드

Nextcloud Server 파일을 다운로드합니다. 3월 21일 기준으로 11.0.2가 최신입니다. 최신 버전은 넥스트클라우드 다운로드 페이지에서 확인할 수 있습니다.

$ sudo wget https://download.nextcloud.com/server/releases/nextcloud-11.0.2.tar.bz2

명령어를 입력하면 파일을 해당 위치에 다운로드 받습니다.

2) 압축 해제

다음 명령어를 이용해 압축을 풉니다.

$ sudo tar -xvf nextcloud-11.0.2.tar.bz2

압축된 파일과 폴더가 주욱 나오면서 압축이 풀립니다.
제대로 풀렸나 조회를 하려면 ls  명령어를 입력합니다.
nextcloud-11.0.2.tar.bz2를 압축 해제하여 nextcloud 디렉터리가 보일 것입니다.

3) Nextcloud 디렉터리 소유자 및 권한 변경

다시 한번 ls 명령어를 입력해 줍니다. 이번에는 옵션을 같이 입력하겠습니다.

$ ls -l

ls는 디렉터리 안의 파일과 디렉터리를 보여주는 명령어입니다. -l 옵션은 자세한 정보를 출력하라는 뜻입니다.

소유자도 없고 소유 그룹도 없는 nextcloud 디렉터리가 보입입니다. 웹브라우저를 통해 해당 디렉터리에 접근하려면 소유자와 소유 그룹이 www-data 여야 합니다. 그리고 권한을 drwxrwxr-x로(775)로 변경해 줍니다. 다음 명령어를 순서대로 입력해 줍니다.

$ sudo chown -R www-data:www-data nextcloud
$ sudo chmod -R 775 nextcloud
$ ls -l

소유자와 소유 그룹이 www-data로, 권한이 drwxrwxr-x로 변경된 것을 확인할 수 있습니다.

3. Nextcloud를 위한 DB 생성

Nextcloud에서 사용할 데이터베이스를 생성할 차례입니다.

1) phpMyAdmin에 접속하여 root 계정으로 로그인합니다.

2) 상단 탭에서 데이터베이스를 클릭합니다.

3) 새 데이터베이스 만들기 밑의 데이터베이스명 입력 칸에 “nextcloud”를 입력하고 만들기를 클릭합니다.

데이터베이스명은 꼭 nextcloud가 아니어도 되지만 식별할 수 있는 것이어야 합니다.
이제 막 생성됐기 때문에 아무 테이블도 없습니다.

4) 왼쪽 트리 구조의 New를 클릭하여 데이터베이스 목록을 확인합니다.

데이터정렬방식이 utf8_general_ci로 생성되었습니다.

3. Apache2 서버에 도메인 등록하기

아파치 서버의 기본 디렉터리인 /var/www/html에 Nextcloud의 파일을 집어넣었다면 따로 설정할 필요 없이 도메인 주소를 입력하면 바로 접속될 것입니다.
하지만 /var/www/nextcloud 에 설치하였기 때문에 추가로 설정을 해줘야 합니다.

다음 명령어를 순서대로 입력하여 Nextcloud를 위한 설정 파일을 만들어 줍니다.

$ cd /etc/apache2/sites-available
$ sudo vi nextcloud.conf

vi 사용에 익숙치 않다면 vi 간단 사용법을 참고하세요.
빈 파일의 내용에 다음 내용을 입력합니다.

<VirtualHost *:80>

    ServerName 자신의 도메인 주소
    ServerAdmin 자신의 이메일 주소

    ServerAlias 자신의 도메인 주소
    DocumentRoot 넥스트클라우드 파일이 있는 경로

</VirtualHost>

저장한 후 설정 파일을 아파치 서버에 등록합니다.

$ sudo a2ensite nextcloud.conf

추가로 .htaccess 활성화해야 합니다. 활성화 하지 않을 경우 “.htaccess 파일이 처리되지 않아서 데이터 디렉터리와 파일을 인터넷에서 접근할 수 없을 수도 있습니다. 올바르게 서버를 구성하는 방법에 대한 자세한 내용은 설명서를 참조하시기 바랍니다.” 라는 경고 문구가 뜨게 됩니다.
다음 명령어를 입력해 줍니다.

$ sudo a2enmod rewrite

모두 마쳤으면 아파치 서버를 재시작합니다.

$ sudo service apache2 restart

4. 웹브라우저에서 설치 마무리

자신의 도메인 주소에 접속하면 다음과 같은 화면이 뜹니다.

  • 관리자 계정 만들기 – 관리자 계정을 만드는 부분입니다. 관리자의 ID와 비밀번호를 입력합니다.
  • 데이터 폴더 – nextcloud가 설치된 디렉터리의 하위 디렉터리가 기본 설정이지만 다른 곳을 정할 수도 있습니다.
    예를 들면 /home/사용자 이름/data로 변경 가능합니다. 이때 해당 폴더가 생성되어 있어야 하고 권한과 소유자 소유 그룹이 제대로 지정되어 있어야 제대로 동작합니다.
    지금은 기본 상태로 진행합니다. 나중에 데이터 폴더 변경도 다룰 것입니다.
  • 데이터베이스 사용자와 암호 – root 계정 정보를 입력하면 됩니다.
  • 데이터베이스 이름 – nextcloud라는 데이터베이스를 만들었으므로 nextcloud를 입력합니다.
    다른 이름으로 했다면 그 이름을 입력합니다. 생각이 안 나면 phpmyadmin에 접속하여 데이터베이스 목록을 확인합니다.
  • localhost – 변경하지 않습니다.

다 입력했다면 [설치 완료] 버튼을 눌러줍니다. 생각보다 시간이 오래 걸릴 수 있습니다. 느긋하게 기다려 봅니다.

설치가 완료되면 다음과 같은 화면이 나타납니다.

Nextcloud 설치 끝.

작성일 댓글 남기기

우분투 자작 NAS – 8강, Apache2 가상호스트

xianchoi.kr이 나스와 연결되었다.
cloud.xianchoi.kr도 나스와 연결되었다.
blog.xianchoi.kr도 나스와 연결되었다.
같은 나스이기 때문에 할당된 아이피 주소가 동일하다.

원래는 하나의 아이피에 하나의 도메인만 연결이 가능하지만,
가상호스트는 하나의 아이피 주소에 여러 개의 도메인을 연결할 수 있게 해준다.

Apache2 가상호스트 설정하기

역시 ssh에서 작업한다.

연결할 디렉토리를 Apache 서버에 등록

우선 가상호스트에 연결할 디렉토리를 Apache 서버에 등록해줘야 한다.

sudo vi /etc/apache2/apache2.conf

중간 쯤으로 내리면 아래와 같은 폼의 내용이 나온다.
다음 내용을 복사하여 해당사항에 맞게 수정해서 중간에 대충 삽입한다.

<Directory 연결할경로>
    Options FollowSymlinks
    AllowOverride All
    Require all granted
</Directory>

그리고 이제 가상호스트 정보를 포함한 사이트 설정을 추가하여 Apache 서버에 사이트를 등록한다.

가상호스트를 위한 사이트 설정

기본 사이트 설정을 복사해서 새로운 사이트 설정을 만들어준다.

cd /etc/apache2/sites-available
sudo cp 000-default.conf 사이트명.conf
sudo vi /etc/apache2/sites-available/사이트명.conf

해당사항에 맞게 ServerName, ServerAlias, ServerAdmin, DocumentRoot를 수정한다.
다음은 실제 owncloud를 위해 사용하고 있는 설정이니 참고한다.

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerName cloud.xianchoi.kr (연결할 도메인 주소를 쓴다)
    ServerAlias cloud.xianchoi.kr

    ServerAdmin 이메일주소
    DocumentRoot 연결할 폴더 경로

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Apache 서버에 사이트 등록

설정을 마쳤으니 사이트를 등록하고 아파치 서버를 재시작 해준다.

sudo a2ensite 사이트명.conf
sudo service apache2 restart

이것이 앞으로 여러 곳에서 유용하게 쓰일 용도에 따른 서브도메인을 연결하는 기본 과정이다.

왜 가상호스트를 이용해야 하는가?

내가 만약 owncloud를 설치했다. 그렇다면 접속하는 주소로써
xianchoi.kr/owncloud
cloud.xianchoi.kr
이 둘 중에 어느 것이 더 좋겠는가?

서브도메인을 활용하는 것이 더 좋다고 생각된다. 서비스에 따라서 3차 도메인으로 구분을 짓는 것이 웹서버 운용에 있어서 편리하다.

xianchoi.kr/blog, xianchoi.kr/cloud, xianchoi.kr/wiki 보다는
blog.xianchoi.kr, cloud.xianchoi.kr, wiki.xianchoi.kr 이 미관상으로도 좋다.

굳이 서브도메인으로 연결하지 않아도 되겠다면 이 부분은 지나가도 상관없다.