일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발자
- 이분 탐색
- BFS
- MYSQL
- scc
- 구성적
- 테일러 급수
- SQL
- 알고리즘
- 아파치
- 리트코드
- Django
- 데이터베이스
- 백엔드
- 웹서버
- 신입
- 수학
- C언어
- FastAPI
- alembic
- 백준
- sqlalchemy
- 강한 연결 요소
- 가우스 소거법
- 위상 정렬
- python
- 파이썬
- flask
- api서버
- 취업
- Today
- Total
Devlog
[C언어로 웹서버 만들기 (1-1)] - Hello Apache! [구현편] 본문
이번 장의 예제 코드
이번 장에서는 아파치 모듈을 이용한 간단한 웹서버 구현 방법에 대해 알아보려고 합니다. OS는 Ubuntu를 기준으로 합니다.
1. 개발도구 설치
웹서버를 개발하기 위해 Apache와 Apache개발 도구를 설치합니다.
아파치, 아파치 개발도구 설치
sudo apt update
sudo apt install apache2
sudo apt install apache2-dev
아파치 정상작동 확인
sudo apachectl start
위의 명령어를 이용해 Apache를 켜서 크롬 브라우저에 들어 간 다음, url 창에 localhost를 입력해서 접속할 때
대략 위와 같은 화면이 등장하면 성공적으로 설치를 완료했다고 보면 됩니다.
2. 프로젝트 생성 및 개발
apxs명령어를 이용해 모듈 프로젝트를 생성합니다. 여기서 example은 프로젝트 이름이니, 원하시는 네이밍을 사용하셔도 괜찮습니다. 여기서는 example이라는 이름을 사용하겠습니다.
$ apxs2 -g -n example
Creating [DIR] example
Creating [FILE] example/Makefile
Creating [FILE] example/modules.mk
Creating [FILE] example/mod_example.c
Creating [FILE] example/.deps
$
여기서 example디렉터리에 들어간 다음 mod_example.c에 example_handler 함수를 아래와 같이 수정합니다. mod_example.c이 바로 아파치 모듈을 구현하기 위한 최상위 소스코드입니다.
static int example_handler(request_rec *r)
{
if (strcmp(r->handler, "example")) {
return DECLINED;
}
r->content_type = "text/html";
if (!r->header_only)
ap_rputs("Hello Apache!\n", r);
return OK;
}
다시 돌아가서 완성된 모듈을 컴파일/설치를 합니다.
sudo make
sudo make install
이렇게 해서 설치된 모듈은 .so 형태의 동적 라이브러리 형태로 생성이 되며 컴파일 한 자리에서 생성되는 것이 아닌 /usr/lib/apache2/modules에 저장이 됩니다 (우분투 기준이므로 OS에 따라 루트가 달라질 수 있습니다. 만약에 이 루트에 없다면 "whereis apache2"명령어를 이용해 모듈이 저장되어 있는 위치를 파악합시다). 이때 모듈 명은 mod_[프로젝트명].so 형태로 저장되어 있습니다. 물론 ls명령어를 쳐보면 chmod가 기존 모듈과는 다르네 설정되어 있기 때문에 확 눈에 띄니 금방 찾을 수 있을 겁니다.
3. 모듈 세팅
이제 모듈이 설치되어있는 것까지 확인했으니, apache 설정 파일에 만든 모듈을 사용하겠다는 내용을 적어야 합니다. /etc/apache2로 이동한 다음, apache2.conf의 내용을 수정합니다.
sudo /etc/apache2
sudo vim apache2.conf
그리고 맨 밑에 아래와 같은 내용을 추가합니다.
LoadModule example_module /usr/lib/apache2/modules/mod_example.so
<Location /example>
SetHandler example
<Location>
추가를 하고 "sudo apachectl restart"를 실행한 다음 크롬 브라우저로 들어가서 url 창에 /localhost/example을 입력해서...
위의 문구가 뜨면, 웹서버가 성공적으로 구현되었다는 것을 확인할 수가 있습니다.
다음 장에서는 모듈 개발환경이 어떻게 되어 있는지, 그리고 모듈 소스 코드에 대한 분석을 주제로 포스팅할 예정입니다.
'Backend > C언어 + 아파치 모듈' 카테고리의 다른 글
[C언어로 웹서버 만들기 (0)] - 소개 (0) | 2022.04.24 |
---|