Ubuntu 에서 APM 컴파일 설치

redjen·2021년 9월 30일
0

0. 시작하기 전

모든 설치는 Ubuntu 20.04 LTS 버전 기준입니다.

패키지 설치는 너무 간단하고 빨리 끝나니 챌린지 과제에 도전해보았습니다. APM 패키지를 컴파일 수동 설치해 보겠습니다.

먼저 sudo apt-get update명령어를 통해 apt를 업데이트 해줍니다. apt는 Advanced Package Tool의 약어로, 데비안 계열의 리눅스 배포판에서 소프트웨어를 쉽게 설치 및 제거할 수 있게 도와주는 툴입니다.
또 gcc 컴파일러가 필요합니다. sudo apt-get install gcc를 통해 gcc 컴파일러를 설치해줍니다.
컴파일에 필요한 나머지 패키지들을 설치해줍니다.
apt-get install build-essential make cmake libssl-dev libxml2-dev libpng-dev libjpeg-dev libcurl4-openssl-dev libbz2-dev libncurses5 libncurses5-dev libaio1 libmcrypt-dev

1. Apache Http Server 설치

Apache는 가장 유명한 Web Server 중 하나입니다.
세상이 좋아졌습니다.. Apache 컴파일 설치를 검색하니 친절하게도 한국어 설치 방법 안내 페이지가 나왔습니다.
http://httpd.apache.org/docs/current/install.html


저는 성미가 급한 사람이니, 망설이지 않고 따라해 보겠습니다.

먼저 텍스트 기반 브라우저인 lynx를 깔아줍니다. http://httpd.apache.org/download.cgi가 lynx에서 제대로 보이지 않는 관계로,, 대신 lynx https://downloads.apache.org/httpd/를 입력하니 다음과 같은 화면이 나왔습니다.

오! 신기합니다. 텍스트 기반 브라우저를 사용해 볼 좋은 기회입니다. gui를 멀리하고 cli를 가까이 하는 습관을 들이는 중이기 때문에 앞으로도 종종 사용할 것 같습니다. (사실 wget을 사용하면 되긴 합니다)

쭉 내리다 보면 Releases가 보입니다.

httpd-2.x.xx.tar.gz를 다운 받을 것입니다. 커서를 위치해주고 d키를 누르면..

이렇게 다운로드 창이 뜹니다. Save to disk를 눌러 저장해줍니다. 기본 저장위치는 /home/사용자이름/에 있었습니다.
해당 폴더로 이동 후 gzip -d httpd-2.4.46.tar.gztar xvf httpd-2.4.46.tar 를 입력하여 압축을 해제해줍니다.

압축을 해제한 폴더에 들어가 보니 압축이 잘 해제되어 있음을 확인할 수 있었습니다.
./configure를 입력하여 make하기 전 구성 설정을 해 줍니다. --prefix=설치경로옵션을 주어 설치 경로를 변경할 수 있습니다. 기본 설치 경로는 /usr/local/apache2 입니다.

앗.. 오류입니다. APR을 찾을 수 없다고 합니다. Apache Portable Runtime Library로 보이는 것을 설치해줘야 합니다.
sudo apt-get install apache2-dev libapr1-dev libaprutil1-dev를 입력하여 APR을 설치해줍시다.

./configure 실행 중 또 한 번 오류가 발생했습니다. PCRE를 찾을 수 없어 설치해 줘야 합니다. http://pcre.org로 이동하여 압축파일을 받고 압축 해제 -> ./configure -> make -> sudo make install 하여 설치할 수 있습니다.
다시 오류가 발생했습니다. libpcre.so.1 라이브러리를 찾을 수 없다고 합니다. 저의 경우에는 sudo apt-get install libpcre2-dev로 pcre 라이브러리를 다시 패키지로 다운 받아 해결했습니다.

apache http server의 configure가 끝났습니다. makemake install을 실행해 줍니다.

위와 같은 화면이 나오면 apache http server의 설치가 끝났습니다. 야호!
vi /usr/local/apache2/conf/httpd.conf를 입력해 apache 설정 파일을 최종적으로 확인해줍니다.
실제 서비스를 하게 되면 이 파일에 여러 설정 값들을 이렇게 넣어서 운영할 것이지만, 이번엔 다른 옵션을 주지 않고 플레인한 상태로 서버를 기동해줄 것이니 넘어갑니다.

sudo /usr/local/apache2/bin/apachectl -k start로 apache 서버를 시작합니다. fqdn를 determine 할 수 없다는 경고 메시지가 나타납니다. fqdn이란? 하지만 서버는 제대로 기동하고 있습니다.

It works! 이것으로 Apache Http Server 컴파일 설치와 기동이 끝났습니다.

마지막으로 sudo /usr/local/apache2/bin/apachectl -k stop으로 서버 기동을 중지할 수 있습니다.

2. MySQL설치

다음은 MySQL을 컴파일 설치해 보도록 하겠습니다.
https://dev.mysql.com/doc/refman/8.0/en/source-installation.html을 참고하여 설치해 보겠습니다.
cd /usr/local로 설치할 폴더로 이동합니다.
wget dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22.tar.gz으로 MySQL 소스 압축 파일을 받겠습니다.
tar xvfz mysql-8.0.22.tar.gz으로 압축을 풀어줬습니다.

압축이 잘 풀려있는지 확인했습니다.

cmake \
 ..\
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DMYSQL_DATADIR=/usr/local/mysql/data \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 -DMYSQL_TCP_PORT=3306 \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DSYSCONFDIR=/etc \
 -DWITH_EXTRA_CHARSETS=all \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 -DDOWNLOAD_BOOST=1 \
 -DWITH_BOOST=/usr/local/mysql/boost

로 설치해 보겠습니다.

한번에 되면 컴파일 설치의 재미가 없죠. boost_1_73_0.tar.gz 다운로드에 실패했다고 합니다. boost라는 패키지가 필요한 것으로 보이지만 무슨 이유에선지 저 링크를 들어가면 forbidden 메시지가 출력되고 있었습니다. boost를 수동 설치해주겠습니다.

sudo apt-get install libboost-all-dev으로 boost를 설치해줍니다.
여전히 같은 오류 메시지가 나왔습니다. 30분 동안 헤매다 검색을 통해 MySQL이 요구하는 boost 버전(1_73_0)보다 낮은 boost 버전을 (1_72_0)을 설치하고 있었음을 깨달았습니다.

다시 한번 boost를 다운로드 받고 압축을 해제한 뒤,
sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.22 -DMYSQL_DATADIR=/usr/local/mysql-8.0.22/data -DWITH_BOOST=/usr/local/src/boost_1_73_0/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DFORCE_INSOURCE_BUILD=1 으로 cmake를 해주었습니다.

그런데.. 뭔가 이상합니다.

vm 위에 올라가 있는 리눅스의 용량이 꽉 차버리는 사태가 발생했습니다. 남은 진행률이 30% 정도임을 감안했을 때 얼마 안 가 용량 부족으로 make가 실패할 것 같습니다.

네.. 용량 부족으로 make에 실패했습니다. 어쩔 수 없이 이번에는 MySQL을 패키지 설치하도록 하겠습니다. 추후에 Amazon AWS EC2 인스턴스에 올려서 MySQL 소스 컴파일 설치는 재시도 해보겠습니다.
개인적으로는 cmake가 성공했으니, makemake install도 용량 문제가 아니었다면 성공하지 않았을까 하는 생각입니다.

결국 sudo apt-get install mysql-server로 설치했습니다.

설치한 MySQL은 service mysql start로 시작하고, service mysql stop으로 중지할 수 있습니다. MySQL 서비스의 상태는 service mysql status로 확인할 수 있습니다.

3. PHP 설치

필요한 패키지들을 설치해줍니다.
sudo apt-get install libxml2-dev libjpeg-dev libpng-dev libsqlite3-dev
cd /usr/local로 이동해준다음, wget https://www.php.net/distributions/php-7.4.1.tar.gz으로 php 압축파일을 다운로드 받아줍니다.

sudo tar xvfz php-7.4.1.tar.gz로 압축을 해제한 뒤 해당 폴더로 이동합니다. 최신 버전인 8.0.11 버전으로 php를 다운 받았었지만 지우고 7.4.1 버전으로 진행했기 때문에 사진의 버전이 다른 것은 신경쓰지 않으셔도 됩니다.

sudo ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mysqlnd --with-mysql-sock=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-imap-ssl \
--with-iconv \
--enable-gd \
--with-jpeg \
--with-libxml \
--with-openssl

으로 configure 해줍니다.

make && make install 해줍니다.

컴파일 설치가 진행되고 있습니다.

완료되었습니다. php와 apache의 버전을 확인해보았습니다.
제대로 설치된 것 같습니다. apache의 httpd.conf 파일을 수정해서 php와 연동시켜주도록 하겠습니다.

시간 관계 상 자세히 못 썼습니다.. https://www.php.net/manual/en/install.unix.apache2.phphttps://happylulurara.tistory.com/140를 참고하여 나머지 설정 완료하였습니다.
설정 완료 후 phpinfo.php 파일을 만들어준 결과물입니다.
<?php phpinfo(); ?>를 파일에 저장만 하면 됩니다.
localhost/phpinfo.php로 접속해 확인해보겠습니다.

apache와 php가 성공적으로 연동된 모습입니다. 야호!

요약

쉽지 않았습니다.. 확실히 패키지 설치보다 컴파일 설치가 몇 배는 더 어려운 것을 깨달았습니다. 마지막 php와 apache 연동할 때는 거의 2시간 동안 구글링만 했습니다. 하지만 환경 상 패키지 설치가 불가능 한 곳에서는 컴파일 설치를 할 수 있어야 하기 때문에, 앞으로도 종종 소스를 받아 컴파일 설치를 해보는 노력을 해보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다.

profile
make maketh install

0개의 댓글