서버 설정 · 4 min read · Jan 23, 2026

CentOS 6.5에서 SSL 및 Nginx로 ownCloud 설치하기

CentOS 6.5에서 SSL 및 Nginx로 ownCloud 설치하기

버전: 3.0
저자: Aaron

CentOS는 많은 패키지를 업그레이드했으며, 제가 1년 전에 작성한 게시물은 더 이상 CentOS 6.5의 최신 업데이트에서 작동하지 않습니다.

저는 조사해보았고, 이것이 2014년에 nginx, postgresql 및 ssl로 centos에 owncloud를 설치하는 방법에 대한 첫 번째 튜토리얼이 될 것 같습니다. 요즘 nginx로 CentOS와 owncloud 설치를 찾기 힘들 것입니다. 대부분의 사람들은 간단한 문제를 해결하는 방법을 모르기 때문입니다.

제 서버가 영향을 받았고, 이것이 오늘 이 게시물을 작성하게 된 이유입니다.

EPEL 및 CentOS 저장소의 패키지는 구식이며, nginx, postgresql 및 owncloud는 조금 더 최신 패키지를 요구합니다. 당신은 파일에 접근하지 못하고 로그인 페이지에만 머물게 될 것이며, 무슨 일이 일어났는지 스스로에게 물어보게 될 것입니다. 로그 파일은 문제가 어디에서 오는지 보여주지 않으며 owncloud 자체도 마찬가지입니다.

owncloud 요구 사항은

PostgreSQL >= 9.0, 하지만 EPEL에는 8.8이 있으며, 최소 php 5.3.3이 필요하지만 해당 버전에서는 작동하지 않습니다. 또한 이러한 최신 패키지는 최신 안정적인 nginx 버전을 요구합니다.

우리가 해야 할 첫 번째 일은 모든 mysql 라이브러리를 제거하는 것입니다.

yum remove mysql* mysql-server mysql-devel mysql-libs

일반적으로, 우리는 epel, remi 및 새로운 패키지인 최신 postgresql과 같은 제3자 저장소를 설치할 것입니다.

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm

epel 저장소를 편집하고 상단이 enabled=1인지 확인합니다.

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

remi 저장소도 동일하게 편집하되, php 버전 5.6을 활성화해야 합니다.

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


nginx 저장소 구성 파일을 생성합니다.

vi /etc/yum.repos.d/nginx.repo

그리고 다음을 추가합니다:

[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1

CentOS 서버를 업데이트하여 이러한 제3자 저장소를 추가합니다.

yum update

owncloud 요구 사항을 충족하기 위해 다음 패키지를 설치합니다:

yum install nginx postgresql93 postgresql93-libs postgresql93-server wget php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql php-pdo

PostgreSQL을 시작하고, nginx를 임시로 시작한 후 chkconfig로 시스템 시작 서비스에 추가합니다.

service postgresql-9.3 initdb  
service postgresql-9.3 start   
chkconfig postgresql-9.3 on  
service nginx start   
chkconfig nginx on  
service nginx stop

새 PostgreSQL 사용자와 데이터베이스를 생성합니다.

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

시간대를 확인하고 기억합니다.

cat /etc/sysconfig/clock

php 구성 파일을 편집합니다.

vi /etc/php.ini
post_max_size = 2G
cgi.fix_pathinfo = 0
upload_max_filesize = 2G
date.timezone = "your/timezone"

tcp 대신 unix 소켓을 사용하도록 php-fpm 구성 파일을 편집합니다.

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

listen이 /var/run/php-fpm/php-fpm.sock을 가리키지 않도록 합니다.

listen = 127.0.0.1:9000

php-fpm 서비스를 시작합니다.

chkconfig php-fpm on  
service php-fpm start

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

vi /var/lib/pgsql/9.3/data/pg_hba.conf

ident을 비밀번호로 변경합니다 - 다음 그림에서 커서를 주목하세요:

postgresql 데이터베이스를 재시작합니다 service postgresql-9.3 restart

SSL 인증서를 저장할 빈 폴더를 생성합니다.

cd /etc/nginx  
mkdir -p cert

apache 가상 호스트에 익숙하다면, 다음에 생성해야 할 파일은 바로 그것입니다.

cd conf.d
vi cloud.conf
upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80;
        server_name 10.10.10.110; # 도메인 이름이나 내부 서버 IP로 교체
        return 301 https://$server_name$request_uri;  # https 강제
}


server {
        listen 443 ssl;
        server_name 10.10.10.110; # 도메인 이름이나 내부 서버 IP로 교체

        ssl_certificate /etc/nginx/cert/server.crt;
        ssl_certificate_key /etc/nginx/cert/server.key;

        # 설치의 루트 경로
        root /var/www/owncloud/;

        client_max_body_size 10G; # 최대 업로드 크기 설정
        fastcgi_buffers 64 4K;

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

        index index.php;
        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;

        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }

        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;
        }

        location / {
                # 다음 두 규칙은 webfinger와 함께 필요합니다.
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                try_files $uri $uri/ index.php;
        }

        location ~ ^(.+?\.php)(/.*)?$ {
                try_files $1 = 404;

                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
                fastcgi_param PATH_INFO $2;
                fastcgi_param HTTPS on;
                fastcgi_pass php-handler;
        }

        # 선택 사항: 정적 자산에 긴 EXPIRES 헤더 설정
        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                # 선택 사항: 자산에 대한 접근 로그 기록 안 함
                access_log off;
        }
}

저는 이 nginx 구성 파일을 제 웹사이트에 업로드했으므로, 수동으로 작성하는 대신 wget http://linux.sytes.net/img/nginx1-6.conf.txt를 입력하고 cloud.conf와 같은 이름으로 바꾸세요.

위의 nginx “가상 호스트”에서 지정한 대로, 우리의 ownCloud 서버는 SSL을 사용할 것이므로, 인증서를 생성해봅시다.

cd ..  
cd cert  
openssl req -x509 -nodes -sha384 -days 3650 -newkey rsa:4096 -keyout server.key -out server.crt  
chmod 600 server.key  
chmod 600 server.csr

다음으로, owncloud 아카이브를 다운로드하고 추출한 후 owncloud 폴더에 대한 권한을 설정합니다. 개발 버전의 owncloud를 다운로드할 것입니다.

cd /var/www  
wget http://download.owncloud.org/community/daily/owncloud-daily-master.tar.bz2  
tar xjf owncloud-daily-master.tar.bz2  
mkdir -p owncloud/data  
chmod 770 owncloud/data  
chmod 777 owncloud/config/  
chown -R root:apache owncloud  
rm -rf owncloud-daily-master.tar.bz2

서버 포트 80 및 443에 대한 수신 tcp 연결을 허용합니다. 당신이나 다른 사람이 서버 내부 IP를 호출하면 https://yourserverinternalip로 리디렉션됩니다. 이는 이전에 nginx “가상 호스트”에서 지정했기 때문입니다.

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

마지막으로 PostgreSQL을 재시작하고, 새로운 구성으로 nginx를 시작합니다:

service postgresql-9.3 restart  
service nginx start

이제 모든 것이 완료되었습니다. 브라우저를 열고 서버 IP를 입력하세요. 원하는 로그인 이름과 비밀번호를 선택하세요.

Share: X/Twitter LinkedIn

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

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