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처럼 복잡하거나 무겁지 않습니다.
개발자 섹션에 대한 링크:
- 제품 홈페이지: http://owncloud.org/
- IRC: http://webchat.freenode.net/?channels=owncloud
- 지원: http://owncloud.org/support/
이것이 당신에게 작동할 것이라고 보장하지 않습니다. 나중에 소프트웨어(전제 조건 및 주요 소프트웨어)에 변경이 있을 수 있으며, 이로 인해 이 튜토리얼에서 언급된 절차가 성공적으로 완료되지 않을 수 있습니다.
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를 통해 로그인할 수 있도록 첫 번째 시스템 사용자를 추가합니다.
원격 로그인 보안
콘솔에서 서버에 아직 로그인하지 않았다면(즉, ssh가 아닌 로컬 콘솔에서), root로 로그인한 후 다음을 실행합니다:vi /etc/ssh/sshd_config
변경되지 않은 기본 파일의 13번째 줄에 Port 22 지시문이 있습니다. 이를 복제하고 포트 번호를 60606으로 변경한 후 주석을 제거합니다.
그런 다음 PermitRootLogin yes 지시문을 찾아서 복제하고 값을 no로 변경한 후 주석을 제거하고 파일을 저장합니다. 아, 강조 표시를 끄려면 “:noh”를 입력하세요.
그 후 sshd를 재시작합니다:
service sshd restartiptables 설정
먼저 기존 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첫 번째 사용자 추가
이제 모든 것이 좋지만 한 가지 문제가 있습니다. root가 허용되지 않으므로 ssh에서 차단되었습니다. 아직 시스템 사용자가 없기 때문입니다. 이를 수정할 시간입니다:
useradd -c "ownCloud 시스템 사용자" -m -n cloudadmin이 사용자에 대한 비밀번호를 설정합니다:
passwd cloudadmin완료되었습니다. 첫 번째 명령에서 사용자에 대한 비밀번호를 설정할 수 있지만, 이렇게 하면 비밀번호 값이 터미널 창에 입력되는 동안 표시되고 root 사용자의 .bash_history에 저장되므로 바람직하지 않습니다.
이제 로컬 컴퓨터의 터미널 창에서 다음 명령을 실행하여 ssh로 로그인할 수 있습니다:ssh [email protected] -p60606
사전 설정 단계
소프트웨어 설치는 대부분의 경우 매우 간단하며 초기 설치 시 대부분을 ‘확인’할 수 있지만, 저는 수동으로 작업하는 것을 선호합니다.
설치를 섹션으로 나누는 의도적인 것입니다.
슈퍼유저로 로그인
현재 콘솔 프롬프트에서 cloudadmin 사용자로 있어야 합니다. root 권한을 얻으려면 다음을 실행합니다:
su -소프트웨어 저장소
원하는 소프트웨어를 사용하려면 두 개의 저장소가 필요합니다.
첫 번째 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정밀 시간
세상과 동기화되는 것이 좋습니다. 다음을 실행합니다:
yum install ntp service ntpd start chkconfig ntpd on tpd기타 도구들
제 삶을 조금 더 쉽게 만들기 위해, 저는 vi 대신 vim을, top 대신 htop을, 터미널 내에서 빠르게 테스트하기 위해 elinks를, 그리고 좋은 이중 창 파일 관리자로서 mc를 사용합니다. wget은 파일을 다운로드하는 데 필요하고, man은 거의 모든 것을 읽고 싶을 때 필수적입니다. 다음을 실행합니다:
yum install vim htop elinks mc wget man -y
ownCloud 설정
소프트웨어 전제 조건
여러 가지 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-pgsqlphp.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.conf12번째 줄에서 다음과 같이 설정합니다:
;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sockphp-fpm을 시작합니다:
chkconfig php-fpm on service php-fpm start백엔드 - PostgreSQL
설치 및 설정을 위해 다음을 실행합니다:
yum install postgresql postgresql-libs postgresql-server service postgresql initdb service postgresql start chkconfig postgresql onpostgres 시스템 사용자로 로그인하여 데이터베이스 사용자, 데이터베이스를 생성하고 권한을 부여합니다:
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; \qpostgresql 구성 파일을 수정하여 비밀번호 로그인을 허용합니다:
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 passwordservice postgresql restart
nginx 웹 서버
설치하고 부팅 시 시작하도록 설정한 후 중지합니다:
yum install nginx service nginx start chkconfig nginx on service nginx stopowncloud 웹사이트를 위한 구성 파일을 준비합니다:
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 reloadownCloud 파일 및 디렉토리
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 사용자로 실행됩니다.
웹사이트 접근
웹사이트에 접근할 수 있도록 포트 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
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.