이번 주엔 가상머신에 새로운 웹 서버를 구축해보도록 하겠다!
가상머신에 우분투 인스턴스를 만들고, 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
-> 로 하려다가..... 갑자기 인스턴스 접근할 수 없음이 떠서 렉도 심하게 걸리는 게 별로라 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
-> 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 데이터베이스 초기화
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
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
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
https://velog.io/@bonjaski0989/AWS-Apache-APR-APR-util-%EC%84%A4%EC%B9%98
https://salix97.tistory.com/141
'Web > Server' 카테고리의 다른 글
AWS EC2 서버에 도메인/HTTPS/Redirection 적용 (0) | 2022.02.17 |
---|---|
AWS EC2 서버 구축/환경설정+ DB 외부 접속 (0) | 2022.02.15 |
Bitnami로 로컬 서버 구축/포트포워딩을 통한 외부 접속 (0) | 2022.02.14 |
Ubuntu가 검은 커서에서 부팅되지 않는 오류 (10) | 2022.02.11 |
Web Server와 WAS의 차이점 (0) | 2022.02.08 |