ownCloud 설치 · 8 min read · Jan 22, 2026

당신의 클라우드, 당신의 데이터, 당신의 방식! - ownCloud 4.0 CentOS 6.2 + nginx + PostgreSQL에서 설치하기

당신의 클라우드, 당신의 데이터, 당신의 방식! - ownCloud 4.0 CentOS 6.2 + nginx + PostgreSQL에서 설치하기

이 문서는 “ownCloud 커뮤니티”에서 tar 패키지를 사용하여 nginx 및 php-fpm과 PostgreSQL 데이터베이스를 백엔드로 하는 CentOS 6.2 기반 웹 서버에 ownCloud를 설치하고 설정하는 방법을 설명합니다. 다른 배포판에서는 소프트웨어 전제 조건 설치 절차에 약간의 변경이 있을 수 있습니다. 이 가이드는 제품 설치를 도울 뿐만 아니라 특정 사항이 그렇게 수행되는 이유를 이해하는 데도 도움이 됩니다(이는 저처럼 리눅스를 막 시작한 사용자에게 가장 유용합니다).

ownCloud란?

파일/연락처/일정 공유 도구로, 제 관점에서 Dropbox와 GroupOffice의 장점을 잘 결합하고 있으며(현재 이메일 통합 제외), Alfresco나 Sharepoint처럼 복잡하거나 무겁지 않습니다.

개발자 섹션에 대한 링크:

이것이 당신에게 작동할 것이라고 보장하지 않습니다. 나중에 소프트웨어(전제 조건 및 주요 소프트웨어)에 변경이 있을 수 있으며, 이로 인해 이 튜토리얼에서 언급된 절차가 성공적으로 완료되지 않을 수 있습니다.
P.S. 추가된 모든 버그는 제 것입니다. 댓글을 사용하거나 IRC를 탐색하세요.

사전 참고

이 튜토리얼에서는 다음을 사용합니다:

  • Centos 6.2 설치 미디어
  • 호스트 이름: owncloud.example.com
  • IP 주소: 192.168.1.100
  • 라우터 주소: 192.168.1.1
  • 넷마스크: 255.255.255.0
  • 서버가 공용 인터넷에 연결되어 있다고 가정합니다.
  • SSH를 통해 원격으로 서버를 관리하기 위해 컴퓨터를 사용합니다(Windows의 putty 사용), 서버가 옆에 있거나 기본 운영 체제 아래에서 실행되는 가상 머신으로 가지고 있더라도 말입니다.
  • GNU vim을 기본 텍스트 편집기로 사용합니다. 하지만 원하는 다른 편집기를 사용해도 괜찮습니다.

요구 사항

작동하는 깨끗한(CentOS 6.2의 최소) 설치가 필요합니다(x86 또는 x86_64는 중요하지 않습니다). 개인적으로 x86_64 버전을 사용하며, 여러분도 그렇게 하기를 강력히 권장합니다.

첫 번째 단계

서버 콘솔에 root로 로그인합니다. [root@owncloud ~]# 프롬프트에 있게 됩니다.

저는 특정 설정을 선호하는데, 이는 완전히 선택 사항이지만 나중에 유용할 수 있습니다. 프롬프트에서 날짜, 시간, 서버 이름 및 현재 폴더가 포함된 색상 출력을 표시하도록 터미널을 설정합니다. 또한 날짜/시간과 함께 명령 기록을 표시하도록 설정합니다. 기본 기록 크기 값을 늘리기도 합니다.

이를 위해 다음을 실행합니다:

vi ~/.bash_profile

언급된 줄을 export PATH 지시문 뒤에 추가합니다. 잘 모르신다면, “i”를 눌러 삽입 모드로 들어가고, “ESC”를 눌러 나옵니다. Vi는 vi입니다 :)

# 50,000개의 명령을 보관할 수 있는 기록 크기 및 파일 크기를 10배 더 크게 설정
export HISTSIZE=50000
export HISTFILESIZE=500000
# 예시: "24.05.2012 - 14:28:56"와 같은 날짜와 함께 기록 표시
export HISTTIMEFORMAT="%d.%m.%Y - %H:%M:%S "
# "ls" 명령의 자동 색상 출력
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
# 예시: "Thu May 24 2012  14:28:56 owncloud.example.com of root @ ~]"와 같이 표시하도록 프롬프트 설정
# 날짜, 시간 및 위치를 다르게 색칠합니다. 모든 입력 텍스트를 기본값으로 설정합니다.
PS1="\e[1;37m\][\e[1;36m\] \d \D{%Y}  \e[1;31m\]\t \e[1;37m\] \H of \u @ \W] \033[00m\]"

파일을 저장하고 종료합니다. 다시 말하지만, 잘 모르신다면, 삽입 모드 외부에서 “:wq”를 입력하고 Enter를 눌러 저장하고 종료하거나 “ZZ”를 눌러 동일하게 수행합니다. 변경 사항을 적용하기 위해 터미널에 다시 로그인하려면 다음을 실행합니다:

exit

네트워킹

설치 중에 정적 IP 주소를 설정하지 않았다면, DHCP가 활성화된 라우터가 있다고 가정하고 지금 설정해야 합니다. 그렇지 않으면 다음 단계로 진행합니다.

vi /etc/sysconfig/network-scripts/ifcfg-eth0

언급된 줄만 변경하거나 추가합니다.

BOOTPROTO="none"
NETWORK="192.168.1.0"
NETMASK="255.255.255.0"
IPADDR="192.168.1.100"
GATEWAY="192.168.1.1"

저장하고 종료합니다. 그런 다음 네트워크를 재시작합니다:

service network restart

네트워크가 재구성되었는지 확인하려면 다음을 실행합니다:

ifconfig

이제 root로 192.168.1.100의 서버에 ssh로 접속할 수 있어야 합니다. 하지만 아직 그렇게 하지 마세요. 먼저 다음 단계를 완료하세요.

서버 보안

더 진행하기 전에, 서버가 실제로 인터넷에 연결되어 있다고 가정했으므로 보안을 설정해야 합니다. 우리는 세 가지 작업을 수행할 것입니다.

  • ssh-server를 재구성하여 root 로그인을 허용하지 않도록 하고 기본 포트 22를 덜 일반적인 다른 포트(예: 60606)로 변경합니다.
  • iptables를 설정하여 새 포트에서 수신 연결을 허용합니다.
  • ssh를 통해 로그인할 수 있도록 첫 번째 시스템 사용자를 추가합니다.
  1. 원격 로그인 보안

    콘솔에서 서버에 아직 로그인하지 않았다면(즉, ssh가 아닌 로컬 콘솔에서), root로 로그인한 후 다음을 실행합니다:
    vi /etc/ssh/sshd_config

변경되지 않은 기본 파일의 13번째 줄에 Port 22 지시문이 있습니다. 이를 복제하고 포트 번호를 60606으로 변경한 후 주석을 제거합니다.
그런 다음 PermitRootLogin yes 지시문을 찾아서 복제하고 값을 no로 변경한 후 주석을 제거하고 파일을 저장합니다. 아, 강조 표시를 끄려면 “:noh”를 입력하세요.
그 후 sshd를 재시작합니다:

service sshd restart
  1. iptables 설정

    먼저 기존 iptables를 확인합니다:

    iptables -L -v --line-numbers

    기본 설치에서 4번 위치에 기본 ssh 포트에서 새로운 tcp 연결을 수락하는 지시문이 있을 것입니다. 이를 제거해야 하므로 다음을 실행합니다:

    iptables -D INPUT 4

    이제 60606 포트로의 연결을 허용해야 합니다. 다음을 실행합니다:

    iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 60606 -j ACCEPT

    마지막으로 현재 iptables 상태를 저장하려면 다음을 실행합니다:

    service iptables save   
    service iptables restart
  2. 첫 번째 사용자 추가

    이제 모든 것이 좋지만 한 가지 문제가 있습니다. root가 허용되지 않으므로 ssh에서 차단되었습니다. 아직 시스템 사용자가 없기 때문입니다. 이를 수정할 시간입니다:

    useradd -c "ownCloud 시스템 사용자" -m -n cloudadmin

    이 사용자에 대한 비밀번호를 설정합니다:

    passwd cloudadmin

    완료되었습니다. 첫 번째 명령에서 사용자에 대한 비밀번호를 설정할 수 있지만, 이렇게 하면 비밀번호 값이 터미널 창에 입력되는 동안 표시되고 root 사용자의 .bash_history에 저장되므로 바람직하지 않습니다.
    이제 로컬 컴퓨터의 터미널 창에서 다음 명령을 실행하여 ssh로 로그인할 수 있습니다:

    ssh [email protected] -p60606

사전 설정 단계

소프트웨어 설치는 대부분의 경우 매우 간단하며 초기 설치 시 대부분을 ‘확인’할 수 있지만, 저는 수동으로 작업하는 것을 선호합니다.
설치를 섹션으로 나누는 의도적인 것입니다.

  1. 슈퍼유저로 로그인

    현재 콘솔 프롬프트에서 cloudadmin 사용자로 있어야 합니다. root 권한을 얻으려면 다음을 실행합니다:

    su -
  2. 소프트웨어 저장소

    원하는 소프트웨어를 사용하려면 두 개의 저장소가 필요합니다.
    첫 번째 EPEL을 실행합니다:

    rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-6.noarch.rpm

    아니요, i386은 실수가 아닙니다. 32비트 및 64비트 시스템 모두에 대해 동일합니다.
    그런 다음 Remi를 실행합니다:

    rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi   
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

    이제 epel 및 remi 저장소를 확인하고, 없으면 enabled=1로 설정합니다:

    vi /etc/yum.repos.d/epel.repo   
    vi /etc/yum.repos.d/remi.repo

    마지막으로 시스템을 업데이트합니다. 새로 설치된 CentOS도 먼저 업데이트가 필요할 수 있습니다. 다음을 실행합니다:

    yum update -y
  3. 정밀 시간

    세상과 동기화되는 것이 좋습니다. 다음을 실행합니다:

    yum install ntp   
    service ntpd start   
    chkconfig ntpd on   
    tpd
  4. 기타 도구들

    제 삶을 조금 더 쉽게 만들기 위해, 저는 vi 대신 vim을, top 대신 htop을, 터미널 내에서 빠르게 테스트하기 위해 elinks를, 그리고 좋은 이중 창 파일 관리자로서 mc를 사용합니다. wget은 파일을 다운로드하는 데 필요하고, man은 거의 모든 것을 읽고 싶을 때 필수적입니다. 다음을 실행합니다:

    yum install vim htop elinks mc wget man -y

ownCloud 설정

  1. 소프트웨어 전제 조건

    여러 가지 php 관련 패키지를 설치합니다. 다음을 실행합니다:

    yum install php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql

    php.ini를 편집합니다. 다음을 실행합니다:

    vim /etc/php.ini

    변경해야 할 지시문이 네 개 있습니다.
    첫 번째는 736번째 줄에 있는 post_max_size 지시문입니다.
    두 번째는 848번째 줄에 있는 cgi.fix_pathinfo 지시문입니다.
    세 번째는 885번째 줄에 있는 upload_max_filesize 지시문입니다.
    마지막은 956번째 줄에 있는 date.timezone 지시문으로, 서버의 위치에 따라 수정합니다.

    [...]
    post_max_size = 64M
    [...]
    cgi.fix_pathinfo = 0
    [...]
    upload_max_filesize = 64M
    [...]
    date.timezone = "Europe/Prague"
    [...]

    잘 모르신다면, 다음을 실행하여 시간대 이름을 찾을 수 있습니다:

    cat /etc/sysconfig/clock

    다음으로 php-fpm이 tcp 스택 대신 unix 소켓을 사용하도록 구성합니다. 다음을 실행합니다:

    vim /etc/php-fpm.d/www.conf

    12번째 줄에서 다음과 같이 설정합니다:

    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm/php-fpm.sock

    php-fpm을 시작합니다:

    chkconfig php-fpm on   
    service php-fpm start
  2. 백엔드 - PostgreSQL

    설치 및 설정을 위해 다음을 실행합니다:

    yum install postgresql postgresql-libs postgresql-server   
    service postgresql initdb   
    service postgresql start   
    chkconfig postgresql on

    postgres 시스템 사용자로 로그인하여 데이터베이스 사용자, 데이터베이스를 생성하고 권한을 부여합니다:

    su - -c "psql" postgres   
    CREATE USER clouduser WITH PASSWORD 'userpass';   
    CREATE DATABASE clouddb OWNER clouduser ENCODING 'UTF8';   
    GRANT ALL PRIVILEGES ON DATABASE clouddb TO clouduser;   
    \q

    postgresql 구성 파일을 수정하여 비밀번호 로그인을 허용합니다:

    vim /var/lib/pgsql/data/pg_hba.conf
  • 다음을 검색합니다:
    # IPv4 local connections:   
    host all all 127.0.0.1/32 ident
  • 이를 다음과 같이 수정합니다:
    # IPv4 local connections:   
    host all all 127.0.0.1/32 password
    이제 데이터베이스를 재시작합니다:
    service postgresql restart
  1. nginx 웹 서버

    설치하고 부팅 시 시작하도록 설정한 후 중지합니다:

    yum install nginx   
    service nginx start   
    chkconfig nginx on   
    service nginx stop

    owncloud 웹사이트를 위한 구성 파일을 준비합니다:

    vim /etc/nginx/conf.d/owncloud.conf
    # http를 https로 리디렉션합니다.
    server {
    listen 80;
    server_name owncloud.example.com;
    rewrite ^ https://$server_name$request_uri? permanent;  # https 강제
    }
    # owncloud (ssl/tls)
    server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/certs/server.crt;
    ssl_certificate_key /etc/nginx/certs/server.key;
    server_name owncloud.example.com;
    root /var/www/owncloud;
    index index.php;
    client_max_body_size 64M; # 최대 업로드 크기 설정
    # 직접 접근 차단
    location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
     deny all;
    }
    # 기본 시도 순서
    location / {
     try_files $uri $uri/ @webdav;
    }
    # owncloud WebDAV
    location @webdav {
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
    }
    # php 활성화
    location ~ \.php$ {
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
    }
    }

    이제 서버를 위한 인증서를 생성합시다. 프롬프트에서 질문에 대해 설정에 따라 답변합니다:

    mkdir -p /etc/nginx/certs/   
    cd /etc/nginx/certs/   
    openssl genrsa -des3 -out server.key 1024   
    openssl req -new -key server.key -out server.csr   
    cp server.key server.key.orig   
    openssl rsa -in server.key.orig -out server.key   
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    새 구성을 활성화하기 위해 nginx를 다시 로드합니다:

    service nginx reload
  2. ownCloud 파일 및 디렉토리

    ownCloud 설치는 아카이브를 다운로드하고 압축을 푸는 것으로 구성되며, 서버 측에서 몇 가지 조정이 필요합니다. 다음을 실행합니다:

    cd /tmp   
    wget http://download2.owncloud.org/releases/owncloud-4.0.0.tar.bz2   
    tar xjf owncloud-4.0.0.tar.bz2   
    mv owncloud /var/www/   
    mkdir -p /var/www/owncloud/data   
    chmod 770 /var/www/owncloud/data   
    chown -R root:apache /var/www/owncloud

    마지막 명령에서 apache를 그룹으로 사용하는 것은 오류가 아닙니다. php-fpm은 기본적으로 apache 사용자로 실행됩니다.

  3. 웹사이트 접근

    웹사이트에 접근할 수 있도록 포트 443을 열어야 합니다. 다음을 실행합니다:

    iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 443 -j ACCEPT   
    service iptables save   
    service iptables restart

테스트 실행

브라우저를 통해 https://owncloud.example.com으로 이동하여 설치 절차를 완료합니다.

관리자 사용자 이름과 비밀번호를 선택하고 PostgreSQL을 데이터베이스 백엔드로 선택한 후 데이터베이스 연결 설정에 적절한 값을 입력합니다.

즐기세요.

문제 해결

로그 파일은 다음 위치에 있습니다:

/var/www/owncloud/data/owncloud.log
/var/log/php-fpm/www-error.log
/var/log/nginx/access.log
/var/log/nginx/error.log

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.