Rocky9.2 / apache 2.4.52 / tomcat 10.0 / mariaDB10.6 설치 과정 (error를 최대한 제거한 설치)
전통적인 WEB service 3-tier 구성
1. 컴파일 사전 준비
yum install -y gcc gcc-c++ pcre-devel expat-devel openssl-devel
# ll
합계 65184
drwxr-x---. 6 root root 4096 1월 18 2021 Sys-Statistics-Linux-0.66
-rw-r--r--. 1 root root 49987 1월 18 2021 Sys-Statistics-Linux-0.66.tar.gz
-r--r--r--. 1 root root 55595906 1월 18 2021 VMwareTools-10.2.1-8267844.tar.gz
drwxr-xr-x 27 root root 4096 4월 2 2019 apr-1.7.0
-rw-r--r-- 1 root root 1093896 5월 23 10:36 apr-1.7.0.tar.gz
drwxr-xr-x 20 root root 4096 10월 18 2017 apr-util-1.6.1
-rw-r--r-- 1 root root 554301 5월 23 10:37 apr-util-1.6.1.tar.gz
drwxr-xr-x 12 root root 4096 5월 18 2021 httpd-2.4.52
-rw-r--r-- 1 root root 9418226 5월 23 10:37 httpd-2.4.52.tar.gz
drwxr-xr-x. 9 root root 4096 4월 15 2018 vmware-tools-distrib
2. apr 설치
apr과 apr-util은 Apache Portable Runtime (APR) 라이브러리의 일부입니다.
APR (Apache Portable Runtime): Apache 웹 서버와 함께 제공되는 라이브러리로, 여러 플랫폼에서 일반적인 운영체제 기능에 대한 인터페이스를 제공합니다. 이는 Apache HTTP Server 및 기타 Apache 프로젝트에서 사용되는 코어 라이브러리입니다. APR은 다양한 운영 체제에서 동작하는 이식성 높은 코드를 작성할 수 있도록 도와줍니다.
apr-util: APR을 확장하여 데이터베이스 연동, 암호화, XML 파싱 등과 같은 기능을 제공하는 유틸리티 라이브러리입니다. Apache에서는 데이터베이스와 같은 다양한 기능을 사용할 때 이러한 유틸리티를 통해 이러한 기능들을 쉽게 활용할 수 있습니다.
따라서 Apache를 소스로 설치할 때에는 일반적으로 APR 및 apr-util 라이브러리도 함께 설치하여 Apache가 필요로 하는 기능을 완전히 지원할 수 있도록 합니다.
[root@WEB apr-1.7.0]# ./configure --prefix=/usr/local/apr-1.7.0
[root@WEB apr-1.7.0]# cp -arp libtool libtoolT
[root@WEB apr-1.7.0]# ./configure --prefix=/usr/local/apr-1.7.0
[root@WEB apr-1.7.0]# make
[root@WEB apr-1.7.0]# make install
3. apr-util 설치
[root@WEB src]# cd apr-util-1.6.1
[root@WEB apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util-1.6.1 --with-apr=/usr/local/apr-1.7.0/
make && make install
4. httpd-2.4.48 설치
[root@WEB httpd-2.4.52]# ./configure --prefix=/data/apache2.4.48 --enable-module=all --enable-mods-shared=all --enable-so --with-mpm=worker --enable-rewrite --enable-file-cache --enable-cache --enable-disk-cache --enable-headers --enable-expires --enable-mem-cache--enable-mime-magic --enable-cern-meta --enable-ssl --enable-isapi --with-ldap --with-apr=/usr/local/apr-1.7.0/ --with-apr-util=/usr/local/apr-util-1.6.1/
make && make install
5. cronolog 설치
[root@WEB src]# wget http://pkgs.fedoraproject.org/repo/pkgs/cronolog/cronolog-1.6.2.tar.gz/\a44564fd5a5b061a5691b9a837d04979/cronolog-1.6.2.tar.gz
[root@WEB src]# tar zxvf cronolog-1.6.2.tar.gz
[root@WEB src]# cd cronolog-1.6.2/
[root@WEB src]# ./configure
[root@WEB src]# make && make install
6. tomcat connector 설치
[root@WEB native]# pwd
/usr/local/src/tomcat-connectors-1.2.46-src/native
[root@WEB native]# ./configure --with-apxs=/data/apache2.4.48/bin/apxs
[root@WEB native]# make && make install
[root@WEB modules]# pwd
/usr/local/apache2-ssl/modules
[root@WEB modules]# ls -al | grep jk
-rwxr-xr-x 1 root root 1666400 12월 2 03:35 mod_jk.so
7. workers.properties 생성
[root@WEB conf]# vi workers.properties
worker.list=jkstatus,corn
worker.jkstatus.type=status
worker.jkstatus.mount=/jkmanager
worker.corn.type=ajp13
worker.corn.host=톰캣 서버 IP
worker.corn.port=톰캣 연동 port
worker.corn.lbfactor=1
worker.corn.socket_keepalive=True
worker.corn.connection_pool_timeout=3600
8. httpd.conf 파일 설정
[root@WEB conf]# vi httpd.conf
# <LoadModule> 쪽에 아래 줄 추가
LoadModule jk_module modules/mod_jk.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 주석해제
LoadModule vhost_alias_module modules/mod_vhost_alias.so 주석해제
LoadModule ssl_module modules/mod_ssl.so 주석해제
# 맨 아래에 jk_module 연동 부분 설정
<IfModule jk_module>
JkWorkersFile /data/apache2.4.52/conf/workers.properties
JkLogFile "|/usr/local/sbin/cronolog /data/apache2.4.52/logs/%Y/%m%d_mod_jk.log"
JkShmFile /data/apache2.4.52/logs/mod_jk.shm
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkRequestLogFormat "%w %V %T %B %H %m %p %q %r %s %U %v"
JkMount /jkmanager/* jkstatus
</IfModule>
<Directory /data/bizgo>
AllowOverride none
Require all granted
</Directory>
ServerSignature Off
ServerTokens Prod
LimitRequestBody 50000000
TraceEnable Off
# (php 설치 시) AddType 검색하면
<IfModule mime_module>
</IfModule> 이부분 안에 아래 2줄 추가
AddType application/x-httpd-php .php .html .htm .inc .pia
AddType application/x-httpd-php-source .phps
9. apache 실행
[root@WEB bin]# ./apachectl configtest
Syntax OK
[root@WEB bin]# ./apachectl start
10. 서비스 ssl 도메인 설정
[root@WEB extra]# pwd
/data/apache2.4.52/conf/extra
[root@WEB extra]# vi httpd-ssl.conf
설정하고 재시작
여기서는 설치만 적도록 한다.
1. tomcat 10.0.6 바이너리 파일 다운로드
[root@WAS ~]#wget http://archive.apache.org/dist/tomcat/tomcat-10/v10.0.6/bin/apache-tomcat-10.0.6.tar.gz
압축해제 및 원하는 경로로 mv
2. tomcat server.xml 설정
[root@WAS config]# vi server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- 주석해제 (이부분 삭제)
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="19050"
redirectPort="8443"
secretRequired="false" /> -> 이부분 추가해줘야됨!!!!
--> 주석해제 (이부분 삭제)
3. openjdk17 (java) 설치
[root@WAS ]# dnf update
[root@WAS ]# dnf install java-17-openjdk-devel
[root@WAS ]#java -version
openjdk version "17.0.8" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.8.0.7-1) (build 17.0.8+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.8.0.7-1) (build 17.0.8+7-LTS, mixed mode, sharing)
톰캣 연동 tomcat-connectors 에서 에러 발생 시
[root@WEB native]# yum install -y perl
[root@WEB native]# vi /data/apache2.4.52/bin/apxs
#!/replace/with/path/to/perl/interpreter -w => #! /usr/bin/perl -w
-->첫 줄 수정
https://victorydntmd.tistory.com/225 참고
1. MySQL 사용자 생성
[root@DB1]# groupadd mysql
[root@DB1]# useradd -M -c "MySQL" -d /data/ -g mysql -s /sbin/nologin mysql
2. 바이너리 파일 올려두기 / 압축 해제
[root@DB1]# mkdir -p /data/mysql
[root@DB1]# tar zxvf mariadb-10.6.4-linux-systemd-x86_64.tar.gz
[root@DB1]# mv mariadb-10.6.4-linux-systemd-x86_64 mysql
3. my.cnf 설정
[root@DB1]# vi /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql/data
basedir = /usr/local/mysql
#character-set-client-handshake=FALSE
character-set-server = utf8mb4
collation_server = utf8mb4_general_ci
init_connect="SET collation_connection = utf8mb4_general_ci"
init_connect="SET NAMES utf8mb4 COLLATE utf8mb4_general_ci"
### SQL mode
sql-mode=
transaction-isolation = READ-COMMITTED
skip-character-set-client-handshake
#collation_connection = @@collation_database
# store procedure privileges
log_bin_trust_function_creators=1
#init-connect='SET NAMES utf8'
back_log = 50
max_connections = 1024
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 1024M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
#thread_concurrency = 8
#query_cache_size = 64M
#query_cache_limit = 2M
ft_min_word_len = 4
event_scheduler = ON
#default-storage-engine = innoDB
tmp_table_size = 64M
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
#myisam_recover
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 50G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 2G
innodb_buffer_pool_size= 2G
innodb_log_file_size = 512MB
#innodb_locks_unsafe_for_binlog = 1
innodb_file_per_table = 1
lower_case_table_names = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
prompt = "mysql [\\d] > "
#default-character-set = utf8
#init_connect='SET GLOBAL collation_connection = utf8_unicode_ci'
#init_connect='SET NAMES utf8'
#SET collation_connection = @@collation_database
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
4. 데이터베이스 초기화
mysql_install_db는 MySQL 바이너리 설치 후 데이터베이스를 초기화하고 시스템 테이블을 생성하는 스크립트입니다. 이 스크립트는 MySQL 데이터베이스 서버를 처음 설치하거나 업그레이드할 때 사용됩니다.
mysql_install_db를 실행하는 이유는 다음과 같습니다:
데이터베이스 초기화: MySQL 데이터베이스 서버를 처음 설치하면 데이터베이스 파일이나 디렉터리가 생성되지 않습니다. mysql_install_db를 실행하면 MySQL 데이터베이스 서버를 위한 초기 데이터베이스를 생성하고 필요한 시스템 테이블을 포함하여 초기 데이터베이스를 초기화합니다.
권한 및 소유권 설정: mysql_install_db는 데이터베이스 디렉터리와 파일에 대한 적절한 권한 및 소유권을 설정합니다. 이를 통해 MySQL 서버가 데이터베이스에 쓰기 및 읽기 권한을 가지고 있는지 확인할 수 있습니다.
사용자 및 그룹 설정: --user=mysql 옵션은 MySQL 프로세스를 시작하는 데 사용할 사용자를 지정합니다. 일반적으로 MySQL은 mysql 사용자로 실행됩니다. mysql_install_db는 데이터베이스 디렉터리 및 파일을 mysql 사용자의 소유권으로 생성하여 보안을 강화합니다.
따라서 mysql_install_db를 실행함으로써 MySQL 데이터베이스 서버를 초기화하고 사용할 준비가 된 상태로 만들 수 있습니다.
[root@DB1 mysql]# ./scripts/mysql_install_db --user=mysql
4. 심볼릭 링크 걸어서 사용
[root@DB1 mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
[root@DB1 mysql]# ln -s /usr/local/mysql/bin/mysqldump /usr/sbin/mysqldump
[root@DB1 mysql]# ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/mysql_config
[root@DB1 mysql]# ln -s /usr/local/mysql/bin/mysqladmin /usr/sbin/mysqladmin
5. DB 백그라운드로 실행
[root@DB1 mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
DB 시작 시 에러 발생 해결
[root@DB1 mysql]# ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
[root@DB1 mysql]# ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5