1. Ubuntu 20.04.3 LTS에 apache2.4.48 소스설치
parrallels를 이용해 M1맥북에 ubuntu를 설치하고 apm을 소스 설치할 계획입니다.
정말 감사하게도 많은 분들이 아주 자세하게 시행착오를 포스팅해주셔서 쉽게 설치할 수 있었습니다. 저도 저 스스로 뿐만 아니라 누군가에게 도움이 되고자 저의 소스 설치 과정을 글로 남깁니다. 이 글은 아래 블로그들에 기반해 쓰여졌으며 설치 과정과 명령어들의 의미를 중점적으로 다룹니다. 또한 제가 이해한 바탕으로 쓰인 글 이기 때문에 정확하지 않을 수 있습니다. 나중에 이 글의 내용 중 잘못된 부분이 발견되거나 추가할 내용이 생긴다면 수정, 업데이트하겠습니다.
참조:
https://luminitworld.tistory.com/77
https://itdexter.tistory.com/325
https://okdy.tistory.com/entry/configure-make-make-install
설치 환경
가상머신: Parallels Desktop 17 for Mac (https://www.parallels.com/kr/products/desktop/)
OS: Ubuntu 20.04.3.LTS (https://ubuntu.com/download/desktop)
Apache: Apache 2.4.48(http://httpd.apache.org/download.cgi)
parallels 설치와 ubuntu설치는 매우 간단하므로 넘어가겠습니다.
Apache 소스설치
Apache를 소스 설치하기 위해서 apr, apr-util, pcre 라이브러리를 설치해야합니다.
설지 할때 많은 명령어가 쓰입니다. 본문에서는 설치의 흐름과 의미를 잘 전달하기위해 명령어에 대한 설명은 이 글의 가장 아래 정리해두었습니다. 명령어의 쓰임이나 의미가 궁금하시다면 ctrl + F (Mac의 경우 command + F)로 "?#{궁금한 명령어}" 로 찾아보실 수 있습니다. 설명이 부족하다면 구글에 검색해보시기 바랍니다.
1. apr 설치
APR(Apache Portable Runtime)은 여러 플렛폼에서도 일관된 인터페이스를 제공하는 라이브러리를 생성하고 관리하는 기능의 라이브러리 입니다. 즉 다양한 플랫폼(UNiX variants, Windows 등)에서 하나의 어플리케이션을 실행 할 수 있게 해줍니다.
1.1. /usr/local에 apr과 apr-util을 다운 받고 압축 해제합니다.
> :/usr$ sudo su
> :/usr$ ls
> :/usr$ mkdir local
> :/usr$ cd local
> :/usr/local$ mkdir apache
> :/usr/local$ ls
> :/usr/local$ wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
> :/usr/local$ wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
> :/usr/local$ tar xvfz apr-1.7.0.tar.gz
> :/usr/local$ tar xvfz apr-util-1.6.1.tar.gz
> :/usr/local$ ls
$sudo su
: 일반 사용자가 root 권한을 빌려 명령을 실행 시켜줍니다.
$s
: 현재 디렉토리에 있는 파일, 폴더를 보여줍니다.
설치하거나 압축을 풀때 ls로 확인해 보는것을 추천합니다. 오류를 못보고 그냥 진행하다가 나중에 압축이 안풀려있거나 파일이 다운되지 않았을 수 도 있습니다.
$mkdir local
: 현재 디렉토리에 local 이라는 디렉토리를 생성합니다. 많은 블로그에서 local에 다운받아서 local에 다운받으려 했는데 숨겨진 파일 .local 만 있어서 local을 만들었습니다. .local에 다운받아도 되는건지는 확실하지 않습니다.
$cd local
: 현재 디렉토리에있는 local 디렉토리로 이동합니다.
$wget {주소}
: 주소경로에서 주소의 마지막 /~.tar.gz 압축파일을 다운받습니다.
#tar xvfz {~.tar.gz}
: 압축을 풀어줍니다.
1.2. apr과 apr-util을 설치, 컴파일 합니다.
> :/usr/local$ cd apr-1.7.0
> :/usr/local/apr-1.7.0$ ./configure --prefix=/usr/local/apr
> :/usr/local/apr-1.7.0$ make
> :/usr/local/apr-1.7.0$ make install
$cd apr-1.7.0
: 현재 디렉토리안의 apr-1.7.0디렉토리로 이동합니다.
$.configure --prefix=/usr/local/apr
: 인스톨할때 저장 경로설정 (/usr/local/apr에 인스톨 하겠다.)
$make
: 소스를 컴파일해 설치파일 생성
$make install
: 설치
저는 이때 오류가 생겼습니다.
error: cannot remve 'libtoolT':No such file or directory
-> libtoolT가 없다고 하니 만들어 줍니다.
> :/usr/local/apr-util-1.6.1$ cp -arp libtool libtoolT
$ cp -arp libtool libtoolT
: libtool을 libtoolT로 복사해줍니다.
libtoolT가 생겼으니 다시 make, make intall을 해줍니다.
2. apr-util 설치
> :/usr/local/apr-1.7.0$ cd ../apr-util-1.6.1
> :/usr/local/apr-util-1.6.1$ ./configure --prefix=/usr/local/apr-util
> :/usr/local/apr-util-1.6.1$ make
> :/usr/local/apr-util-1.6.1$ make install
apr-util도 같은 방법으로 설치해줍니다.
$cd .../apr-util-1.6.1
: 상위 디렉토리안의 apr-util-1.6.1디렉토리로 이동합니다.
3. pcre 설치
pcre(Perl Compatible Regular Expression)은 펄 호환 정규 표현식으로 정규식 패턴을 일치시켜주는 함수의 집합입니다.
1. /usr/local에 pcre를 설치, 압축해제, 컴파일합니다.
> :/usr/local/apr-util-1.6.1$ cd usr/local
> :/usr/local$ wget ftp://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
> :/usr/local$ tar xvfz pcre-8.43.gar.gz
> :/usr/local$ cd usr/local/pcre-8.43
> :/usr/local/pcre-8.43$ ./configure --prefix=/usr/local/pcre-8.43
> :/usr/local/pcre-8.43$ make
> :/usr/local/pcre-8.43$ make install
위 명령어들은 위에서 이미 설명했습니다.
4. Apache2.4.48 설치
http://httpd.apache.org/download.cgi에서 최신버전과 다운로드 링크를 확인합니다.
> :/usr/local/pcre-8.43$ cd usr/local
> :/usr/local$ wget https://downloads.apache.org//httpd/httpd-2.4.48.tar.gz
> :/usr/local$ tar xvfz tar xvfz httpd-2.4.48.tar.gz
> :/usr/local$ cd ./httpd-2.4.48
> :/usr/local/httpd-2.4.48$ ./configure --prefix=/usr/local/apache2.4 \
--enable-module=so --enable-rewrite --enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/loacl/apr-util \
--with-pcre=/usr/local/pcre \
--enable-mods-shared=all
> :/usr/local/httpd-2.4.48$ make
> :/usr/local/httpd-2.4.48$ make install
여기서 또 오류가 생겼습니다.
error:Makefile:28: recipe for tatget'htpasswd'faild
블로그들에서 이를 해결해기위해 GNU autoconf, GNU Automake, GNU libtool을 설치했고 그런데도 안되서 apr-util을 삭제 후 재설치하니 됐다고 했습니다. 그래서 저는 GNU 세 개를 다운받기전에 apr-util을 재설치 해봤습니다.
> :/usr/local/httpd-2.4.48$ cd ../
> :/usr/local$ ls
> :/usr/local$ rm -rf apr-util
> :/usr/local$ ls
> :/usr/local$ cd apr-util-1.6.1
> :/usr/local/apr-util-1.6.1$ ./configure --prefix=/usr/local/apr-util
> :/usr/local/apr-util-1.6.1$ make
> :/usr/local/apr-util-1.6.1$ make install
$rm -rf apr-util
: apr-util을 삭제합니다.
> :/usr/local/apr-util-1.6.1$ cd usr/local
> :/usr/local$ cd ./httpd-2.4.48
> :/usr/local/httpd-2.4.48$ ./configure --prefix=/usr/local/apache2.4 \
--enable-module=so --enable-rewrite --enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/loacl/apr-util \
--with-pcre=/usr/local/pcre \
--enable-mods-shared=all
> :/usr/local/httpd-2.4.48$ make
> :/usr/local/httpd-2.4.48$ make install
성공.
5. Apache 실행 및 서비스 설정
> :/usr/local/httpd-2.4.48$ cd /
> :$ sudo /usr/locla/apache2.4/bin/httpd -k start
> :$ ps -ef|grep httpd|grep -v grep
> :$ sudo netstat -anp|grep httpd
> :$ sudo curl http://127.0.0.1
$httpd -k start
: 아파치를 실행하는 명령어입니다.
servername이 없다고 뜨지만 일단 무시합니다.
$ ps -ef|grep httpd|grep -v grep
: 아파치가 잘 실행되는지 확인합니다.
$ sudo netstat -anp|grep httpd
: 네트워크 상태를 보여줍니다.
없다고 뜨니 설치해주고 다시 실행합니다.
> :$ apt-get install net-tools
> :$ sudo netstat -anp|grep httpd
$ sudo curl http://127.0.0.1
: 서버를 관리할때 GUI환경이 아닌 TLI에서 관리하므로 터미널에서 웹페이지의 html코드를 확인 할 수있게 해줍니다.
없다고 하니 설치해 줍니다.
> :$ apt-get install curl
> :$ sudo curl http://127.0.0.1
html코드가 잘 나옵니다. 파이어폭스에서 주소창에 127.0.0.1에 접속해 확인해봅니다.
서비스를 중단하려면 start를 stop으로 바꿔주면 됩니다.
> :$ sudo /usr/locla/apache2.4/bin/httpd -k stop
> :$ ps -ef|grep httpd|grep -v grep
servername이 없다는 경고문이 보기 싫으니 설정해 줬습니다.
> :$ sudo apt-get install vim
> :$ cd /usr/local/apache2.4/conf
> :$ sudo vim httpd.conf
$ sudo apt-get install vim
: vim을 설치합니다. vim은 vi를 더 편하게 관리, 편집 할 수 있는 도구입니다. 필수는 아닙니다.
$ cd /usr/local/apache2.4/conf
: 해당 위치로 이동합니다.
$ sudo vim httpd.conf
: vim으로 httpd.conf파일을 엽니다.
키보드의 아래 키로 206번째 줄로 이동합니다.
i를 누르면 입력, 수정이 가능해집니다. 206번째 줄의
ServerName www.{example}.com
의 example을 원하는 이름으로 수정해줍니다.
esc를 누르고 :wq 를 입력후 엔터로 수정을 마치고 저장합니다.
Apache를 서비스에 등록하는 방법은 다음과 같습니다.
> :$ sudo sp /usr/local/apache2.4/bin/apachetl /etc/init.d/httpd
등록 후에는 간단한 명령어로 apache를 실행, 종료 시킬 수 있습니다.
> :$ service httpd start
> :$ service httpd status
> :$ service httpd stop
Commands
?#sudo su
: 일반 사용자가 root 권한을 빌려 명령을 실행 시켜줍니다.
sudo는 root권한은 빌리기때p문에 root유저가 아닌 해당 유저로 log가 남습니다. 또한 비밀번호 요구 시 현재 로그인 한 사용자의 비밀번호를 요구합니다. 따라서 아무나 사용하는 것을 막기 위해 sudo 명령어는 /etc/sudoers에 등록된 사용자만 사용할 수 있습니다.
매번 sudo를 사용하기 귀팒으니 sudo -s 혹은 sudo su를 통해 반 영구적으로 root계정의 권한을 빌립니다.
-s VS su
su: home 디렉토리는 /root 환경변수를
?#ls
: 현재 디렉토리속 목록
[-l]: 자세히
[-al]: 숨겨진파일도 보여줌 (.으로 시작하면 숨김파일)
소유자/그룹/크기(바이트)/최종수정날짜
파일권한
파일형식 user group other
- rwx rwx rwx
d rxw -xr -x
l Rwx r-- ---
-: 파일
d: directory
l: link
r: read ,w: write, x: excute
?#cd
:
?#wget
:
?#tar
:
?#configure [--prefix=/]
: 인스톨을 하기전 환경을 설정 "--prefix="로 경로를 설정해준다.
configure는 소스파일에 대한 환경설정을 해주는 명령어다.(configure뒤에 옵션을 넣음) 서버환경에 맞쳐 makefile을 생성해주는 과정이다.
소스를 사용할 컴퓨터와 사용자의 환경에 맞게 내 컴퓨터는 어떤 기종이고 컴파일에 필요한 시스템 파일들은 어디에 위치해 있으며, 어떤곳에 설치를 하겠다고 지정을 하는 것이다.
예)
# ./configure --prefix = /usr/local/mysql 하게 되면 어떤 파일을 /usr/local/mysql 이라는 곳에 설치 하겠다는 뜻.
?#make
: make는 소스를 컴파일 하는 것이다. 컴파일이란 것은 소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정을 말한다. make 과정이 끝나고 나면 설치파일(Setup 파일 같은 것)이 생성된 상태라고 볼 수 있다.
여기서 중요한 것은 make에게 어떤 프로그램을 컴파일하고 링크해야 하는지 그 방법을 설명한 것이 makefile이다.
mafefile이란 것은 소스파일의 의존성이라던가 필요한 명령등 신경써야할 부분이 많게된다. 매번 각 소스파일을 따로 컴파일 하는 것도 매우 힘든일이다. 프로그램의 빌드과정을 표준 문법으로 기술한 파일을 makefile이라고 부른다.
?#make install
: make install은 make를 통해 만들어진 설치파일(setup)을 설치를 하는 과정이다. 한마디로 build된 프로그램을 실행 할 수 있게 파일들을 알맞은 위치에다가 복사를 한다.
make dep 이란 것은 의존성 검사라고 하는 것인데 커널 컴파일을 하기 전에 이것들의 소스들에 문제가 있는지 검사하는 것이다. ( 설치에 필요한 것들이 제대로 있나 확인하는 것)
?#cp [-arp] {source} {target}
: source파일을 target파일로 복사해줍니다.
https://www.ibm.com/docs/ko/i/7.3?topic=directories-cp
?#apt-get install {target}
:
?#ps -ef|grep httpd|grep -v grep
:
'Server' 카테고리의 다른 글
[Server] AWS 서버 구축 (0) | 2021.09.24 |
---|---|
[Server] Local 서버 구축 (0) | 2021.09.24 |