Android Linux에 서버를 구축하기 위해 관련 패키지를 다운로드/설치하는 도중, 다시 문제가 생겼다.
필자가 구축할 서버 중 하나는 http 웹 서버인데, 웹 서버 구축을 위해 관련 패키지인 httpd 를 yum 명령어로 설치하는 과정에서 오류가 발생했다.
yum install 명령어를 통해, 설치 가능한 httpd를 확인하고 y를 눌러 다운로드와 설치 과정을 진행했는데,
마무리 단계에서 컴퓨터가 다음과 같은 에러 문구를 뿜어내면서 설치를 거부한다...
해당 오류 문구를 긁어 구글링을 진행했다. 필자와 비슷한 버전의 httpd를 rpm으로 설치하면서 해당 오류를 맞이한 사람들 댓글이 장날 시장바닥 사람 머릿수만큼이나 북적댄다. 대부분이 RHEL계열, CentOS 7 사용자다
문제 제기 글에 달린 댓글에는, "나도 같은 일이 일어나요" 라는 글이 제일 많았다. 그나마 답변이라고 달려있는 글도, 필자의 실력으로 이해하기에는 애매하고 두루뭉실한 표현이 많았다. 오랜 검색 끝에, 가장 납득할만한 답변은 github에서 찾긴 했는데... 해당 답변을 참고하여 트러블슈팅을 진행한 사람들 역시, 일부는 이 문제를 해결하지 못한 듯 하다. 아마 CentOS 7에서 container를 사용하는 사용자에게서 발생하는 공통적인 문제점인듯 했다.
뭐... 반드시 yum 명령어를 사용해서 httpd를 설치해야하는 것은 아니기 때문에, 조금 귀찮더라도 소스파일을 다운받아 설치하기로 결심했다.
1. 소스파일의 다운로드
리눅스의 웹 서버 프로그램 중 아파치(Apache)라는 녀석이 있다. 필자가 알기로는 현재 전 세계에서 구동되는 대부분의 웹 서버는 아파치가 절대 다수를 차지한다고 알고 있다. 왜냐하면 오픈 소스인데다가, 리눅스에서 돌리는 것을 목적으로 만들어져, 서버 관리하는 입장에서 매우 편하기 때문에.
이 아파치 프로그램은 아파치 소프트웨어 재단이라는 곳에서 개발했는데, 아파치 홈페이지에 가면 Linux 용으로 압축된 소스파일을 다운받을 수 있다.
해당 페이지의 스크롤을 내리다보면, httpd 라는 폴더가 있다. 들어가면 다시 여러 파일이 보이는데, 그 중, gzip으로 압축된 최신 버전을 wget으로 다운받아, 압축을 풀었다.
압축 해제로 생성된 폴더로 들어가면, 설치 프로그램의 설정를 위한 configure 파일이 존재한다. 대부분의 소스파일이 c언어로 이루어져있기 때문에, 컴퓨터가 C를 번역할 수 있는 compiler와, 설치와 관련된 헤더 파일이 포함된 패키지가 미리 설치되어 있어야 한다. 아래의 사진은 httpd 소스파일 설치를 위해 필요한 패키지들을 나타낸다.
해당 패키지의 설치가 완료되면, 압축 해제된 소스파일 폴더로 이동하여, configure 명령어로 설정 작업을 진행한다.
=========================================================================
configure --prefix=/usr/local/apache2 --enable-mods-shared=all --with-mpm=worker --enable-ssl --with-ssl --enable-so
=========================================================================
--prefix=/usr/local/apache2 : C언어에서 binary 형태로 컴파일된 파일을 설치할 경로 설정
--enable-mods-shared=all : 아파치의 모든 모듈을 사용함
--with-mpm=worker
--enable-ssl : ssl(암호화통신) 사용 가능
--enable-so : 아파치 웹 서버에 필요한 모듈이나 라이브러리를 언제든지 적재하거나 내릴 수 있도록 함.
configure가 진행되는 시간은 약 10분 정도다. 마지막에 에러 문구가 출력되지 않았다면, 파일 설치를 위한 설정 구성이 완료된 것이니, make(설정에 맞게 소스파일을 Binary 파일로 번역함)와 make install(번역된 Binary파일을 설치함) 명령어를 차례대로 입력하여, 설치를 진행하면 된다. (만약 make 명령어를 인식하지 못한다면 yum install make 명령어로 make 패키지를 설치해 준다.)
설치가 완료되면, 압축 해제 후 생성된 httpd 파일 밑에, httpd 실행 파일이 존재할 것이다. 이 파일을 실행함으로써, httpd 서비스를 구동할 수 있다. 필자는 이 httpd가 위치한 폴더까지의 경로가 복잡해서, 마음편하게 /usr/sbin 밑으로 옮겨넣었다.
다행히 구동시킨 httpd가 exit 되지 않고, done으로 서비스 상태를 유지하고 있는 것이 확인되었다.
이제, 필자의 Android Linux에서 웹 페이지를 대충 만들고, 방화벽을 개방하여 외부에서의 접근을 확인하면 httpd 설치는 마무리된다.
- 웹 페이지 파일은 html 형식이며, 소스 컴파일로 설치된 httpd이므로, /usr/local/apache2/htdocs/에 위치해야한다.
- 방화벽은 외부에서 시작하는 http 통신을 허용하기 위해 INPUT 방향 tcp 80번 포트를 개방한다.
변경 내용의 적용을 위해, httpd 서비스 프로세스를 중지시켰다가 재가동 시킨 뒤, 필자의 윈도우와, 필자의 스마트폰(현재 서버로 사용중인 기기와는 별개의 제품이다)에서 Android Linux의 웹 페이지에 접속이 되는 것을 확인한 결과는 아래와 같다. 다행히도, 작성한 html 파일과 일치하는 결과다.
FIN.
'ОКБ (실험 설계국) > Trouble Shooting' 카테고리의 다른 글
7. [Python] Socket 프로그래밍 기본 테스트 및 윈도우 방화벽 (0) | 2020.05.26 |
---|---|
6. [CentOS7] vsftpd 소스파일 설치 에러 해결 방법 (0) | 2019.08.23 |
4. Android에 설치한 Linux에서 ping 사용하기 (0) | 2019.08.12 |
3. Busybox에 Systemctl 명령어가 보이지 않는데... (0) | 2019.07.28 |
2. 리눅스 설치를 위한 스마트폰 루팅(SHV-E275S) (0) | 2019.07.21 |
댓글