개발이야기/Web

[Apache 2.4/PHP 7.2] Opcache 활성화하기

paperboxturtle 2018. 11. 11. 01:20

* 본 글에 쓰인 Opcache 설정 값은 NextCloud 공식 문서 저장소에서 가져왔습니다. CC-BY 3.0 Unported.

  기존에 Pydio를 사용하고 있을 시절에는 DB를 SQLite가 아닌 MariaDB를 사용하고 있었기 때문에 큰 속도저하를 겪지 않고 있었습니다. 하지만 Pydio를 지우고 업데이트를 하는 과정에서 DB가 꼬였고, 결국 쓰던 MariaDB는 꼬인 채로 방치되었습니다. 어차피 DB를 쓰고 있던 게 Pydio밖에 없었고, 어차피 hubiC이 느려서 정기 결제를 포기했기 때문에 굳이 무거운 Pydio를 쓰지 말고, 작은 서버에 가볍다고 소문난 OwnCloud 계열의 NextCloud를 쓰기로 했습니다. SQLite 3을 지원하고, Pydio보다 강력해서 저에게는 딱 맞는 제품이다 싶었습니다.

 NextCloud 전까지는 사용하면서 단 한 번도 Opcache 설정을 고려해 본 적이 없었습니다. 하지만 SQLite 3이 생각보다 느리고, 서버도 일본에 있어서 핑이 국내만큼 좋지는 않아 속도 향상을 시도해보기 위해 NextCloud가 추천하는 대로 PHP Opcache 설정을 시도해봤습니다.

NextCloud가 추천하는 PHP Opcache 설정 값은 다음과 같습니다.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

문제는 이 값을 어디서 설정하느냐에 달려있는데, Apache 2.x 버전을 사용할 경우에는 Apache 2와 연결된 PHP가 있기 때문에 설정 폴더가 살짝 다릅니다. 실제 적용되는 폴더는 흔히 쓰이는 /etc/php/7.2/fpm이 아닌, /etc/php/7.2/apache2입니다.

설정할 때 PHP.ini 파일이 기본적으로 해당 옵션을 주석처리 해둔 채 정리해두었기 때문에, GNU nano 에디터 기준으로 Ctrl + W를 눌러 opcache로 검색하여 주석을 해제함으로 하여 설정할 수 있습니다. 다만, 일부 값(opcache.revalidate_freq=1 등)에 한하여 NextCloud와 php 기본 주석처리된 설정값 사이에는 차이가 있으므로 주석에 달린 설명을 잘 읽어보시고 원하시는 값으로 설정하면 되겠습니다.


이후에는 Apache 2를 재시작시켜주세요. 적용이 안 된다면 php7.2-fpm도 재시작해주시면 됩니다.

reload 만으로 작동하는 지는 확인하지 못했습니다만 이론상 가능할 것으로 추측됩니다.