CentOS 7에서 아파치를 설치해보자
지난 포스팅에서 아파치를 설치하는 것까지 성공했다면, 이제 아파치의 설정을 고쳐야 한다. 윈도우에서 레지스트리를 편집하는 작업과 비슷하다고 할까. 암튼 리눅스에서는 'gedit'명령어로 편집기를 이용한다. 본격적으로 웹 서버를 설정하기 위해서 아래 명령어를 '터미널'에서 타이핑하자.(관리자 모드)
___▷ 관리자 설정하기
# gedit /etc/httpd/conf/httpd.conf |
위의 명령어를 넣고 '엔터'를 하면, 편집기 창이 열린다. gedit에서 먼저 고쳐야 할 부분은 '관리자 메일 주소(86번째 줄)'와 서버 이름(95번째 줄)'이다. 아래 사진의 빨간색으로 표시한 부분을 자체적으로 설정한다. 'ServerAdmin'과 'ServerName'은 그대로 두고, 옆의 부분만 수정하면 된다.
___▷
Root폴더 설정하기
서버에는 index.html파일을 읽을 수 있는 진입 폴더가 지정돼 있다. 이를 서버의 루트 폴더라고 하는데, 고속도로 ic 정도로 이해하면 되지 않을까한다. httpd.conf파일에서 어떻게 타이핑 하느냐에 따라 고속도로 진입로(서버 root폴더)를 바꿔 버릴 수도 있다.
가령, 웹 서버를 설치하고 'http://localhost'를 브라우저에 입력하면, 아파치의 root폴더인 '/var/www/html' 폴더에 접근한다. 만일 html폴더에 'index.html'파일이 있다면, 아파치는 그 즉시 index.html파일을 읽는다. 만일 index.html파일이 root폴더인('/var/www/html/')에 없으면, testing어쩌고저쩌고 하는 페이지가 뜬다.
만일, /var/www/html/joywebgl/page/customer 이란 폴더를 root폴더로 지정하고 싶다면, httpd.conf파일의 131번째 줄부터 151번째 줄까지의 <Directory "/var/www/html"></Directory> 부분을 수정한다. (웹 브라우저에서 접근할 때 'html'폴더는 생략하고 타이핑)
144번째 줄에 Options가 있다. Options에서는 초기 접속을 했을 때, 디렉터리 파일에 대한 접근을 제어하는 기능을 넣을 수 있다. 초기 설정은 Options Indexes FollowSymLinks이다. 무슨 뜻일까; 아래 표를 보면서 탐독해보쟈.
Options 사항들 |
내용 |
ExecCGI |
- CGI프로그램(activeX처럼 뭔가 설치하라고 뜨는 프로그램들) 실행을 설정 |
FollowSymLinks |
- 심볼릭 링크(다른 디렉터리로 연결) 로 이동여부를 설정 |
Includes |
- SSI 사용 설정 |
IncludesNOEXEC |
- SSI는 가능하지만, CGI 스크립트나 프로그램은 실행할 수 없음 |
Indexes |
- 해당 디렉터리에 인덱스 파일이 없으면 디렉터리 파일 목록을 보여줌.
- 실수로 이 옵션을 설정할 경우, 의도치 않게 디렉터리 정보가 노출된다 |
MultiViews |
- 다국어 지원 기능 |
SymLinkslfOwnerMatch |
- 심볼릭 링크의 소유자와 링크가 참조하는 파일의 소유자가 같을 때만 링크 대상에 접근할 수 있도록 설정.
- 보안은 강화되지만, 아파치 성능이 떨어짐 |
144번째 줄에서 'FollowSymLinks'만 사용하도록 설정한다.
___▷ ip 접근 권한 설정하기
웹 서비스를 실행하다보면, 의도치 않은 공격을 받게 된다. 전혀 본인과 상관없는 애들이 공격을 한다. 해커들이 실력을 테스트하는 용도로 약해 보이는 사이트를 공략한다고 한다. 프론트 개발에 집중할 때는 '보안'을 가볍게 생각했다. `공격을 당하면 다시 만들면 되지`라는 철 없는 소리를 한 적이 있었다.
하지만 서버는?? 다시 만들 수 있을까. 고객의 DB나 시간이 가면서 구축된 중요한 데이터는 프로그래머가 어떻게 할 수 없는 영역이다. 서버 속도가 느리더라도 서버 분야는 안전이 우선이다. 아파치에서 웹 서버를 설정하자마자 가장 기본적으로 보안을 관리할 수 있는 부분은 ip접근 권한 설정이다.
Options 설정 아래에 보면 'Require all granted'란 부분이 있다. 해당 부분을 어떻게 설정하느냐에 따라 ip를 차단할 수 있고, 허용할 수 있다.
설정 |
내용 |
Require all granted |
모든 접속 허용 |
Require all denied |
모든 접속 거부 |
Require ip [IP주소 입력] |
설정한 IP주소의 접속을 허용 |
Require host [호스트명] |
설정한 주소의 호스트 접속 허용 |
Require not ip [IP주소] |
설정한 ip주소의 접속을 거부 |
Require not host [호스트명] |
설정한 호스트의 접속을 거부 |
가령, ip 201.3.118.37의 접속을 거부하고 싶다면 아래와 같이 설정하면 된다.
Require all granted Require not ip 201.3.118.37 |
만일 192.168.1.0에서 192.168.1.128까지의 접속만 허가하려면, 다음과 같이 작성한다.
Require all denied Require ip 192.168,1.0/128 |
___▷ 웹 서버 실행
httpd.conf파일의 설정을 마쳤다면, 본격적으로 아파치를 시작해보자. 웹 서버를 실행하려면 먼저 root(관리자)권한을 얻는다. 그리고 아래와 같은 명령어를 순서대로 실행한다.
systemctl start httpd.service systemctl enable httpd.service |
만일 아파치 실행중에 httpd.conf파일을 변경했다면, restart명령어를 실행해야 한다.
systemctl restart httpd.service |
아파치를 실행하고 나서, 파이어폭스의 url입력창에 'localhost'나 '127.0.0.1'을 입력하면 testing페이지가 나타난다. 이제 남은 일은 방화벽 설정으로 서버를 오픈하는 일이다.
___▷ 방화벽 설정하기
현재 localhost는 전세계로 공개되지 않은 상태다. 아직 방화벽을 열지 않았기 때문이다. conoha에서 DNS를 도메인과 연결했다면, 반드시 아파치 방화벽을 열어둬야 한다. 처음 웹 서버를 node.js로 설치하고 나서 방화벽 때문에 5일 동안 도메인 연결을 기다렸다. 아래 코드 단 두 줄이면 해결되는 문제였다.
(마스터 권한) firewall-cmd --permanent --add-service=http --zone=public firewall-cmd --permanent --add-service=https --zone=public firewall-cmd --reload
|
위의 명령을 실행하고, 자신의 ip(코노하 vps ip)를 다른 컴퓨터에서 타이핑 해보자. 아파치의
'Testing 123...'이란 페이지가 있다면 성공이다.
'웹개발 자료실 > 웹서버 개발 핸드북' 카테고리의 다른 글
https서버 공개하기 (0) | 2021.09.30 |
---|---|
node.js 미들웨어 (0) | 2021.09.26 |
CentOS & node.js & Express 서버 외부 공개하기 (2) | 2019.04.24 |
centOS 7_ node.js최신버전 설치하는 방법 (0) | 2019.04.24 |
코노하로 웹 서비스 시작하기 (3) -도메인 연결- (0) | 2019.04.24 |
댓글