Ubuntu 18.04 APM 서버환경 구축 (수동 설치)

msung99·2022년 9월 24일
0
post-thumbnail

Virtual Box, Ubuntu 설치

학교 수업시간에 사용했던 Virtual Box 와 Ubuntu 를 별도의 설치 없이 그대로 진행했다. (Ubuntu 버전 : 18.04 LTS)


가상머신(Virtual Machine) 생성

  • 메모리 크기 : 4096MB

  • 하드디스크 : 지금 새 가상 하드 디스크 만들기

  • 파일크기 : 동적 크기 + 50GB 로 여유있게 확보

    • 용량을 조금만 확보하면, APM 설치시에 용량 부족해서 기존에 할당했던 크기를 다시 재설정하고, 또 다시 APM 을 다운받아야 하더라!
  • 하드디스크 파일종류 : VDI 선택

    • VHD 를 선택하니, 우분투 화면을 전체화면으로 바꿀떄 전체 화면 전환이 안된다.. (창 크기가 그대로 작게 유지됨!) VDI 로 선택해줘야 문제없음!
  • 광학 드라이브 : 다운 받았던 ubuntu.18.04.iso 파일을 추가


명령어 정리

  • APM 환경 설치시에 사용했던 명령어를 정리해보면 아래와 같다.

소스 패키지 설치 관련 명령어

1) wget : 웹서버로부터 원하는 파일을 다운로드

2) tar xvfz : 다운로드받은 tar.gz 파일을 현 디렉토리에 압축해제

cf) 일반적인 소스 패키지 설치는 configure - make - make install 의 3단계로 이루어진다.

3) configure : 내가 필요한 도구와 라이브러리가 다 있는지 등을 체크해주고 빌드 환경을 만들어주는 명령

  • 설치할 떄 옵션을 주지 않으면 기본으로 /usr/local/bin 이나 /usr/local/bin 밑에 설치하는데, 이 디렉토리들은 관리자 권한 없이는 접근 불가능

    => 이 경우는 --prefix 옵션을 주어 설치 디렉토리를 바꿔야한다.

예를 들어 홈 디렉토리 밑에 package 이라는 디렉토리를 만들어 그 곳에 설치하려 한다면 아래와 같이 작성한다.

# ./configure --prefix=/home/oracle/package

4) make : 소스코드를 컴파일함

5) make install : make 를 통해 만들어진 설치파일을 설치하는 과정

  • configure 을 마쳤다면 make 를 쳐서 컴파일하자!
  • 컴파일이 완료된 뒤 make install 을 치면 설치가 완료됨
  • 설치 제거를 원할시 make 를 했던 디렉토리에서 "make uninstall" 명령을 입력

apache 실행 관련 명령어

6) 실행 : httpd -k start

7) 종료 : httpd -k stop

계정에 대한 권한부여

  • chown : 파일 및 디렉토리 소유자 변경

APM 환경구축

  • ctrl + alt + t 를 눌러서 터미널 실행

1) Apache 설치

필수 패키지 설치

  • 아래 트러블 슈팅에서도 다루었지만, 필수적인 패키지를 설치하지 않자 설치가 원활히 진행되지 않고 에러가 발생했다!! (구글링하느라 애먹었다는..)
    Apache 설치전에 꼭 미리 설치하자!

  • 또 "sudo su" 명령어를 통해 관리자 계정으로 로그인 하도록 하자!

$ sudo su
# apt-get install make
# apt-get install build-essential
# apt-get install gcc
# apt-get install --reinstall make
# apt-get install libexpat1-dev
# apt-get install g++ 
# apt-get install net-tools
# apt-get install curl

웹서버로부터 파일 다운받기 - apr, apr-util, pcre, apache 설치

  • wget : 웹서버로 부터 파일을 다운받는 명령어

apache 라는 파일을 생성하고 거기에다 파일을 다운받도록 했다.

구글링을 해보니 아래 사이트에서 httpd 파일을 설치하라는게 있었는데,
2.4.51 버전이 없어서 따로 직접 사이트에 접속해서 최신 버전을 찾아서 다운 받도록 했다.

/usr/local# wget --no-check-certificate https://dlcdn.apache.org//httpd/httpd-2.4.51.tar.gz

설치 명령어들

cd /usr
cd local
mkdir apache
/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# wget --no-check-certificate https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.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# tar xvfz pcre-8.45.tar.gz
/usr/local# tar xvfz httpd-2.4.51.tar.gz

압축해제가 끝났다면, configure(빌드) - make(컴파일) - make install(소스파일 설치) 과정을 진행해주자!

apr 설치

/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

apr-util 설치

/usr/local# cd apr-util-1.6.1
/usr/local/apr-util-1.6.1# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
/usr/local/apr-util-1.6.1# make
/usr/local/apr-util-1.6.1# make install

pcre 설치

/usr/local# cd pcre-8.45
/usr/local/pcre-8.43# ./configure --prefix=/usr/local/pcre
/usr/local/pcre-8.43# make
/usr/local/pcre-8.43# make install

apache 설치

/usr/local# cd httpd-2.4.51
/usr/local/httpd-2.4.51# ./configure --prefix=/usr/local/apache2.4 \
--enable-module=so --enable-rewrite --enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre \
--enable-mods-shared=all
/usr/local/httpd-2.4.51# make
/usr/local/httpd-2.4.51# make install

apache 실행시키기

/usr/local# sudo apache2.4/bin/httpd -k start
/usr/local# ps -ef | grep httpd | grep -v grep
/usr/local# sudo netstat -anp | grep httpd
/usr/local# sudo curl http://127.0.0.1

아래와 같이 결과가 나오면 성공한 것이다!

Firefox에서 127.0.0.1 주소로 들어가서 확인해보면 아래와 같이 It works! 가 떠야지 성공한 것이다~!


2) MySQL 설치

필수 패키지 설치

apcache 설치때 처럼 패키지 설치 안해서 애먹지 말자..!

/usr/local# apt-get update
/usr/local# apt-get install cmake
/usr/local# apt-get install libssl-dev
/usr/local# apt-get install libboost-all-dev
/usr/local# apt-get install libncurses5-dev libncursesw5-dev
/usr/local# apt-get install perl

웹서버로 부터 파일 다운및 압축해제

  • mysql 버전은 8 이상을 권장하셔서, 8.0.19 버전으로 다운로드 했다!
/usr/local# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19.tar.gz
/usr/local# tar xvfz mysql-8.0.19.tar.gz

새 디렉토리 생성후 소스파일 빌드 + 컴파일 + 설치

  • dir_mysql 라는 새 디렉토리를 생성후 그곳에 소스파일을 설치했다.

  • 오타없이 진행하도록 하자! 오타 발생해서, mysql 설치가 올바르게 되지 않아서 소스파일 삭제하고 다시 다운받음...

(make 과정은 굉장히 오래걸리니, 다른 공부 하고있자! 나는 논리회로 수업들음ㅎ 내 컴퓨터 기준 1~2시간정도 걸렸던 것 같음)

cf) MySQL 은 Apache 와 달리 ./configure 가 아니라 cmake 를 사용하는 이유

Makefile 은 간단한 프로젝트를 관리하기 좋지만, 프로젝트 크기가 커질 경우, 아니면 해당 프로젝트를 여러 플랫폼에서 배포하기 위해서는 이것 저것 불편한 점이 많다. 이러한 문제를 해결하기 위해서 자주 사용하는 프로그램이 CMake 이다.

/usr/local# cd mysql-8.0.19
/usr/local/mysql-8.0.19# mkdir dir_mysql
/usr/local/mysql-8.0.19# cd dir_mysql

/usr/local/mysql-8.0.19# cd ..
/usr/local# cd src
/usr/local/src# sudo wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.gz
/usr/local/src# sudo tar xvfz boost_1_70_0.tar.gz
/usr/local/src# cd ..
/usr/local# cd mysql-8.0.19/dir_mysql
/usr/local/mysql-8.0.19/dir_mysql# 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/src/boost_1_70_0

설치가 완료되면, mysql 설정에 관해 진행할것 들이 아래와 같이 좀 많다..!

MySQL DB 초기화 과정

mysql 그룹 및 유저 생성

cd /usr/local/mysql-8.0.19/dir_mysql
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql

디렉토리 생성

/usr/local# cd mysql
/usr/local/mysql# mkdir mysql-files (이름 아무거나 상관없음)

권한주기

/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql# chown mysql:mysql mysql-files
/usr/local/mysql# chmod 750 mysql-files

기본 DB 생성

/usr/local/mysql# bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

기본 DB 생성까지 끝나면 임시 비밀번호가 발급된다!
어딘가에 기록해두었다가, 나중에 비밀번호를 변경시키자!

MySQL 서버실행 및 비밀번호 재설정

  1. MySQL 서버 실행
/usr/local/mysql# bin/mysqld_safe --user=mysql &

명령어를 입력하면 터미널이 아래 그림처럼 멈추는데, 바로 명령어들을 입력하고 발급받은 임시 비밀번호 입력하면 MySQL 에 접속 성공!

#bin/mysql -u root -p
#Enter password: 비밀번호 입력
  1. 비밀번호 재설정 및 서버종료
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '재설정할 비비밃번호';    // 비밀번호 재설정
mysql>exit  // 서버 종료

3) PHP 설치

필수 패키지

$sudo su
/usr/local# apt-get install libxml2-dev
/usr/local# apt-get install libjpeg-dev
/usr/local# apt-get install libpng-dev
/usr/local# apt-get install libsqlite3-dev

소스 설치(버전 8.1.0)

  • make 하고나서 바로 make install 을 하는 것이 아니라,
    make test 를 반드시 진행하고 make install 을 진행해야한다.

  • make test 과정 속에서 PHP install warning 경고가 뜰수도 있는데, 구글링을 잘 해보길 바란다. 대부분의 경우는 경고문이 뜬다고해서 다시 재설치 받을 필요없고 바로 make install 을 해주면 된다!

/usr/local# wget https://www.php.net/distributions/php-8.1.0.tar.gz
/usr/local# tar xvfz php-8.1.0.tar.gz

/usr/local# cd php-8.1.0

/usr/local/php-8.1.0# ./configure \
--with-apxs2=/usr/local/apache-2.4/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

/usr/local/php-8.1.0# make
/usr/local/php-8.1.0# make test
/usr/local/php-8.1.0# make install

Apahce, PHP 연동

모듈 설치 확인

  • libphp.so 가 잘 깔려있는지 확인하자!

/usr/local/apache2.4/modules 에 libphp.so 가 잘 깔려있다!

php.ini 파일 설정

  • 아파치 설정파일(httpd.conf) 에 php so 파일이 잘 설치되었는지 확인하려면, 아파치 설정파일을 vi 편집기로 열어 mine_module 에 AddType 해준다.
$ vi /usr/local/apache2.4/conf/httpd.conf

AddType application/x-http-php .php .html 모듈 추가

vi 편집기로 열었다면, 아래와 같이 모듈을 추가하자!

AddType application x-httpd-php .php .html 

php ini 셋팅

  • cp 명령어를 이용하여, php.ini-production 파일을 /usr/local/lib/php.ini 에 복사한다.

php configure 시에 옵션으로 php.ini 의 위치를 지정하지 않으면
디폴트로 /usr/local/lib/php.ini 를 사용한다!

$cd /usr/local/php-8.1.0
$cp php.ini-production /usr/local/lib/php.ini

php 테스트

  • 아파치의 웹 콘텐트(html, php 파일 등) 은 htdocs 디렉토리에 존재한다.
$cd /usr/local/apache2.4/htdocs
$vi phpinfo.php

아래와 같이 작성 후 저장

<? php
phpinfo();
?>

아파치 재실행

  • 아파치를 재실행 시킨 후 파이어폭스를 통해 http://127.0.1.1/phpinfo.php 로 접속하여 설치 정보가 출력되면 성공!
/usr/local# apache2.4/bin/httpd -k start
/usr/local# ps -ef | grep httpd | grep -v grep
/usr/local# sudo netstat -anp | grep httpd
/usr/local# sudo curl http://127.0.0.1


트러블슈팅

1) 필수 패키지 미설치

  • apache 설치 당시 알수없는 이유로 계속 오류가 발생했다.
    알고보니 필수 패키지를 빼먹은 것들이 많았다ㅋㅋㅋㅋ

예를들어 내가 아래와 같은 에러를 직면했었다.

no acceptable C compiler found in $PATH

이 문제를 해결하기 위해 여러 블로그에서 제안한 방법을 찾았지만, 결국 해결안은 패키지를 설치하는 것이였다! (간단한 일을 계속 애먹고 있었음..)

2) 영단어 오타 (복사 및 붙여넣기 기능의 제한)

  • mysql, apache 를 설치할때 진짜 너무너무 힘들었다...... configure 작업 진행시에 오타 하나로 인해 컴파일 에러가 발생해서 설치 하는데만 하루 종일 걸렸다..!

  • configure 이 성공했다고 한들, make 이후 make install 을 하다가 중간에 에러가 계속 발생해서 새롭게 다시 설치한 적이 많았다!

3) 파일 편집기 오류 발생

  • Apache 와 PHP 를 연동할때 vi 명령어를 통해 AddType application/x-http-php .php .html 모듈을 설치할 떄 에러가 발생했다.

  • "vi changing a readonly file" 오류가 발생함.
    => "sudo vi 파일경로" 를 입력해서 파일 수정이 가능하도록 했다!


출처 & 참고 블로그

APM 수동설치 가이드라인

https://woochan-autobiography.tistory.com/654#4.%204.%20php%20ini%20%EC%85%8B%ED%8C%85

https://vanillacreamdonut.tistory.com/209

https://velog.io/@danielyang-95/APM-%EC%88%98%EB%8F%99-%EC%84%A4%EC%B9%98-%EA%B3%BC%EC%A0%95%EC%97%90%EB%9F%AC

필수 패키지 미설치 해결

https://blog.ddagi.com/no-acceptable-c-compiler-found-in-path-%EC%98%A4%EB%A5%98/

vi/vim 명령어

https://iamfreeman.tistory.com/entry/vi-vim-%ED%8E%B8%EC%A7%91%EA%B8%B0-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-%EB%8B%A8%EC%B6%95%ED%82%A4-%EB%AA%A8%EC%9D%8C-%EB%AA%A9%EB%A1%9D

파일 편집기 오류 해결

https://m.blog.naver.com/wwwlolwww/220801020004

profile
https://haon.blog

0개의 댓글