안녕하세요 유똥입니다!
오늘은 APM 소스( Apache 2.4 + PHP 7.3 + MariaDB 10.3 ) 설치에 대하여 진행해보도록 하겠습니다.
소스 설치에 앞서, APM에 대해서 간략하게 말씀드리겠습니다.
APM은 ( Apache + PHP + MySQL ) 의 줄임말입니다. APM 소프트웨어가 존재하는 것이 아니라, 이 3가지 연동으로 운영되도록 만든 환경을 APM이라고 합니다. Apache 및 MySQL이 PHP와 호환성이 좋기 때문에 주로 세 프로그램을 묶어 패키지 형태로 사용됩니다.
소스 설치 ( compile 설치 )는 직접 컴파일러를 이용해 설치해야 하는 설치방법을 말합니다.
소스 코드 → 문법 검사 → 기계어 번역 →복사
↓
configure → make → make install
그렇다면 소스 설치를 하는 이유가 뭘까?라고 궁금하신 분들이 있으실 거라고 생각됩니다.
소스 설치를 하는 이유는 yum으로 설치 시 불필요하게 설치되는 파일들이 시스템의 필요 없는 자원을 사용하게 되고, 관리적으로도 문제가 발생할 수 있습니다. 그렇기 때문에 배제하고, 정말 필요한 기능만 넣어서 저사양의 서버에서 최대의 효율을 내기 위해서 소스 설치를 하는 것입니다.
APM 소스 설치 순서는
1 ) Apache → MySQL → PHP
2 ) MySQL → Apache → PHP
PHP를 가장 늦게 설치하는 이유는 PHP 컴파일 시 Apache, MySQL 설정이 들어가기 때문입니다.
저는 MySQL 소스 설치를 먼저 진행하겠습니다. 그 이유는 MySQL 소스 설치가 가장 오래 걸리기 때문입니다!
APM 소스 설치 시, 의존성 에러가 발생하여 설치하는데 문제가 생길 수 있으므로, 관련 패키지들을 확인하고 설치를 진행해야 합니다.
그러면 의존성이란 무엇인지에 대하여 설명드리겠습니다.
A라는 패키지를 정상적으로 설치 및 동작하기 위해서는 A 패키지를 받쳐주는 라이브러리가 필요합니다.
A라는 패키지를 설치하게 되면 의존성 검사를 진행하면서 A 패키지안에 서브 패키지가 있는지를 확인을 하게 됩니다.
이것들이 없으면 의존성 오류가 출력하기 때문에 의존성 오류를 해결하기 위해서는 각 패키지들을 받쳐주는 라이브러리 설치가 필요합니다.
대표적인 라이브러리에 대해서 안내드리겠습니다.
gd 라이브러리
Graphics 라이브러리로 선, 도형, 텍스트, 다중 색깔,
이미지의 cut paste, 채우기 등의 이미지 처리 기능과 이 결과를
그래픽 파일로 (gif, jpeg, png) 저장하는 기능을 제공한다.
gd gd-devel libjpeg libjpeg-devel
개발 라이브러리
ncurses-devel : 개발 툴 관련 [ 커널 개발 ]
gcc 라이브러리
gcc-c++, gcc : C언어로 짜인 프로그램 컴파일 툴
PHP 모듈
PHP 언어를 통해 AES 암호화를 진행해야 하는 일이 있었습니다.
PHP 언어의 양방향 암호화는 mcrypt_encrypt함수를 통해 진행
그러면 이제, 차례대로 설치 진행하겠습니다!
[ 설치 환경 ]
OS | Centos 7.6 |
Apache 2.4 | |
PHP 7.3 | |
MariaDB 10.3 |
1. 의존성 라이브러리 설치
yum -y install cmake
yum -y install libxml*
yum -y install freetype*
yum -y install libpng*
yum -y install libjpeg*
yum -y install flex
yum -y install gcc-c++
yum -y install openssl-devel
yum -y install epel-release
yum -y install gcc
yum -y install ncurses-devel
yum -y install gnutls-devel
yum -y install libxml2
yum -y install libxml2-devel
yum -y install bison
yum -y install gdbm-devel
yum -y install bzip2-devel
yum -y install curl-devel
yum -y install libjpeg-devel
yum -y install libXpm-devel
yum -y install freetype-devel
yum -y install libtool
yum -y install expat-devel
yum -y install apr-devel
yum -y install apr-util
yum -y install libzip
yum -y install libmcrypt
yum -y install libmcrypt-devel
yum -y install php-mcrypt
2. MariaDB 설치
설치 링크 : https://downloads.mariadb.org/mariadb/+releases/
2-1. MariaDB 다운로드
wget 뒤에 링크 주소 복사를 붙여 넣으시면 됩니다.
해당 링크 주소 시간이 지나면 변하기 때문에 직접 MySQL 홈페이지를 통해서 다운로드 받으시는걸 추천드립니다.
yum -y install wget
mkdir /root/src/
cd /root/src
wget https://downloads.mariadb.org/interstitial/mariadb-10.3.15/source/mariadb-10.3.15.tar.gz/from/https%3A//archive.mariadb.org/
mv index.html mariadb-10.3.15.tar.gz
tar xvfz mariadb-10.3.15.tar.gz
cd mariadb-10.3.15
2-2. MariaDB Cmake 컴파일
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/opt/mysql/var -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DENABLED_LOCAL_INFILE=ON -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_JEMALLOC=no -DWITH_ARIA_STORAGE_ENGINE=ON -DUSE_ARIA_FOR_TMP_TABLES=ON -DWITH_PARTITION_STORAGE_ENGINE=ON -DWITH_PERFSCHEMA_STORAGE_ENGINE=ON -DWITH_QUERY_CACHE_INFO=ON -DWITH_QUERY_RESPONSE_TIME=ON -DWITH_SAFEMALLOC=AUTO -DWITH_XTRADB_STORAGE_ENGINE=ON -DWITH_LOCALES=ON -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
위에 컴파일 내용은 아래의 내용 참고 부탁드립니다.
configure는 소스파일에 대한 환경설정을 해주는 명령어다.(configure뒤에 옵션을 넣음) 서버 환경에 맞혀 makefile을 생성해주는 과정이다.
-DCMAKE_INSTALL_PREFIX= mysql 디렉터리 설치 경로 지정
-DMYSQL_DATADIR= mysql data 디렉터리
-DMYSQL_UNIX_ADDR= 서버가 소켓 연결을 수신하는 Unix 소켓 파일의 경로 [ 절대 경로 ]
-DENABLED_LOCAL_INFILE = local_infile 변수 사용, 텍스트 파일의 데이터를 특정 테이블에 저장하는 변수
-DWITH_SSL= SSL 지원 여부 / 기본값 off
-DWITH_ZLIB= zlib 지원 여부 / 기본값 system
-DWITH_PERFSCHEMA_STORAGE_ENGINE= 서버에 정적 스토리지 엔진 설정
-DWITH_PERFSCHEMA_STORAGE_ENGINE= 서버에 정적스토리지 엔진 설정
ㄴ Aria 스토리지 엔진 지원
ㄴ Partition 스토리지 엔진 지원
ㄴ XtraDB 스토리지 엔진 지원
ㄴ TokuDB 플러그인 지원
-DDEFAULT_CHARSET= 컴파일 환경에 대한 설명 코멘트
-DWITH_EXTRA_CHARSETS= 추가 charset 지정
2-3. MariaDB 설치
make -j `grep processor /proc/cpuinfo | wc -l`; make install
위에 내용은 아래의 내용 참고 부탁드립니다.
make는 소스를 컴파일하는 명령어입니다.
컴파일이란 것은 소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정입니다.
make install은 make를 통해 만들어진 설치 파일(setup)을 설치를 하는 과정입니다.
빠른 설치를 위해, CPU 사용을 MySQL사용에 집중적으로 설치할 수 있도록 해당 명령어를 이용했습니다.
-j : 옵션의 경우 job을 분산시킨다
CPU 코어가 4개라면 , 한 번에 수행할 수 있는 명령을 -J4으로 지정하여, 프로세스가 4개가 생성되어 병렬로 수행합니다. 명령수는 프로세스 수로 정의
2-4. MariaDB 계정, 그룹 생성
useradd -M -s /bin/false mysql
groupadd mysql
useradd -g mysql mysql
2-5. MariaDB 설치된 MariaDB 경로 권한 설정
chown mysql:mysql /opt/mysql -R
chmod 755 /opt/mysql -R
2-6. MariaDB 설정 파일 및 basedir datadir 설정
vi /opt/mysql/support-files/mysql.server
↓ 아래 내용추가 ↓
basedir=/opt/mysql
datadir=/opt/mysql/var
위에 내용은 아래의 내용 참고 부탁드립니다.
mysql.server는 mysqld_safe를 실행합니다.
mysqld_safe는 위의 내용과 같이 mysqld를 호출하고 프로세스 모니터링하게 됩니다.
[ basedir ]
MySQL Engine 설치 위치
MySQL이 직접 설정하는 값
[ datadir ]
MySQL이 생성하는 파일들의 default 위치
default 위치는 basedir/data
my.cnf에 설정하여 수정 가능합니다.
2-7. my.cnf 설정
vi /etc/my.cnf
↓ 기존 설정 된게 전부 지우고 아래의 내용 추가 ↓
[mysqld]
init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_general_ci
table_open_cache=1024
max_connections=2048
max_user_connections=500
max_connect_errors=10000
wait_timeout=300
query_cache_type=1
query_cache_size=128M
query_cache_limit=5M
slow_query_log
long_query_time=3
max_allowed_packet=16M
sort_buffer_size=2M
skip-name-resolve
symbolic-links=0
[mysql]
default-character-set=utf8
/etc/my.cnf 옵션 설명
max_connections = 허용 가능한 최대 동시 접속수, 각각의 커넥션은 최소 thread_stack의 사이즈만큼의 메모리
max_connect_errors = 서버가 차단되기 전에 최대 연결 오류수
max_allowed_packet = 한 패킷의 최대 크기
symbolic-links = 심볼릭 링크 비활성화
slow_query_log = 느린 쿼리 기록 활성화
table_open_cache = DB 전체에서 오픈할 수 있는 테이블 개수
wait_timeout = 접속한 후 쿼리가 들어올 때까지 대기하는 시간(초) = noninteractive 커넥션 닫기까지의 시간
query_cache_type =쿼리에서 힌트로 쿼리 캐시를 사용하겠다고 설정한 경우에만 쿼리 캐시 사용
# 0 or OFF : 쿼리 캐시 사용 안 함, 쿼리 캐시를 안 쓰려면 query_cache_size도 0으로 설정해야 함
# 1 or on : SQL_NO_CACHE를 설정하지 않은 모든 쿼리의 결과를 캐싱함
# 2 or DEMAND : SQL_CACHE로 설정한 쿼리의 결과만 캐싱함
query_cache_size = 쿼리 결과를 캐싱하기 위해 할당하는 메모리 크기 (DB 전체)
query_cache_limit = 쿼리 결과가 이 값보다 크면 캐싱 안 함 (기본은 1M)
long_query_time = 느린 쿼리의 기준 시간(초)
sort_buffer_size = (인덱스를 사용할 수 없는) 정렬에 필요한 버퍼의 크기, ORDER BY 또는 GROUP BY 연산 속도와 관련
skip-name-resolve = 역 DNS 검색 비활성화 (IP 기반으로 접속을 하게 되면 hostname lookup 과정 생략)
wait_timeout = 접속한 후 쿼리가 들어올 때까지 대기하는 시간(초) = noninteractive 커넥션 닫기까지의 시간
max_user_connections = user 접속 허용 수
2-8. MariaDB 패스워드 초기화
mysql_install_db 패스워드 초기화 후 설치 디렉터리 및 데이터 /opt/mysql/var 로 설정
/opt/mysql/scripts/mysql_install_db --basedir=/opt/mysql --datadir=/opt/mysql/var
2-9. MariaDB 실행 및 접속
# MariaDB 실행
/opt/mysql/support-files/mysql.server start
SUCCESS!
# MariaDB 접속 [ 패스워드 초기화 했으므로, enter 치고 들어가시면 됩니다 ]
/opt/mysql/bin/mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.15-MariaDB-log Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
2-10. MariaDB 버전 확인
/opt/mysql/bin/mysql -V
/opt/mysql/bin/mysql Ver 15.1 Distrib 10.3.15-MariaDB, for Linux (x86_64) using readline 5.1
여기까지 진행하셨으면, MariaDB 설치 완료되었습니다.
다음장에는 이어서, Apache 진행하겠습니다.
'IT > Linux' 카테고리의 다른 글
Apache + tomcat 7 설치 및 연동 (2) (0) | 2021.01.23 |
---|---|
Apache + tomcat 7 설치 및 연동 (1) (0) | 2021.01.23 |
APM 이란? (1) | 2021.01.23 |
APM ( Apache 2.4 + PHP 7.3 + MariaDB 10.3 )소스설치 (3) (5) | 2021.01.21 |
APM ( Apache 2.4 + PHP 7.3 + MariaDB 10.3 )소스설치 (2) (0) | 2021.01.20 |
최근댓글