아파치(apache)는 웹 서버를 구현해주는 대표적인 리눅스 프로그램으로 웹 개발자는 항상 함께 지내는 가족과 같은 존재다. 하지만 우리는 알고 있다. 가끔 가족이 친구보다 혹은 게임(?)보다 멀게 느껴질 때가 있는데, 아파치 2.4.x 버전은 필자에게 남처럼 생소하게 느껴졌다.
그 이유는 아파치 2.4 버전에서 달라진 부분이 많았기 때문이다. 특히, 프로그램 개발을 하면서 자주 접하는 것 중에 하나가 아파치 설정 파일인데, 기존 방식과는 많이 달라져서 백업해둔 파일조차 별다른 의미가 없게 되었다. 특히, 가상호스트(Virtual Host) 설정에서 억세스 컨트롤(Access control) 지시자 오류까지 발생되어 더욱 곤란해졌다.
사실 이러한 모든 문제는 아파치 홈페이지만 잘 살펴봐도 깔끔하게 해결된다. 왜냐하면 아파치 2.2.x 에서 2.4.x 버전으로 업데이트 할 때 주의해야 하는 내용에 대해 잘 정리된 문서를 홈페이지에 게시하고 있기 때문이다.
문제는 이러한 내용 모두가 영어로 제공된다는 점이지만, 생각보다 문장이 쉬워서 읽는데 별다른 무리가 없다. 더군다나 우리에게는 구글 번역기가 있지 않은가?
그럼에도 불구하고 아파치 홈페이지를 찾아가서 구글 번역기까지 실행하고 엉터리로 번역된 내용에 짜증이 나신다면, 아래의 내용을 참고하여 억세스 컨트롤 지시자가 어떻게 변경되었는지 참고하자.
<VirtualHost *:80> ServerName example.com DocumentRoot "/home/example/www" <Directory '/home/example/www'> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
위의 코드는 설명을 돕기위한 예시로 아파치 가상호스트 설정의 대표적인 경우이다. 위의 설정은 아파치 2.2.x 버전에서는 정상적으로 동작되나, 아파치 2.4.x 버전에서는 억세스 컨트롤 지시자 오류가 발생된다.
그 이유는 아파치의 억세스 컨트롤 지시자가 ‘Order’와 ‘Allow’를 대신하여 ‘Require’로 변경되었기 때문인데, 아파치 2.2.x 버전과 2.4.x 버전의 달라진 억세스 컨트로를 비교하면 다음과 같다.
# 아파치 2.2.x Order deny,allow Deny from all # 아피치 2.4.x Require all denied
# 아파치 2.2.x Order allow,deny Allow from all # 아피치 2.4.x Require all granted
# 아파치 2.2.x Order Deny,Allow Deny from all Allow from example.org # 아피치 2.4.x Require host example.org
이러한 변경사항은 아파치 2.4.x 버전에서 권한 인증 방식에 변화가 많았기 때문이다. 자세한 내용은 아파치 홈페이지에서 제공되는 문서를 참고하자.
※ URL: https://httpd.apache.org/docs/2.4/upgrading.html