mapoo's blog에 owncloud를 올리는 과정을 설명한다.

기존 CentOS 7 + APM 기반으로 wordpress가 돌고 있는 나의 블로그 서버에 설치하였다.

아래 사이트는 wordpress 설치에 대한 글이다.

WordPress migration - CentOS 6 to CentOS 7

해당 포스트에도 기재했다시피 기존 PHP는 CentOS 7의 기본 PHP 5.4 버전을 사용하였다.

1. 패키지 설치

1.1 rpm 저장소 업데이트

rpm 저장소 업데이트

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • php 5.6 으로 업데이트 설치를 위함 (기존 php 버전이 5.4 임. owncloud 10.1.1-1.2는 php 5.6 이상을 요구함)

기타 rpm 저장소 업데이트

# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

(1.1.1 php 5.6만 설치한다면 1.1.1 rpm 저장소만 업데이트해도 된다.)

1.2 web service 중단

# systemctl stop httpd
# systemctl stop php-fpm
# systemctl stop mariadb

1.3 php 패키지 업데이트

php-5.4 패키지 삭제

# yum remove php-*

php-5.6 설치

# yum -y install php56w php56w-opcache php56w-mysql php56w-gd php56w-mbstring php56w-xml php56w-intl

1.4 owncloud 설치

yum repo 추가

# rpm --import https://download.owncloud.org/download/repositories/production/CentOS_7/repodata/repomd.xml.key
# wget http://download.owncloud.org/download/repositories/production/CentOS_7/ce:stable.repo -O /etc/yum.repos.d/ce:stable.repo
# yum clean expire-cache

owncloud install

# yum -y install owncloud-files

위 1.4.1, 2 과정을 생략하고 아래와 사이트에서 직접 rpm 파일을 다운받아 설치해도 된다.

http://download.owncloud.org/download/repositories/production/CentOS_7/

# yum install -y /home/owncloud-files-10.1.1-1.2.noarch.rpm
# chown -R apache.apache /var/www/html/owncloud

 

2. 데이터 저장 폴더 설정

mapoo's blog는 Linux OS를 최소한의 사이즈를 유지하기도 하거니와 owncloud 저장소를 윈도우에서 바로 확인하고자,
owncloud를 통해 저장되는 data 디렉토리를 cifs 를 통해 연결된 윈도우 PC의 공유폴더로 지정하였다.

2.1 윈도우 공유 폴더 설정

디렉토리 생성

윈도우 PC에 아래와 같이 디렉토리를 생성
D:\6_FTP\mapoo7\OwnCloud

공유 설정

위 디렉토리를 - administrator 계정으로 읽기/쓰기/지우기 모든 권한 설정

2.2 linux에서 공유폴더 마운트

cifs 툴 설치

# yum install cifs-utils

-> mount.cifs 바이너리를 설치하기 위함

마운트 포인트 디렉토리 생성

# mkdir /OwnCloud-Data
# chown apache.apache /OwnCloud-Data

마운트

apachec 디렉토리의 UID, GID 확인

# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

아래와 같이 마운트

# mount.cifs //192.168.0.159/OwnCloud /OwnCloud-Data -o user=administrator,password='*ost****',uid=48,gid=48,dir_mode=0770,file_mode=0660

-> apache UID:48 GID:48 적용

rc.local에 추가

# vim /etc/rc.local

## added for owncloud - 2019.04.21
mount.cifs //192.168.0.159/OwnCloud /OwnCloud-Data -o user=administrator,password='*ost****',uid=48,gid=48,dir_mode=0770,file_mode=0660

-> mount에 대해서 fatab에 추가할 수 도 있다. 여기서는 rc.local 에 추가.

 

3. mariadb 설정

3.1 my.cnf 설정

# vim /etc/my.cnf
[mysqld]
.
.
# added 2019.04.21 - for owncloud
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci

# added 2019.04.21 - for owncloud
[client]
default-character-set = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

3.2 mariadb 구동

# systemctl start mariadb

3.3 DB 및 계정 생성

db 접속

# mysql -u root -p

owncloud 관리자 계정 생성

MariaDB [mysql]> create user 'owncloud'@'%' identified by '*ost***';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> create user 'owncloud'@'localhost' identified by '*ost***';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

-> 만약 localhost 외에선 DB 접근할 경우가 없다면 'owncloud'@'%' 는 만들지 않아도 된다.

DB 생성 및 권한 설정

MariaDB [mysql]> create database ownclouddb;
Query OK, 0 rows affected (0.01 sec)

MariaDB [mysql]> grant all privileges on ownclouddb.* to 'owncloud'@'%';
Query OK, 0 rows affected (0.01 sec)

MariaDB [mysql]> grant all privileges on ownclouddb.* to 'owncloud'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

-> 만약 owncloud 관리자 계정 생성 시 localhost관련 계정만 생성했다면 owncloud'@'% 에 대한 grant 설정은 하지 않아도 된다.

DB 및 User 확인

MariaDB [mysql]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mapooblog          |
| mysql              |
| ownclouddb         |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

MariaDB [mysql]> use mysql; select user from user;
Database changed
+----------+
| user     |
+----------+
| owncloud |
| root     |
| root     |
|          |
| owncloud |
| root     |
|          |
| root     |
+----------+
8 rows in set (0.00 sec)

-> 만약 localhost 용만 owncloud 계정을 만들었다면 user 부분에서 owncloud가 한개만 보일 것임.

 

4 apache 설정 및 구동

4.1 호스트 설정

# vim /etc/httpd/conf.d/owncloud.conf
Alias /ftp "/var/www/html/owncloud/"

<Directory /var/www/html/owncloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html/owncloud
SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>

4.2 apache 구동

# systemctl start httpd

 

5. OwnCloud 접속

5.1 OwnCloud  설치 마무리

웹브라우저로 접근

http://mapoo.net/ftp

설치 마무리

  • 관리자 계정 : owncloud 브라우저 내에서 사용할 관리자 계정임
  • 데이터 폴더 : 데이터가 저장될 공간임. 기본은 owncloud 프로그램 디렉토리내의 data 디렉토리임.
    위에서 설정한 cifs로 연동한 /OwnCloud-Data 를 지정
  • 데이터베이서 설정 : 'MySQL/MariaDB' 선택 (SQLite 가 기본임)
  • 그 아래는 MariaDB 설정 시 적용하였던 db 계정/암호, db명을 입력한다. localhost는 그대로 둔다.
  • 위 화면에는 짤려서 안보이지만 스크롤해서 밑으로 내리면 '설치완료' 버튼이 보인다. 그것을 누르면 반영되고 설치가 마무리 됨.

접속

관리자 계정 / 비번 (map55-odmin / passwd) 입력

아래와 같이 유정의 기본 디렉토리가 확인된다.

업로드 가능 용량 증설하기

만약 대용량 파일 업로드 시 업로드 실패가 된다면 아래와 같이 수정.

php.ini 수정

# vim /etc/php.ini
upload_max_filesize = 8G

위 값을 찾아 위와 같이 수정

.htaccess 파일 생성(또는 수정, 추가)

# vim /var/www/html/owncloud/.htaccess
php_value upload_max_filesize 8G
php_value post_max_size 8G

하지만 테스트 시 별도 수정 없이 10G 이상의 파일도 업로드 가능하였음.

확인해 보니 /tmp 디렉토리에 phpFN46Ws 형태의 임시 파일명으로 아래와 같은 동작을 순환하며 파일을 받아들인다.

'/tmp에 임시파일 생성, 데이터를 채움 -> /data(OwnCloud-Data) 디렉토리의 임시파일로 옮김 -> /tmp의 임시 파일 지움'

그리고 파일을 모두 받아들인 뒤 붙이기 작업을 하는 것으로 보인다. (진행바에 Processing files…  메시지가 보일 때)

따라서 owncloud data 디렉토리에 업로드 시 메모리가 증가하지 않는 구조로 동작을 한다.

/tmp/systemd-private-e4f59575eedc4f2f99198b62549b0a5d-httpd.service-jpdVnj/tmp/phpFN46Ws

하지만 /tmp와 /data가 다른 파티션에 있다거나, 특히 data 디렉토리가 나처럼 네트워크 저장 공간에 설정 하였다면 I/O 성능이 떨어질 것으로 예상된다.

 

6. 기타

6.1 백업

백업대상

1) config/ directory (/var/www/html/owncloud/config)
2) data/ directory (OwnClound-Data)
3) owncloud database (ownclouddb)

6.2 연결 실패

브라우저에서 연결이 되지 않고 '신뢰하지 않은 Domain 연결'이라고 메시가 출력될 땐 아래처럼 config.php 파일에 반영

# vim /var/www/html/owncloud/config/config.php
.
.
'trusted_domains' =>
  array (
    0 => 'mapoo.net',
    1 => 'IP 또는 도메인 추가'
.
.

6.3 삭제하기

owncloud 패키지 삭제 시엔 아래와 같이 진행

# yum remove owncloud-files-10.1.1-1.2.noarch
# mv /var/www/html/owncloud/config /tmp/config-backup_owncloud

db 삭제

- 먼저, 기존 DB를 백업

# mysqldump --single-transaction -h localhost -u owncloud -p'*ost***' ownclouddb > /tmp/owncloud-dbbackup_`date +"%Y%m%d"`.dump

포맷 : mysqldump --single-transaction -h [server] -u [username] -p[password] [db_name] > /tmp/owncloud-dbbackup_`date +"%Y%m%d"`.dump

- db 및 계정 삭제

# mysql -u root -p

MariaDB [mysql]> drop user 'owncloud';
Query OK, 0 rows affected (0.01 sec)

MariaDB [mysql]> drop user 'owncloud'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> drop database ownclouddb
Query OK, 0 rows affected (0.19 sec)

-> 기존에 localhost 접근 계정만 만들었을 경우 'owncloud'@'localhost' 만 삭제하면 됨.

 

최근 php 7.4로 업데이트하면서 owncloud와 호환이되지 않아 구동되지 않는 문제 발생.

rpm --import https://download.owncloud.org/download/repositories/production/CentOS_7/repodata/repomd.xml.key
wget http://download.owncloud.org/download/repositories/production/CentOS_7/ce:stable.repo -O /etc/yum.repos.d/ce:stable.repo
yum clean all
yum upgrade owncloud-complete-files

owncloud-files.noarch 10.1.1-1.2 -> owncloud-complete-files-10.5.0-4.1.noarch.rpm 로 업데이트 됨

yum install -y php74-php-pecl-zip --enablerepo=remi,remi-php74
wget https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.5+rev1-1.el7.remi.x86_64.rpm
yum localinstall oniguruma5php-6.9.5+rev1-1.el7.remi.x86_64.rpm
yum install -y php-mbstring
yum install -y php-zip

 

OwnCloud Install

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다