non-root user로 80 포트를 띄우면 java.net.SocketException: Permission denied 같은 에러가 날겁니다. 그렇다면, iptables를 배제한다면 setcap을 써야 하는데, 이게 아파치 웹 서버의 httpd 파일 처럼 단일 바이너리를 setcap 처리하는 것은 수월하지만 궁극적으로 java 파일을 통해 기동되는 톰캣은 이야기가 다소 복잡한 사항이 야기됩니다. 일단 다음과 같이 처리는 가능합니다. setcap 'cap_net_bind_service=+ep' /u01/jdk1.8.0_60/bin/java 하지만 이후 톰캣 기동 시 다음과 같은 라이브러리 문제가 발생할 수 있습니다 /u01/jdk1.8.0_60/bin/java: error while loading s..
Tomcat을 root 로 실행할 때의 문제점 root 권한으로 실행을 한다는 건 root 콘솔에서 startup.sh을 통해 톰캣을 실행시킨 것이다. 이때 문제점은 현재 데몬이 root 권한으로 떠있는 것이며, 이상태에서 사용자가 해당 사이트에 접속하면 그 사용자의 접근권한도 root 가 된다... 아파치는 root 로 실행이 가능하고 접속자의 권한은 nobody로 주지만 톰캣은 그렇지 않다. 톰캣은 무조건 데몬을 실행시킨 권한을 접속자에게 동일하게 준다. 문제점 1)업로드시 폴더에 퍼미션을 걸어놓아도 퍼미션에 영향을 받지 않고 프로그래밍만 되어 있으면 업로드가 된다. 접근 권한이 root 권한이기 때문에... 문제점 2)업로드 폴더 퍼미션에 실행권한을 빼도 파일업로드시 악의적인 코드를 심어두어 실행 ..
대기모드 사용으로 전기세를 절약할 수 있지만 상시로 켜 두어야 하는 상황에서는 그리 달갑지 않을 수도 있다. 이를 해결하기 위한 방법이다. 대기모드에 대한 설정. 데비안, 우분투 계열 경로는 /etc/systemd/logind.conf 안의 HandleLidSwitch 부분을 다음과 같이 바꾸어 준다. HandleLidSwitch=ignore 재부팅 하여도 되고 바로 적용하려면 데몬 재시작 $ sudo restart systemd-logind [출처] 리눅스. 노트북 덮개를 닫으면 대기모드로 갈 때 (대기모드 끄기)|작성자 mycute7 리눅스 노트북 덮개 대기모드 설정 윈도우에서는 제어판에서 베터리 설정에서 쉽게 했었는데, 리눅스는 어떻게 하는가~해결방법은 다음과 같습니다 1. 관리가 권한을 얻어주세요..
출처 : http://www.holaxprogramming.com/2017/10/09/java-jvm-performance/ Java 기반의 서버 애플리케이션은 운영 중에 아래와 같은 메세지와 함께 장애로 이어지는 결과가 일어나곤 합니다.Java.lang.OutOfMemoryError: Java heap space Java.lang.OutOfMemoryError: Permgen space Java 기반의 애플리케이션의 메모리는 운영체제의 JVM에서 관리하기 때문에 최악의 효율이 발생한다면 Full GC로 인해 애플리케이션이 멈추는 Stop The World 현상에서 자유로울 수 없습니다.이렇게 우리가 운영하고 있는 서비스는 하루에도 몇 번씩 GC가 발생하고 있고, 이런 상황에서 시스템 이슈로 인한 장애 ..
리눅스에 자바를 설치 하는 방법은 많이 있습니다만,저는 바이너리 압축 파일을 이용한 설치를 하려고 합니다.yum 이나 rpg를 사용하는 방법도 있지만, 이는 개인 취향 이겠지요. 1. 자바 압축 풀기 일단 www.oracle.com 에서 받은 자바 파일을 ftp를 통해 다음 폴더에 넣었습니다. /usr/local/src/java java 폴더는 제가 임의로 만든 폴더 입니다.이제 올려둔 jdk 파일의 압축을 tar로 풀어 줍니다. tar -xvf jdk-7u75-linux-x64.gz 압출이 풀리고 나면 아래와 같이 폴더가 생성 됩니다. 저는 이 폴더 명을 좀더 간결하게 바꾸겠습니다.그냥 두셔도 되고 폴더안의 내용을 java 폴더안에 넣어도 되지만,자바를 버전별로깔아 쓰는 경우도 있으니, java_[ve..
이번 가이드는 macOS 10.12 Sierra 기준입니다.맥을 사용하다 보면 한영 전환키가 계속 바뀌어 불편함을 느끼는 경우가 많습니다. 처음에 알게 된 전환키를 익숙하게 쓰고, 특히 여러 OS를 번갈아가며 사용할 때에는 언어 전환 키를 통일해 사용하는 것이 편리합니다.물론 맥의 키보드 환경설정에서는 기본적으로 사용자가 원하는 키보드 조합을 통해 언어 전환을 할 수 있습니다. 우선 키보드 전환 설정으로 들어가봅시다. 환경설정에서 키보드로 들어가주세요.키보드로 들어가신 후 아래 빨간 네모대로 클릭을 해 주세요. 여기서 마지막 네모를 더블클릭하고 키를 입력하면 언어 변경키를 지정할 수 있는데요, 더블클릭 후 Shift+Space를 누르면 아무런 반응이 일어나지 않는걸 보실 수 있습니다.하지만 사실은 가능합..
출처 : https://www.clien.net/service/board/lecture/9678315 시에라 및 예전 버전도 모두 되는 방법 입니다. 이번 시에라로 바뀌면서 가장 큰 충공깽이 한영 전환 단축키가 시리와 충돌되지 않나 구름입력기나 카라비너 같은키보드 리맵퍼들하고 충돌 먹는 등 좀 너무한다 싶지요. 그냥 고전적인 shift + space 로 바꿉시다. 파인더에서 command+shift+G 키를 눌러 다음 위치를 복붙 합니다. ~/Library/Preferences/com.apple.symbolichotkeys.plist 해당 파일을 편집하는데 저는 TextWrangler 를 주로 씁니다. 뭐 Xcode 쓰셔도 되니 적당한 텍스트 편집툴로 해당파일을 열구요. 해당 편집기의 파인드 기능(대부분..
Mysql Replication Semi Sync 를 구축해보자. 기본 준비 상황 master DB server 1대slave DB server 1대 replication은 동작중인 상태 를 가정한다. > install plugin rpl_semi_sync_master soname 'semisync_master.so'; > set global rpl_semi_sync_master_enabled = 1; > set global rpl_semi_sync_master_timeout = 10000; > install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; > set global rpl_semi_sync_slave_enabled = 1; # 이미 repl..
아래와 같은 사양에서 MySQL Replication을 설치하였습니다. 데이터의 정합성이 더 중요한 경우 쓸 수 있는 semi-sync를 적용하는 방법을 정리해 봅니다. - 설치 버전 Mysql 5.5.16 - CentOSsemi-sync를 쓰는 이유는, 실 서비스에서 기본 비동기 replication의 경우 간헐적으로 data의 consistency가 깨지는 경우가 발견되기 때문입니다. (일반화 해서 얘기 하긴 힘들겠지만요…) MySQL 5.5 버전 부터는 semi-sync를 공식적으로 지원하기 때문에, MySQL 공식 튜토리얼을 참조하면 비교적 간단하게 구성을 할수 있고 특히, RPM으로 MySQL을 이미 설치하였으면 별다른 추가 설치 없이 Semi-Sync도 구성 할 수 있었습니다. A. Maste..
window환경에서 mysql workbench에서 접속의 실패에러가 계속 발생했다. 에러내용은 이렇다. can’t connect Mysql 5.* server on ‘127.0.0.1’ (10061) 다양한 블로그를 찾아본 결과 해결방법은 아래와 같다. 1) # bind-address = 127.0.0.1 etc/mysql/my.cnf 파일에서 bind-address = 127.0.0.1 이라는 부분을 주석처리 할 것 (앞에 #을 붙여주면 된다) 접속가능한 IP가 127.0.0.1로 Lock이 되어있는 상태를 주석처리를 해줌으로써 lock을 해제한다. 2) mysql에 접속하여 root계정으로 접속이 가능한 host를 127.0.0.1에서 모든 IP로 변경할 것 변경한 환경설정에 맞춰서 mysql에서도..