1. httpd.conf 파일 설정 후 http 재시작

#vi httpd.conf

#CustomLog "logs/access_log" combined 주석처리
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400 +540" combined

#systemctl stop httpd

#systemctl start httpd

 

날짜별로 생성된 access_log 파일 확인

[sysadm@dev-web logs]$ ls -alrt
합계 36
drwxr-xr-x. 15 root root  175 12월 18 22:25 ..
-rw-r--r--   1 root root    1 12월 19 22:16 mod_jk.shm.2165.lock
-rw-r--r--   1 root root 1024 12월 19 22:18 mod_jk.shm.2165
-rw-r--r--   1 root root    1 12월 20 20:03 mod_jk.shm.769.lock
-rw-r--r--   1 root root 1024 12월 20 20:03 mod_jk.shm.769
-rw-r--r--   1 root root    1 12월 20 20:07 mod_jk.shm.783.lock
-rw-r--r--   1 root root 1024 12월 20 20:07 mod_jk.shm.783
-rw-r--r--.  1 root root 4784 12월 20 21:34 access_log
-rw-r--r--   1 root root    1 12월 20 21:52 mod_jk.shm.2938.lock
-rw-r--r--.  1 root root  904 12월 20 21:52 mod_jk.log
-rw-r--r--   1 root root    5 12월 20 21:52 httpd.pid
-rw-r--r--.  1 root root 3223 12월 20 21:52 error_log
drwxr-xr-x.  2 root root 4096 12월 20 21:53 .
-rw-r--r--   1 root root 1024 12월 20 21:54 mod_jk.shm.2938
-rw-r--r--   1 root root 1974 12월 20 21:54 access_log_20221220

 

2. 필요없는 요청은 제외하기(jpg, png, gif, css, ico, js, swf)

#vi httpd.conf

SetEnvIfNoCase Request_URI "\.(jpg|png|gif|css|ico|js|swf)$" exceptlist
CustomLog "|(rotatelogs 경로) ${APACHE_LOG_DIR}/access.log.%Y-%m-%d 86400" combined env=!exceptlist

#systemctl stop httpd

#systemctl start httpd

 

출처: https://jiniya.pe.kr/bbs/board.php?bo_table=pgtip&wr_id=28

zabbix 6.2 설치 사양 정보

https://www.zabbix.com/documentation/6.2/en/manual/installation/requirements

 

1. zabbix 6.2 설치

1) mysql 8.0 설치

mysql 저장소 설치

#wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm

#yum localinstall mysql80-community-release-el8-3.noarch.rpm

 

설치된 mysql 레포지토리 목록 확인

#yum repolist enabled | grep "mysql.*"

 

mysql-server 설치

#yum install -y mysql-server

 

mysql 버전확인

#mysqld -V

 

mysql 서버 시작 및 자동재시작 설정

#systemctl enable mysqld

#systemctl start mysqld

#systemctl status mysqld

 

mysql 서버 접속

- root 계정 초기 패스워드는 공백으로 입력

#mysql -uroot -p

 

mysql root 계정 패스워드 변경

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '패스워드입력';

 

2) zabbix 6.2 설치

zabbix 저장소 설치

#rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-3.el8.noarch.rpm

#dnf clean all

 

php용 dnf 모듈 버전 전환

#dnf module switch-to php:7.4

 

zabbix 서버, 프런트엔드, 에이전트 설치

#dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

 

초기 데이터베이스 생성

#mysql -uroot -p

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '패스워드입력';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

 

zabbix 서버에서 초기 스키마와 데이터 가져오기

#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

 

데이터베이스 스키마를 가져온 후 log_bin_trust_function_creators 옵션 비활성화

#mysql -uroot -p

mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

 

zabbix 서버용 데이터베이스 구성

#vi /etc/zabbix/zabbix_server.conf

DBPassword=password(zabbix 계정 패스워드 입력)

 

zabbix 서버 및 에이전트 프로세스 시작, 자동 재시작 설정

#systemctl restart zabbix-server zabbix-agent httpd php-fpm
#systemctl enable zabbix-server zabbix-agent httpd php-fpm

 

zabbix UI 웹페이지 접속

http://host ip 주소/zabbix

 

 

'Open source application > Zabbix' 카테고리의 다른 글

Rocky linux 8에 zabbix 6.0 설치하기  (0) 2023.01.26
Ubuntu 20.04에 zabbix 6.0 설치하기  (0) 2023.01.20

1. AWS SAA(AWS certified Solutions Architect Associate) 시험

1) 자격조건

-. 컴퓨팅, 네트워킹, 스토리지 및 데이터베이스 AWS 서비스는 물론, AWS 배포 및 관리 서비스를 포함하여 AWS 기술에 대한 1년의 실전 경험

-. AWS에서 워크로드를 배포, 관리, 운영한 경험과 보안 제어 및 규정 준수 요구 사항을 구현한 경험

-. AWS 관리 콘솔과 AWS Command Line Interface(CLI) 사용에 익숙

-. AWS Well-Architected Framework, AWS 네트워킹, 보안 서비스 및 AWS 글로벌 인프라에 관한 이해

-. 주어진 기술 요구 사항에 부합하는 AWS 서비스를 식별하고 AWS 기반 애플리케이션의 기술 요구사항을 정의하는 능력

 

2) 시험 범위에 포함되지 않는 항목

-. 복잡한 하이브리드 네트워크 아키텍쳐 설계

-. 여러 계정 내의 자격 증명 연동 설계

-. 규정 준수 요구 사항을 충족하는 아키텍처 설계

-. 설계에 전문 서비스 통합

-. 배포 전략 개발

-. 복잡한 멀티 티어 애플리케이션을 위한 마이그레이션 전략 수립

 

3) 문제 응답 유형

-. 객관식: 정답 1개와 오답 3개(정답 이외의 답)

-. 선다형: 5개 이상의 응답 중에 2개 이상의 정답

 

4)  채점 대상이 아닌 콘텐츠

-. 시험에는 점수에 영향을 주지 않는 채점 대상이 아닌 15개의 문항이 포함되어 있음. 

 

5) 시험결과

-. 시험 결과는 100~1,000 기준의 점수로 채점됩니다. 합격 최소 점수는 720점입니다. 

 

6) 시험 출제 비율(%)

-. 영역1: 복원력을 갖춘 아키텍처 설계 30%

-. 영역2: 고성능 아키텍처 설계 28%

-. 영역3: 안전한 애플리케이션 및 아키텍처 설계 24%

-. 영역4: 비용에 최적화된 아키텍처 설계 18%

-. 합계: 100%

 

영역1: 복원력을 갖춘 아키텍처 설계

1.1 멀티 티어 아키텍처 솔루션 설계

. 액세스 패턴을 기반으로 솔루션 설계를 결정합니다.

. 설계에 사용되는 구성 요소에 대한 조정 전략을 결정합니다.

. 요구 사항에 따라 적절한 데이터베이스를 선택합니다.

. 요구 사항에 따라 적절한 컴퓨팅 및 스토리지 서비스를 선택합니다.

 

1.2 고가용성 및/또는 내결합성 아키텍처 설계

. 가용 영역 전반에 내결합성 아키텍처를 제공하는 데 필요한 리소스의 양을 결정합니다.

. 단일 장애 지점을 완화하는 고가용성 구성을 선택합니다.

. 애플리케이션을 변경할 수 없는 경우 레거시 애플리케이션의 안정성을 개선하는 AWS 서비스를 적용합니다.

. 비즈니스 요구 사항을 충족하는 데 적절한 재해 복구 전략을 선택합니다.

. 솔루션의 고가용성을 보장하는 주요 성능 지표를 식별합니다.

 

1.3 AWS 서비스를 사용하여 결합 해제 메커니즘 설계

. 구성 요소의 소결합을 달성하기 위해 활용할 수 있는 AWS 서비스를 결정합니다.

. 결합 해제를 활성화하기 위해 서버리스 기술을 활용할 시기를 결정합니다.

 

1.4 적절한 복원력을 갖춘 스토리지 선택

. 데이터의 내구성을 보장하는 전략을 정의합니다.

. 데이터 서비스 일관성이 애플리케이션 운영에 미치는 영향을 파악합니다.

. 애플리케이션의 액세스 요구 사항을 충족하는 데이터 서비스를 선택합니다.

. 하이브리드 또는 비클라우드 네이티브 애플리케이션과 함께 사용할 수 있는 스토리지 서비스를 식별합니다.

 

영역2: 고성능 아키텍처 설계

2.1 워크로드를 위한 탄력적이고 확장 가능한 컴퓨팅 솔루션 식별

. 컴퓨팅, 스토리지 및 네트워킹 요구 사항에 따라 적절한 인스턴스를 선택합니다.

. 성능 요구 사항을 충족하도록 확장 가능한 적절한 아키텍처 및 서비스를 선택합니다.

. 솔루션의 성능을 모니터링하는 지표를 식별합니다.

 

2.2 워크로드를 위한 확장 가능한 고성능 스토리지 솔루션 선택

. 성능 요구 사항을 충족하는 스토리지 서비스 및 구성을 선택합니다.

. 향후 요구 사항을 수용하도록 확장 가능한 스토리지 서비스를 결정합니다.

 

2.3 워크로드를 위한 고성능 네트워킹 솔루션 선택

. 성능 요구 사항을 충족하는 데 적절한 AWS 연결 옵션을 선택합니다.

. AWS 퍼블릭 서비스에 대한 연결을 최적화하는 데 적절한 기능을 선택합니다.

. 성능 이점을 제공하는 엣지 캐싱 전략을 결정합니다.

. 마이그레이션 및/또는 수집에 적합한 데이터 전송 서비스를 선택합니다.

 

2.4 워크로드를 위한 고성능 데이터베이스 솔루션 선택

. 적절한 데이터베이스 조정 전략을 선택합니다.

. 성능 향상을 위해 데이터베이스 캐싱이 필요한 시점을 결정합니다.

. 성능 요구 사항을 충족하는 적합한 데이터베이스 서비스를 선택합니다.

 

영역3: 안전한 애플리케이션 및 아키텍처 설계

3.1 AWS 리소스에 대한 보안 액세스 설계

. 사용자, 그룹, 역할 간에 선택할 시점을 결정합니다.

. 지정된 액세스 정책의 순 효과를 해석합니다.

. 루트 계정을 보호하는 데 적절한 기술을 선택합니다.

. AWS IAM 의 기능을 사용하여 자격 증명을 보호하는 방법을 결정합니다.

. 애플리케이션이 AWS API에 액세스할 수 있는 안전한 방법을 결정합니다.

. AWS 리소스에 대한 액세스 추적 가능성을 생성하는 데 적절한 서비스를 선택합니다.

 

3.2 보안 애플리케이션 계층 설계

. 주어진 트래픽 제어 요구 사항에 따라 보안 그룹 및 네트워크 ACL 을 사용할 시점 및 방법을 결정합니다.

. 퍼블릭 서브넷과 프라이빗 서브넷을 사용하여 네트워크 세분화 전략을 결정합니다.

. Amazon VPC 에서 AWS 서비스 엔드포인트 또는 인터넷 기반 리소스에 안전하게 액세스하는 데 적절한 라우팅 메커니즘을 선택합니다.

. 외부 위협으로부터 애플리케이션을 보호하는 데 적절한 AWS 서비스를 선택합니다.

 

3.3 적절한 데이터 보안 옵션 선택

. 액세스 패턴을 기반으로 개체에 적용해야 하는 정책을 결정합니다.

. AWS 서비스의 저장 데이터 및 전송 중 데이터에 적절한 암호화 옵션을 선택합니다.

. 요구 사항에 따라 적절한 키 관리 옵션을 선택합니다.

 

영역4: 비용에 최적화된 아키텍처 설계

4.1 비용 효율적인 스토리지 솔루션 식별

. 요구 사항에 따라 가장 비용 효율적인 데이터 스토리지 옵션을 결정합니다.

. 비용을 최소화하기 위해 시간 경과에 따라 데이터를 스토리지 계층에 저장하는 자동화된 프로세스를 적용합니다.

 

4.2 비용 효율적인 컴퓨팅 및 데이터베이스 서비스 식별

. 워크로드의 각 측면에 대해 가장 비용 효율적인 Amazon EC2 결제 옵션을 결정합니다.

. 요구 사항에 따라 가장 비용 효율적인 데이터베이스 옵션을 결정합니다.

. 비용 관점에서 적절한 조정 전략을 선택합니다.

. 워크로드에 가장 적합한 컴퓨팅 리소스를 선택하고 크기를 고정합니다.

. 관리형 서비스 및 서버리스 아키텍처를 통해 TCO(총 소유 비용)를 최소화하는 옵션을 결정합니다.

 

4.3 비용에 최적화된 네트워크 아키텍처 설계

. 비용을 절감하기 위해 콘텐츠 전송을 사용할 수 있는 시점을 파악합니다.

. AWS 내에서 데이터 전송 비용을 절감하기 위한 전략을 결정합니다.

. AWS 환경과 온프레미스 환경 간에 가장 비용 효율적인 연결 옵션을 결정합니다.

 

 

7) 시험에서 다룰 수 있는 주요 도구, 기술 및 개념

-. 컴퓨팅

-. 비용 관리

-. 재해 복구

-. 고가용성

-. 관리 및 거버넌스

-. 마이크로서비스 및 구성 요소 결합 해제

-. 마이그레이션 및 데이터 전송

-. 네트워킹, 연결 및 콘텐츠 전송

-. 보안

-. 서버리스 설계 원칙

-. 스토리지

 

 

 

 

1. Grafana란?

- grafana란 시각화 도구의 종류로 쌓여 있는 데이터를 효과적으로 시각화할 수 있도록 해 주는 오픈소스 솔루션으로

주로 시계열 데이터베이스(Graphite, Prometheus, Elasticsearch, OpenTSDB, InfluxDB)와 같이 사용됩니다.

 

시계열 데이터

- 일정 시간 간격으로 배치된 숫자 데이터들의 나열이란 의미로 시간에 따라 기록되는 데이터를 말합니다.

 

2. Grafana 설치하기

① 설치파일 다운로드

#wget https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm

② 다운이 완료되면 파일을 설치합니다.

#yum localinstall grafana-7.4.3-1.x86_64.rpm

 

③ grafana 서비스를 시작하고 부팅시 자동으로 시작되게 설정합니다.

#systemctl start grafana-server

#systemctl enable grafana-server

 

④ grafana 서비스 프로세스와 포트 상태를 확인합니다.

#systemctl status grafana-server

#netstat -tnlp

⑤ grafana 웹 콘솔에 접속합니다.

- grafana 접속 URL: http://서버IP:3000

- 초기 계정: admin, 패스워드: admin

 

ssh-keygen 명령으로 공개키를 생성한 후 패스워드 없이 접속하려는 서버에 공개키를 복사한 후 파일이름을 authorized_keys 로 변경하고 ssh 접속을 시도했지만 여전히 패스워드를 물어보는 경우가 있음

 

공개키를 공유한 서버에서 다시한번 접속을 시도하려는 계정이랑 패스워드를 확인하고 공개키를 복사해놓은 경로(/home/사용자계정/.ssh/)와 sshd 서비스 상태, /etc/ssh/sshd_config 설정도 확인해봤지만 아무런 문제가 없다면 허공에 삽질만 계속하는 상황이 발생하게 될 수 있다. (분명히 이전에도 이렇게 해서 잘됐는데...)

 

이런 경우에는 공개키를 복사해둔 경로인 /home/사용자계정/.ssh의 권한을 확인해보고 .ssh 디렉토리의 권한이 700이 아닌 다른 권한(600, 777, 775...)으로 설정되어있다면 .ssh 디렉토리의 권한을 700으로 변경해주면 문제가 해결된다. 그리고 권한 변경 후 ssh 접속을 시도하면 패스워드 없이 ssh 접속에 성공한 것을 확인할 수 있다.

 

① 공개키를 복사해둔 경로인 /home/사용자계정/.ssh 디렉토리의 권한확인(700)

② ssh 접속 시도(패스워드 없이 접속 성공)

 

 

 

 

Ansible로 playbook 실행시 다음과 같은 오류가 발생할경우

 

오류이미지

"msg": "Missing sudo password" error

 

Ansible playbook으로 배포하려는 대상서버에서 접근계정을 sudoers에 추가해주면 문제가 해결됨

 

 

비교 연산자

 

정수 비교

연산자 의미 표현
-eq 같음 if [ $a -eq $b ]
-ne 같지 않음 if [ $a -ne $b ]
-gt 보다 큼 if [ $a -qt $b ]
-ge 크거나 같음 if [ $a -ge $b ]
-lt 보다 작음 if [ $a -lt $b ]
-le 작거나 같음 if [ $a -le $b ]
> 보다 큼 (($a > $b))
>= 크거나 같음 (($a >= $b))
< 보다 작음 (($a < $b))
<= 작거나 같음 (($a <= $b))

 

문자열 비교

연산자 의미 표현
= 같음 if [ "$a" = "$b" ]
== 같음 if [ "$a" == "$b" ]
!= 같지않음 if [ "$a" != "$b" ]
-z 문자열이 null, 길이가 0 if [ -z "$a" ]
! -z 문자열이 null이 아님 if [ ! -z "$a" ]
-n 문자열이 null이 아님 if [ -n "$a" ]
> ASCII 값이 보다 큼 if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
< ASCII 값이 보다 작음 if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]

참고

[[ "$a" == a* ]] -> $a가 "a"로 시작하면 참

[[ "$a" == "a*" ]] -> $a가 "a*" 와 같다면 참

[ "$a" == a* ] -> 잘못된 표현

[ "$a" == "a*" ] -> $a가 "a*"와 같다면 참

 

복합비교

연산자 의미 표현
-a 논리 and if [ $a -qa 0 -a $b -eq 1 ]
-o 논리 or if [ $a -qa 0 -o $b -eq 1 ]
&& 논리 and if [ $a -eq 0 ] && [ $b -eq 1 ]
if [[ $a -eq 0 && $b -eq 1]]
|| 논리 or if [ $a -eq 0 ] || [ $b -eq 1 ]
if [[ $a -eq 0 || $b -eq 1 ]]

 

파일 비교

연산자 의미 표현
-d Directory if [ -d FILE ]
-f File if [ -f FILE ]
-e Exist if [ -e FILE ]
-r Readable if [ -r FILE ]
-w Writable if [ -w FILE ]
-x Execuable if [ -x FILE ]
-s   if [ -s FILE ]
-O Same Owner if [ -O FILE ]
-G Same Group if [ -G FILE ]
-nt Newer Than if [ FILE1 -nt FILE2 ]
-ot Older Than if [ FILE1 -ot FILE2 ]

 

출처 : m.blog.naver.com/PostView.nhn?blogId=mmarine&logNo=70094622832&proxyReferer=https:%2F%2Fwww.google.com%2F

putty로 ssh 접속시 "expected key exchange group packet from server" 란 오류메시지가 출력되면서 접속이 실패할 경우 기존에 putty 버전에서 ssh 접속할때 키교환 관련 이슈로 문제가 발생했을 가능성이 있는데

 

putty를 최신버전으로 재설치하거나 putty로 ssh 접속시 "접속 -> SSH -> 키교환 -> 14로 끝나는 항목을 맨위로 올리고 1로 끝나는 항목을 두번째로 순위변경 한다음 접속을 시도하면 문제가 해결됨

 

 

 

1. Tomcat 설치

설치순서

- java 설치 - tomcat 다운로드 - Linux 서버로 파일복사 - tar파일 압축풀기 -  tomcat 디렉토리로 이동해서 tomcat 서비스 실행

java 디렉토리 생성

#mkdir /usr/local/java

 

② java 다운로드 후 서버로 파일복사, 압축해제

- www.oracle.com/java/technologies/javase-downloads.html  사이트 접속 후 linux용 jdk 파일 다운

or wget https://download.oracle.com/java/19/latest/jdk-19_linux-x64_bin.tar.gz

- 다운받은 jdk 파일을 apachetomcat서버의 /usr/local/java 디렉토리로 이동

#tar -xvzf jdk-19_linux-x64_bin.tar.gz

 

③ java 환경변수 등록 

#vi /etc/profile

## java export ##
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

 

④ java를 기본 명령어로 등록, java 적용 및 버전확인

#update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk-19.0.1/bin/java" 1;
#update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk-19.0.1/bin/javac" 1;
#update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-19.0.1/bin/javaws" 1;

#update-alternatives --set java /usr/local/java/jdk-19.0.1/bin/java;
#update-alternatives --set javac /usr/local/java/jdk-19.0.1/bin/javac;
#update-alternatives --set javaws /usr/local/java/jdk-19.0.1/bin/javaws;

 

#source /etc/profile

#java -version

tomcat 다운로드

- tomcat.apache.org/ 사이트 접속 후 linux용 tomcat 파일 다운

or wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.70/bin/apache-tomcat-9.0.70.tar.gz --no-check-certificate

 

 linux 서버로 파일 복사 후 압축해제

#tar -xvzf apache-tomcat-9.0.70.tar.gz

 

⑦ 압축해제한 디렉토리를 /usr/local로 이동

#mv apache-tomcat-9.0.70 /usr/local

 

⑧ tomcat 서비스 실행

#cd /usr/local/apache-tomcat-9.0.70/bin

#./startup.sh

⑨ tomcat 확인

- process 확인

#ps -ef | grep tomcat

- 웹브라우저를 통해 확인

 

 

1. USB storage 만 차단

① /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/usb/storage/ 경로에 있는 usb-storage.ko 파일을 /root 디렉토리로 이동

#mv -vf /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/usb/storage/usb-storage.ko /root/

② /root 디렉토리로 이동된 usb-storage.ko 파일 확인

#ls /root

③ 시스템 재부팅 후에 USB 장치를 연결해서 USB 차단이 제대로 되었는지 확인

'Linux' 카테고리의 다른 글

ssh공개키를 공유했는데 계속 패스워드를 물어보는 경우  (0) 2021.02.16
리눅스에서 Tomcat 설치 해보기  (0) 2020.11.29
리눅스에서 swap 사이즈 용량을 늘이는 방법  (0) 2019.12.10
FTP  (0) 2019.11.25
NFS  (0) 2019.11.22

to Top