앞서 이야기했듯이 필자의 NAS는 DDNS를 사용하고 있기 때문에 외부(윈도우)에서 Samba 접속이 불가능하다.
그런고로 로컬에서는 Samba로, 리모트에서는 ownCloud로 파일에 접근하려 한다.
ownCloud 외에도 많은 선택지가 있지만, 필자는 그냥 편하게 사용할 목적으로 ownCloud를 선택했다.
아무래도 속도가 빠른데에다 간편한게 좋지 않을까 싶었다.
설치를 위해 아래 글들을 참고하였다.
https://doc.owncloud.org/server/10.4/
http://blog.miyam.net/60
https://www.lesstif.com/pages/viewpage.action?pageId=22643090
필자는 CentOS7.7 환경에서 OwnCloud10.4를 설치하였다.
추후에 SSL 인증서를 받아 https로 서비스할 예정이며 (블로그글 참조)
일단은 설치하고 로컬 디렉터리를 연결하는데까지만 진행해보았다.
1. ownCloud 설치
웹서비스니 먼저 APM을 설치해야 한다. (Apache + PHP + MySQL)
당연히 버전 종속성이 있다.
특정 버전의 ownCloud를 설치하기 위해서는 특정 버전의 APM을 설치하는 것이 강력히 권장된다.
필자는 ownCloud를 /var/www/ownCloud에 설치하였다.
이후 설치과정은 모두 이 경로를 대상으로 이루어진다.
설치에 사용한 버전은 다음과 같다.
- ownCloud 10.4
- PHP 7.2 (Webtatic) – 강력히 권장
- Apache 2.4
- MariaDB 10.4
PHP 설치
먼저, PHP 설치는 편한대로 하면 된다.
설치는 이 블로그를 따라하였다.
아래의 커맨드로 설치를 끝낸 후 /etc/php.ini에서 php 설정을 입맛에 맞추면 된다.
다만 max_upload_size와 max_input_time, max_execution_time은 늘려주는게 좋다.
자세한 내용이 ownCloud Docs에 나와있다.
$ yum install epel-release $ rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm $ yum install mod_php72w php72w-cli php72w-bcmath php72w-gd php72w-mbstring php72w-mysqlnd php72w-pear php72w-xml php72w-xmlrpc php72w-process
Apache
Apache는 ownCloud Docs에서 언급을 하지 않아 최신 버전으로 설치했다.
참고로 Apache는 httpd와 동일하다.
다만 CentOS에서는 httpd로, Ubuntu에서는 apache로 불린다.
이제 Apache와 ownCloud를 연동시켜야 한다.
CentOS의 경우 보통 httpd 설정을 /etc/httpd/에서 하는데, 버전이나 환경에 따라 다를 수 있다.
먼저 /etc/httpd/conf/httpd.conf에 아래 구문을 넣어 conf를 override할 수 있게 하자.
<Directory /var/www/owncloud> AllowOverride All </Directory>
이후 site-available에 ownCloud.conf를 만들어 아래와 같이 설정을 등록해야 한다.
$ sudo /etc/httpd/conf/site-available $ sudo /etc/httpd/conf/site-enabled $ sudo vim /etc/httpd/conf/site-available/owncloud.conf
Alias /owncloud "/var/www/owncloud/" <Directory /var/www/owncloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> </Directory>
이후, 만들어진 설정파일을 site-enabled에 링크한다.
$ sudo ln -s /etc/httpd/conf/sites-available/owncloud.conf /etc/httpd/conf/sites-enabled/owncloud.conf
그리고 아래와 같은 커맨드로 부팅시 자동실행되게 만든다.
$ sudo systemctl enable httpd $ sudo systemctl start httpd
ownCloud Docs에서는 다음의 apache 모듈을 설치할 것을 권장한다.
- headers
- env
- dir
- mime
- unique_id
debian 계열에서는 모듈 설치를 위해 a2enmod라는 훌륭한 툴을 제공해주지만, CentOS는 그렇지 않다.
그런고로 약간 기나긴 여정을 거쳐야 한다.
한가지 다행인 점은 필자의 환경에서는 아래의 설정들이 모두 default였기 때문에 따로 설정할 필요없이 다음단계로 넘어갔다.
우선 /etc/httpd/conf.module.d/00-base.conf에 다음과 같은 커맨드가 있는지 확인한다.
CentOS7은 mod_rewrite가 default로 설정되어있으나, 만약 없다면 추가해주고 httpd를 재시작해주자 (systemctl restart httpd)
LoadModule rewrite_module modules/mod_rewrite.so
이후에는 Apache Docs에서 상기된 모듈을 찾아 00-base.conf에 위의 포맷대로 모두 넣어주고 apache를 재시작해줘야 한다.
MariaDB
필자는 MySQL 대신 MariaDB 10.4를 설치하였다.
설치에는 제타위키를 참고하였다.
먼저 다음과 같이 repo를 설정한다.
$ vi /etc/yum.repos.d/MariaDB.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
그 후 yum install MariaDB를 통해 DB를 설치한다.
설치한 직후는 DB가 죽어있기 때문에 먼저 DB를 살려야 한다.
그리고 root 설정과 ownCloud용 계정 설정을 해주면 된다.
$ sudo systemctl start mariadb $ sudo /usr/bin/mysqladmin -u root password 'P@ssw0rd'
당연히 ‘는 비밀번호를 위해 반드시 쳐야하는 포맷이고, P@ssw0rd자리에 원하는 비밀번호를 입력하면 된다.
history에 비밀번호가 남아있으니 history -c로 history를 지워주자.
> create database owncloud character set utf8 collate utf8_bin; > grant all privileges on owncloud.* to 'owncloud'@'localhost' identified by 'P@ssw0rd'; > flush privileges;
ownCloud
이후 ownCloud를 설치한다.
설치 파일은 공식 홈페이지에서 받을 수 있으며, 필자는 tarball(tar.gz2)를 받아 사용하였다.
참고로, 아래와 같이 curl를 이용하면 간단히 받을 수 있다
$ curl -o owncloud https://download.owncloud.org/community/owncloud-10.4.0.tar.bz2
압축을 풀어준 이후 웹서버 root 디렉터리로 옮겨주면 된다.
필자의 경우에는 /var/www이다.
그 김에 owncloud에 data 디렉터리를 만들어주고
apache에게 파일 소유권을 넘긴다.
$ tar -xvf <filename> $ sudo cp owncloud /var/www $ sudo mkdir /var/www/owncloud/data $ sudo chown -R apache:apache /var/www/owncloud
이제 파일 접근보안을 위해 SELinux를 설정해주어야 한다.
SELinux를 끄는 것도 방법이지만 바람직하지는 않다.
ownCloud Docs에서 방법을 안내한다.
만약 semanage 커맨드가 없다면 다음의 키워드로 설치해주자.
신기하게도 yum install semanage로는 설치되지 않는다.
$ yum install policycoreutils-python
이후 다음과 같이 SELinux를 설정하자.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/data(/.*)?' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/config(/.*)?' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps(/.*)?' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps-external(/.*)?' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.htaccess' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.user.ini' $ sudo restorecon -Rv '/var/www/owncloud/'
이제 방화벽만 열어주면 된다.
$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp $ sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp $ sudo firewall-cmd --reload
2. 로컬 디렉터리 연결
이부분은 상당히 애를 먹었습니다.
아무래도 로컬 디렉터리를 건드리는 거다보니 권한 문제가 상당히 골치를 썩였습니다.
Samba나 SFTP로 연결하는 옵션도 있긴 합니다만, 안되더라구요
왜인지 에러로그라도 남으면 좀 확인해보겠는데 아무리해도 진행이 안됐습니다.