WSL에서 리눅스 프로세스 관리하기

리눅스 프로세스 또한 윈도우 작업 관리자에서 관리할 수 있다.
물론 속성 확인 등 윈도우 특화 기능은 지원하지 않는다. 오로지 끝내기 뿐.

아이콘이 있을 리 없으니 흰 아이콘만 뜰 뿐이다.
그리고 Sysinternals 에서 제공하는 Process Explorer 에서도 볼 수 있다.

대체적으로 맨 아래로 내리나 보다.

다음으로는 서비스를 확인해 보도록 하겠다.

composite / 2017년 8월 25일 / Piss Development / 0 Comments

WSL(윈도우 내 리눅스) 에서 데몬 유지 및 sshd 서버 돌리기

먼저 WSL의 특징을 설명하겠다.
일단 리눅스기 때문에 백그라운드 서비스, 즉, 데몬도 존재하며, 똑같이 돌아간다.
하지만 윈도우에서 bash 프로세스가 하나도 없으면, 리눅스 서비스는 다 죽고 리눅스 전원이 꺼진 것이나 다름없다.
그래서 윈도우를 키자마자 리눅스 서비스를 돌리고 싶으면 윈도우 시작하자마자 bash 프로세스를 돌려야 한다.
이를 기초하여 SSH 서버 데몬을 돌림으로 리눅스의 기능을 윈도우 시작 때부터 유지하는 방법을 설명하도록 하겠다.
이를 잘 정리한 링크로부터 출처를 가져왔다.

How to run sshd as a windows service ? #612
How to run Ubuntu service on Windows (at startup)?

  1. 윈도우에서 bash 실행한다.
  2. sudo dpkg-reconfigure openssh-server 실행하여 SSH 호스트 재구성한다.
  3. sudo nano /etc/ssh/sshd_config 실행하여 SSH 설정 파일 편집에 들어간다.
  4. UsePrivilegeSeparation 항목을 찾아 옆에 yesno로 변경
    (이유는 UsePrivilegeSeparation 옵션은 chroot() 호출을 WSL에서 아직 지원하지 않기 때문)
  5. 비번으로 접속하고자 할 경우 PasswordAuthentication 항목을 찾아 (없으면 추가) yes로 세팅.
    (만약 없으면 SSH 접속할 경우 키 파일을 요구함. 유저 파일에 키를 생성하고 클라이언트도 가지고 있어야 함.)
  6. ctrl+O 단축키로 저장 후 ctrl+X 로 편집기를 빠져나간다.
  7. sudo visudo 실행하여 sudo 권한설정 파일을 편집한다.
  8. 적당한 줄을 찾아 $USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D 문구를 추가한 후, $USER를 로그인 이름으로 바꾼다.
    (로그인 이름 알고싶으면 pwd ~/ 쳐서 /home/ 뒤 명칭을 봐라.)
  9. 단축키로 저장 후 나가서 메시지 뜬 게 있는지 확인하고, 메시지 나올 경우 visudo 오류이므로 적절히 수정하여 해결한다. (모르면 검색해라.)
  10. (옵션) SSH 서버를 외부에서 접속하고 싶은 경우, 윈도우에서 방화벽에서 포트번호 22를 허용한다. (개인 및 도메인 범위까지 한다. 공용 말고)
  11. 윈도우 시작 시 SSH 서버를 돌리기 위해 (적당한파일명).vbs 파일을 메모장이나 아무 편집기로 생성 후 아래 내용을 넣는다.
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
  1. 저장했으면, 모든 bash 프로세스를 끄고(리눅스 실행 모두 다 종료) vbs 파일을 더블클릭 후 PuTTY 등으로 SSH 접속 되는지 확인한다.
  2. 성공했으면 bash.exe 프로세스 종료 후, 위 vbs 파일을 작업 스케줄러에 등록한다. (모르면 좀 검색하고). 물론 “시스템 시작시”에.
    (시스템 시작 시, 파일은 vbs파일 다이렉트 호출, 사용계정은 반드시 로그인할 계정. LOCAL SERVICE 같은 시스템계정 말고. 암호 저장 안해도 됨.)
  3. 윈도우 껐다 킨 후 PuTTY로 SSH 접속 되는지 확인해서 접속 되면 이제 윈도우와 리눅스는 한몸으로 실제처럼 돌아갈 것이다. 서비스도 다.

왜 굳이 vbs로 하냐고? 물론 bat 파일 쓰거나 직접 작업 스케줄러에 등록할 수는 있어.
근데 작업 스케줄러던 bat 등록하던 뭘 하던 도스창 뜬다. 너같으면 좋겠냐? vbsws.run 에 두번째 0 인자가 바로 창 안띄워 주는 고마운 인자다.
내가 필요 시 즐겨쓰는 놈이기도 하지. 이제 리눅스 VM으로 깔 필요도 없다. 편리하다.

끗.

composite / 2017년 8월 25일 / Piss Development / 0 Comments

WSL(윈도우 서브시스템 리눅스) 에서 node.js 개발하기

오늘 좀 골때리는 경험을 했기에 글 싸지른다. 왜인지는 후에 설명한다.
이 글은 윈도우 10 레드스톤 2(크리에이터즈 업데이트) 이상에서 리눅스 서브시스템을 설치한 사용자에 해당된다.
안깔았으면 이전 글을 참고하고, 해당사항 없으면 씹기 바란다.

1. node.js 설치

먼저 apt-get 공식 리포지토리의 node 는 옛날 버전이다.
원하는 버전을 설치하고자 할 경우 리포지토리를 추가하여 설치해야 한다.
설치 버전별 목록은 여기서 볼 수 있다.
여기서는 가장 최신 버전인 7.x 버전을 설치하도록 하겠다.
별거 없다.

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -  
sudo apt-get install -y nodejs  

끗. 사실 윈도우에 별도로 node.js 깐 적 없다면 1번에서 끝나면 된다.
URL 끝 setup_(메이저버전).x 파일명 부분에 자신이 원하는 버전 숫자로 바꾸면 된다.
하지만 윈도우 내 개발환경에서 node.jsPython 등을 설치했을 경우 골때리는 문제가 발생할 것이다.
이제부터 들어간다.

2. 환경변수 관리

이 글을 쓰는 이유이기도 한데, 기본적으로 리눅스 서브시스템을 실행하면 윈도우 환경변수가 리눅스로 공유된다.
그래서 윈도우 PATH 변수가 먼저 들어간 뒤, 리눅스 PATH 변수 내용이 짬뽕된다.
이 때문에, 예를 들어 윈도우 내 node.js를 설치한 상태일 경우, npm 실행 시 아래 메시지가 나올 것이다.

$ npm
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

물론 환경변수 공유는 편리할 수 있으나, 대부분 독립형 운영체제라 가정하고 설계하고 개발하기 때문에
개발자 입장에서는 난처하면서도 골 안때릴 수가 없다. 몇가지 방법이 있는데 취향껏 따라하면 된다.

윈도우 환경변수 공유하지 않도록 설정

윈도우 아니랄까봐 리눅스 서브시스템 옵션을 레지스트리에 등록하고 있다.
따라서 만약 윈도우 환경변수를 리눅스로 옮기기 싫으면 아래 레지스트리 소스를 메모장 등으로 붙여넣은 후,

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss]
"AppendNtPath"=dword:00000000

참고로 레지파일은 반드시 빈 행이 하나 들어가도록 한 뒤 끝내야 한다.
원하는 파일명.reg 로 저장한 뒤 걍 실행해버리면 된다. 물론 되돌리고 싶으면 값 부분에 dword:00000001 로 바꿔 실행하면 된다.

Github Issue 출처

.bashrc 파일에 원치 않는 변수내용 삭제

윈도우 환경 변수를 포기 못할 경우에 간단한 팁이다.
PATH 환경변수에 특정 내용을 지우는 식으로 처리할 수 있다.
아래 쉘 스크립트를 ~/.bashrc 파일 내용에 추가하면 원치 않는 변수 내용을 삭제할 수 있다.

### remove unnecessary Win PATHs
# This can prevent extension-less commands from bleeding into BASH.
# (eg. "ng" would execute the Win bin if "@angular/cli" wasn't installed on Linux.)
#
function path_remove {
  # Delete path by parts so we can never accidentally remove sub paths
  PATH=${PATH//":$1:"/":"} # delete any instances in the middle
  PATH=${PATH/#"$1:"/} # delete any instance at the beginning
  PATH=${PATH/%":$1"/} # delete any instance in the at the end
}

path_remove '/mnt/c/Users/me/AppData/Roaming/npm'
path_remove '/mnt/c/Users/me/AppData/Local/Yarn/bin'
path_remove '/mnt/c/Program Files (x86)/Yarn/bin'
path_remove '/mnt/c/Program Files/Git'
path_remove '/mnt/c/Program Files/Git/cmd'
path_remove '/mnt/c/Program Files/nodejs'
path_remove '/mnt/c/OpenSSL-Win32/bin'
path_remove '/mnt/c/Program Files (x86)/Python27'

이후 bash를 빠져나가고 다시 bash 실행하면 원치 않는 명령어 실행을 방지하여 조금은 더 깨끗한 환경에서 개발할 수 있을 것이다.
Github Issue 출처

composite / 2017년 8월 24일 / Piss Development / 0 Comments

윈도우 10 우분투 Bash를 탐색기 메뉴로 추가하기

제목 참 거창하지만 사실 별 거 없다.
어자피 오른쪽 마우스 메뉴와 별 다를 거 없기 때문이다.

윈도우 10 레드스톤 2(크리에이터즈 업데이트) 이상에서 우분투 서브시스템 설치 방법은 구글에 널리고 널렸으니 찾아봐라.
거기게 모든 게 다 있으니. 아니면 걍 링크 뿌린다. 여기가 친절한 듯.
(주: 스토어 단독 계정 등록만 해도 우분투 받는데 지장 없다. 특히 회사컴일 수록 로컬계정 관리가 정신건강에 이롭다.)

레지스트리 편집귀 귀찮게 건드릴 거 없다.
출처는 https://github.com/Manouchehri/bash-WSL-context-menu 이다.

bash 레지스트리 추가 (원문 컨텍스트 메뉴)
bash 레지스트리 추가 (한글 컨텍스트 메뉴)

됐다. 탐색기 오른쪽 클릭으로 잘들 써봐. 끗.

composite / 2017년 8월 22일 / Piss Development / 0 Comments

웹 기반의 컴퓨터 원격 통합관리 : ULTERIUS

https://ulterius.io/

  • 컴퓨터 시스템 모니터링 지원
  • 설치가 필요없는 원격 데스크탑 지원
  • 해당 컴퓨터 탐색기를 웹으로, 업로드 다운로드 당연히 지원.
  • 파워쉘 등 강력한 원격 실행환경 지원
  • 플러그인 지원 (완벽하지 않음)

이런 솔루션은 돈을 줘도 할 말 없는 솔루션인데 MPL 2.0 오픈소스인 C# 서버 앱이다.
.NET 4.5 이상을 지원하는 가능한 모든 윈도우에서 지원한다. 그렇다. 당연히 윈도우 전용이다.

composite / 2017년 3월 17일 / Dog's bullshit / 0 Comments

윈도우 10 ISO 다운받기 (물론 합법)

최근들어 윈도우 10 ISO가 필요하게 되어 링크를 들러봤더니…

ISO 다운로드 선택 박스는 안뜨고 그저 도구 다운로드만 뜰 것이다.
그렇다. 윈도우 운영체제는 막힌 거다.

하지만 불가능하지는 않다. OS를 속이고 들어가면 되는데,
그냥 user agent 를 바꿔주는 확장을 깔면 해결된다.
크롬이나 불여우는 암거나 확장 깔고 OS 바꿔치기 하고 접속하면 되며, (맥~)
IE나 Edge는 확장은 없고 대신 F12 개발자 도구를 통해 바꿀 수 있다.

내가 쓰는 속이는 user agent 문자열 예제는 아래와 같다.
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

그러하다. 그리고 접속하면 ISO 다운받을 운영체제 선택박스 화면이 뜰 것이다.
그 뭐냐… 누군가가 선택박스 핵 걸어서 하위 버전 다운받는 것도 통하는 지는 안해봤다. 난 그저 윈도 10만 있으면 되니까.

불법은 아니고 합법이다. 어자피 제품 키는 없다. 정당한 제품 키 없이 쓰면 불법이고, 쓰면 합법인 거다.

composite / 2017년 3월 16일 / Piss Development / 0 Comments

윈도우 8.1 설치 후 로그인창이 뜰 경우 대처법?

여태까지 온라인 계정 연동 안하고 윈도우 8을 써보온 사람이 있을 것이다.

윈도우 8.1 은 업무용 PC로 깔 수는 있는데 대체적으로 테스트 목적으로 라이센스 한두개씩 구입한다 카더라.

근데 윈도우 8.1 로 업그레이드를 하면 설치 후 설정이 나오는데,

마지막에 로그인 창이 나오고, 건너뛰기가 안된다.

이것 때문에 좀 해맸었다.

그렇다면 이걸 어떻게 해결하면 좋겠는가?

해결방법은 의외로 간단하다. 몸이 조금 고생면 그만인 방법이다.

랜선 뽑고 처음부터 다시해!

랜선 뽑고 설치 마법사를 처음부터 다시 시작하면 로그인 창을 패스하고 세팅을 마쳐줄 것이다.

인터넷만 안되면 된다 이말이다.

그런 다음 윈도우 8.1을 쓰면 된다.

특히 업무에서 테스트 목적으로 설치한 윈도우 8.1 이라면 감격일 것이다.

물론 볼륨 라이센스나 KMS 인증하는 녀석들은 어자피 그럴 일도 없다.

수동으로 업그레이드를 해야 하니까. (물론 공짜다. 하지만 업그레이드 공수비용은 무시 못하겠지.)

composite / 2013년 12월 6일 / 미분류 / 2 Comments

이런 사람들은 윈도우 8.1 무료 업그레이드 불가.

  • 윈도우 8 엔터프라이즈
  • 윈도우 8 프로 버전을 KMS 인증한 컴퓨터
  • MSDN 에서 받은 윈도우 8 프로/엔터
  • 복돌이

방법 : 윈도우 8.1 ISO 이미지를 구해서 기존 업그레이드를 하거나 싹 밀고 재설치 (UEFI 포함)

복돌이 특히 : 8.1 업글 성공해봤자 인증 풀린다. 굳이 하고싶으면 8.1 전용 복돌 기다리던가 그냥 사!

끗.

여담으로 이번 겨울 되면 윈도우 8때처럼 윈도우 8.1과 서버 2012 R2 통합한 패키지본이 나올 듯ㅋ

(그렇다고 인증까지 해주지는 않으니 큰 기대 마라 복돌아.)

composite / 2013년 10월 18일 / 미분류 / 3 Comments

Flat UI 로 만든 관리자 페이지를 보고싶다면?

플랫 디자인으로 만든 관리자 페이지? 있지!

뭐.. 물론 애플도 지금 아이클라우드 플랫UI로 베타 날려서 하고 있긴 하지만

이미 실전에서도 플랫 UI를 채택한 관리자 페이지가 있다는 말씀.

어디냐.. 윈도우 애져 관리자 페이지다.

Capture24.png

Capture25.png

메트로 UI로 플랫UI 상용화에 신호탄 때린 마소의 메트로UI 쏙 빼닮은 플랫 UI 관리자 페이지 되시겠다.

한글 글꼴이 굴림이라 촌스러워도 봐줘라. 영어로 하면 정말 플랫UI의 신세계를 맛볼 터이니.

19.png

영어로 하면 글꼴 덕분에 플랫UI가 지대로 살아난다.

안타깝게도 그냥은 못보고 애져 체험이라도 가입해야 한다. 90일 체험인데 신용카드 요구한다. 체험하기 싫거든 그냥 이 이미지로 만족하라. ㅈㅅ.

http://manage.windowsazure.com

composite / 2013년 8월 16일 / 미분류 / 0 Comments

한국에서 윈도우 서버 제품군 비용이 쓸데없이 높은 이유

웹 서버 순위 포스트를 쓰고 갑자기 문득 떠올랐다.

사실 윈도우 서버는 패키지 구매 비용이 비싸지 거기서 웹 어플리케이션 세팅 비용은 타 운영체제보다도 낮다.

리눅스보다도 싸다. (근데 요즘 전체적인 비용은 리눅스가 우월하긴 하지만 그닥 큰 차이는 없다.)

근데 한국은 이상하게 유독 전체적인 비용이 비싸다. 그런 인식이 강하다.

옛날는 그래도 리눅스와 삐까떴다. 왜냐? 리눅스는 무료긴 한데 세팅이 좀 빡셌으니..

하지만 요즘은 리눅스에 자동설치 패키지 방법이 도입되고 난 후 비용이 줄었다.

그래봐야 리눅스는 세팅비용이라는 함정이 있어 비용을 윈도우처럼 크게 줄이지는 못한다.

그래도 둘다 편해지긴 편해졌다.

중소기업부터 국가기관까지 오픈소스(?)인 자바를 도입하고, 그 외 언어는 배제하고 있다.

사실 전체적인 비용을 따지면 PHP 사이트 구축이 가장 유리하다. 대국민 사이트에서 PHP만으로도 돌릴 수 있는데도 불구하고 (전자민원같은거 빼고.) 죄다 자바다. 그냥 보여주기식 사이트도 마찬가지다. 국가기관 이벤트 홈페이지 (예를들면 엑스포 안내 및 교통정보 등을 알리는 안내 사이트만 딸랑)까지 스프링에 스트럿츠 돌리는 거품 쩌는 웹사이트도 있다. (로비먹였겠지..ㅋㅋ)

사실 윈도우는 패키지가 유료다. 스탠다드가 100만원 간다. 라이센스에 따라 몇천만원 호가하기도 한다.

근데.. 세팅비용은 싸다. 원래 싸다. 거기다가 어떤 프로그램을 쓰던 마소는 상관 안한다. 불법만 아니면.

근데 비싸다고 하다.

우리나라 종특중에 이게 있다. 겉모습만 보고 판단한다. 하지 말래도 결국 하게 된다. 사회 시스템이 그런 구조다.

그래서 결국 하나만 집중하게 된다. 자바 뿐이다. 오로지.

근데 이상하게 C/C++ 개발은 비주얼 스튜디오로 개발하고 MS 컴파일러로 돌려 윈도우에만 돌린다.

오픈소스 권장하는 정부라면서 뭔가 앞뒤가 안맞는다.ㅋㅋ

어쨌든. 겉모습에는 윈도우 패키지가 비싸다. 그래서 꺼린다.

하지만 윈도우로 돌렸던 업체는 더욱 더 꺼린다. 세팅 비용도 만만찮게 비싸기 때문이다. 왜일까?

이유는 간단하다. 윈도우 시스템을 건드려야 직성이 풀리는 기획성과 개발성에 있다.

이렇게 비용을 올려버린다. 당연히 윈도우 시스템을 건드리고 환경 바꾸니 비용이 올라갈 수밖에 없다.

하지만 효율성은 떨어지고 유지보수가 어려워진다. 결국 그 비싼 시스템은 쓰레기조각이 되고 만다.

우리나라 패키지 시장이 정말 이렇게 심각했었다. 이제는 몇년 쓰고 버리자는 인식이 IT에서 너무 강해졌다고밖에.

옛날 닷넷으로 만든 ERP를 접해본 적이 있다. 세팅을 해봤다. 세팅 순서는 이렇다.

  1. 윈도우 깐다.

  2. REGEDIT 켜서 레지 등록한다. (알고보니 앱 세팅정보를 여따가 넣었다.)

  3. 앱의 ini 정보를 수정한다 (web.config는 장식이었나?)

  4. web.config를 수정하는데 수정 내용은 ini 참조와 레지 참조

  5. machine.config 수정한다. (보안등급 확 내리는게 한국IT 종특이다.)

  6. IIS 세팅한다 (이건 허무맹랑하게 끝날 줄 알았는데 무슨 가상폴더가 이리 많아..)

  7. COM+ 모듈 깐다.. (하아..)

  8. 웹서버 켜고 DB연결 되고 이것저것 되는지 테스트한다.

이렇다.

일반적으로 웹 앱은 이렇게 한다.

  1. IIS에 웹 앱 경로 집어넣고 웹사이트 추가한다.

  2. web.config 를 환경에 맞게 수정한다.

  3. 돌리고 테스트한다.

정말 쉽다. 근데 이게 보안에 취약하단다.. 미친..

(암호화가 안되있다는 이유라고 하는데 옛ERP도 실상 암호화도 없고 리플렉터로 뚫리고 경로 뽀록나면 다 뚫리는 구조다)

비용이 왜 높은가. 정말 쉽다. 이렇게 모순된 인식과 세팅 방법에 있었다. 더 이상 할말이 없다.

덤으로 졸랭 개발하기도 쉬운 액티브엑스가 왜 비용이 비싼가 했더니..

  1. 윈도우 비스타 이상 관리자 권한 요구

  2. 64비트 환경 적용 (이건 뭐 어쩔수 없다지만)

  3. 보안설정을 최대한 낮춰 액티브엑스가 보호하도록 유도

<

p>

이렇다. 배포는 아주 쉽다.

어쨌든, 이런 모순된 인식과 비싼 비용이지만 오히려 보안에 취약한 서버 환경을 불러오고 말았다.

이런 면에서는.. 자바가 유리하다. 사실. 시스템에 별다른 세팅 안해도 되니까.

한국 IT가 보안에 이렇게 취약한 원흉은 바로 이런 모순된 시스템 환경 설정이 불러온 재앙이 아닐까 싶다.

비용 비싸고, 보안에 취약하고. 단점이란 단점 다처먹고도 아직도 우리나라 IT는 정신 못차렸다.

우리나라는 공급자가 하라는대로 안하고 멋대로 하고 문제생기면 마소한테 따지는 이상한 나라다.

더 웃긴점은, 공급자가 이것도 수용하준다는거다.

이런 모순된 세팅과정과 비용, 그리고 비효율성, 취약한 보안.

IT에 종사하는 여러분들도 어쩌면 그 문제에 직면하고 있을지도 모른다.

composite / 2013년 6월 19일 / 미분류 / 0 Comments