본문으로 건너뛰기

"linux" 태그로 연결된 33개 게시물개의 게시물이 있습니다.

모든 태그 보기

CentOS 버전 및 Bit 확인

· 약 1분

리눅스에 모듈을 설치할 때 항상 버전과 Bit확인이 필요하다.

$ cat /etc/*release*

CentOS release 6.6 (Final)

Bit

$ getconf LONG_BIT

64

Linux 유저 비밀번호 변경

· 약 1분

리눅스 유저 비밀번호를 변경해보자. 비밀번호를 변경하고 싶은 유저로 로그인을 한 뒤 아래 명령어를 날리면 된다.

$ passwd

Root 권한이라면 다른 아이디의 비밀번호도 변경이 가능하다.

# passwd 뒤에 유저아이디를 적는다
$ passwd userid

cron 부팅시 프로그램 실행

· 약 1분

리눅스에서 재부팅시 자동으로 프로그램을 실행해야하는 경우가 있다. init.d에 등록하는 방법이 있지만 스케쥴 작업인 경우 크론에서 관리하는게 깔끔한 것 같다.

$ crontab -e

@reboot /test/test.sh start

@reboot를 쓴 뒤 부팅시 실행시킬 명령어를 적어주면 된다.

내부 아이피 사용 또는 수동 네트워크 설정시 오류

· 약 1분

수동으로 내부 아이피 세팅 중 문제가 발생하는 경우 확인해봐야한다.

네트워크 매니저가 돌아가고 있으면 충돌이 발생할 수 있다.

# 확인
$ service NetworkManager status

# 서비스 종료
$ service NetworkManager stop

# 부팅 서비스 삭제
$ chkconfig NetworkManager off

내부 IP 확인

$ /sbin/ifconfig $1 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

정상적으로 할당될 것이다.

mysql, maria 등의 서비스 포트 변경이 안 될때

· 약 3분

포트 확인

# grep 뒤에 확인할 포트를 적으면 된다.
$ netstat -lp | grep 3307

iptable 수정

$ vi /etc/sysconfig/iptables

# 해당 포트를 방화벽에서 열어준다.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3307 -j ACCEPT

database 포트 변경

$ vi /etc/my.cnf

# 포트가 설정되있는 부분을 찾아 변경한다.
port = 3307

서비스 재시작

$ service mysql restart

잘 했는데 서비스가 올라가지 않는다!!!

원인

로그 확인

mysql 설치 경로로 이동하여 로그를 살펴보자.

$ cd /var/lib/mysql/ # basedir 설정이 되어있다면 해당경로를 덧붙힌다.

$ cat {hostname}.err

[ERROR] Cant start server: Bind on TCP/IP port. Got error: 13: Permission denied
[ERROR] Do you already have another mysqld server running on port: 3307 ?
[ERROR] Aborting

해당 포트에 권한이 없다. 해당 포트를 다른 mysqld 서비스가 사용하는가? 라고 로그가 남겨져있다.

SELinux 확인

$ sestatus

SELinux status: enabled

혹시나 역시나 SELinux가 활성화 되어있다. SELinux에서 포트가 서비스용으로 활성화가 되지 않았기 때문에 계속 거절당한 것이였다.

해결

SELinux 설정 확인

semanage 명령어를 사용해서 확인하고 변경할 수 있다. 명령어 실행이 안될 경우 policycoreutils-python 패키지를 설치해주면 된다.

# semanage 설치
$ yum install -y policycoreutils-python

# 포트 확인
# mysql
$ semanage port -l | grep mysqld_port_t
# http
$ semanage port -l | grep http_port_t

mysqld_port_t tcp 1186, 3306, 63132-63164

변경하려는 3307 포트는 등록되어 있지 않다.

SELinux에 포트 등록

$ semanage port -a -t mysqld_port_t -p tcp 3307

명령어가 iptables에 등록하는 것과 유사하다.

확인

$ semanage port -l | grep mysqld_port_t

mysqld_port_t tcp 3307, 1186, 3306, 63132-63164

이제 mysql restart를 하면 정상적으로 구동된다.

여담

리눅스에서 정상적으로 진행했는데 뭔가 안된다면 SELinux부터 의심해보자.

Temporary failure in name resolution, 일시적인 실패

· 약 1분

모듈 설치시 domain을 사용하거나, telnet 도메인 포트를 호출해봤는데 name resolution에서 일시적인실패 또는 Temporary failure 문구의 에러가 보이는 경우가 있다.

nameserver를 찾지 못해서 발생한다.

해결

Root 계정으로 접속 후 nameserver 설정을 추가한다.

$ vi /etc/resolv.conf

# 아래 내용을 추가
nameserver 58.227.193.227
nameserver 221.143.20.131

저장하면 서비스 재시작이 필요없이 바로 적용된다.

여담

  • 통신사별 DNS 정보 페이지를 첨부한다.
  • 아마존 DNS 오류로 이 페이지의 조회수가 급증했다.

selinux 설정시 ftp 접근이 안될 때

· 약 1분

selinux 를 끄는건 보안상 취약하다. 하지만 켜놓으면 ftp 가 접근이 안되거나, 접근이 되어도 패시브모드가 접근이 안 되는 경우가 있다.

아래 세가지 명령어를 실행해서 selinux 의 설정을 바꿔준다.

$ setsebool -P httpd_enable_homedirs 1
$ setsebool -P httpd_can_network_connect 1
$ setsebool -P allow_ftpd_full_acccess 1

여담

옵션명이 곧 설명을 대신한다고 믿는다.

lynx 리눅스 브라우저 사용법

· 약 1분

lynx(링스) 브라우저를 설치하고 사용해보자

# 설치 확인
$ yum list installed | grep lynx

# lynx 설치
$ yum install -y lynx

예제

# lynx로 브라우저 호출
$ lynx https://gracefullight.github.io

# 브라우저 호출'만' 하고 싶을 때 (결과를 표시하지 않음)
$ lynx -dump https://gracefullight.github.io

여담

crontab과 병행해서 서버의 API를 주기적으로 동작시킬 수 있다.

CentOS Tomcat 및 Java(JDK) 설치

· 약 3분

rpm이 설치되어있지 않은 환경에서의 compile 설치 방법을 다룬다.

$ cat /etc/issue
# bit 확인
$ getconf LONG_BIT

JDK 설치

다운로드

여기에서 다운로드하면 된다. image from hexo

업로드 및 압축 해제

$ tar -zxvf jdk.tar.gz

경로 설정

$ vi .profile

# 추가 내용
export JAVA_HOME=/유저경로/java
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH=/bin:/usr/bin:/usr/local/bin:$JAVA_HOME/bin

# 저장
$ :wq!

bin 폴더 PATH들은 명령어를 위해 필요하고 $PATH < 기존 PATH를 추가하지 않는 이유는 TOMCAT 실행시 기본 설치 PATH를 먼저 읽어오기 때문이다.

경로 갱신

$ source .profile

설치 확인

$ javac -version

Tomcat 설치

다운로드

여기에서 다운로드하면 된다.

업로드 및 압축 해제

apache-tomcat-...의 이름이 길어 tomcat으로 변경 후 업로드하시면 편합니다.

$ tar -zxvf tomcat.tar.gz

경로 설정

$ vi .profile

# PATH 뒤에 tomcat/bin 경로를 추가
export PATH=/bin:/usr/bin:/usr/local/bin:$JAVA_HOME/bin:/home/myuser/tomcat/bin

경로 확인

$ $PATH

/bin:/usr/bin:/usr/local/bin:$JAVA_HOME/bin:/home/myuser/tomcat/bin
# 위에 설정한 PATH의 값이 보이면 정상

Tomcat 설정 추가

tomcat\bin\catalina.sh를 열고 Tomcat과 Java의 경로를 추가해준다.

CATALINA_HOME="/where/to/tomcat"
CATALINA_BASE="/where/to/tomcat"

JAVA_HOME="/where/to/java"

주의

catalina.sh의 주석 표시된 내용을 읽으면 변수를 추가하지 말고 setenv.sh를 만들어서 커스터마이징 옵션을 분리하라고 나온다.

setenv.sh를 수정하고 싶으면 파일을 열고 아래와 같이 추가해준다.

export CATALINA_HOME="/where/to/tomcat"
export CATALINA_BASE="/where/to/tomcat"

export JAVA_HOME="/where/to/java"

서버 실행

tomcat\webapps에 war파일을 옮긴 후 서버를 실행한다.

$ startup.sh

Tomcat started.

Git .ssh key 적용 후에도 비밀번호를 물어볼 때

· 약 1분

Git 사용을 위해 ssh key 생성해 서버에 추가했는데도 비밀번호를 물어보는 경우가 있다.

윈도우에서 ~/.ssh 경로를 인식하지 못해 발생한다.

해결

시스템 > 고급 시스템 설정 > 환경변수 메뉴로 들어가 HOME 변수로 %HOMEDRIVE%%HOMEPATH% 값을 추가 후 재부팅해주면 된다. image from hexo