2019년 6월 17일 월요일

subsonic 설치 과정 정리 (OS무관 기준)

1) 개요
이것도 DB몇번이나 날려 먹어 매번 새팅해주는게 영 불편해서 이참에 언제나 볼수 있는 이 장소에 설치 및 백업등을 정래해 본다.

일단 리눅스의 경우 AUR이나 deb설치 방식으로 설치 가능한데 여기서 문제가 발생하는 것이 바로 db문제이다. 통상적으로 subsonic이 설치된 폴더 아래에 보면 이 db폴더가 존재하는데 여기에 subsonic을 사용하면서 생성된 플레이리스트나 별표한 음악, 그리고 스캔한 파일 등등이 기록 정리된 데이터베이스가 생성된 폴더이다.

 근데 버전 별 문제인지 아니면 다른 어떤 문제가 있어서 인지 이 db폴더를 옮긴다 할 지라도 기존의 폴더 내용을 읽어 들여 새로운 OS의 subsonic에서 이를 읽어 들이는 것이 되지 않는다라는 점이 치명적인 문제로 작용했다.

얼추 보면 음악 파일도 아닌 플레이리스트 정도야 다시 만들면 되지 않냐고 생각할지 모르지만, 문제는 그 목록이란게 1000개가 넘어가는 목록일 경우 그걸 다시 생성하는 일이결코 쉬운 일이 아니다. 그래서 DB를 반드시 전달하는 방식으로 설치해야만 전에 사용하던 구조를 그대로 계승하는 것이 가능하다.

2)설치
일단 참고 사이트 :
https://wiki.archlinux.org/index.php/Subsonic
https://www.linuxbabe.com/ubuntu/install-subsonic-media-server-ubuntu-18-04-https

일단 위의 사이트는 코드 변경 사항만 참조 하고 설치 부분은 넘어가도 되는게 지금 설치할 패키지는 standard alone 패키지이니 어디까지나 참조만 하기 바란다.

http://www.subsonic.org/pages/download.jsp

위의 링크에서 standard alone을 wget 명령어로 다운로드 한 후 ( subsonic-6.1.5-standalone.tar.gz 이름이 대부분임)

이를  원하는 폴더에 풀어준뒤

tar -xvzf ./subsonic-6.1.5-standalone.tar.gz

파일을 설치 폴더에 옮겨 준다.

mv -r ./* /var/subsonic         #/var/subsonic이 일단 제작 회사에서 권장하는 기본위치

그 뒤 작동시키고자 하는 계정으로 이 폴더 이하의 권한을 변경한다.

chown -r /var/subsonic (원하는 계정)        #대게는 음악 파일을 보관하는 home폴더의 권한을 가진 계정을 쓰면 됨.

그 뒤

sudo /var/subsonic/subsonic.sh

로 실행 시킨 뒤

브라우져로 접속해 subsonic의 계정 화면이 뜨면 성공적으로 작동하는 것임.

3) 자동시작 설정

sudo vim /etc/systemd/system/subsonic.service

아래 코드 입력

[UNIT]
Descrption=Subsonic
After=network.target

[Service]
User=(사용계정)
ExecStart=/var/subsonic/subsonic.sh
ExecStop=/bin/kill -15 $MAINPID
Type=forking

[Install]
WantedBy=multi-user.target

4)백업방법
이렇게 스탠다드얼론으로 설치된 패키지의 경우 설치 폴더 자체가 db를 포함된 상태임.
그러니 /var/subsonic 폴더 자체를 백업해 새 OS로 옮겨 주는 것 만으로도 db복원이 가능해짐.

2019년 4월 5일 금요일

시카고와 ISS

몇년전 여름 휴가때 미국에 사시는 친척분의 집에 신세를 진 적이 있는데, 그때 꽤 잊을 수 없는 일을 경험한 적이 있어서 이렇게 기록해 두려고 한다.

아시는 분은 아시는 이야기겠지만, 시카고는 거대한 호수(이걸 민물 바다라고 불러야 할지 호수라고 불러야 할지 모를 수준이다.) 바로 옆에 위치한 도시고 과거에는 여기로 들어가는 길을 (어느분이 그 좋아하는)운하로 만들었다가 지금은 유람선을 띄워서 관광 자원으로 활용하고 있다. 과거에는 이걸로 물자를 수송하고 했다고 하는데 지금은 이미 그런걸 할 시점이 아니니 그냥 관광 자원으로만 활용하고 있었는데 범선 현태의 배를 타고 호수를 다녀오는 코스가 있었다.(혹시라도 방문하거들랑 꼭 한번 타보기를 바란다. 안내하는 아가씨가 미인이니)

어째든 할아버지와 그때 배를 타고 밤 호수를 가고 있는데 ISS, 그러니까 국제 우주 정거장이 우리의 머리 위를 지나가고 있었다. 처음에는 이게 국제 우주 정거장인지 몰랐는데 옆에 계신 어느 미국인분(추정?)이 ISS라고 이야기 해주어서 그게 국제 우주 정거장인 것을 알았다.

뭐랄까, 국제 우주 정거장은 계속해서 지구를 돌고 있으니(지금 앱으로 보니 무려 27,612 km/h의 속도다!) 머리 위를 지나친다 해도 이상할 것은 없기는 하지만 딱 미국에 가서 마침 호수 위에서 밤하늘을 쳐다보고 있었는데 우주정거장이 지나간 것이다.

시카고의 야경, 그걸 빛추는 호수 그리고 그런 밤 하늘을 가르는 인공위성이라는 조합은 꽤나 이색적이면서도 특이한 조합이 아니었나 싶고 지금도 내가 시카고에서 겪었던 일 중에서 가장 기억에 남는 일이 아닌가 한다.

2019년 2월 5일 화요일

youtube-dl 사용법 정리(스크립코드 추가)

때때로 깜빡 깜빡하는 내용이라 여기 정리해 둔다

설치:
apt 든 pacman 이든 늘 설치하던 대로 설치하면 되나 문제는 최신 버전이 아닌 경우 다운이 않되는 경우가 종종 있다. 그러니 설치된 youtube-dl이 있으면 삭제해 준 뒤 아래의 명령어를 내리면 최신판을 설치해 준다.

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl


사용:
간단하다. 그냥

youtube-dl (원하는 URL)

을 하면 알아서 현 디렉토리에 다운해 준다.(영상 기준)

이걸 오디오 포멧만 추출하려면

youtube-dl -x (원하는 URL)

으로 하면 원하는 오디오 포멧인데 최고 음질(원본)로 자동 지정하므로 범용성이 떨어지는 경우가 종종 있다.

그러니 다음과 같이 오디오 포멧을 지정하는 것도 가능하다

youtube-dl -x --audio-format (원하는 오디오 포멧(ex:mp3)) (원하는 URL)

이렇게 하면 자동으로 인코딩까지 해준다.

그리고 마지막으로

플레이리스트를 다운 받는데 이상하게도 말썽 부리는 경우 뛰어넘는 방법은

--playlist-start (리스트 숫자)

위 옵션을 붙여 주면 해당 숫자부터 시작한다.

여기에 하나 더 추가 하자면, 스크립 코드로 옵션을 정리하는 것이 가능하다.(계속 mp3옵션 쳐줄 필요가 없다는 뜻)(출처 : https://gist.github.com/nutbutterfly/ec0511efc4895741d955 )

vim 이든 gedit든 적당한 코드 편집기로 아래와 같이 스크립 코드를 작성해 보자.

#!/bin/bash

URL=$1

guide()
{
          echo "유튜브 URL이 요구됨"
}

download_and_convert()
{
          youtube-dl -f bestaudio $URL --extract-audio --audio-format mp3
}

#check
if [ $# = 0 ]
then 
          guide
else
          download_and_convert
fi


주의해 줄 점은 코드 입력 때(특히 if문) 의 띄어 쓰기에 주의할 것
bash 코드가 띄어 쓰기를 해주지 않으면 인식을 못한다는 점이다.

이렇게 해준 다음에 ~/.bashrc 맨 끝에 PATH를 추가해 주는 것도 잊지 말도록 하자

PATH=$PATH:(추가해주려는 path 폴더)

2019년 1월 19일 토요일

텐서플로우(Tensorflow) GPU설치 (이보다 더 쉬울 수는 없다!)

딥러닝의 가장 주목받는 라이브러리 중 하나인 텐서플로우는 GPU를 이용한 가속이 가능하며 GPU가속을 사용할 경우 CPU연산에 비해 탁월하게 빠른 속도의 구현이 가능해 진다.

 그러나..., 이 작업이 OS와 상관없이 그렇게 녹록하지 않은 작업이었던 것이

 텐서플로우 + CUDA TOOLKIT + CuDNN

이렇게 3개의 라이브러리의 버전 조합이 반드시 맞아야만 제대로 텐서플로우는 작동되고 이중 하나라도 조합이 맞지 않으면 당장 import tensorflow 명령어에서 파이썬 중계기가 뻗어 배째라는 광경을 볼수 있을 것이다.

그러나 오늘 발견한 방법은 드라이버만 설치해 주면 나머지는 버전을 지정하거나 아예 자동으로 맞추어 주는 것이 가능한 방법이니 반드시 테스트 해보길 바란다.

원본 자료 : https://medium.com/datadriveninvestor/install-tensorflow-gpu-to-use-nvidia-gpu-on-ubuntu-18-04-do-ai-71b0ce64ebc5


1) 우선은 리눅스(우분투 18.04 혹은 18.10)를 설치한다.(혹은 설치한 리얼컴퓨터가 필요하다. CUDA를 사용해야 하니 당연히 nvidia 그래픽 카드가 설치된 컴퓨터야 한다)

2-1) 리눅스의 경우 다음과 같이 명령한다.
sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot
(맨 마지막 줄을 실행하면 재 부팅한다)

재부팅 후
nvidia-smi 라고 실행해 그래픽 카드의 드라이버가 잘 설치되었는지 등등을 확인한다.

2-2) 윈도우의 경우 그냥 nvidia 윈도우 드라이버를 설치한다.


2) 아나콘다 가장 최신판을 다운로드한다.(OS에 맞게)

2-1)리눅스판의 경우 CUI기반으로 설치하는데

sh ./Anaconda+xxxx.sh

와 같은 형태로 실행 시키면 터미널에서 작동한다. 이때 한가지 주의할 점은 sudo 권한이 아니어야한다는 점이어야 한다는 점이다.

2-2) 설치되면 다시한번 터미널을 껏다 켜주고서

2-3) 이제 제일 중요한 대망의 텐서플로우 설치

conda create -n tensorflow_gpu(이건 원하는 대로 작명) python=3.6 tensorflow-gpu==1.12 cudatoolkit==9.0 cudnn=7.1.2 h5py ipython (등등등 원하는 대로 설치)

2-4) 환경을 활성화 해준 뒤
conda activate tensorflow_gpu

ipython 이든 뭐든 원하는대로 사용하면 설치 끝.

3-1) 윈도우 환경의 경우 ANACONDA NAVIGATOR로 똑같이 해주면 된다.

정리하면 OS와 드라이버만 OS차원에서 설치해 주고 나머지는 아나콘다에서 설치해 주면 된다는 뜻이다.

DUAL LAN포트 활용법

통상의 사용자에게는 꽤 낮설지 모르겠지만, 랜포트가 두개 달린 메인보드(주로 서버용)가 있다.
 대부분의 사용자는 집에 NAS를 별도로 구축하지 않는건 물론이고 아예 무선 접속으로만 사용하다보니 이게 별 장점으로 여겨지지 않겠지만, 만약 집에 NAS를 구축해 두었다면 이건 NAS에 접속하기 위한 전용 포트로 지정해 두면(즉 로컬 주소로 수동 설정을 해주면) 회선을 두개 확보해 둠으로써 인터넷 선에 문제가 생겨도 계속해서 사용 가능한 회선이 되는 것이다.(더불어 인터넷 선과 별도로 작동하다 보니 외부 통신에 영향을 주지 않는다)

 데이터 용량이 많은 동영상을 NAS로 부터 읽어 들일 때는 상당히 유용한 방법임.

2019년 1월 5일 토요일

Deluge 설치 과정 정리 (manjaro 기준)

0) 이젠 더이상 못참아!
여기 저기 건드리기 시작한 서버는 이제 여기저기 문제를 잃으키기 시작했고 이번에 정말로 참기 힘든 상황이 발생한건 그동안 잘 써오던 jupyter notebook이 갑자기 말썽을 잃으켜 드디어 리눅스를 새로 설치해야 하는 시기가 오고야 말았고 새 리눅스 배포판을 설치해야 되어야 하나 말어야 하는가를 고민고민 하다 드디어 예전부터 한번 써보고 싶었던 Manjaro 리눅스를 설치하기로 결심, (오만가지 고생 끝에) 시스템 기본 세팅에 성공하기에 이르릅니다.

참고 사이트들:
https://www.linuxbabe.com/bittorrent/install-deluge-bittorrent-client-ubuntu-18-04
https://dev.deluge-torrent.org/wiki/UserGuide/ThinClient
https://wiki.archlinux.org/index.php/deluge
https://dominicm.com/install-deluge-arch-linux/

1) 근데 왜 리눅스인가?
사실 deluge를 사용해 보신분이라면 잘 알겠지만, 이거 리눅스 버전이 아니라 윈도우 버전이랑 MAC버전도 있다는 걸 잘 알겁니다. 거기에 대부분의 사람들은 리눅스를 잘 해봐야 가상 머신에 설치해 두고서 쓰거나 하지 개인 사용자가 집에 서버를 설치해 두고서 사용하는 어떻게 보면 정신 나간 짓까지 하지는 않는다.(거기에 덤으로 토런트 프로그램이야 몇 종류나 되고 말이다.)
그럼에도 불구하고 나에게 어떻게 구성하는게 좋냐고 물어 본다면 단연코 별도의 물리적 리눅스 (개인)서버에 토런트 박스를 구성해 두고서 사용하는 것이 더 좋은 운영이라고 하고싶습니다.
 별도의 리눅스 서버를 운영해 NAS로서 이를 운영할 경우 다운로드의 자동화를 할수 있는 토런트박스로써 작동 시킬수 있습니다. 하루에 수십 수백게의 토런트 파일 조차 그냥 정해진 폴더에 던저 두기만 하면 deluge의 데몬이 자동으로 다운 받기 시작해 완료되면 역시 자동으로 정해진 폴더로 이동 시켜 둡니다.
 그거 외에도 직접적으로 얻을 수 있는 가장 커다란 장점은, 의외로 많은 연산력(하드웨어로 사용하는 하드 디스크가 느리기 때문에 발생하는 일이지만)을 요구하는 I/O작업을 모두 리눅스 서버가 알아서 해주기 때문에 게임과 같이 랙이 걸리면 짜증나는 작업에 지장을 주지 않으면서도 토런트와 같이 많은 I/O가 소요되는 작업을 동시 진행하는 것이 가능해 집니다.
 비록 그 과정이 쉽지 않지만, 그러나 리눅스의 특성상 한번 세팅해 두면 문제 없이 잘 돌아간다는 점을 생각하면 기가에서 주은 부품으로 만든 서버라도 없는 것 보다는 훨씬 좋은 작업 환경이 될겁니다.

2) 설치
일단 데비안 계열은 그냥 apt명령어 한줄이면 됩니다.

sudo apt install deluge deluged delgue-webui

그리고 만자로 계열도 팩맨이 지원 됩니다.

sudo pacman -S deluge
(이거 하나면 위에거 다 설치해줌)

sudo pacman -S python2-service-identity python2-mako
(이걸 설치해 주어야 의존성 문제가 없음)

3)세팅
이거 부터가 꾀나 괴로운 과정인데 일단 deluge의 작동 구조부터 이해해야 합니다.
deluge는 어플리케이션과 UI가 일치하는 전통적인(classic) 구조와 이를 불리해서 실질적인 작업은 백그라운드의 데몬이 수행하고 UI는 단지 이 과정을 사용자에게 보여주고 사용자의 지시를 데몬에게 전달하는 클라이언트/서버 모델 구조 이렇게 크게 두가지 작동 방식으로 작동합니다. 일반적인 토런트 프로그램으로써 사용하자면 전통적 구조를 그냥 사용해도 되나 이런 방식의 경우 UI가 곧 프로그램이므로 원격 작동등이 상당히 곤란합니다.
 그러니 여기서는 원거리 접속이 가능하도록 클라이언트/서버 모델로 작동하게 하는게 더 좋은 선택이라고 할수 있습니다.

위에서 설치가 끝났으면 원하는 계정으로

deluged                 (델루그 데몬을 시작하며 ~/.config/deluge 에 기본 세팅 파일을 만듬)
killall deluged          (델루그 데몬을 멈추기)
vim ~/.config/deluge/auth  (암호 넣기)


파일을 열면 접속 아이디 및 암호 설정이 가능함

ex) "alice:MyC0mpL3xPass:10"
("ID:암호:계정레벨")
참고로 맨 끝의 숫자는
0: 아무것도 아님
1: 읽기 전용
5 : 통상 사용자
10 : 관리자
라는 뜻입니다.


deluge-console "config -s allow_remote True"
deluge-console "config allow_remote"

이렇게 하면 일단 모든 준비가 끝납니다.

4) 자동시작 세팅
/etc/systemd/system/deluged.service 의 파일 내부를 다음과 같이 세팅합니다.


[Install]
WantedBy=multi-user.target

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target
[Service]
Type=simple
User= (유저ID)
Group=(그룹명)
UMask=007
ExecStart=/usr/bin/deluged -d
Restart=on-failure
# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

한가지 이상한건 manjaro는 맨 위의 [Install]영역을 맨 위에 두어야지만 정상 작동하는 듯 합니다.

그뒤에는

sudo systemctl daemon-reload

sudo systemctl start deluged

sudo systemctl enable deluged           


위와 같이 설정하면 자동으로 시작하기 까지 합니다.

2018년 12월 30일 일요일

Linux disk의 UUID 알기

간단합니다.

sudo blkid /dev/XXX

이렇게 하면 파티션 종류에 UUID까지 출력해줌.