The Pursuit of Happyness

오라클 홈페이지에서 서버 버전에 맞는 JDK를 다운로드 받는다. 

http://www.oracle.com/technetwork/java/javase/downloads

여기서는 jdk-8u60-linux-64.rpm 파일을 다운로드


rpm 명령어를 이용해서 JDK를 설치

 # sudo rpm -ivh jdk-8u60-linux-x64.rpm


설치가 제대로 되었는지 다음 명령어로 확인

 # java -version

제대로 설치되었다면 버전 정보가 표시된다.

 # javac

javac 사용법이 표시된다.



Comment +0

CentOS7에서는 기본으로 firewalld 라는 방화벽 솔루션이 제공됩니다.

기존의 iptables의 경우 룰 변경시 서비스를 중지해야 하는데, OpenStack이나 KVM 같은 가상화 호스트 환경에서는 네트워크 변화가 수시로 발생되어 필터링 정책 변경이 빈번해서 iptables 정책과 충돌되는 문제점 들이 발생했습니다. 이러한 문제점을 보완하기 위해서 firewalld 서비스가 활성화 되고 있는 것으로 볼 수 있습니다.

이 포스팅에서는 firewall-cmd를 이용해서 방확벽을 구성하는 간략한 방법을 정리해 보았습니다.


firewalld 에는 신뢰 수준에 따라 다음의 zone들이 미리 준비되어 있습니다.

drop - block - public - external - internal - dmz - work - home - trusted


firewall-cmd 를 이용해서 설정 변경시에는 --permanent 옵션을 사용하면, firewalld 서비스를 재시작해도 설정을 유지할 수 있습니다. 그렇지 않으면 firewalld 서비스를 재시작하면 설정이 사라집니다.


@ firewalld 서비스가 작동하고 있는지 확인하기

$ firewall-cmd --state


서비스가 작동하고 있다면 콘솔에 "running" 이라고 나올 것입니다.


@ active zone을 확인하기


$ firewall-cmd --get-active-zones


그리고 --list-all 옵션을 이용해서 각 zone 별로 구성되어 있는 firewalld 설정을 확인합니다. (public 자리에 위에서 확인한 zone 이름을 입력하면 됩니다.)


$ firewall-cmd --zone=public --list-all


앞서 이야기했던 zone들로 zone을 바꿔가며 입력해보면 각 zone 별로 어떤 서비스들을 이용할 수 있는지 확인할 수 있습니다.


@ 특정 (네트워크) 인터페이스의 zone을 변경하기


$ firewall-cmd --zone=internal --change-interface=enp0s3


enp0s3 인터페이스를 internal zone으로 설정하는 명령이었습니다.

참고로 /etc/sysconfig/network-scripts/ifcfg-enp0s3 파일을 편집해서 zone을 설정할 수도 있습니다.


$ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3


다음 라인을 추가합니다.


ZONE=internal


@ 새로운 zone을 추가하기


$ firewall-cmd --new-zone=newzonename


새로 추가한 zone을 인식할 수 있게 재로딩 합니다.


$ firewall-cmd --reload


@ zone에 서비스 추가하기

firewalld에서는 IP나 Port를 추가할 수도 있지만, 이미 잘 알려진, 많이 사용되고 있는 서비스에 대해서는 서비스 이름으로 추가가 가능합니다.

추가 가능한 서비스 목록은 다음의 명령어로 확인이 가능합니다.


$ firewall-cmd --get-services


public zone에 http 서비스를 추가해 보겠습니다.


$ firewall-cmd --zone=public --add-service=http --permanent


firewalld 서비스를 재시작해도 public zone에서는 http 서비스를 이용 가능하게 됩니다.


@ zone에 특정 IP 추가하기


$ firewall-cmd --zone=public --add-source=192.168.100.0/24


@ zone에 포트 추가하기

아래 명령어로 public zone에 tcp 방식의 5000번 포트를 추가합니다.


$ firewall-cmd --zone=public --add-port=5000/tcp


열려 있는 포트를 확인합니다.


$ firewall-cmd --zone=public --list-ports


포트 대역을 추가할 때는 "-" 를 이용해서 대역을 지정할 수 있습니다.


$ firewall-cmd --zone=public --add-port=5001-9999/utp


@ 서비스 지정하기

위에서 언급된 잘 알려진 서비스 이외에 특정 포트에 해당하는 서비스를 등록할 수 있습니다.

/usr/lib/firewalld/services 폴더에 있는 잘 알려진 서비스들 중에 하나를 선택해서 /etc/firewalld/services로 복사합니다. (확장자를 제외한 파일명이 서비스명이 되므로 기존의 서비스들과 이름이 겹치지 않게 해줍니다.)


$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/custom_service.xml


복사한 파일을 엽니다.


$ vi /etc/firewalld/services/custom_service.xml


아래와 같이 내용을 편집합니다.  (tcp 방식으로 9999 포트를 사용하는 서비스로 custom_service가 등록됩니다.)


<?xml version="1.0" encoding="utf-8"?>

<service>

    <short>Custom Service</short>

    <port protocol="tcp" port="9999"/>

</service>


firewalld 서비스가 새로 추가한 서비스가 사용하는 프로토콜과 포트를 인식할 수 있게 재로딩 합니다.


$ firewall-cmd --reload


새로 추가한 서비스를 public zone에 추가합니다.


$ firewall-cmd --zone=public --add-service=custom_service



Comment +0

CentOS 7 (Minimal) 설치 후 네트워크 설정


Network 설정

기존에는 Ethernet ID가 eth0, eth1 이런식으로 설정되었는데, CentOS 7 에서는 Ethernet ID 기본 이름 체계가 변경되었다.

/etc/sysconfig/network-scripts 디렉터리에 가보면 ifcfg 로 시작하는 파일들을 검색해 보면 대략적인 것을 알 수 있으며, 정확하게 알기 위해서는 "nmcli d" 커맨드를 이용하면 된다.

# nmcli d


TYPE이 ethernet 인 것을 찾아서 DEVICE 이름을 확인한다. 

(여기서는 enp0s3 이었으며, 서버 환경에 따라 다른 값이 나올 수 있다.)

/etc/sysconfig/network-scripts/ifcfg-[DEVICE] 파일을 편집한다. (nmtui 커맨드를 이용하면 GUI 모드에서 설정이 가능하다.)

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3


--------------------

a. DHCP로 설정하는 경우

아래 두 가지 값만 설정 해주면 된다. (기존에 적혀있던 나머지 내용들은 그대로 둔다)

BOOTPROTO=dhcp

ONBOOT=yes


b. 고정IP로 설정하는 경우, BOOTPROTO, ONBOOT, IPADDR, NETMASK, GATEWAY, DNS 등을 설정해 주면 된다. 

(기존에 적혀있던 나머지 내용들은 그대로 둔다)

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.1.201

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=8.8.8.8

DNS2=8.8.4.4

--------------------


설정이 끝났으면 ifdown 과 ifup 을 이용해서 해당 네트워크 디바이스를 리스타트 해주면 변경된 내용이 적용된다.

# ifdown enp0s3

# ifup enp0s3


네트워크 서비스를 이용하면 전체 네트워크 디바이스를 리스타트 해준다. 네트워크 디바이스가 하나 밖에 없거나 전체 네트워크 디바이스를 리스타트해도 상관 없는 경우 아래 명령어를 이용한다.(혹은 service network restart 라고 해도 된다.)

# systemctl restart network



--------------------

참고로 gateway나 nameserver는 다른 파일에서 global하게 설정할 수도 있다.

/etc/sysconfig/network 파일에서도 hostname 이나 DNS 를 설정할수 있으며, (DNS)

/etc/resolv.conf 에서 DNS를 설정하기도 한다. (nameserver)


--------------------

현재 설정된 IP 주소 확인

# ip addr


이전 버전처럼 ifconfig를 사용하고 싶다면, net-tools를 설치하면 된다.

# yum install net-tools




Comment +0

현재 사용중인 SWAP 메모리 확인

more /proc/swaps


SWAP 메모리로 사용할 파일 생성 (파일당 1GB)

cd /var/tmp

dd if=/dev/zero of=swapfile1 bs=1024 count=1048576

dd if=/dev/zero of=swapfile2 bs=1024 count=1048576


SWAP 영역으로 설정

/sbin/mkswap -c -v1 /var/tmp/swapfile1

/sbin/mkswap -c -v1 /var/tmp/swapfile2


SWAP 파일 사용시작

/sbin/swapon /var/tmp/swapfile1

/sbin/swapon /var/tmp/swapfile2


바뀐 SWAP 메모리 확인

more /proc/swaps


시작시 SWAP 메모리가 적용이 되도록 설정
vi /etc/rc.d/rc.sysinit

아래 라인을 검색
swapon -a

다음 내용을 같은 줄에 추가
swapon /var/tmpswapfile1 swapon /var/tmp/swapfile2

결과는 다음과 같음
swapon -a swapon /var/tmpswapfile1 swapon /var/tmp/swapfile2


Comment +0

CENTOS 6.4 / PHP 5.3.3

VBbulletin 사용 도중 서버 이전 후 메일이 발송되지 않는 문제가 발생해서 원인을 찾아보니,

로그에 아래와 같은 경고 메시지가 뜨면서 발송이 되지 않고 있었음.


Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.google.com (Permission denied) in /xxxx.php on line xx


원인

대부분의 경우 리눅스 보안설정 SELinux 에서 httpd 에서 네트워크 커넥션을 허용하지 않는 경우이다.


해결책

커맨드 프롬프트에서 다음과 같이 입력 

setsebool httpd_can_network_connect=1

(혹시 setsebool이 path가 결려있지 않은 경우 /usr/sbin/setsebool 을 이용)





Comment +0

Cached memory purge

@ Check memory status with top command

> top


@ purge cached memory

> sync

> echo 3 > /proc/sys/vm/drop_caches


Comment +0

패키지 설치
rpm -ivh [패키지 파일 이름]

설치된 패키지 확인
rpm -qa

패키지 업그레이드
rpm -Uvh [패키지 파일 이름]

패키지 삭제
rpm -ev [패키지 파일 이름]

Comment +0

이 포스트는 아래 링크에 있는 자료를 요약한 자료 입니다.

http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/ 



ssh-keygen 과 ssh-copy-id 를 이용하면  패스워드를 입력하지 않고 리눅스 서버에 접속할수 있습니다.

ssh-keygen 은 public / private 키를 생성하는 명령어이고,

ssh-copy-id 는 로컬 호스트에 있는 public 키를 원격 서버에 있는 인증된 키를 저장하는 파일 (authorized_keys)  에 추가해 주는 명령어 입니다.

ssh-copy-id 는 원격 호스트의 홈 폴더에 있는 ~/.ssh 폴더, ~/.ssh/ authorized_keys 파일에 적절한 권한을 부여해줍니다.


1 단계 로컬호스트에서 ssh-key-gen 을 이용하여 public / private 키를 생성하기

userid@local-host$ [Note: You are on local-host here]

userid@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/userid/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Pess enter key]
Your identification has been saved in /home/userid/.ssh/id_rsa.
Your public key has been saved in /home/userid/.ssh/id_rsa.pub.
The key fingerprint is:
73:b4:ee:aa:b5:c5:d8:e1:f1:a5:1e:26:5f:2f:53:9f userid@local-host

2 단계 ssh-copy-id 를 이용해서 원격 서버로 public 키를 복사하기

userid@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
userid@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
Note: ssh-copy-id 는 원격 서버에 있는 .ssh/authorized_key 에 public 키를 추가해 주는 작업입니다.


3단계 패스워드없이 원격서버에 로그인하기

userid@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Note: SSH did not ask for password.]

userid@remote-host$ [Note: You are on remote-host here]

정리를 해 보면 서버1에서 서버2에 접속하기 위해서는 서버1에서 공용키를 생성해서 서버2에 복사해서 인증을 해 두어야 한다는 것입니다.

맥에서는 ssh-copy-id 라는 명령어가 없기 때문에 ssh-copy-id 에 해당하는 부분은 수동으로 설정을 해야 합니다.

방법은 서버1에서 ssh-keygen 으로 생성한 ~/.ssh/id_rsa.pub 파일을 서버2로 보냅니다. 

scp ~/.ssh/id_rsa.pub remote-host:home/userid

서버2에 로그인 하여, 다음의 명령어를 이용하여 public 키를 추가합니다.

cat ~/id_rsa.pub >> ~/.ssh/authorized_key



Comment +0

서비스 목록 보기
chkconfig --list

부팅시 서비스가 자동으로 실행되게 하기
chkconfig [서비스명] on

부팅시 서비스가 자동으로 실행되지 않게 하기
chkconfig [서비스명] off

ex)
chkconfig httpd on
chkconfig httpd off

참고로 부팅 레벨에 따라서 서비스 실행여부를 자세히 설정할 수도 있다.



 

Comment +0


sudo dmidecode --type 17

관련 링크
http://www.cyberciti.biz/faq/check-ram-speed-linux/  

dmidecode 가 설치되어 있지 않은 경우는 아래 명령을 이용하여 설치할 수 있다.

yum install dmidecode 

 

Comment +0