mapoo's blog에 owncloud를 올리는 과정을 설명한다.
기존 CentOS 7 + APM 기반으로 wordpress가 돌고 있는 나의 블로그 서버에 설치하였다.
아래 사이트는 wordpress 설치에 대한 글이다.
해당 포스트에도 기재했다시피 기존 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