블로그 이미지
포도알77
IT 방랑기

calendar

      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  

Notice

2019.03.19 08:43 운영체제/리눅스
까먹지 말자 


 Ubuntu를 설치하고, 가장 기본적으로 설치하는 openssh-server 이후, config 파일을 설정해야하는데, 지금까지 대충하다가 그냥 기록해두고 써먹으려고한다.


 대부분의 default 세팅이 그러하듯, 거의 수정할 것이 없다.   
sudo apt-get update
sudo apt-get install openssh-server --yes
sudo apt-get install vim --yes
sudo vim /etc/ssh/sshd_config


이후 sshd_config에서 설정해야 할 것은
RSAAuthoentication yes 
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication Yes


 여기서 RSA는 프로토콜 2가 아닌 1에서 쓰인다는데 일단은 열어뒀다.


 보안상 닫아야할 수도 Pubkey는 공개키 기반  접근으로 C9.io가 사용하는 방식이기 때문에 열어준다. 아마 기본이 열려있는 상태일것이다.  


 AuthorizedKeysFile은 키를 저장하는 곳인데, 우분투 설치시 ~/.ssh/authorized_keys 가 없을 수도 있다.(대부분 없다)


 그래서 만들어줘야 한다. 만약 AuthorizedKeysFile이 주석 처리되어있다면, 기본 위치가 %h/.ssh/authorized_keys이다. 


 PasswordAuthenticiation은 비밀번호를 입력하고 들어오는 방식, 기본적인 SSH 방식으로 끄면, 로그인 자체가 안된다. 



 아무튼 C9.io를 설정하려면 프로젝트 설정 화면에 사용자 이름과 포트, 그리고 기본 위치 입력창과 키값을 준다. 


 입력창은 적당히 입력하면 되고, 이제 문제는 키파일인데
sudo mkdir ~/.ssh
sudo vim ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/authorized_keys
이후 제공된 키 값을 authorized_keys에 복붙후 저장한다. 



그다음
sudo service ssh restart
하면 될것 같지만 안된다. 


 아무래도 c9.io는 그룹기반으로 접근하는 것 같은데 이렇게 해버리면, 소유자 문제로 아마 pubkey 인증 실패가 뜬다. 



 우선 정확한것은 모르겠지만 아래와 같이 소유자와 권한을 바꿔준다.   
sudo chmod 711 ~/.ssh/.

sudo chmod 700 ~/.ssh/..

sudo chmod 644 ~/.ssh/authorized_keys



이후 ls -al로 확인해보면, 아래와 같이 출력된다.    
drwx--x--x  2 root	root	. 
drwxr----- 21 계정	계정	..
-rw-r--r--  1 root	root	authorized_keys

  



 왜 나만 이렇게 해야하는지 모르겠다 다른사람들은 700, 600주면 된다던데.. 어려운 리눅스   그리고 만약 Node.js관련 오류가 발생한다면, node.js를 설치해주자.

sudo apt-get install node.js



posted by 궁금한 포도알77
2019.03.19 08:31 운영체제/리눅스
 다중 NIC(=네트워크 인터페이스 카드, 랜카드, RJ45...)에서 다중 Network를 사용할때 문제가 발생한다. 


 엄청 당연하게 랜카드가 여러개면, 해당 랜카드로 들어온 데이터를 당연히 그쪽으로 다시 보내는줄 알았지만, 그렇지 않단다. 


 대부분의 운영체제에서는 별도의 설정이 없으면, default gateway로 응답을 보낸다.  



 지금 내가 운영중인 서버 컴퓨터에는 NIC가 4개있고, 그중에서 1개는 공인 IP(고정), 나머지 1개는 내부망 라우터에서 제공하는 동적 IP를 적용했다. 

 근데 조금 특이한 환경이다. 

 우선 다른말로 하면, 내부망 IP Netmask가 2개이다. 192.168.0.X과 192.168.1.X처럼 

 [ 공인 동적 IP <=>  Router 1 <=> Router2 <=> Server #1 <=> 공인 고정 IP ] 

 당연히 Router 1에도 PC가 설치되며, Router2가 제공하는 사설망이 내부망이다.  



 즉, 서버 컴퓨터는 공인 IP(이하 111.111.111.111)과 Router2에서 할당된 사설 IP(192.168.1.2)을 동시에 가지며, 네트워크 설정 당시의 Subnetmask에 따라서 각각의 Gateway로 보낸다. 


 만약 내부망 구성을 라우터 1개로 했다면, 별로 고민을 안했을것이다. 하지만 이렇게 서로 다른 대역 (사설망)을 가지는 2개의 네트워크를 연결해야했기 때문에 Router1의 PC들과 Router2의 PC들은 통신할 수 없다. 


 서버에서 192.168.0.1로 보낸 데이터는 192.168.1.2의 Subnet(255.255.255.0)을 만족하지 못해서, 바로 공인 고정 IP를 타고 나가버린다.


 따라서 서버에 192.168.1.2로 오는 모든 192.168.0.X대역을 다시 192.168.1.2 게이트 웨이로 던져버린다. 


 그러면 자연스럽게 192.168.0.X 대역의 패킷도 다시 192.168.1.2의 게이트웨이를 타고 라우터 1의 대역으로 날아간다. 


 코드로는
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.1

 즉 192.169.X.X에서 온 패킷은 마스크 255.255.255.0으로 확인후 192.168.1.X의 게이트웨이인 192.168.1.1로 보내버리는 것이다.  



 이렇게 하면 잘된다. 괜히 시간만 허비했다. 후.. 리눅스    



posted by 궁금한 포도알77
2019.03.11 08:27 운영체제/리눅스

 DB 서버에 RAID로 구성한 디스크를 준비하였으니, 이제는 데이터 베이스를 RAID 디스크에 옮겨서 보관해야한다.  


 OS 가 깨질 수도 있으니.. 항상 데이터 영역과 OS 영역은 구분하자. 데이터를 저장할 디스크의 마운트 위치가 /db라고하자.   



 [1] 기존 디비 저장 위치 확인  
sudo -u postgres psql
SHOW data_directory;

 먼저 sudo 명령으로 postgres 사용자를 실행한다. 



 이후 SHOW data_directory;를 입력하여 현재 위치를 확인한다. 아마도 아래처럼 나올 것이다.

       data_directory       
------------------------------
/var/lib/postgresql/9.5/main
(1 row)


  [2] postgresql 멈추기  

 이제 시스템상에서 postgresql 서비스를 멈추어 준다. 그리고 현재 상태를 확인하여, Stopped 상태인지 확인하자.
sudo systemctl stop postgresql
sudo systemctl status postgresql


  [3] 저장 공간 형식 카피
sudo rsync -av /var/lib/postgresql /db

 앞 위치는 기존 데이터 베이스 저장 위치, 뒤 위치는 새로운 저장공간. 여기서 끝에 / (슬래시)가 붙으면 안된다.  



 [4] 기존 conf 백업 백업은 필수다.

sudo mv /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.bak


  [5] conf에 위치 변경
sudo vi /etc/postgresql/9.5/main/postgresql.conf
 역시 편집기는 자신이 편한것 쓰자.   


 [6] data_directory 변경 
 postgresql.conf에서 data_directory를 찾아서 변경해주자.
.
.
data_directory = '/db/postgresql/9.5/main'
.
.


  [7] postgresql  재시작과 확인 
 postgresql을 재시작하고, 상태를 확인하자
sudo systemctl start postgresql
sudo systemctl status postgresql


이후에 처음과 똑같이 postgresql상에서 확인해보자.
sudo -u postgres psql
SHOW data_directory;



  [8] 마지막 정리

sudo rm -Rf /var/lib/postgresql/9.5/main.bak
sudo systemctl restart postgresql
sudo systemctl status postgresql
백업 파일은 지우고, 재시작하자.  


 끝났다.



posted by 궁금한 포도알77
prev 1 next