VMware에 리눅스 서버환경 구축+ APM 수동 설치
Web/Server

VMware에 리눅스 서버환경 구축+ APM 수동 설치

이번 주엔 가상머신에 새로운 웹 서버를 구축해보도록 하겠다!

가상머신에 우분투 인스턴스를 만들고, APM까지 수동으로 설치하고자 한다.

 

- 개발 환경

  • VM 환경 : VMware workstation player 16
  • OS : Ubuntu 20.04.03
  • Apache 2.4.52 (이하 2022/02 기준 최신 버전)
  • PHP
  • MySQL 8.2.08

 

1. Ubuntu 가상머신 생성

  • https://releases.ubuntu.com/20.04/ 사이트에서 iso 파일을 다운받는다.
  • virtualbox에서 새로만들기 -> 가상 머신 이름 입력-> 메모리 크기 설정 (최소 2GB이상으로 설정하시길..) -> 가상 하드디스크 생성 -> 우분투 ISO 설치 디스크 추가-> 우분투 설치
  • 설치 버튼이 안보이는 오류 발생 시 alt+f7 누르면 해결!

 +) 참고 사이트 : https://mainia.tistory.com/2379

 

버추얼박스(VirtualBox) 이용해서 우분투(Ubuntu) 설치하기

버추얼박스(VirtualBox) 이용해서 우분투(Ubuntu) 설치하기 환경: VirtualBox 버추얼박스(VirtualBox) 를 이용해서 다양한 OS 를 자신의 컴퓨터에 설치할 수 있습니다. 저는 직업 특성상 리눅스 OS 를 접할 일

mainia.tistory.com

 

-> 로 하려다가..... 갑자기 인스턴스 접근할 수 없음이 떠서 렉도 심하게 걸리는 게 별로라 vmware로 옮김.

여기서는 ubuntu easy install을 지원해서 따로 설정할 게 없음.

 

2. Apache 컴파일 설치

 : 의존성 패키지 설치 후 -> Apache 설치

 

1) 의존성 패키지 설치

  • APR & PCRE를 아파치 설치 이전에 설치해주어야 한다.
  • APR이란 OS에 관계 없이 적용 가능한 API를 제공하는 라이브러리이다.
  • PRCE란 정규 표현식 C 라이브러리이다.
sudo su
cd /usr/local

#파일 설치를 위한 패키지 다운받아놓음
apt-get install gcc make zlibc zlib1g zlib1g-dev libssl-dev openssl libxml2-dev ncurses-dev libexpat1-dev g++

# APR 설치 & 압축해제
wget https://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
tar xvfz apr-1.7.0.tar.gz

# APR-util 설치 & 압축해제
wget https://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
tar xvfz apr-util-1.6.1.tar.gz


# APR 설치
cd apr-1.7.0 
./configure --prefix=/usr/local/apr # 파일을 /usr/local/apr에 설치, 환경에 맞게 makefile 생성
make # 소스 컴파일
make install 

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

#PCRE 설치
cd ..
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download
tar xvfz download
cd pcre-8.45
./configure --prefix=/usr/local/src/apr-util-1.6.1 --with-apr=/usr/local/src/apr-1.7.0
make && make install

 

- make & makefile

: make 명령어는 파일 간의 종속관계를 파악하여 Makefile에 적힌대로 컴파일러에 명령하여 순차적으로 명령이 실행될 수 있도록 한다. 각 파일에 대한 반복적 명령을 자동화하여 시간을 단축할 수 있다는 장점이 있다.

 

+) 리눅스 파일 구조 참고:

https://webdir.tistory.com/101

 

리눅스 디렉토리 구조

리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있습니다. 기본적으로 디렉토리를 구분하는 '/'(슬래시)는 리눅스에서 사용하고 윈도우는 반대인 '\'(역슬래시)

webdir.tistory.com

-> APM등과 같은 어플리케이션을 소스로 컴파일 설치할때는 /usr/local/ 폴더에서 진행한다.

 

2) Apache  설치 & 서버 실행

- 아파치 설치

#Apache 공홈에서 다운로드
wget http://apache.tt.co.kr//httpd/httpd-2.4.52.tar.gz #2.4.52가 2022/02 기준 최신버전
tar xvfz httpd-2.4.52.tar.gz 

cd httpd-2.4.52
/configure --prefix=/usr/local/apache2 --enable-modules=most --enable-mods-shared=all --enable-so --with-apr=/usr/local/apr-1.7.0 --with-apr-util=/usr/local/apr-util-1.6.1 --with-pcre=/usr/local/pcre-8.45/pcre-config
make && make install

 

 

- 해결 오류

 # error : Did not find pcre-config script at 경로

-> 분명히 폴더에 파일이 있음에도 해당 오류가 발생하면 pcre-config 파일이 존재하는 경로를 모두 명시해주면 된다.

원래는 --with-pcre=/usr/local/pcre-8.45 이렇게만 적었더니 오류가 발생하였는데, 나의 경우에는  --with-pcre=/usr/local/pcre-8.45/pcre-config로 적어주었더니 해결되었다.

 

- 아파치 실행

sudo apt-get install curl
sudo apt-get install net-tools

# 서버 이름 설정
vim /usr/local/apache2/conf/httpd.conf

# ServerName 을 검색해서 아래와 같이수정
----
ServerName 127.0.0.1:80

# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.

<Directory />
    AllowOverride none
#   Require all denied
    Require all granted
</Directory>

----

# 아파치 시작
/usr/local/apache2/bin/httpd -k start #멈추고 싶으면 stop

 

- 해결 오류

# Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

-> 서버 이름을 설정 안했을 시 발생하는 오류이므로, conf파일을 vim으로 수정해줘야 한다.

- 주석처리되어있는 ServerName을 수정해주고, Require all granted로 권한을 허용한다.

 

실행 완.

 

- 서버 실행 이후 사용할 만한 Command

 1) ps -ef : 현재 실행 중인 프로세스 목록 출력

 2) netstat -anp : 네트워크 관련 상태 출력

 3) curl : url 주소의 html 정보를 출력해준다.

 

 

3. MySQL 컴파일 설치

1) MySQL 수동 설치

#필요한 패키지 설치
apt-get install cmake libssl-dev libboost-all-dev libncurses6-dev libncursesw6-dev git

wget dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28.tar.gz //현재 최신 버전 8.0.28
tar xvfz mysql-8.0.28.tar.gz

cd mysql-8.0.28
mkdir build001 # 빌드 파일 생성하기
cd build001

#Configure하고 설치
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

make 
make test && install

 

2) MySQL 서버 세팅

## 여기만 MySQL 컴파일 설치가 중간에 계속 멈춰서 몇번씩이나 재설치했는데(3일간 시도..) 안돼서 추후에 다시 공부해보고자 기록해놓는다. 일단 패키지 설치로 진행했음..

 

+) 공식 문서 참고

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-source-code-compiling.html

 

MySQL :: MySQL Router 8.0 :: 2.5.2 Compiling the Source Code

2.5.2 Compiling the Source Code To compile the source code, you should create a folder to contain the compiled binaries and executables, run cmake to create the make file, then compile the code. The following demonstrates the steps needed on a Ubuntu mach

dev.mysql.com

 

- MySQL 데이터베이스 초기화

groupadd mysql
useradd -r -g mysql -s /bin/false mysql #새로운 이용자 추가

cd /usr/local/mysql
mkdir mysql-files


#폴더에 권한부여
chown -R mysql:mysql /usr/local/mysql #하위 디렉토리까지 소유권을 할당
chown mysql:mysql mysql-files
chmod 750 mysql-files  #rwxr-x--- 소유자는 rwx 모두 가능하게 변경


#기본 DB 생성 &디렉토리 초기화
bin/mysqld --initialize --user=mysql --basdir=/usr/local/mysql --datadir=/usr/local/mysql/data

- 서버 시작

bin/mysqld_Safe --user=mysql & #서버 실행

bin/mysql -u root -p #서버 연결

bin/mysqladmin -u root -p shutdown #서버 종료

 

 

- 오류 1: vmware 인터넷 연결 오류

: Temporary failure resolving 'us.archive.ubuntu.com' 해당 오류가 나면서 apt-get이 작동되지 않았다.

내 경우에는 NAT 설정, Bridged 설정, DNS 서버 추가 등등은 다 문제를 해결해주지 못했고, dhclient로 자동으로 DNS를 설정하는 것을 통해 문제를 해결할 수 있었다. 커맨드는 아래와 같다.

sudo dhclient

 

- 오류 2: VMware Workstation “Cannot connect the virtual device sata0:1/ide1:0 because no corresponding device is available on the host. Do you want to try to connect virtual device every time you power on the virtual machine?: Yes/No”
: 가상머신을 사용하면 기본적으로 하드웨어 조건에 CD/DVD 가 만들어져 있다. cd/dvd device를 찾지 못해 생기는 오류이므로 그냥 No를 클릭하자. Vmware Setting에서 삭제할 수도 있음

- 오류 3 : MySQL 설치 시 id terminated with signal 9 [killed] -> vmware로 ubuntu 메모리 용량 올려서 해결. 

-오류 4: Ubuntu 부팅 오류 및 HDD 파티션 용량 추가

https://mslilsunshine.tistory.com/160

 

Ubuntu가 검은 커서에서 부팅되지 않는 오류

내가 이거 때문에 반나절을 마음고생해서.. 다른 사람들은 고생을 좀 덜 하셨으면 하는 마음입니다. 일단 나같은 경우에는 여기서 부팅이 더이상 되지 않았다. 몇번씩이나 껐다켰다 하고 여러가

mslilsunshine.tistory.com

 

4. PHP 수동설치

1) PHP 소스 컴파일

sudo apt-get install libxml2-dev libjpeg-dev libpng-dev libsqlite3-dev
 
wget https://www.php.net/distributions/php-7.4.26.tar.gz 
tar xvfz php-7.4.26.tar.gz

./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

make 
make test && install

이건 되네.. 3일 맘고생 하다가 갑자기 make되는 거 보니까 울컥,,,

 

2) Apache - PHP 연동

cd /usr/local/apache2/conf
gedit httpd.conf

  - 169번째 줄에 php 모듈 설치 확인 (php로 검색)

 

  - AddType에 3번째 코드 추가

: www 서버는 파일의 내용을 확장자에 맞춰서 클라이언트에 반환하게 되므로, php,html 파일도 인식할 수 있도록 추가.

 

3) php.ini 파일 위치 세팅

: php 디폴트 위치인 /usr/local/lib/php.ini로 파일을 복사해준다.

cp php.ini-production /usr/local/lib/php.ini

 

4) 테스트를 위한 php 파일 작성

cd /usr/local/apache2/htdocs
vi phpinfo.php

 

=> 연동 완료. 익숙해서 그런지 php가 가장 오류없이 설치가 수월했다..

 

# 참고 자료 (공식 문서는 모두 참고)

https://teamblog.tistory.com/41

 

[LAMP 서버구축]Apache 수동설치(컴파일설치)

작업 흐름 의존성 패키지 설치 ↓ 아파치 설치 설치환경 : Ubuntu 20.04 OS 의존성 패키지 설치 아파치 홈페이지의 설치 관련 글을 보면 요구사항이 5개가 있다. 이 중 APR과 PCRE를 아파치를 깔기 전에

teamblog.tistory.com

https://velog.io/@bonjaski0989/AWS-Apache-APR-APR-util-%EC%84%A4%EC%B9%98

 

[WEB] Apache (APR, APR-util, PCRE) 설치

AWS 환경에서 Apache 설치법에 대한 정리글입니다.

velog.io

https://salix97.tistory.com/141

 

Ubuntu 18.04 + Apache 2.4.41 + Mysql 8.0.19 수동설치하기

Ubuntu 18.04 OS 위에 Apache 2.4.41 컴파일 설치를 완료했다. PHP 를 설치하기 전에 Mysql 데이터베이스 를 설치하려고 한다. 자세한 내용은 표준 소스 배포를 사용하여 MySQL 설치 링크 참조 : https://dev.mys..

salix97.tistory.com