다음의 순서로 진행됩니다.
- Nextcloud의 한글 관련 최적화
- Apache2 UTF8 설정
- PHP UTF8 설정
- MariaDB UTF8 설정
- Apache2 기본 디렉터리 설정 변경
- PHP 모듈 설치
- MariaDB 환경설정 값 변경
1. Nextcloud의 한글 관련 최적화
Nextcloud는 한국에서 개발되지 않았습니다. 공식적으로 한글 지원을 해준다면 그 기간에 비례하여 문제가 거의 없거나 발생하지 않을 수 있겠지만, Nextcloud는 그렇지 않습니다. 때문에 Nextcloud를 설치하고 사용하는 데 있어서 한글 관련 문제는 어쩌면 발생할 수밖에 없습니다.
한글 관련 문제를 방지하려면 Apache2 서버와 PHP 그리고 MariaDB의 문자 집합(Character Set)을 유니코드를 지원하는 UTF8로 변경해야 합니다. 유니코드는 전 세계의 모든 문자를 표현하기 위해 제정되었고 문자 표시 방법의 국제 표준이 되었습니다.
다음 순서에 따라 APM에 UTF8을 적용합니다.
1) Apache2 UTF8 설정
다음 명령어를 입력하여 apache2.conf 파일을 수정합니다.
~$ sudo vi /etc/apache2/apache2.conf
파일 맨 아래에 다음 내용을 추가합니다.
AddDefaultCharset utf-8
2) PHP UTF8 설정
다음 명령어를 입력하여 php.ini 파일을 수정합니다.
(PHP 7.1버전일 경우 7.0을 7.1로 변경합니다)
~$ sudo vi /etc/php/7.0/apache2/php.ini
파일을 열고 [mbstring] 부분을 찾습니다.
[mbstring] 부분에서 다음 문자열을 찾아 값을 모두 UTF-8로 변경해주고 ; 을 제거해 주석 처리를 풀어줍니다.
;mbstring.language = Japanese ;mbstring.internal_encoding ;mbstring.http_input ;mbstring.http_output
이 부분을 다음과 같이 변경해야 합니다.
mbstring.language = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.http_input = UTF-8 mbstring.http_output = UTF-8
3) MariaDB UTF8 설정
먼저 MariaDB에 접속하여 DB 입출력 문자 집합을 알아봅시다. MariaDB에 root 계정으로 접속하는 명령어는 다음과 같습니다.
~$ mysql -u root -p
root 계정의 암호를 입력하면 다음과 같이 MariaDB에 접속됩니다.
다음 명령어를 입력하여 MariaDB의 입출력 관련 설정 상태를 확인합니다.
> show variables like 'c%';
다음과 같이 설정 값들이 출력됩니다.
utf8로 설정된 것들이 보이기는 하지만 database, server 값은 utf8이 아닙니다.
exit 명령어로 MariaDB를 빠져나갑니다.
다음 명령어를 입력하여 my.cnf 파일을 수정합니다.
~$ sudo vi /etc/mysql/my.cnf
한 군데만 수정해주면 됩니다. [mysqld] 부분을 찾아 바로 다음 줄에 다음 내용을 추가합니다.
> character-set-server=utf8
vi를 빠져나와 다음 명령어로 MariaDB를 재시작합니다.
~$ sudo /etc/init.d/mysql restart
다시 MariaDB에 접속하여 설정 값을 확인합니다.
~$ mysql -u root -p > show variables like 'c%';
이제 utf8로 잘 설정되었습니다.
2. Apache2 디렉터리 설정
* 넥스트클라우드 관련 포스트에서는 /var/www/nextcloud 디렉터리와 xiancloud.tk 도메인을 연결시킬 것입니다. 다음 내용은 Apache 서버에서 Nextcloud를 위한 디렉터리를 추가하는 작업입니다.
보안과 접근성을 위하여 apache2.conf 파일을 수정해야 합니다.
~$ sudo vi /etc/apache2/apache2.conf
다음과 같은 부분을 찾아서
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
바로 밑에 똑같이 하나 더 써줍니다.
Directory에는 자신이 Nextcloud를 설치할 경로를 써주고, Options에서 Indexes를 삭제하고, AllowOverride에서 None을 All로 변경합니다.
<Directory /var/www/nextcloud> Options FollowSymLinks AllowOverride All Require all granted </Directory>
수정하는 김에 /var/www/의 내용도 Options에서 Indexes를 삭제하고, AllowOverride에서 None을 All로 변경해 줍니다.
3. PHP 모듈 설치
ownCloud를 설치하기 위해서는 몇 가지 PHP 모듈이 더 필요합니다. 다음 명령어로 설치 후 Apache2 서버를 재시작합니다.
~$ sudo apt-get install php7.0-zip php7.0-curl ~$ sudo service apache2 restart
4. MariaDB 환경설정 값 변경
마지막으로 작업할 것이 하나 있습니다. MariaDB의 binlog_format 기본 값은 STATEMENT인데, Nextcloud에서는 binlog_format의 설정 값이 MIXED가 아니면 설치도 안 되고, 임시로 변경하여 설치했다 하더라도 다시 STATEMENT로 되돌아가기 때문에 귀찮은 일이 발생합니다. 따라서 아예 binlog_format의 설정 값을 MIXED로 고정시켜야 합니다.
다음 명령어로 mysql의 설정 파일을 엽니다.
~$ sudo vi /etc/mysql/my.cnf[mysqld]항목에 다음 내용을 추가하고 저장합니다.
binlog_format = MIXED
MariaDB를 재시작합니다.
sudo /etc/init.d/mysql restart
이렇게 Nextcloud를 설치하기 위한 준비는 모두 끝이 났습니다.
character-set-server=utf8
해당 코드 때문에 마리아DB 서비스가 재 시작되지 않고 Failed 됩니다.
utf8로 설정하는 다른 방법은 없을까요?
다른 부분에 잘못입력해서 그런건 아닌가요?