카테고리 보관물: ubuntu

owncloud DB file 정보 동기화

-. owncloud 유저 / 특정 폴더 동기화

sudo -u www-data php /var/www/owncloud/console.php files:scan totoli

sudo -u www-data php /var/www/owncloud/console.php files:scan –path “totoli/files/private”

 

-. 유저 모두

sudo -u www-data php /var/www/owncloud/console.php files:scan –all

image optimization

image optimization

 

–PNG

optipng -o6 -strip all *.png

–JPG

jpegoptim –strip-all *.jpg

ANSI(EUC-KR) 2 UTF-8

-. 파일명 한글 교정

find . -exec convmv -r –notest -f euc-kr -t utf-8 {} \;

 

-. 특정 폴더 및 하위 파일 중 txt 파일만 한정하여 인코딩 변환

find / -name *.txt -execdir iconv -f EUC-KR -t UTF-8 {} -o {}.tmp \; -execdir mv -f {}.tmp {} \;

 

-. 음원파일 한글 교정

find -type f -iregex “.*/.*\.\(ogg\|mp3\|flac\)” -print0 | xargs -0 mid3iconv -e cp949

 

vim sh. config

“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” General
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” Sets how many lines of history VIM has to remember
” VIM에서 기억할 히스토리 라인수
set history=1000

” Set to auto read when a file is changed from the outside
” 현재 사용하고 있는 파일이 외부에서 수정된 경우 자동으로 읽기
set autoread

” Set to auto write on opening an other file.
” 다른 파일을 읽게 되는 경우 현재 파일을 자동으로 저장하기
” 현재 파일을 저장하지 않으면 “:e” 등으로 다른 파일을 열 수 없음.
set autowrite

” Use mouse or not
” 마우스로 클릭한 위치에 커서 놓기
” 마우스로 드래그한 영역은 비쥬얼 모드로 복사준비하기
” 단 마우스를 사용하면, 마우스 오른 버튼을 눌러 나오는 복사를 선택할 수 없음.
” 마우스를 사용하지 않으려면, “:set mouse-=a”를 치기
“set mouse=a

“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” VIM user interface
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” Always show current position
” 오른편 하단에 현재 위치의 (행, 렬)을 표시
set ruler

” Highlight search results
” 검색결과에 하이라이트 표시하기
set hlsearch

” Makes search act like search in modern browsers
” 한글자 입력할때마다 매치되는 부분 표시하기
set incsearch

” Show matching brackets when text indicator is over them
” 현재 커서가 놓여진 괄호의 짝을 표시하기
set showmatch

” line number
” 라인넘버 표시하기
set number

“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” Colors and Fonts
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” syntax highlight
” 언어 syntax에 하이라이트표시
syntax on

” color scheme
” 컬러스킴
colorscheme desert
set background=dark

” Set utf8 as standard encoding
” utf8을 표준 인코딩으로 사용하기
set encoding=utf8

“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” Text, tab and indent related
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” auto indent’s tab size
” 자동탭 사이즈를 4칸으로 하기
set shiftwidth=4

” 1 tab == 4 spaces
” 탭을 4칸으로 하기
set tabstop=4

” c style auto indent
” c언어 스타일로 indentation하기
set cindent

” #if has to be first on the line
” #if 문을 라인의 시작에 배치하기
set smartindent

“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” Coding
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
” fold functions by indent or syntax.
” open a folded function using ‘zo’
” clase a function using ‘zc’
” syntax에 따라 접어두기
” 접은 것을 열려면, zo를 누르기
” 연 것을 다시 접으려면, zc를 누르기
“set foldmethod=indent
” 최대 깊이는 1개로 고정
“set foldnestmax=1

ubuntu apk option 정리

[Ubuntu] 패키지 툴 및 패키지 관리

설치, 업그레이드, 검사 등 대부분의 패키지 관리작업을 apt 단독으로 가능하다.

sudo apt-get update
:  /etc/apt/sources.list를 참조로 사용할 수 있는 패키지 DB를 업데이트 한다.

apt-cache search 키워드
: 패키지 데이터베이스 중 주어진 키워드를 대소문자 구분 없이 검색하여 키워드를 포함하는 패키지명과 해당 설명을 출력한다.
sudo apt-get install 패키지명
: 패키지명을 데이터베이스에서 찾아보고 해당패키지를 다운로드 받아 설치한다. 이 때 패키지의 신뢰성을 gpg키를 사용 검증한다.
sudo apt-get -d install 패키지명
: 패키지를 설치는 하지 않고 /var/cache/apt/archives/ 디렉토리에 다운로드 받는다.
apt-cache show 패키지명
: 주어진 패키지명에 해당하는 소프트웨어에 대한 정보를 본다.
sudo apt-get upgrade
: 설치 되어있는 모든 프로그램 패키지에 대한 최신 업데이트를 검사한 후, 다운로드 받아 설치한다.
sudo apt-get dist-upgrade
: 전체 시스템을 새로운 버젼으로 업그레이드 한다. 이때 패키지 삭제도 실시된다.
단, 일반적으로 사용되는 업그레이드 방법은 아님!
sudo apt-get autoclean
: 불안전하게 다운로드된 패키지나 오래된 패키지의 삭제.
sudo apt-get clean
: 디스크 공간 확보를 위해 /var/cache/apt/archives/ 에 캐쉬된 모든 패키지 삭제
sudo apt-get 옵션 remove 패키지명
: 해당 패키지와 그 설정파일을 삭제한다. (옵션에 –purge 를 넣으면 설정파일을 제외하고 삭제. 옵션 없을시 전부 삭제)
sudo apt-get -f install
: 깨어진 패키지를 위해 정상여부를 확인
apt-config -V
: 설치된 APT툴의 버전을 출력
sudo apt-key list
: APT가 알고 있는 gpg키 목록의 출력
apt-cache stats
: 설치된 모든 패키지에 대한 상태정보를 출력
apt-cache depends
: 패키지가 설치되어 있는지 여부에 관계 없이 그 의존성을 출력한다.
apt-cache pkgnames
: 시스템에 설치되어 있는 모든 패키지 목록을 보여준다.
2.dpkg
이 툴의 경우 APT보다는 낮은 수준에서 작업이 수행된다. APT는 우분투의 소프트웨어를 관리하기 위해 내부적으로 이 dpkg를 이용한다. 보통 APT명령 만으로 충분하지만… 시스템에 있는 특정 파일이 어떤 패키지에 포함되는지 등의 확인 작업을 수행하기위해 dpkg 명령이 필요한 것이다.

dpkg -C  .deb파일
: 주어진 .deb파일이 설치한 파일의 목록을 본다.(해당 파일이 있는 곳에서 실행하거나 파일명앞에 절대 경로를 붙여준다.)
dpkg -I  .deb파일
: 주어진 .deb파일에 대한 정보를 본다.
dpkg -P  패키지명
: 패키지에 대한 정보를 보여준다.
dpkg -S  파일명
: 파일명 또는 경로가 포함된 패키지들을 검색한다.
dpkg -l
: 설치된 패키지 목록을 보여준다.
dpkg -L  패키지명
: 이 패키지로부터 설치된 모든 파일목록을 볼수 있다.
dpkg -s  패키지명
: 주어진 패키지의 상태를 본다
sudo dpkg -i  .deb파일
: 주어진 파일을 설치한다.
sudo dpkg -r  패키지명
: 시스템에서 해당 패키지를 삭제한다. (단, 삭제시 파일들은 남겨둔다.)
sudo dpkg -P  패키지명
: 해당 패키지와 해당 패키지의 설정파일을 모두 삭제한다.
sudo dpkg -x  .deb파일  디랙토리
: 파일에 포함되어있는 파일들을 지정된 디렉토리에 풀어놓는다. 단, 주의 할점은 이명령시 해당 디렉토리를 초기화 시켜버리므로
주의하여야 한다!
3. aptitude
앞에서 배운 dpkg와 APT의 경우 제대로 사용하기 위해서는 좀더 많은 지식을 요구한다. 그에 비하여 aptitude의 경우 주요 패키지 작업 과정을 자동화하여 가능한 쉽게 작업할 수 있도록 해주므로 보다 쉽게 할 수 있다. 고로 보다 많이 사용하게 될 것이… 옳지만… 아직은 인터넷 상에서 APT나 dpkg를 사용한 패키지 설치 정보가 많다는 점에서… 장래에 많이 사용하게 될 듯하다^^

sudo aptitude
: 실행시 curses인터페이스로 시작된다. Ctrl+t를 사용하면 메뉴에 접근할 수 있으며, q키로프로그램을 종료 시킬 수 있다.
aptitude help
: 도움말 보기
aptitude search 키워드
: 해당 키워드와 일치하는 패키지를 보여준다.
sudo aptitude update
: APT리포지트로들로부터 사용 가능한 패키지를 업데이트 한다.
sudo aptitude upgrade
: 모든 패키지를 최신으로 업그레이드 한다.
aptitude show 패키지명
: 해당 패키지의 설치 여부에 관계 없이 주어진 패키지에 대한 정보를 보여준다.
sudo aptitude download 패키지명
: 해당 패키지를 설치하지는 않고 다운로드만 받는다
sudo aptitude clean
: /var/cache/apt/archives디렉토리에 다운로드되어 있는 모든 .deb파일을 삭제한다.
sudo aptitude autoclean
: /var/cache/apt/archives디렉토리에 있는 오래된 .deb파일을 전부 삭제한다.
sudo aptitude install 패키지명
: 해당 패키지를 시스템에 설치한다.
sudo aptitude remove 패키지명
: 시스템으로부터 주어진 패키지를 삭제 한다.
sudo aptitude dist-upgrade
: 모든 패키지를 가장 최신 버전으로 업그레이드 시킨다. 이때, 필요한 경우 패키지를 삭제하거나 추가 한다.
참고로, 위 내용 다 넘기고 요즘 우분투의 경우 ‘프로그램 > 추가/제거’ 메뉴나 ‘시스템 > 관리 > 스넵틱스관리자’ 에서 쉽게 패키지를 선택하고 설치하거나 삭제 할 수 있다. 아니면 .deb파일을 받아 마우스로 클릭만 해주면 자동으로 패키지 관리자가 실행되어 설치 하게 되어있다.
하지만, 위 내용을 알고 있어야 보다 깊은 단계로 나아갈 수 있고 또 보다 세부적인 관리, 추가, 삭제가 가능하기에 알아 두는게 좋다고 본다.

ownCloud in VirtualBox

##. ubuntu 16.10 in virtual box, ownCloud 9.1.4 설치 All in One

-. virtual 확장팩 설치

apt install virtualbox-ext-pack

-. 외부에서 접근하는 IP 확인

ip addr show eth0 | enp0s3 inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’

> output
10.0.2.15
fe80::a00:27ff:fe1f:7551

-. VirtualBox NAT에 포트포워딩 설정

http [공란] 80 [공란] 80

-. apache2 설치

sudo apt-get update
sudo apt-get install apache2 -y

sudo apache2ctl configtest

> output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OK

-. apache2.conf 편집

sudo apt-get install vim -y (vi에서는 방향키 및 백스페이스 먹통 해결)

sudo vi /etc/apache2/apache2.conf

=============================================================
/apache2.conf (최하단)
————————————————————-
ServerName 10.0.2.15     (domain이 있으면 도메인 명 추가)
————————————————————-

sudo apache2ctl configtest

> output
Syntex OK

-. PHP 설치

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql -y

-. 기본파일 순위 변경

sudo vi /etc/apache2/mods-enabled/dir.conf

=============================================================
/dir.conf (line : 2)
————————————————————-
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
————————————————————-

sudo systemctl restart apache2

sudo systemctl status apache2

(inactive 확인)

-. php 확장 라이브러리 설치

sudo apt-get install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip php-apcu -y

-. curl 설치

sudo apt-get install curl -y

-. ownCloud 설치환경 설정

sudo curl https://download.owncloud.org/download/repositories/stable/Ubuntu_16.10/Release.key | sudo apt-key add –
echo ‘deb https://download.owncloud.org/download/repositories/stable/Ubuntu_16.10/ /’ | sudo tee /etc/apt/sources.list.d/owncloud.list
sudo apt-get install apt-transport-https -y
sudo apt-get update

-. ownCloud 다운로드 및 설치

sudo apt-get install owncloud -y
sudo systemctl reload apache2

-. Mysql DB 설정 (ubuntu에 mysql설치 안함 : DB는 가상머신 내에 설치하면 속도가(TT) 느림. host 서버에 설치 후 활용 / version 5.5)

(DB 생성 및 사용자 생성 : 편의상 명칭은 다 통일)
use mysql;
create database owncloud9;
insert into user (host, user, password, ssl_cipher, x509_issuer, x509_subject, authentication_string) values (‘%’, ‘owncloud9’, password(‘owncloud9’), ”,  ”, ”, ”);
insert into db (host, db, user, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, grant_priv, references_priv, index_priv, alter_priv) values (‘%’,’owncloud9′,’owncloud9′, ‘Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’ );
flush privileges;

USE owncloud9;
grant all privileges on owncloud9.* to  owncloud9@’%’ identified by ‘owncloud9′ with grant option;
grant all privileges on owncloud9.* to  owncloud9@’localhost’ identified by ‘owncloud9’ with grant option;
flush privileges;

-. VirtuslBox share folder (저장소 마운트)

sudo apt-get install virtualbox-guest-utils -y

(reboot 후 생성됨)
/media/sf_[공유폴더 명칭] 으로 마운트 생성됨.

sudo mkdir /media/[공유폴더 명칭]
sudo mkdir /media/VirtualBox_Share

id www-data
> output
uid=33(www-data) gid=33(www-data) 그룹들=33(www-data)

TEST :
> sudo mount -t vboxsf -o gid=33,uid=33,rw,umask=007 VirtualBox_Share /media/VirtualBox_Share

FIX : (fstab에 등록하려 하였으나, vboxsf 파일 시스템을 fstab가 인식못함. 어마무지한 삽질 후 발견한 사실)
> sudo vi /etc/init.d/mount-vboxsf

=============================================================
/mount-vboxsf (신규 파일 생성)
————————————————————-
#!/bin/bash

/bin/mount -t vboxsf -o gid=33,uid=33,rw,umask=007 VirtualBox_Share /media/VirtualBox_Share

exit 0
————————————————————-

runlevel
> output
N 5  (해당 level에 맞는 re?.d에 만들어야 함)

sudo ln -s /etc/init.d/mount-vboxsf /etc/rc5.d/S02mount-vboxsf

-. apache2 Http root 경로 변경 및 URL 설정

sudo vi /etc/apache2/sites-available/000-default.conf

=============================================================
/000-default.conf (line : 12)
————————————————————-
DocumentRoot /var/www/owncloud
————————————————————-

service apache2 restart

**. owncloud http로 접속 후 환경설정. (관리자, DB, 설정 등)

 

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (/owncloud 삭제) (line : 12)
————————————————————-
‘overwrite.cli.url’ => ‘http://totoli.us.to’,
————————————————————-

-. ownCloud Data 폴더 위치 수정

sudo systemctl stop apache2
sudo mv /var/www/owncloud/data /media/VirtualBox_Share/owncloud_data

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (line : 11)
————————————————————-
‘datadirectory’ => ‘/media/VirtualBox_Share/owncloud_data’,
————————————————————-

sudo systemctl start apache2

-. 대용량 파일 업로드 설정

sudo vi /var/www/owncloud/.htaccess

=============================================================
/.htaccess (line : 41 ~ 43)
————————————————————-
(php5도 있기는 하지만 해당하는 버젼만 수정해도 무방)
<IfModule mod_php7.c>
php_value upload_max_filesize 10G
php_value post_max_size 10G
————————————————————-

sudo vi /etc/php/7.0/apache2/php.ini

=============================================================
/php.ini (vi ‘/’ 으로 찾으며)
————————————————————-
upload_max_filesize = 10G
max_file_uploads = 1000
max_execution_time = 0
max_input_time = -1
memory_limit = 256M
output_buffering = 0
post_max_size = 10G
default_socket_timeout = 300
————————————————————-

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (원하는 곳에 추가)
————————————————————-
‘timeout’ => ‘3600’,
————————————————————-

sudo service apache2 restart

-. owncloud 보안경고 해제

message
> No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation.

sudo vi /var/www/owncloud/config/config.php

기본 APCu 캐시 사용
=============================================================
/config.php (원하는 곳에 추가)
————————————————————-
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
————————————————————-

or

**. Redis-Server 사용할 시엔 다음 내용으로 변경
=============================================================
/config.php (원하는 곳에 추가)
————————————————————-
‘memcache.local’ => ‘\\OC\\Memcache\\Redis’,
‘filelocking.enabled’ => ‘true’,
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => 6379,
‘timeout’ => 0,
‘dbindex’ => 0,
),
————————————————————-

sudo service apache2 restart

-. EUC-KR 파일 UTF-8로 변환 처리 활성화

sudo vi /var/www/owncloud/apps/files_texteditor/controller/filehandlingcontroller.php

=============================================================
/filehandlingcontroller.php (line : 92, 95)
————————————————————-
$encoding = mb_detect_encoding($fileContents . “a”, “UTF-8, EUC-KR, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII”, true);
if ($encoding == “”) {
// set default encoding if it couldn’t be detected
$encoding = ‘EUC-KR’;
}
————————————————————-

-. 한글 TXT imagettftext preview 인코딩 수정

cd /var/www/owncloud/core/fonts
OpenSans-Regular.ttf 파일을 한글지원되는 TTF로 변경 (파일명은 기존 OpenSans-Regular.ttf 명으로 저장)

(malgun.ttf 적용 시 상기 폴더에 malgun.ttf 복사 후 하기 편집)

sudo vi /var/www/owncloud/lib/private/Preview/TXT.php

=============================================================
/TXT.php (line : 66) OpenSans-Regular -> malgun
————————————————————-
$fontFile .= ‘/fonts/malgun.ttf’; (이 라인의 폰트 명을 상기 경로에 복사한 한글 폰트명으로 변경)
————————————————————-

-. top 메뉴 server 통합 검색 입력 글자 수 제한 2자로 변경

sudo vi /var/www/owncloud/core/search/js/search.js

=============================================================
/search.js (line : 325)
————————————————————-
if (query.length > 1) {
————————————————————-

-. Url 문자열에 index.php 숨기기

a2enmod rewrite (apache2 mod_rewrite 구동 확인)
> output
Module rewrite already enabled (ok)

a2enmod env (apache2 mod_env 구동확인)
> output
Module env already enabled (ok)

*. 상기 mod_rewrite and mod_env 구동확인 결과 구동 이력 없으면 apache2 재설정 해야함.

sudo vi /etc/apache2/sites-enabled/000-default.conf

=============================================================
//sites-enabled/000-default.conf (line : 13)
————————————————————-
DocumentRoot /var/www/owncloud (이줄 하단에)
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
————————————————————-

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (line : 18)
————————————————————-
‘htaccess.RewriteBase’ => ‘/’,
————————————————————-

sudo service apache2 restart

sudo -u www-data php /var/www/owncloud/occ maintenance:update:htaccess

-. ownCloud Server Tuning

crontab -u www-data -e

*/15  *  *  *  * php -f /var/www/owncloud/cron.php

구동 코어 지정하려면
> apt-get install taskset
> */15  *  *  *  * taskset 02 php -f /var/www/owncloud/cron.php

(참고 : 크론 결과 모니터링 tail -F /var/log/syslog )

sudo /etc/init.d/cron restart
> output
[ ok ] Restarting cron (via systemctl): cron.service.

ps ax | grep redis
> output
Ssl    0:05 /usr/bin/redis-server 127.0.0.1:6379 (ok)

*. 상기 검사 후 redis-server 없으면 설치
sudo apt-get install redis-server php-redis

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (line : 13)
————————————————————-
‘filelocking.enabled’ => true,
‘memcache.locking’ => ‘\OC\Memcache\Redis’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => 6379,
‘timeout’ => 0.0,
),
‘asset-pipeline.enabled’ => true,      <– 이 설정은 노트 앱 쓰려면 설정 X
————————————————————-

sudo service apache2 restart

 

-. ETC
> 한글화 수정
vi /var/www/owncloud/core/l10n/ko.js

100     “seconds ago” : “직전”,
149     “Password” : “Password”,
217     “The share will expire on %s.” : “이 공유는 %s 까지 유효합니다.”,
255 “Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\”%s\”>View it!</a><br><br>” : “안녕하세요,<br><br>%s 님이 <strong>%s</strong>을(를) 공유하였음을 알려 드립니다.<br><br>아래 링크가 열리지 않으면 공유링크 상단에서 마우스 우클릭 후 <strong>새 창(탭)에서 열기</strong>를 선택하세요.<br><br><br>▷▷▷ <a href=\”%s\”>공유 링크 열기</a> ◁◁◁<br><br><br>”,
266     “Alternative Logins” : “- 공개 가입 -“,
vi /var/www/owncloud/core/l10n/ko.json

98 “seconds ago” : “직전”,
147     “Password” : “Password”,
215     “The share will expire on %s.” : “이 공유는 %s 까지 유효합니다.”,
253 “Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\”%s\”>View it!</a><br><br>” : “안녕하세요,<br><br>%s 님이 <strong>%s</strong>을(를) 공유하였음을 알려 드립니다.<br><br>아래 링크가 열리지 않으면 공유링크 상단에서 마우스 우클릭 후 <strong>새 창(탭)에서 열기</strong>를 선택하세요.<br><br><br>▷▷▷ <a href=\”%s\”>공유 링크 열기</a> ◁◁◁<br><br><br>”,
264     “Alternative Logins” : “- 공개 가입 -“,

vi /var/www/owncloud/lib/l10n/ko.js

31     “seconds ago” : “직전”,
112     “web services under your control” : “C. 2016 by totoli. All rights reserved.”,

vi /var/www/owncloud/lib/l10n/ko.json

29     “seconds ago” : “직전”,
110     “web services under your control” : “C. 2016 by totoli. All rights reserved.”,

> Site 명칭 수정
vi /var/www/owncloud/lib/private/legacy/defaults.php

$this->defaultEntity = ‘totoliCloud’; /* e.g. company name, used for footers and copyright notices */
$this->defaultName = ‘totoliCloud’; /* short name, used when referring to the software */
$this->defaultTitle = ‘totoliCloud’; /* can be a longer name, for titles */
$this->defaultBaseUrl = ‘http://totoli.us.to’;

> 메일 이미지
cd /var/www/owncloud/core/img
rm logo-mail.gif
cp logo-mail.gif_bk2 logo-mail.gif

> 로그인 이미지
cd /var/www/owncloud/core/img
rm background.jpg
cp background.jpg_bk4 background.jpg

-. allow public page group specific apps

sudo vi /var/www/owncloud/lib/private/AppFramework/DependencyInjection/DIContainer.php

=============================================================
/DIContainer.php (line : 294)
————————————————————-
$this->registerService(IDateTimeFormatter::class, function () {
return $this->getServer()->getDateTimeFormatter();
});

————————————————————-

=============================================================
/DIContainer.php (line : 347) “—->” 마크 붙어있는 두 줄 삽입
————————————————————-
$app->getServer()->getLogger(),
—-> $app->getServer()->getAppManager(),
—-> $app->getServer()->getAppConfig(),
$c[‘AppName’],

————————————————————-

sudo vi /var/www/owncloud/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php

=============================================================
/SecurityMiddleware.php (line : 47)
————————————————————-
use OCP\App\IAppManager;
use OCP\IAppConfig;

————————————————————-

=============================================================
/SecurityMiddleware.php (line : 72)
————————————————————-
/** @var IAppManager */
private $appManager;
/** @var IAppConfig */
private $appConfig;

————————————————————-

=============================================================
/SecurityMiddleware.php (line : 89) “—->” 마크 붙어있는 두 줄 삽입
————————————————————-
* @param ILogger $logger
—->  * @param IAppManager
—->  * @param IConfig
* @param string $appName

————————————————————-

=============================================================
/SecurityMiddleware.php (line : 101) “—->” 마크 붙어있는 두 줄 삽입
————————————————————-
ILogger $logger,
—-> IAppManager $appManager,
—-> IAppConfig $appConfig,
$appName,

————————————————————-

=============================================================
/SecurityMiddleware.php (line : 112) “—->” 마크 붙어있는 두 줄 삽입
————————————————————-
$this->urlGenerator = $urlGenerator;
—-> $this->appManager = $appManager;
—-> $this->appConfig = $appConfig;
$this->logger = $logger;

————————————————————-
=============================================================
/SecurityMiddleware.php (line : 157) 블럭 통으로 교체
————————————————————-

// ** AS-IS **

/**
* FIXME: Use DI once available
* Checks if app is enabled (also includes a check whether user is allowed to access the resource)
* The getAppPath() check is here since components such as settings also use the AppFramework and
* therefore won’t pass this check.
*/
if(\OC_App::getAppPath($this->appName) !== false && !\OC_App::isEnabled($this->appName)) {
throw new AppNotEnabledException();
}

————————————————————-

//** TO-BE **

/**
* If public route, check it is enabled for someone,
* else check it is enabled for current user
*/
if($isPublicPage) {
if($this->appConfig->getValue($this->appName, ‘enabed’) === ‘no’) {
throw new AppNotEnabledException();
}
} else if(\OC_App::getAppPath($this->appName) !== false && !$this->appManager->isEnabledForUser($this->appName)) {
/**
* Checks if app is enabled (also includes a check whether user is allowed to access the resource)
* The getAppPath() check is here since components such as settings also use the AppFramework and
* therefore won’t pass this check.
*/
throw new AppNotEnabledException();
}

————————————————————-

-. upgrade lock status

sudo chown www-data:www-data /var/www/owncloud -R

sudo vi /var/www/owncloud/config/config.php

=============================================================
/config.php (line : 36)
————————————————————-
maintenance => flase
————————————————————-

sudo service apache2 restart

===========================================================================================================
-. option. phpredis 설치

> redis-server 설치
sudo apt-get install redis-server -y

> php에 redis 서버 연결
wget https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip

unzip phpredis.zip

&, 압축 풀고 이름 바꿔서 /etc/php/7.0/phpredis 로 복사

apt install php7.0-dev

cd /etc/php/7.0/phpredis/

phpize

./configure –with-php-config=/usr/local/php/bin/php-config

./configure

make
make install

vi /etc/php/7.0/apache2/php.ini
=============================================================
/php.ini (lastline)
————————————————————-
[redis]
extension=/usr/lib/php/20151012/redis.so
session.save_handler = redis
session.save_path = “tcp://112.220.221.118:6377”
————————————————————-

sudo service apache2 restart

===========================================================================================================
-. option. onlyoffice 설치

echo “deb http://archive.ubuntu.com/ubuntu precise main universe multiverse” | sudo tee -a /etc/apt/sources.list

curl -sL https://deb.nodesource.com/setup_8.x | sudo bash –
sudo apt-get install -y nodejs

sudo apt-get install postgresql -y

sudo -u postgres psql -c “CREATE DATABASE onlyoffice;”
sudo -u postgres psql -c “CREATE USER onlyoffice WITH password ‘onlyoffice’;”
sudo -u postgres psql -c “GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;”

sudo apt-get install redis-server -y

sudo apt-get install rabbitmq-server -y

sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys CB2DE8E5

sudo echo “deb http://download.onlyoffice.com/repo/debian squeeze main” | sudo tee /etc/apt/sources.list.d/onlyoffice.list

sudo apt-get update

sudo service apache2 stop (nginx 기본 설치 시 아파치 80이 살아있으면 오류남)

sudo apt-get install nginx-extras -y

**. 수시 업그레이드 시 재활용
sudo apt-get install onlyoffice-documentserver -y

postgresql 대화창에 패스워드 입력 => onlyoffice

# onlyoffice apps 추가 (이 설정은 owncloud 사용시 만 적용)

apt-get install git -y
cd /var/www/owncloud/apps
git clone https://github.com/ONLYOFFICE/onlyoffice-owncloud.git onlyoffice

ownCloud admin -> app + -> Productivity -> onlyoffice 사용함 선택

ownCloud admin -> 관리자 -> onlyoffice 주소 설정 : 도메인 또는 포트를 포함한 DOMAIN 주소만.
ex : totoli.us.to  (nginx port : 80)

# onlyoffice font 변경

(필요없는 ubuntu 글꼴 다 지움)
rm /usr/share/fonts/truetype/* -R

(onlyoffice 기본 폰트 / 모두 지워도 상관 없음)
rm /var/www/onlyoffice/documentserver/core-fonts -R

(필요한 폰트 복사 후)
cp /home/totoli/truetype /usr/share/fonts/truetype -R

/usr/bin/documentserver-generate-allfonts.sh

(IE 케시 삭제 후 적용 확인)

# 맞춤법 사전 추가

cd /var/www/onlyoffice/documentserver/server/SpellChecker/
(필요없는 사전 삭제) ko_KR | en_US 두개만 일단.

rm dictionaries/ -R (사전은 지우기 전에 최신 폴더 /home/totoli/dictionaries/로 복사 후)

cp /home/totoli/dictionaries/ ./ -R

chmod 755 ./dictionaries/ -R
chown onlyoffice:onlyoffice ./dictionaries/  -R

supervisorctl restart onlyoffice-documentserver:spellchecker

===========================================================================================================
# apache solr 설치

-. jre 설치
apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer -y
apt-get install oracle-java8-set-default -y

java -version

cat >> /etc/environment <<EOL
JAVA_HOME=/usr/lib/jvm/java-8-oracle
JRE_HOME=/usr/lib/jvm/java-8-oracle/jre
EOL

# solr 설치 준비

mkdir ~/solr_install/
cd ~/solr_install/

-. solr 다운로드
wget http://archive.apache.org/dist/lucene/solr/6.6.5/solr-6.6.5.tgz
tar -zxvf solr-6.6.5.tgz

-. solr 설치
./solr-6.6.5/bin/install_solr_service.sh solr-6.6.5.tgz

> solr.service active 확인 후 Ctrl-z

-. ocr 설치
apt-get install tesseract-ocr -y
apt-get install tesseract-ocr-kor -y

-. ocr 언어 수정
apt-get install zip unzip -y

dpkg -l | grep tesseract | awk -Focr- ‘{print $2}’ | awk ‘{print $1}’ | grep -v ^$
설치된 언어 확인 “kor” 있는지

ll /opt/solr/contrib/extraction/lib/tika-parsers-*

vim /opt/solr/contrib/extraction/lib/tika-parsers-1.18.jar

패턴 찾기 : /TesseractOCRConfig.properties (line : 307) enter 치고 열기

=============================================================
/TesseractOCRConfig.properties (line : 17)
————————————————————-
language=eng => language=kor+eng
————————————————————-
-. 검색어 추천 및 OCR 활성화 설정
> owncloud 서버 접속 후 하단 1줄
cp /var/www/owncloud/apps/nextant/config/nextant_solrconfig.xml /media/sf_desktop/

mkdir /opt/solr/nextant_conf

cp /media/sf_Desktop/nextant_solrconfig.xml /opt/solr/nextant_conf

cd /opt/solr/nextant_conf

chmod 644 nextant_solrconfig.xml

vi /opt/solr-6.6.5/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml
또는
vi /opt/solr-7.5.0/server/solr/configsets/_default/conf/solrconfig.xml

=============================================================
/solrconfig.xml (line : top, bottom) 최상단, 중간, 최하단 양쪽 추가
————————————————————-
<?xml version=”1.0″ encoding=”UTF-8″ ?>

<!DOCTYPE config [
<!ENTITY nextant_component SYSTEM “/opt/solr/nextant_conf/nextant_solrconfig.xml”>
]>



<requestHandler name=”/update/extract” startup=”lazy” class=”solr.extraction.ExtractingRequestHandler” >  (/ 패턴으로 ExtractingRequestHandler 찾아가서)
<lst name=”defaults”>
<str name=”lowernames”>true</str>
<str name=”uprefix”>ignored_</str>  (<— 이줄 추가)
<str name=”captureAttr”>true</str>  (<— 이줄 추가 : 이 두줄 추가해야 이미지, 이미지형 PDF에서 ORC 작동)


&nextant_component;

</config>
————————————————————-

vi /etc/default/solr.in.sh

=============================================================
/solr.in.sh (line : ) 최하단에 추가
————————————————————-
SOLR_JAVA_HOME=”/usr/lib/jvm/java-8-oracle”
SOLR_JAVA_MEM=”-Xms1024m -Xmx4096m”
SOLR_OPTS=”$SOLR_OPTS -Dsolr.allow.unsafe.resourceloading=true”
————————————————————-

service solr restart

-. 코어 생성

* 신규 컬렉션 코어 생성
sudo -u solr /opt/solr/bin/solr create -c nextant

* 삭제 할 때는
sudo -u solr /opt/solr/bin/solr delete -c nextant<– 코어를 지우면 하단의 설정 다 지워짐.

* 색인된 내용만 초기화 (코어는 그대로 둠)
curl “http://112.220.221.118:8983/solr/nextant/update?commit=true” -H “Content-Type: text/xml” –data-binary ‘<delete><query>*:*</query></delete>’

-. 접근 가능 IP 설정

vi /opt/solr/server/etc/jetty-http.xml

=============================================================
/jetty-http.xml (line : 36) default=”10.0.2.15″ 추가
————————————————————-
<Set name=”host”><Property name=”jetty.host” default=”10.0.2.15″ /></Set>
————————————————————-

vi /var/solr/data/nextant/conf/managed-schema

=============================================================
/managed-schema (line : 88) type=”string” => type=”text_general”
————————————————————-
<dynamicField name=”nextant_attr_*” type=”text_general” multiValued=”true” indexed=”true” stored=”true”/>
————————————————————-
**. 만약 occ nextant:check –fix 로 설정파일 교청 했다면 다시 상단 내용 고처줘야 함.
service solr restart

EOF;