CentOS 7에 plexpy 설치

plex 서버를 잘 사용 중인데 plexpy라는게 있다고 한다. 대강 보니 모니터툴 같은데 일단 리눅스에서 plexpy 를 설치해본다. 인터넷에 있는 몇몇 문서들은 도커를 이용한 설치를 예시로 하고 있는데 내 서버들은 아직 도커를 쓰지 않으므로 그냥 설치하는 것으로.

리눅스는 CentOS 7. plexpy 홈페이지에 들어가 InstallGuide 문서를 읽어본다.

https://github.com/JonnyWong16/plexpy/wiki/Installation

GIT을 이용하여 소스 코드를 다운 받는다.

git clone https://github.com/JonnyWong16/plexpy.git

[root@localhost source]# git clone https://github.com/JonnyWong16/plexpy.git
 Cloning into 'plexpy'...
 remote: Counting objects: 15652, done.
 remote: Total 15652 (delta 0), reused 0 (delta 0), pack-reused 15652
 Receiving objects: 100% (15652/15652), 77.18 MiB | 2.67 MiB/s, done.
 Resolving deltas: 100% (8905/8905), done.
 [root@localhost source]#

설치문서에는 /opt 에 설치하는 것을 예로 들고 있지만 이 경로를 난 좋아하지 않으므로 /usr/local/plexpy 에 설치할 예정.

다운 받은 내용을 /usr/local/plexpy 로 이동한다.

[root@localhost source]# mv plexpy /usr/local/
 [root@localhost source]# cd /usr/local/plexpy
 [root@localhost plexpy]#

plexpy.py를 실행하면 StandAlone 으로 실행하는 것 같지만 난 데몬서비스가 더 좋으므로 관련 문서를 읽어본다.

https://github.com/JonnyWong16/plexpy/wiki/Install-as-a-daemon

리눅스인 경우 다음의 문서를 읽어보라고 한다.

https://github.com/JonnyWong16/plexpy/blob/master/init-scripts/init.systemd

보여지는 스크립트 파일 내용을 vi 를 이용해 plexpy.service 파일로 입력한다.

파일 안에 있는 /opt 로 시작하는 경로들을 나에게 맞도록 /usr/local q로 시작하도록 수정한 다음 저장한다. 실행 유저과 그룹도 plexpy 로 변경.

.service 파일은 보통 /lib/systemd/system 에 저장한다고 하니 그곳으로 옮겨주고 스크립트를 재로딩한 다음, 제대로 읽혀지는지 테스트해본다.

[root@localhost plexpy]# mv plexpy.service /lib/systemd/system
 [root@localhost plexpy]# systemctl daemon-reload
 [root@localhost plexpy]# systemctl status plexpy.service
 ● plexpy.service - PlexPy - Stats for Plex Media Server usage
 Loaded: loaded (/usr/lib/systemd/system/plexpy.service; disabled; vendor preset: disabled)
 Active: inactive (dead)
 [root@localhost plexpy]#

서비스를 시작한다.

[root@localhost plexpy]# systemctl start plexpy.service
 Job for plexpy.service failed because the control process exited with error code. See "systemctl status plexpy.service" and "journalctl -xe" for details.
 [root@localhost plexpy]#

 

에러가 난다. 에러메시지대로 status 명령을 입력해본다.

[root@localhost plexpy]# systemctl status plexpy.service
 ● plexpy.service - PlexPy - Stats for Plex Media Server usage
 Loaded: loaded (/usr/lib/systemd/system/plexpy.service; disabled; vendor preset: disabled)
 Active: failed (Result: exit-code) since 화 2017-09-12 14:24:11 KST; 1min 10s ago
 Process: 23144 ExecStart=/usr/local/plexpy/PlexPy.py --quiet --daemon --nolaunch --config /usr/local/plexpy/config.ini --datadir /usr/local/plexpy (code=exited, status=217/USER)

9월 12 14:24:11 localhost.localdomain systemd[1]: Starting PlexPy - Stats for Plex Media Server usage...
 9월 12 14:24:11 localhost.localdomain systemd[1]: plexpy.service: control process exited, code=exited status=217
 9월 12 14:24:11 localhost.localdomain systemd[1]: Failed to start PlexPy - Stats for Plex Media Server usage.
 9월 12 14:24:11 localhost.localdomain systemd[1]: Unit plexpy.service entered failed state.
 9월 12 14:24:11 localhost.localdomain systemd[1]: plexpy.service failed.
 [root@localhost plexpy]#

 

설치 문서를 읽어보니 환경설정에 대한 내용을 하나도 실행 안한 것이었다.

유저를 추가하고 권한을 준다.

[root@localhost plexpy]# adduser --system --no-create-home plexpy
 [root@localhost plexpy]# chown plexpy:plexpy -R /usr/local/plexpy
 [root@localhost plexpy]#

 

이제 다시 시작해보면 에러가 나지 않는다.

[root@localhost plexpy]# systemctl start plexpy.service
 [root@localhost plexpy]#

 

서비스를 자동실행으로 등록한다.

[root@localhost plexpy]# systemctl enable plexpy.service
 Created symlink from /etc/systemd/system/multi-user.target.wants/plexpy.service to /usr/lib/systemd/system/plexpy.service.
 [root@localhost plexpy]#

 

웹브라우저로 서버의 8181 포트를 열어보면 다음과 같은 화면이 나온다. 이제부터는 웹에서 설정!

그런데 막상 설치해서 보니까 이게 뭐… 딱히 모니터링이라 하기도 애매하고… 어디다 써야할지는 잘 모르겠다. 아파치에 같이 물릴려고 했는데 귀찮아서 그냥 쓰는 것으로.

MicroServer를 재설정

집에 설치한 서버에 CentOS 7을 설치해서 썼었지만 다시 6 버전으로 돌아가기로 결정.

7 버전에 적응하려 했지만 6을 쓰던 습관으로 계속 쓰기에는 너무나 불편한게 많아 가장 익숙한 시스템으로 이동했다.

 

Transmission 데몬을 계속 쓰다가 rtorrent를 쓰려고 했는데 속도는 rtorrent가 훨씬 좋았지만 문제점이 많았다.

  1. 다운로드 완료 디렉토리와 다운로드 진행중 디렉토리를 개별로 설정할 수 없어서 하드디스크를 나누어서 사용할 수 없다는 점
  2. 파일질라에서 sftp로 접속해서 다운로드된 파일을 이동하려 하니 오류 나면서 이동이 안됨. SSH로 접속해서 이동시켜야함.
  3. Transmission GUI 툴 같은 편리한 툴이 없어서 ruTorrent를 이용해 웹브라우저로 접속해서 토렌트 파일을 업로드 해야한다는 점.

사실상 속도가 빠르다는 점 하나 빼고는 모든 면이 Transmission에 비해 안 좋기 때문에 그만 사용하기로 결정.

 

주말에 시간을 내어 다시 CentOS 6.7 버전으로 설치하고 디스크 마운트하고 각종 프로그램을 재설치 했다.

PLEX에서 다음검색에이전트 설치

PLEX 서버 설치 후 영화 추가시 데이터를 자동으로 가져오기 위해 다음검색 에이전트를 설치했다.

https://forums.plex.tv/discussion/comment/486302

에서 다음 검색 에이전트를 다운로드한다.

https://github.com/hojel/DaumMovie.bundle 에서 master.zip 파일을 다운로드 받을 수 있다. 리눅스에서는 wget 명령어를 이용하여 한번에 받을 수 있으므로 더 편리하다.

다운로드 파일을 unzip master.zip 명령으로 압축을 풀고, 폴더명을 DaumMovie.bundle-master 에서 DaumMovie.bundle 로 변경한다. (폴더명을 바꾸지 않으면 PLEX 서버에서 인식되지 않으므로 반드시 변경해야한다.

변경한 후 PLEX 서버를 systemctl restart plexmediaserver 명령으로 재시작해준다.

다시 웹관리자에 접속하여 설정 -> 서버 -> 에이전트 항목에 가보면 Daum Movie 라는 항목이 생겨있다.

K-026

밑의 Local Media Asstes (Movies) 의 체크박스를 활성화해주면 끝. (이게 되어있지 않다면 자막이 나오지 않는다고 한다.)

나머지 TV 쇼나 아티스트 앨범에 가서도 같은 작업을 반복해주면 된다.

이 작업을 하고 나면 영화나 TV쇼가 추가되면 자동으로 데이터를 가져오게 된다.

HP MicroServer Gen8

독일의 컴퓨터유니버스(http://www.computeruniverse.net)에서 직구한 마이크로서버 Gen8이 도착했다.

우리나라 가격으로는 35만원 정도인데 컴퓨터유니버스를 이용하면 배송비 모두 포함 27만원 정도가 든다. 단 거의 3주에 가까운 시간을 기다려야 했으니…. 직구를 처음해보는 나로써는 무진장 답답했다. 컴퓨터유니버스에서 독일우체국까지는 금방간다. 그런데 거기서 한국으로 오기까지 거의 열흘가까이가 걸렸다. 한국에 온 다음에는 2일인가 3일만에 도착.

여튼 무사히 도착했으니 박스 뜯으며 개봉.

img_1155

박스 크기가 거의 라면 박스 크기.

img_1156

내부에는 종이를 구겨서 완충재로 넣어놨다. 그덕분에 다행히 박스는 아주 깨끗한 모습으로 도착.

img_1157

상자를 열고 컴퓨터를 꺼낸다. 전원케이블 2개가 들어있다. 생각보다 컴퓨터가 무겁다.

img_1160

기본사양은 하드디스크가 들어있지 않기 때문에 따로 준비한다. 운영체제용으로는 얼마전 RMA 받은 히타치 500기가 하드디스크, 데이터 저장용으로 웨스턴디지털 4TB 하드디스크, 토렌트 돌릴 용도로 무상분양 받은 삼성 250GB 하드디스크를 캐디에 조립한다.

img_1158

서버 뒤의 핸드스크류를 돌린 다음 뚜껑을 뒤로 밀어서 연다. 옆쪽에 메모리 슬롯이 보이고 2GB ECC 메모리가 꽂혀있다. 미리 준비한 삼성 PC12800 ECC 8GB 메모리 2개를 꽂아서 16기가 메모리를 장착했다.

img_1161

작업방에 두고 세팅 중… 아내가 아주 오래전에 쓰던 모니터와 키보드도 연결했다. iodd를 연결해서  CentOS 설치. (이럴 때 느끼지만 정말 iodd는 잘 산 것 같다.) 운영체제는 CentOS 7을 설치했다. 6버전대가 익숙하긴한데 공부도 할겸 개인용도니까 7 버전으로 처음 설치.

처음 시동하면 지혼자 몇번 꺼졌다켜졌다 계속 반복한다. 일종의 초기화 과정으로 생각하고 가만히 내버려두면 된다.

내가 제일 중요하게 생각했던 소음 문제.

사용해보니 부팅시에는 굉장히 소음이 큰데 부팅이 완료되면 소음이 적다. 일반적인 사무실에서 조용할 때 나는 컴퓨터 소리 정도? 그냥 사무실이라고 생각하면 쓸 수 있을 것 같다. 하지만 집안에서라면 좀 어려울 것 같다. 집안에 아무런 전자기기나 TV도 작동하지 않는 조용할 때에는 소음이 들린다.

리눅스에서 4TB 하드디스크 파티션하고 포맷하는 방법

CentOS 7을 설치하고 가지고 있는 하드디스크들을 장착하고 파티셔닝을 진행했다.

500GB 하드디스크와 250GB 하드디스크는 fdisk 명령어로 파티션을 나누고 mkfs.xfs 명령어로 포맷하고 마운트하니 제대로 인식되고 사용 가능했다. 그런데 새로 구입한 4TB 하드디스크도 같은 방법으로 파티셔닝하고 파일시스템 생성 후 마운트하니 2TB로 잡혔다.

왜 이런가 찾아보다가 발견.

hdd

내용은 이 디스크는 4TB이며 parted를 이용하라는 말이다.

parted 사용법은 다음 링크를 참조했다.

parted를 통해서 무사히 파티셔닝을 마쳤다.

mod_ruid2 설치 방법

Apache 2 버전에서 mod_ruid2 를 설치하기로 했다.

https://github.com/mind04/mod-ruid2 에 가서 최신버전의 zip 파일을 다운로드한다. 다운로드한 파일을 서버에 올리고 unzip master.zip 명령을 내려 압축을 해제한다. 이 글을 쓰고 있는 시점에 최신 버전은 0.9.8 버전이다.

참고로, 내 서버의 환경은 CentOS 6.5 이며 모든 최신업데이트가 전부 적용되어 있다. Apache는 CentOS에서 제공하는 아파치를 사용하고 있다.

apxs -a -i -l cap -c mod_ruid2.c 명령을 내리면 컴파일이 시작된다.

----------------------------------------------------------------------
 Libraries have been installed in:
 /usr/lib64/httpd/modules
 If you ever happen to want to link against installed libraries
 in a given directory, LIBDIR, you must either use libtool, and
 specify the full pathname of the library, or use the `-LLIBDIR'
 flag during linking and do at least one of the following:
 - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
 during execution
 - add LIBDIR to the `LD_RUN_PATH' environment variable
 during linking
 - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
 - have your system administrator add LIBDIR to `/etc/ld.so.conf'
 See any operating system documentation about shared libraries for
 more information, such as the ld(1) and ld.so(8) manual pages.
 ----------------------------------------------------------------------
 chmod 755 /usr/lib64/httpd/modules/mod_ruid2.so
 [activating module `ruid2' in /etc/httpd/conf/httpd.conf]
 [root@83rpm mod_ruid2-0.9.8]#

메시지가 나오고 컴파일이 종료된다.

혹시 sys/capability.h 파일이 없다는 메시지가 나온다면 lilbcap-dev 패키지를 설치하면 해결된다.

아파치 폴더의 httpd.conf 를 보면,

LoadModule ruid2_module       /usr/lib64/httpd/modules/mod_ruid2.so

처럼 모듈 로딩 명령이 들어가 있다.

가상호스트 설정에 들어가서 다음의 내용을 추가한다.

<IfModule mod_ruid2.c>
RMode config
RUidGid 원하는유저ID 원하는그룹ID
</IfModule>

다 입력했다면 아파치 서버를 재시작하고 다음의 내용의 PHP 파일을 만들어서 제대로 작동하는지 확인한다.

<?php
 makedir("testdir");
 ?>

이 내용은 http://fullpowe.blog.me/10158911404 를 참조했다.

추가. 위 php 파일의 makedir() 함수로 테스트를 하려했으나 mod_security 모듈에 의한 보안정책 위반으로 제대로 실행되지 않았다. 자체적으로 테스트해본 결과, mod_ruid2 모듈은 정상적으로 작동하는 것을 확인하였다.

아파치에서 특정 도메인에 대한 페이지를 모두 포워딩하기

아파치 웹서버에서 가상호스트를 설정하여 운영하던 중에 특정 가상호스트로 들어오는 모든 요청을 특정도메인의 특정페이지로 넘길 때의 설정 방법이다.

가상호스트 설정 파일에서 다음의 내용을 입력한다.

<VirtualHost *:80>
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(request.domain.com) [NC]
 RewriteRule ^(.*)$ http://target.domain.com/target_page.jsp [R,L]
</VirtualHost>

지정된 도메인으로 오는 모든 요청이 지정된 페이지로 다 전환되어 버린다.

CentOS에 FreeTDS 설치하기

Step 1. 소스 다운로드

http://www.freetds.org 에서 FreeTDS 소스를 받는다.

Step 2. 압축 해제

다음의 명령으로 압축을 푼다.

gunzip freetds-stable.tgz

압축을 풀면 tar 파일이 하나 나온다. tar xvf 명령으로 압축을 해제한다.

tar xvf freetds-stable.tar

Step 3. 컴파일

압축 해제가 되면 freetds 폴더가 나오는데 여기에 들어가서 컴파일을 시작한다. configure / make / make install 명령으로 실행한다. 난 소스 설치할 때 위치를 지정해서 설치하는 편이라 –prefix 로 위치를 지정했다.

[dongbum@localhost freetds-0.91]$ ./configure --prefix=/usr/local/FreeTDS --enable-msdblib
[dongbum@localhost freetds-0.91]$ make
[dongbum@localhost freetds-0.91]$ make install

실행을 다 하고 나면 /usr/local/FreeTDS 에 freetds 관련 파일들이 설치된다.

Step 4. 라이브러리 파일 경로 설정

/etc/profile 에 LD_LIBRARY_PATH에 freetds의 라이브러리 파일들을 연결해준다. /etc/profile 파일을 vi로 연다음 다음처럼 추가한다.

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/FreeTDS/lib

설정이 적용되도록 재부팅을 한번 해준다.

Step 5. odbc.ini 파일 수정

/etc/odbc.ini 파일에 내가 사용할 DB의 이름을 설정해준다. 내 경우에는 freetds 외에도 sqlite 설정도 같이 추가하였다.

[dongbum@localhost log]$ cat /etc/odbc.ini
[111.222.333.444]
Driver = FreeTDS
Description = 111.222.333.444
Trace = No
Servername = 111.222.333.444
Database = 기본DB이름

[TEST_SQLITE3]
Description = TEST SQLITE
Driver = SQLite
Database = /test/sqlite/test_sqlite.db
StepAPI = NO

Step 6. odbcinst.ini 파일 수정

/etc/odbcinst.ini 파일에도 다음과 같은 설정을 추가해준다. 역시 SQLite를 사용하기 위한 설정도 추가하였다.

[FreeTDS]
Description = v0.64 with protocol v4.2
Driver = /usr/lib64/libtdsodbc.so
UsageCount = 5

[SQLite]
Description = ODBC for SQLite
Driver = /usr/local/lib/libsqlite3odbc.so
Setup = /usr/local/lib/libsqlite3odbc.so
FileUsage = 1
CPTimeout =
CPReuse =

/usr/lib64/libtdsodbc.so 파일은 /usr/local/FreeTDS/lib/libtdsodbc.so 파일을 향하도록 심볼릭링크를 걸어준다.

Step 7. freetds.conf 파일 수정

마지막으로 freetds.conf 파일을 수정해준다. 난 /usr/local/FreeTDS에 설치하였으므로 /usr/local/FreeTDS/etc/freetds.conf 파일을 수정해주면 된다.

[global] 섹션에

client charset = EUCKR
text size = 4290000000
tds version = 4.2

를 추가한다. 캐릭터셋과 tds 버전 등을 지정하는 문구 같은데 이 옵션에 대해 정확히는 나도 잘 모르겠다. 그리고 아까 추가한 서버이름을 그대로 추가해준다.

[111.222.333.444]
host = 111.222.333.444
port = 1433
tds version = 8.0

여기까지 다 설정하고나면 FreeTDS 사용이 가능하다.

리눅스에서 MSSQL 접속이 쉬운게 아니란걸 다시 한번 느낀다.

CentOS에서 SVN 서버 설정시 주의할 점

HTTP 프로토콜을 이용해 svn 서버를 운영하고 있었는데 이러다보니 아파치 서버가 없이는 svn을 사용할 수가 없는 상황이 되었다.

향후에는 nginx로 넘어가려고 하는데 아파치가 발목을 잡을 수 있어서 svn:// 프로토콜로 넘어가려고 해서 svnserve를 yum으로 설치했으나 svn에 연결이 되지 않았다. 외부 서버에서 접속이 안되는게 아니라 내부에서도 접속이 안되었기 때문에 뭔가 문제라고 생각했다.

곰곰이 생각해보니 svn 서버를 설정할 때 레포지토리 루트 경로를 설정한 적이 없어서 도대체 어디서 레포지토리 루트 경로를 잡고 있는지 궁금했는데 인터넷 검색을 하다가 찾았다.

http://blog.naver.com/haengro?Redirect=Log&logNo=40194678804

본문에 있던대로 /etc/sysconfig/svnserve 파일을 생성하고 옵션을 설정하니 정상적으로 접속이 되었다.