[Server]VirtualMachine,Ubuntu에 APM설치

resilient

·

2021. 1. 2. 18:22

728x90
반응형

https://apply.softsquared.com/

 

SOFTSQUARED

단순한 개발 지식만을배워가는 곳이 아닙니다 소프트스퀘어드는 함께 성장합니다. 개발 트레이닝을 통해 개인의 역량이 성장합니다. 성장한 역량은 소프트스퀘어드 내부의 다양한 활동을 통해

test.softsquared.com

  • 1. 가상 머신에 리눅스 계열 OS 설치
  • 2. Apache Php Mysql 소스 설치하기. (패키지 관리자 설치 안돼요! 너무 쉬운데 싶으면 의심하시면 됩니다.)
    단, 필수 라이브러리 및 컴파일러 설치는 패키지 관리자 가능합니다! ex) gcc... 이런 것들

 


1주 차에는 같은 팀원분들을 알아가는 OT시간을 갖고, 이론 시간에는 클라이언트, 서버, 백앤드, 데이터베이스 등등 서버가 어떻게 이루어져 있는지 알기 쉽게 비유하면서 설명을 해주셨고 과제를 받고, 과제를 이해하는 시간을 가졌다.

일주일 동안 과제를 하면서 나 혼자 스스로도 확실하게 공부해 봐야겠다.


#가상 머신에 리눅스 계열 OS 설치

 

내 노트북은 LG gram이고 윈도우10을 사용 중이다. 

윈도우에서 다른 운영체제를 사용해서 서버 개발을 하기 위한 도구가 바로 가상 머신이다.

 

리눅스는 오라클에서 배포하는 무료 시스템 운영체제이고 오픈 소스이다.

오픈 소스이기 때문에 수많은 리눅스의 재배포 버전들이 나왔으며, 대표적인 예로 Ubuntu(우분투), CentOS(센트OS),

RedHat 등이 있다.

또한 리눅스는 안정적이고 낮은 사양에서도 잘 돌아간다는 장점이 있다.

 

나는 Ubuntu OS를 가상 머신에 설치하고자 한다.

가상 머신은 Virtual Box를 사용한다.

www.virtualbox.org/wiki/Downloads 에 들어가서

노란 부분을 클릭해서 설치하면 된다.

이제 Ubuntu 홈페이지에서 releases.ubuntu.com/16.04/

노란 부분에 있는 파일을 다운로드하여준다.

 

그 후에 VirtualBox를 실행시킨 후 , 새로 만들기 버튼을 이용해 가상 머신을 만들어준다.

펭귄이 귀엽다

 

새로 만들기에서 이름과 폴더를 지정한 후에, 메모리 크기는 2G를 할당하였다.

가상 하드 디스크를 만들고, 하디 디스크 파일 종류는 VDI 그대로 기본값으로 설정해주었다. 하드 디스크 파일을 고정 크기로 설정해주고 하드 디스크 크기는 10GB로 설정하였다. 그 후에 설정 - 저장소 - 광학 드라이브에서 아까 설치한 iso 파일을 넣어주고 IDE설정을 해준다.

현재 가상 머신의 하드 디스크에는 실제로 우분투가 설치가 되어 있는 것은 아니므로, ISO 파일을 이용하여 이제 실제 우분투를 하드 디스크에 설치하면 된다. 따라서 노란색 [Install Ubuntu] 버튼을 클릭하여 우분투를 설치해준다.

그 후에는 그냥 다 기본값으로 넘어간다. 디스크 파티션 내용이 나와도 Continue 계속 눌러준다.

날짜 설정을 위해 위치를 물어보는 단계가 나오면 서울을 선택해준다.

그다음 언어 설정을 하고 우분투 OS에서 사용할 계정의 비밀번호를 설정한 뒤에 설치를 진행한다.

설치가 완료되었다.

# Apache, Php, Mysql 소스 설치하기. (패키지 매니저 없이!)

 

Apache는 Apache재단에서 만든 HTTP 웹서버로, 세계에서 가장 많이 쓰이는 웹 서버 중 하나이다. 그만큼 안정적이다.

Apache의 역할은 서비스 사용자가 URL을 입력하면 URL에 해당하는 서버에 설치된 apache가 실행되고, 사용자가 요청한 URL에 따라서 html, image와 같은 파일을 제공해준다. (종업원 역할) (이러한 파일을 '리소스'라고 부른다.)

 

Php는 Apache와 같이 웹페이지를 제공하는 역할을 한다.(주방장 역할) 하지만 차이가 있다.

Apache는 파일 형식으로 된 html을 수동적으로 전달하는 역할을 하는 반면,

Php는 프로그래밍적 요소를 더해서 동적으로 웹페이지를 생성해내는 것이다. Mysql 같은 데이터베이스에서 데이터를 꺼내서 제공하는 역할도 한다.

 

Mysql은 데이터베이스(냉장고 역할) 제품 중 하나고, 데이터를 관리하는 역할을 해준다. 원래는 파일에다가 데이터를 저장하지만, 파일들이 많아지고, 많은 양의 데이터를 관리해야 하는 상황에서 효율적인 데이터 관리를 제공한다.


#Apache를 소스코드로 설치

 

APR(Apache Portable Runtime), PCRE(Perl Compatible Regular Expressions)와 같은 의존성 패키지를 설치해준다.

먼저 APR을 설치해준다. APR은 아파치 웹 서버를 위한 지원 라이브러리이다.

먼저 리눅스에 소스코드를 저장할 디텍토리를 미리 만들어둔다.

(리눅스 디렉토리 구조를 https://webdir.tistory.com/101 여기서 참고해서 공부했다.)

/usr/local/ 여기가 Mysql Apache Php 등과 같은 어플레케이션들을 소스코드로 설치할 때 사용되는 디렉토리이다.

삽질을 하면서 usr/local/ 디렉토리에 apache라는 이름의 디렉토리을 만들어 두었다.

그 후에, /usr/local에 apr과 apr-util을 다운 받고 압축 해제한다.

wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz #(apr주소)
wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz #(apr-util주소)
tar xvfz apr-1.7.0.tar.gz #이 소스로 apr 파일을 압축을 해제해준다.
tar xvfz apr-util-1.6.1.tar.gz #이 소스로 apr-util 파일 압축을 해제해준다.

 

wget은 web get의 약자로 웹에 있는 파일을 다운로드 받을 때 사용하는 명령어 이고, tar xvfz는 tar.gz 형식의 압축된 파일을 압축해제 해주는 명령어이다.

 

그 이후에는 apr을 설치해준다.(오류가 계속 나와서 삽질을 했다..)

# cd usr/local/apr-1.7.0                                  #차례로 이 소스들을 설치해준다
# ./configure --prefix=/usr/local/apr
# make
# make install

 

./configure --prefix=/usr/local/apr 라는 명령어는 어떤 파일을 /usr/local/apr 에 설치하겠다는 뜻이다.

make 는 소스를 컴파일한다는 뜻이다. 컴파일이라는 것은 소스파일을 사용자가 실행가능한 파일로 만들어주는것이다. make 과정이 끝나고 나면 설치파일이이 생성된 상태이다. 여기서 중요한 것이 make 에게 어떤 프로그램을 컴파일하고 링크해야하는지 방법을 설명하는것인데 그게 makefile 이다. make install 은 make를 통해 만들어진 설치파일을 설치하는 과정이다. 

그 다음에는 apr-util을 설치해준다.

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

설치를 하면 에러가 뜬다

libexpat1-dev 라는 패키지가 없어서 뜨는 에러로, apt-get install libexpat1-dev 명령어로 해결할 수 있다고 한다.

 

설치가 완료되면 /usr/local/에 PCRE를 다운, 압축 해제 해주고 설치를 한다.

http://pcre.org/ 에 들어가서 Download부분을 참고한다.

# cd usr/local
# wget ftp://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz          #순서대로 설치해준다
# tar xvfz pcre-8.43.tar.gz
# cd usr/local/pcre-8.43
# ./configure --prefix=/usr/local/pcre
# make
# make install

이제 Apache소스를 설치해준다

http://httpd.apache.org/download.cgi에 들어가서 최신버전을 확인 할 수 있다.

Stable Release - Latest Version 에서 최신 버전을 알 수 있다.

# cd /usr/local
# wget http://apache.tt.co.kr//httpd/httpd-2.4.46.tar.gz
# tar xvfz httpd-2.4.46.tar.gz

다운이 완료되면 configure, make,make install로 설치한다.

# cd httpd-2.4.46
# ./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
# make
# make install

 

 

그럼면 이런 Servername 을 설정하라는 말이 나오는데 에러는 아니다.

 

그 후에는 netstat -anp | grep httpd 명령어를 실행해보고, netstat 이 없다고 나오면

sudo apt-get install net-tools

이코드를 작성해서 설치해준다

netstat은 네트워크 연결상태, 인터페이스 상태등을 보여주는 명령어이다.

 

netstat -anp | grep httpd 명령어를 실행하면 이렇게 나오는데  -anp 는 a는 all, 모든 네트워크 상태를 출력해주고

n은 numeric으로 도메인 주소를 숫자로 나타내준다. p는 program으로 PID와 사용중인 프로그램명을 출력한다.

 

curl http://127.0.0.1

위 명령어를 시작해준다. curl은 command line 기반의 웹 요청도구이다. curl뒤에 붙인 url 주소에 따른 HTML 정보를 콘솔에 출력해주는 역할을 한다.

다음으로 /usr/local/apache2.4/bin/apachectl 이라는 파일을 /etc/init.d/httpd 에 복사해준다.

sudo cp /usr/local/apache2.4/bin/apachectl /etc/init.d/httpd 

그리고 마지막으로 아파치 서비스를 등록해준다.

sudo update-rc.d httpd defaults

그 후에 파이어폭스를 켜서 http://localhost 를 검색해서 apache가 잘 실행되는지 확인한다.

파이어폭스 화면

생각보다 정말 오래 걸렸다. 패키지로 했을 때는 몇 분 안걸렸는데 소스로 설치하다보니까 오타도 많고 안되는 부분이 에러가 많아서 구글링을 열심히 했다. 오타가 많아서 타자를 많이치다보니 그새 손에 좀 익어서 '여긴 이 문법을 써야겠지' 라는 생각이 들기도 했다.

기본적인 컴파일 설치는 configure후, make, make install을 해주면 된다.

httpd.apache.org/docs/current/en/programs/configure.html


#Mysql을 소스코드로 설치

 

 

먼저 의존성 패키지들 먼저 설치해준다.

sudo apt-get update
sudo apt-get install cmake
sudo apt-get install libssl-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libncurses5-dev libncursesw5-dev

apt-get install libboost-all-dev 이 소스가 설치가 좀 걸린다.

 

그 후에 mysql. tar.gz 파일 을받아준다. 

sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19.tar.gz
sudo tar xvfz mysql-8.0.19.tar.gz

 

Mysql은 Cmake option 라는 명령어 프로그램이 있고 configure대신 cmake로 하는거같다.

sudo cd /usr/local/mysql-8.0.19
rm -f CMakeCache.txt   
mkdir steady01   #먼저 임의로 폴더를 생성하고 그곳에 설치해준다
cd steady01
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 

차례로 소스들을 설치해준다.

그러면 

이런 에러메시지가 출력되는데 소스 디렉토리 내에 build를 위한 디렉토리를 추가 생성하고 그 안에서 작업을 하도록 권고하기 때문에 오류가 뜬다고 한다.

어제 다른 팀원 루시님이 용량관련 에러가 계속 뜬다고 해서 해결책을 받으셨는데 나도 용량을 10GB로 해놓으니까 이미 다차서 에러가 나는거 같다.  40GB정도로 늘려줘야겠다.

ndb796.tistory.com/418 블로그를 참고해서 가상디스크를 복사해주고, 

내 컴퓨터 cmd창에 아래와 같이 입력해서 공간을 늘려준다.

C:\Program Files\Oracle\VirtualBox>VBoxmanage.exe modifyhd "C:\Users\HOME\Desktop\Coding\RP Ubuntu\RP Ubuntu_2.vdi" --resize 40960  
#40960MB가 40GB정도이다

그리고 VirtualBox를 실행해서 복사한 디스크를 적용해주면

40GB로 변경이 되었다. 다시 시작해서 설치를 마저한다.

소스를 설치하고 나면

이렇게 빌드가 완료 되었다는 메세지가 출력된다. make 와 make install로 설치를 완료해준다. make가 오래걸린다.

중간에 이런 오류가 계속 떴는데 해결했다. killall mysqld 하고 처음부터 하니까 잘된다.

 

 

 

 

 


#Php를 소스코드로 설치

 

Php도 Apache와 마찬가지로 의존성 패키지를 확인하고 설치해준다.

sudo apt-get install libxml2-dev  #xml2 참조 라이브러리
sudo apt-get install libjpeg-dev  #jpeg 참조 라이브러리 
sudo apt-get install libpng-dev   #png 참조 라이브러리 (PNG 그림을 다루는 데 필요한 C명령어를 포함 하고있다.)

그 다음은 Apache와 비슷한 방법으로 PHP.tar.gz 를 다운로드 해준다.

https://www.php.net/ (최신버전은 8.0.0 이다.)

cd /usr/local #로 이동
sudo wget https://www.php.net/distributions/php-8.0.0.tar.gz
sudo tar xvfz php-8.0.0.tar.gz

PHP configure 한 후, make, make install을 해준다.

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

 

오류가 난다.

찾아보니까 (ubuntuforums.org/showthread.php?t=2010386) openssl 을 따로 설치해보라고 한다. 

sudo apt-get install openssl

안된다.

같은 팀의 데릭님이 

sudo apt get-install libssl-dev

위의 라이브러리 설치를 해보라고 했는데 됐다. 

그 이후에 sqlite3 패키지를 사용할 수 없다는 말이 나온다.

sudo apt-get install libsqlite3-dev

위에 라이브러리 를 다운받아주면 해결된다.

그리고 다시 cofigure 해주면

PHP써줘서 고맙다는 문구와 라이센스가 나오고 make와 make install을 해준다.

 

그 다음은 Apache와 Php를 연동해 준다.

 

연동해줄 때

cd /usr/local/apache2.4/htdocs

htdocs 폴더안에 phpinfo.php 파일을 만들어주고

sudo vi phpinfo.php
<? php
phpinfo();
?>

으로 저장해준다. 이때 phpinfo.php에 작성할때는 vi입력 명령어인 i를 누른후 내용 입력후 esc키를 눌러주고 vi 파일 저장 및 닫기 명령어인 :wq 를 입력해서 파일을 닫아주고 실행하면 된다.(nyangnyangworld.tistory.com/6)

 

 

 

 

 


계속 에러가 나고, 오타도 많고 우분투를 40GB 으로 바꿔줬는데 실수로 파티션을 나눠버려서 php까지 설치하다가 그냥 삭제해버리고 처음부터 하나하나 설치하느라 2박3일이 걸렸다..

컴파일 설치를 왜 해보라고 했는지 알 수 있었고, 구체적으로는 아니지만 우분투랑 친해 질 수 있었다.

 

하다가 틀렸거나 안되는 부분은 언제든지 댓글 달아주시면 빠르게 해결하겠습니다!

 

#Reference

반응형