리눅스 OS 인스턴스 생성 및 APM 소스설치(feat. VMware) - Part 2

안대현·2022년 5월 12일
0

Part 2. PHP, MySQL 설치하기
리눅스 OS 인스턴스 생성 및 Apache 설치는 이전 포스팅을 확인!

1. MySQL 설치하기

1-1. MySQL 8.0.28 소스설치 파일 다운로드 및 압축 해제

wget 명령어로 MySQL 소스설치 파일을 다운로드하고, tar 명령어로 압축 해제한다.

/usr/local# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28.tar.gz
/usr/local# tar xvfz mysql-8.0.28.tar.gz

1-2. MySQL 설치하기

/usr/local/mysql-8.0.28에서 dir_mysql 디렉토리를 하나 생성하고, 해당 파일 안에서 cmake 명령을 수행한다.

필수 패키지 설치가 되어 있지 않으면 오류가 발생하니 오류 코드를 잘 읽어보고 필요한 패키지를 설치하면 된다!

cmake 과정이 잘 수행되면 이어서 make 명령을 수행하고, make install을 진행하면 된다.

/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

/usr/local/mysql-8.0.28/dir_mysql# make
/usr/local/mysql-8.0.28/dir_mysql# make install

1-3. MySQL DB 초기화

MySQL 설치가 완료되면 아래 코드를 통해 DB를 초기화하는 과정이 필요하다.

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

기본 DB를 생성하면 임시 비밀번호를 부여해주니 꼭 확인해야 한다!

1-4. MySQL 서버 실행 및 비밀번호 재설정

임시 비밀번호를 입력하여 MySQL에 접속하면 우선 비밀번호 재설정부터 진행하자!

1. 서버 실행
/usr/local/mysql# bin/mysqld_safe --user=mysql &
# bin/mysql -u root -p
# Enter password : 임시 비밀번호 입력
2. 비밀번호 재설정 및 서버 종료
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '변경할 비밀번호';
mysql> exit
/usr/local/mysql# bin/mysqladmin -u root -p shutdown

이 과정을 거치면 MySQL 소스설치 및 기본 세팅은 끝이다.

2. PHP 설치하기

PHP 소스설치 과정도 비슷하다. 소스파일을 다운로드 받고 압축 해제한 뒤, 설치를 진행하면 된다.

2-1. 소스파일 다운로드 및 압축해제

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

2-2. PHP 8.1.0 설치

/usr/local# cd php-8.1.0
/usr/local/php-8.1.0# ./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
/usr/local/php-8.1.0# make
/usr/local/php-8.1.0# make test
/usr/local/php-8.1.0# make install

2-3. Apache, PHP 연동

make install이 끝나면 아파치 설정 파일을 열어 PHP 모듈이 설치되어 있는지 확인한다.
아마 167번 줄에서 php_module 내용을 확인할 수 있을 것이다.
gedit은 GUI 환경에서 지원되는 편집기이다. GUI가 지원되지 않는다면 vi 같은 편집기를 이용해야 한다.

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

다음으로 mime_module에 아래의 타입을 추가해야 한다.
381번 라인의 mime_module에 아래 코드를 추가한다.

  • AddType application/x-httpd-php .php .html
  • AddType application/x-compress .Z
  • AddType application/x-gzip .gz .tgz

httpd.conf 설정 다음은 php.ini 파일 세팅이다.

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

cp 명령어를 사용하여 production 시스템용 설정 파일(php.ini-production)을 /usr/local/lib/php.ini에 복사한다.

php-8.1.0 디렉토리에 PHP 설정 파일이 php.ini-development와 php.ini-production으로 두 개가 있는데 development는 개발용, production은 프로덕션 시스템용 버전이다.

이제 모든 설정이 끝났다!! 결과 확인을 위해 테스트용 phpinfo.php 파일을 작성하자!

<?php
phpinfo();
?>

연결 확인을 위해 아파치를 실행시킨다.

/usr/local# apache2.4/bin/httpd -k start

만일, 아래와 같은 오류가 발생한다면 httpd.conf 파일에서 ServerName을 설정해야 한다. 지금은 로컬 환경에서 진행하므로 localhost를 입력한다.

오류를 해결한 뒤, 다시 아파치를 실행시키고, http://127.0.0.1/phpinfo.php 로 접속하여 결과를 확인한다.
아래 사진처럼 PHP 정보가 표시되면 APM 소스설치가 끝이난다.


이렇게 APM을 소스설치 하는 실습을 진행해 보았는데, 리눅스 환경에 익숙치 않은 사람이라면 명령어 사용과 오류 발생 시 처리 과정에 있어서 쉽지 않은 과정을 겪을 것이다.

그러나, 해당 실습을 완료한다면 어느 정도 리눅스 명령어에 대한 감을 잡을 수 있을 것이라고 생각한다. 어려워도 반복 학습을 통해 코드 지향적 환경에 익숙해지도록 하자!

profile
백엔드 개발자로 향하는 계단을 오르고 있습니다! 😎

0개의 댓글