일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- java
- Spring Batch
- MySQL
- Spring Boot
- ReactJS
- jsp
- elasticsearch
- php
- Git
- jenkins
- 요리
- springboot
- AWS
- tool
- Web Server
- JVM
- redis
- IntelliJ
- linux
- Gradle
- 맛집
- Spring
- Design Patterns
- it
- devops
- ubuntu
- db
- laravel
- Oracle
- javascript
- Today
- Total
목록Infra/Apache (9)
아무거나
apache restart와 graceful의 차이 apache 를 재시작하는 방법으로는 크게 restart 와 graceful 이 있습니다. 재시작하는건 동일하지만 약간의 차이가 있습니다. restart (kill -HUP) restart 의 경우 apache 의 모든 프로세스를 종료 시키고 재시작합니다. stop 한후 start와 동일합니다. 완전한 종료는 되지만 서비스 끊김이 발생합니다. graceful (kill -USR1) graceful 의 경우 접속된 컨넥션은 유지하고 그외 apache 모든 프로세스를 종료하고 재시작합니다. 이때 세션의 종료 없이 설정파일을 불러서 재실행합니다. 운영중인 서버에 작업을 하고 재시작할때는 restart 보다는 graceful 옵션을 사용하는걸 추천합니다.
현재 관리 중인 서버들 중 Apache만 설치하여 static resource들만 서비스하는 웹서버들이 있다. 그런데, 이 서버들이 메모리가 조금씩 증가하다가 미리 설정해둔 임계치를 돌파하는 일이 한달 정도 주기로 반복되고 있었다. 단순히 Apache memory leak으로 검색해보니 가장 많이 나오는 이야기가 MaxRequestsPerChild에 대한 설정이었다. MaxRequestsPerChild는 request를 처리할 httpd의 child process가 max 수치에 근접한 개수의 request를 처리하게되면 해당 child process를 재생성하도록 만드는 설정이다. 이 값을 0으로 세팅하면 child process는 죽지않고 계속 request를 처리하게 된다. 따라서 너무 낮은 값을 ..
아파치 로그에 로드밸런서 IP밖에 찍히지 않을 때 실제 클라이언트의 IP주소를 알고 싶다. 1. 사전작업 - 로드밸런서에 클라이언트 IP를 X-Forwarded-For 헤더 정보로 넘겨주는 설정이 되어 있어야 한다. 2. 아파치 설정 - vi /etc/apache2/apache2.conf * 아래 예시에는 기존의 combined 라인을 주석처리하고 %h를 %{X-Forwarded-For}i로 변경하였다. [내용수정] LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined #LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" ..
- sudo vi /etc/apache2/ports.conf - Listen 8080 // 파일에 Linsten 포트를 추가 후 저장합니다. - sudo vi /etc/apache2/sites-available/000-default.conf // 호스트 포트를 변경하기 위해 000-default.conf 파일을 수정 - -> // 80포트를 8080포트로 수정 후 저장 - 아파치 재시작
경로 : /etc/apache2/sites-available/000-default.conf ex ) 내용 추가 AllowOverride All ServerName localhost ServerAlias local.test.kr ServerAdmin webmaster@localhost DocumentRoot {소스경로} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined #RewriteEngine On #RewriteCond %{HTTP_HOST} ^(www\.zooma\.kr$) #RewriteRule (.*) http://test.kr$1 [R=301,L] AllowOverride All ServerNa..
1. 스트레스 테스트를할 서버를 정한다. ( 대상 컴퓨터에서 명령어 top을 입력하여 확인 ) 2. 스트레스 테스트를할 서버에 접근할 유저 컴퓨터에 접속한다. ex) ssh -i ~/Documents/dev/key/{key파일이름} ubuntu@{접속할ip} 3. 접속을 하려고 연속클릭을 안하기위해 하는 방법 -> 사용자들이 많이 접속하게하는 시뮬레이션 프로그램 설치 - sudo apt-get update - sudo apt-get install apache2-utils 4. ab 프로그램 사용(apache에서 만든 부하 발생기임) - ab -n 400 -c 1 {테스트할ip} // 주의는 http://127.0.0.1/ 앞에 http://랑 끝에 / 는 무조건 있어야된다. ex) -n requests ..
현상 : 원하는 경로에 특정 IP만 허용시킬려고 하는데 윗단에서 ELB가 돌고있어서 client IP를 가져오지 못하는 현상X-Forwarded-For ex) SetEnvIf X-Forwarded-For 52.79.85.217 allow_ip SetEnvIf X-Forwarded-For 61.38.173.92 allow_ip SetEnvIf X-Forwarded-For 221.154.188.23 allow_ip SetEnvIf X-Forwarded-For 221.154.188.23 allow_ip SetEnvIf X-Forwarded-For 183.102.146.235 allow_ip SetEnvIf X-Forwarded-For 119.197.117.214 allow_ip SetEnvIf X-Forwar..
1. 아파치 서버 MPM( Apache Multi-Processing Modules ) - 아파치 서버가 클라이언트에게서 받아들인 요청을 처리하기 위하여 자식 프로세스들에게 분배하는 모듈 - prefork 방식과 worker 방식이 있다 2. prefork - 하나의 자식 프로세스가 하나의 스레드를 갖는 구조로, 자식 프로세스는 최대 1024개까지 가능하다. - 스레드 간 메모리 공유 안 함(독립적이라 안정적인 대신에 메모리를 많이 사용) - 실행 중인 프로세스 복제하여 실행(메모리 영역까지 같이 복제) - 응답 프로세스를 미리 띄워놓고 클라이언트 요청 시 자식 프로세스가 반응하게 되는 방식 - 디버깅이 빈약한 플랫폼에서 쉬운 디버깅 가능 - 안전하지 않는 제3자가 만든 모듈 사용 가능 - 일반적으로 s..
웹 서버를 운영하면서 기본적인 보안처리에 대해 포스팅합니다. 해당 방법을 무조건 적용하라는건 아닙니다. 상황에 맞게 적용하여 사용하시길 권장드립니다. 확인명령으로 조회 후 확인하셔서 적용하시면 됩니다. [ Ubuntu 기준 ] 1. 관리서버 디렉토리 권한 설정 (일반 사용자가 관리서버 디렉토리에 접근할 경우 홈페이지 변조, 설정 변경 등으로 인한 장애가 발생할 수 있으므로 일반 사용자의 접근 권한을 제한해야 함.) * 확인명령 : ls -ald /etc/apache2/ sudo chown -R ubuntu:ubuntu apache2/ sudo chmod -R 750 apache2/ 2. 설정파일 권한 설정 (일반 사용자가 웹 서버의 설정 파일을 삭제, 변경할 수 있을 경우 시스템이 오작동하여 사용 불능 ..