Search
💻

Ubuntu 20.04 AMP 수동 설치 (1)

태그
backend study

1. 설치 환경

VM: VirtualBox
Linux: Ubuntu 20.04LTS
Apache: 2.4.53
Mysql: 8.0.28
PHP: 8.1.4

2. Apache 수동 설치

(1) 필요 패키지 설치
apt-get install build-essential apt-get install libexpat1-dev
JavaScript
복사
→ build-essential: gcc(c 컴파일러), g++(c++컴파일러), make(Makefile을 읽어 컴파일러에게 순차적으로 실행하도록 해줌) 한꺼번에 설치
(2) 소스파일 설치 (apr, apr-util, pcre, apache)
전통적으로 local 시스템에서 별도로 설치하는 응용 프로그램은 /usr/local에 설치함
- 소스 파일을 다운로드
1) apr-1.7.0 /usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz 2) apr-util-1.6.1 /usr/local# wget [http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz](http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz) 3) pcre-8.45 /usr/local# wget [https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/](https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/) 4) apache-2.4.53 /usr/local# wget [https://dlcdn.apache.org//httpd/httpd-2.4.53.tar.gz](https://dlcdn.apache.org//httpd/httpd-2.4.51.tar.gz)
JavaScript
복사
→ apr: apache가 설치된 플랫폼(OS)에 관계없이 일정한 동작을 위해 필요함
→ pcre: 정규식 패턴 일치를 구현하는 함수의 집합
→ 아파치 설치 시 두 라이브러리가 필요함
- 압축 해제
/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.53.tar.gz
JavaScript
복사
- apr 환경 설정 (./configure)
/usr/local# cd apr-1.7.0 /usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr
JavaScript
복사
→ 옵션 —prefix는 설치 디렉토리를 지정해주는 옵션임
→ ./configure 하면 Makefile이 만들어짐
→ 더 많은 옵션을 보려면 configure가 있는 경로에서 ./configure —help 입력함
→ ./configure --prefix=/usr/local/apr 환경 설정 해주면 libtoolT이 없어서 삭제를 못한다는 오류가 발생
→ cp -arp libtool libtoolT (libtool을 복사해서 libtoolT을 만들어줌) 하고 다시 실행하면 해결 됨.
- apr 컴파일(make)
/usr/local/apr-1.7.0# make
JavaScript
복사
- apr 설치(make install)
/usr/local/apr-1.7.0# make install
JavaScript
복사
- apr-util 환경 설정 (./configure)
/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
JavaScript
복사
- apr-util 컴파일(make)
/usr/local/apr-util-1.6.1# make
JavaScript
복사
- apr-util 설치(make install)
/usr/local//apr-util-1.6.1# make install
JavaScript
복사
- pcre 환경 설정 (./configure)
/usr/local# cd pcre-8.45 /usr/local/pcre-8.45#./configure --prefix=/usr/local/pcre
JavaScript
복사
- pcre 컴파일(make)
/usr/local/pcre-8.45# make
JavaScript
복사
- pcre 설치(make install)
/usr/local/pcre-8.45# make install
JavaScript
복사
→ Apache는 모듈화 된 서버이며, 모듈을 통해서 기능을 확장함
(환경 설정에 모듈 관련 옵션이 존재)
- Apache 환경 설정 (./configure)
/usr/local#cd httpd-2.4.53 /usr/local/httpd-2.4.53#./configure --prefix=/usr/local/pcre ./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
JavaScript
복사
→ 관련 모듈들을 동적 모듈로 설치하는지 등 모듈과 관련된 옵션이 있음
- Apache 컴파일(make)
/usr/local/httpd-2.4.53# make
JavaScript
복사
- Apache 설치(make install)
/usr/local/httpd-2.4.53# make install
JavaScript
복사
- Apache 실행 (두 가지 방법)
/usr/local# apache2.4/bin/httpd start /usr/local# apache2.4/bin/apachectl start
JavaScript
복사
→ 아파치 실행 파일은 bin 디렉토리에 있음
→ apachectl로 실행 시켰는데 프로세스 확인해보면
httpd가 실행되는 것을 보아 apachectl가 httpd를 실행시키는 것을 알 수 있음
→ httpd 실행 시 여러 개가 실행되고 있는 것을 확인할 수 있음
→ 웹 브라우저로 요청 시 정상 작동 확인.
→ 또한 아파치 실행 시 서버 네임을 설정하라는 오류가 발생할 때는
아파치 설정파일 httpd.conf에 들어가서 ServerName 주석 처리를 삭제 시 해결
localhost/ 로 요청 했을 때 [It Works!] 화면이 출력되는 이유
→DirectoryIndex를 index.html로 설정했기 때문
→ index.html 파일 내용을 보면 It works를 화면에 출력하도록 되어있음
→ 아파치는 DocumentRoot의 경로에서 index.html 파일을 읽음

3. Mysql 수동 설치

(1) 필요 패키지 설치
→ 공홈에서 필요 패키지 확인 가능
→ [dpkg -l | grep 패키지명] 으로 설치 유무 파악
/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
JavaScript
복사
→ Mysql은 컴파일 할 때 cmake 사용
(2) 소스파일 설치 (mysql)
/usr/local# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28.tar.gz
JavaScript
복사
- 압축 해제
/usr/local# tar xvfz mysql-8.0.28.tar.gz
JavaScript
복사
- 환경 설정 및 컴파일
/usr/local# cd mysql-8.0.28 /usr/local/mysql-8.0.28# mkdir dir_mysql /usr/local/mysql-8.0.28# cd dir_mysql /usr/local/mysql-8.0.28/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/mysql/boost
JavaScript
복사
→ 실습엔 CMAKE_INSTALL_PREFIX 옵션 경로를 /usr/local/mysql로 설정했지만 공홈에 들어가보면 이 경로가 default 값으로 이미 지정되어있음
→ MYSQL_DATADIR은 DB 관련 주요 정보들이 저장
→ BOOST는 C++ 소스 라이브러리
/usr/local/mysql-8.0.28/dir_mysql# make /usr/local/mysql-8.0.28/dir_mysql# make install
JavaScript
복사
→ make 과정에서 저장 공간 오류 발생 문제 해결 방법
1. 윈도우 키 + R 해서 cmd를 켜줌 2. C:\Program Files\Oracle\VirtualBox> <- VBoxManage 위치한 경로 3. C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyd "C:\Users\Yeon_J\VirtualBox VMs\RisingCamp\RisingCamp.vdi" --resize 754768
JavaScript
복사
→ 3번까지 마친 후에 컨트롤러:IDE에 처음 설치한 iso파일을 추가
→gparted를 설치 후
→ /dev/sda2, /dev/sda3 HDD 크기를 늘려줌
- MySQL DB 초기화
→ mysql 처음 설치 할 시 관리자 DB가 존재하지 않음
→ mysql DB(관리자 DB) 생성
→ mysql DB를 생성하기 위해 mysqld 실행
1. mysql 그룹 및 유저 생성 /usr/local/mysql-8.0.28/dir_mysql# groupadd mysql /usr/local/mysql-8.0.28/dir_mysql# useradd -r -g mysql -s /bin/false mysql 2. 디렉토리 생성 /usr/local# cd mysql /usr/local/mysql# mkdir mysql-files (이름 아무거나 상관없음) 3. 권한주기 /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 4. 기본 DB 생성 /usr/local/mysql# bin/mysqld --initialize --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
JavaScript
복사
→ 실행을 하면 임시 비밀번호를 알려준다.
→ /usr/local/mysql/data에 mysql이 생성
- MySQL 서버 실행
→ bin 폴더에 실행 스크립트 존재
→ mysqld: mysql 데몬
→ mysql_safe: mysql 데몬 실행 스크립트
→ mysql: 클라이언트 프로그램으로 접속
→ mysqld 실행 후 mysql로 접속
/usr/local/mysql/bin# ./mysqld_safe --user=mysql & /usr/local/mysql/bin# ./mysql -u root -p Enter password: (임시 비번)
JavaScript
복사
→ 비밀번호 변경
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
JavaScript
복사
→ mysql DB
→ mysql DB의 테이블들을 확인해보면 user 테이블 등 사용자, 접근권한 등과 같은 정보들의 테이블들이 존재

4. PHP 수동 설치

(1) 필요 패키지 설치
apt-get install libxml2-dev apt-get install libjpeg-dev apt-get install libpng-dev apt-get install libsqlite3-dev
JavaScript
복사
(2) 소스파일 설치 (php)
- 소스 파일을 다운로드 및 압축 해제
/usr/local# wget https://www.php.net/distributions/php-8.1.4.tar.gz /usr/local# tar tar xvfz php-8.1.4.tar.gz
JavaScript
복사
- 환경 설정 (./configure)
/usr/local# cd php-8.1.4 /usr/local/php-8.1.4# ./configure \ --with-apxs2=/usr/local/apache2.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
JavaScript
복사
→ —with-apxs2: php를 apache에 동적 모듈로 설정할 명령 실행 파일이 있는 경로
- 컴파일 및 설치
/usr/local/php-8.1.4# make /usr/local/php-8.1.4# make test (생략 가능) /usr/local/php-8.1.4# make install
JavaScript
복사
- Apache PHP 연동
→ Apache 설정 파일 httpd.conf에서 php가 동적 모듈로 잘 설치되었는지 확인
1. vi를 열어 확인 /usr/local# cd apache2.4/conf /usr/local/apache2.4/conf# vi httpd.conf 2. grep으로 확인 /usr/local# grep php /usr/local/apache2.4/conf/httpd.conf
JavaScript
복사
→ Apache에서도 php 파일도 읽도록 설정
→ php 설정 파일 php.ini 파일 세팅
→ php 설치할 때 ./configure 옵션에 php.ini 경로 지정하지 않았기 때문에
→ /usr/local/lib/php.ini가 Default 경로
/usr/local/php-8.1.4# cp php.ini-production /usr/local/lib/php.ini
JavaScript
복사
→ Apache와 php 연동 확인
/usr/local# cd apache2.4/htdocs /usr/local/apache2.4/htdocs# vi phpinfo.php
JavaScript
복사
→ Apache DocumentRoot 경로에 테스트용 php 파일 생성
→ Apache 재 실행 후 localhost/phpinfo.php 접속
→ php 버전과 설정 내용 출력