[개발] Node & Steem 8편 - 간단한 서버 관리 다섯가지 팁 - 쉘 접속과 alias 지정 등

in #kr-dev7 years ago

door_juicessh.png

개인프로젝트로 최근 관리하게 된 서버가 세대입니다.

1. cobot이라는 코인 시세 조회 사이트.
2. 그리고 스팀 봇을 운영하기 위한 서버.
3. 집에 있는 개인 연습용 서버

외출중일 때에도 한번씩 서버 상태를 보거나 스팀 노드의 상태나 거래소 서버의 이상으로 제 서버들의 서비스들까지 재시작하거나 로그를 모니터링 해볼때가 있는데 그때 사용하는 앱이 Juice SSH입니다. 사용방법은 너무 간단합니다.

1. 모바일에서 서버 접속할 땐 Juice SSH

구글 플레이스토어에서 ssh로 검색하면 두번째로 나오네요.

설치를 한 다음에 접속 정보를 설정 한 다음에 pc에 설치하는 ssh 프로그램과 동일한 방법으로 이용하면 됩니다. 시각적 편의성을 위하여 가로로 편집해보겠습니다.


닉네임과 주소, 계정정보를 입력해주시면 되구요.


계정정보는 ssh 계정으로 접속할 계정정보를...


이렇게 설정이 되면 바로 터치해서 접속하시면 되고 사용법은 putty나 ssh 접속 프로그램들과 동일하게 사용하시면 됩니다. 특수키 입력 같은 것들이 자유로워 사용하기가 편리하더라구요.


저 같은 경우는 관리하는 서버 두대다 이런식으로 모니터링하고 있습니다. 긴급한 경우는 재시작도 모바일로 하구요.

녹화_2018_02_17_23_07_39_772.gif


2. PC에서 putty를 완성시켜주는 Putty Manager

무료 ssh 접속 프로그램 일명 뿌띠(putty)는 너무나들 많이 사용하실 것 같습니다. 저 역시 putty를 이용하고 있는데 많은 분들이 putty만 이용하고 계시는걸 업무를 하면서 봅니다. 저는 물론 회사에서는 유료 프로그램인 secureCRT라는 상당히 기능적으로도 외관적으로도 좋은 녀석을 사용하고 있습니다만... 이런 개인프로젝트는 putty를 이용하고 있죠. 그리고 putty만 사용하는 분들을 보면 제가 항상 하는 말이 있는데 putty manager를 좀 쓰시면...? 입니다.

https://sourceforge.net/projects/puttymanager/

이곳에서 다운로드를 하시면 되는데... 건드릴것 없이 넥스트~ 넥스트해서 설치하면 됩니다. 다른 말 없이 실행시켜 보면 우측 상단에 putty에서 설정했던 연결 정보들이 보이고 이를 통해 연결하면 여러개의 커넥션들을 탭으로 열리며 편하게 작업하실수가 있습니다.

여러개의 연결을 탭 형식으로 볼 수 있기 때문에 상당히 편리합니다. 더군다나 쉘 작업을 할 때에 여러개를 띄워놓고 하는 경우가 많기 때문에 더욱 그렇습니다.


3. alias 활용하기.

아마 모니터링을 하기 위해서 서버에 접속하시면 공통적으로 하는 일들이... 로그 폴더에 드가서 오늘 날짜의 로그를 찾아서 보시게 될텐데... 여간 귀찮지 않습니다. 폴더가 깊숙히 있고 파일명까지 길면... 으으...

cd /log/steem
tail -f 로그파일명.2018.02.18

그래서 편리한 기능인 alias를 줘서 일종의 약어로 지정할수가 있는데 이걸 쓰면 저런 긴 명령어를 아주 짧게 줄이실수가 있습니다.

cd ~
vi .profile

여기 .profile에 alias를 지정하면 쉘 접속 시에 자동 적용되므로 편리하게 이용할 수 있단 말씀. 가장 밑에 이런식으로 추가해줍니다.

alias [약어]='명령어 일체'

alias log='tail -f /log/console.log.$(date +%Y.%m.%d)'
alias errlog='tail -f /log/err.log.$(date +%Y.%m.%d)'



$(date +%Y.%m.%d)를 넣게 되면 오늘 날짜가 지정되어 편리하게 날짜로그를 모니터링 할수 있고 저는 접속 시에 log 라고만 치면 바로 로그를 모니터링할 수 있도록 지정해두었습니다.

root@ip-172-31-9-10:~# log
16:29:16 - info: wrkBot execute.
16:29:17 - info:  0=reblog, account=rajur, author=fazlulbd, permlink=amar-vatija-anol
16:29:17 - info: selQry : select * from svc_acct_mng where dvcd = 1 and use_yn = 'Y' and acct_nm = 'fazlulbd'

아까 소개한 Juice SSH 처럼 모바일로 접속 할 때에는 꼭 지정해야할 기능입니다. 모바일로 저 긴 명령어 치려면 속 터져 죽겠죠? 이 약어는 여러곳에 지정해두면 반복되는 지겨운 명령어들을 손쉽게 칠 수 있습니다.


4. 서버명 변경하기.

몇일정도 서버를 들락날락 하다보니 쉘 접속 시에 이렇게 나오는 쉘 프롬프트가 상당히 거슬립니다.('root@ip-172-31-9-10:~#') 저는 관리하는 서버가 2대다보니 헷갈려서 여기 명령어를 저기에 치고 저기 명령어를 여기에 치는 이른바 삽질을 할 때도 있습니다.

root@ip-172-31-9-10:~#

나... 나는 지금 어디? 나는 누구?

그래서 저 프롬프트를 변경하기로 했습니다. vi으로 hostname 파일을 열어서 저 ip-*** 머시기로 된 텍스트를 주석처리하고 steem으로 변경해줍니다. 제겐 저 private ip가 전혀 궁금하지 않으니까요...

vi /etc/hostname

#ip-172-31-9-10
steem

반영하려면 재시작을 하면 되지만 재시작 하기는 싫으니 hostname steem 명령으로 바로 변경해주고 다시 쉘 접속을 해봅니다.

root@steem:~# pwd
/root
root@steem:~# whoami

'steem'으로 변경되어서 이제 나는 누구? 여긴 어디? 할 필요는 없게 되었습니다.


참고 :
https://aws.amazon.com/ko/premiumsupport/knowledge-center/linux-static-hostname/


5. node.js 서비스는 forever로.

이번에 개발중인 서비스는 node.js를 통해 만들어보고 있는데 편리하게 프로세스를 관리해주는 forever라는 놈이 있더군요. 요넘은 글로벌 영역에 설치해서 다수 만들게 될 node 서비스들을 종합관리해주면 됩니다. 지금은 리스팀 알림만 있지만 곧 추가할 여러가지 기능들을 하나의 app.js로만 구현하지 않고 여러개가 되다보면 복잡해질텐데 이녀석을 쓰면 꽤 괜찮아보입니다.

npm install -g forever

서비스 시작

forever start app.js

서비스 종료

forever stop app.js

서비스 리스트 보기

forever list

root@steem:/app/steem_nhj# forever list
info:    Forever processes running
data:        uid  command       script forever pid  id logfile                 uptime     
data:    [0] zxRX /usr/bin/node app.js 2705    2711    /root/.forever/zxRX.log 0:16:20:50.874

이런식으로 forever로 구동된 서비스의 리스트를 보여줍니다. 이정도만 알아도 일단 관리하는데는 문제가 없을 것 같습니다.


6. 소스 배포 자동화 쉘 스크립트 생성

현재 서버의 node 서비스를 배포하여 재기동을 하기 위해선 몇가지 명령어를 입력해야합니다. 현재 구성으로는 이렇게 되겠네요.

cd /app/steem_nhj #프로젝트 경로로 이동
git pull #소스 받기
forever stop app.js #서비스 중단
forever start app.js #서비스 다시 시작

이 일을 사정상 모바일로 해야한다면... 참 답답하겠죠. 그래서 배포를 하기 위한 스크립트를 쉘 파일로 만들어두고 그녀석만 부르면 저 명령어들을 일괄적으로 생성해주기로 합시다. 이 파일은 굳이 별도로 만들 필요없이 이번 node 프로젝트에 포함시키고 아까 지정했던 alias 기능으로 엮어내면 언제든지 한단어로 배포와 재시작을 할 수 있게 됩니다.

제 프로젝트에 update.sh 이라는 파일을 추가했고 이렇게 코딩을 넣었습니다.

echo Node & Steem update start.
cd /app/steem_nhj
git pull
forever stop app.js
forever start app.js
echo Node & Steem update complete.


오늘은 개발적인 내용이 아닌 서버를 관리하기 위한 툴이나 간단한 팁을 엮어보았습니다. 지속적으로 엮어낼 내용이 있다 싶으면 한번씩 포스팅해보도록 하겠습니다. 읽어주셔서 감사합니다.


Node & Steem - 지난 회차 살펴보기
1편 - nodejs 개발환경을 구성해보자. 윈도우 개발 + Github 저장소 + 리눅스 운영
2편 - 콜백 지옥을 탈출해보자. - synchronize.js 편
3편 - 로깅 처리와 DB(mysql)설치 및 설정
4편 - DB 설정과 운영서버까지 설정 마무으리!
5편 리스팀 알림 봇을 만들어볼까? #1
6편 리스팀 알림 봇을 만들어볼까? #2 whitelist 데이터 수집
7편 리스팀 댓글 알림 봇 #3 시범오픈과 구현 마무으리!


ps. 제게 공식적인 첫 대문이라는 걸 선물해주신 @forhappywomen님과 그려주신 @carrotcake님께 무한한 감사 인사드립니다. 😄😄😄

Sort:  

저도 서버쪽 공부를 해보고 싶은데 너무 어렵고 막막해 속상합니다 ㅠㅠ C언어만 학부생 수준으로만 다루는 수준인지라 ㅠㅠ 서버 강의 천천히 체크해봐야겠습니다 ㅎㅎ 팔로우/보팅 딱! 박고 갑니다 ㅎㅎ

천천히 하나씩 해보면 되지 않을까요 ^^

좋은 정보 감사합니다~
요즘 배울게 너무 많은 것 같습니다.

저도 개발자 출신으로 서버 관리도 하고 있지만 언젠가 부터 새로운 기술 공부하는게 쉽지가 않네요.
천천히 공부해 보도록 하겠습니다.

오... 그야말로 풀스택이시군요. 배우고 싶은걸 포스팅으로 정리하다보면 더 제것이 되는것 같습니다.

또 천천히 따라해보면서 익혀야 겠네요.

어렵네요 ㅜㅜ 크롬으로도 원격조정 가능하다는데 저도 아직 사용은 못해봤구요 ㅎ

어떻게 저렇게 구현이 되는지...볼 때마다 참 신기합니다 ㅎㅎㅎ

노트북 서버에 한번 모바일로 접속 해 봐야겠네요.
서버쪽은 약해서 예전에 공부용으로 잠시 노트북에 설정했다가 켤때만 운영했는데 한번 테스트 해 봐야 겠네요

요즘 aws든 네이버 클라우든 마이크로 급은 무료로 제공하니 그걸 추천드립니다. 무려... 공.짜니까요 ㅎㅎㅎ

개발자 이시군요. 반갑습니다. ^^ 요새 대세인 node도 언젠간 공부해야 되는뎅. 시간이 안 따라 주네요. ㅠ

반갑습니다. 저도 원랜 자바쪽인데 스팀잇에서 노드로 꿈양꿈양 하고 있습니다. ㅋㅋㅋ 조금씩 해보세요 재밌네요.

윈도우에서 리눅스 접속할때 퓨티썼었는데
퓨티 매니저 괜찮네요! ㅎㅎ
여러 터미널 띄우고 하는게 좋아보이군요!!
좋은 정보 감사합니다.

@리스팀 목록

요청하신 이 글에 리스팀 해주신 분들을 알려드립니다.

리스팀 목록
@bramd
@goodhello
@kantokan
@millionfist
@trueonot

리니지 @검색 바보

Coin Marketplace

STEEM 0.21
TRX 0.25
JST 0.038
BTC 95830.75
ETH 3363.86
USDT 1.00
SBD 3.08