2019년 12월 18일 수요일

우분투 18.04에서 파이썬 matplotlib 한글설정 방법

1. 우분투 한글 nanum  폰트 설치 및 캐시 제거
sudo apt-get install fonts-nanum*
sudo fc-cache -fv

2. 현재 설정 확인
import matplotlib.pyplot as plt
print (plt.rcParams['font.family'] )
print (plt.rcParams['font.size'] )
print (plt.rcParams['xtick.labelsize'])
print (plt.rcParams['ytick.labelsize'])
print (plt.rcParams['axes.labelsize'])

3.나의 기본세팅을 나눔명조체 폰트크기 15로 변경 설정 우분투 명령창에서 아래와 같이 입력
echo 'font.family : NanumMyeongjo' >> ~/.config/matplotlib/matplotlibrc
echo 'font.size : 15.0' >> ~/.config/matplotlib/matplotlibrc
설정 확인 $ cat  ~/.config/matplotlib/matplotlibrc
** 설정후 주피터 노트북은 프로세스 종료 후 재시작 해야 적용됨
변경 확인은 print (plt.rcParams['font.family'] )으로 확인

------------------------------------------------------------------------
특정 세션에서 폰트 변경시는 아래 와같이 rcParams["font.family"]설정을 변경
plt.rcParams["font.family"] = 'NanumMyeongjo'
이 경우 주피터 노트북을 재시작하면 설정 재 적용이 안됨
------------------------------------------------------------------------
**참고로 변경가능한 폰트와 설치 위치 확인
import matplotlib.font_manager
[(f.name, f.fname) for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]

**기본설정 파일 참조 :  nano /etc/matplotlibrc
편집은 불가능하며 개인설정은  ~/.config/matplotlib/matplotlibrc 파일에 설정하면 됨
import matplotlib as mpl
print ('설정파일 위치: ', mpl.matplotlib_fname())

**설정이 잘되었는지 확인 코드
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 8))
plt.title("한글설정이 잘되었는지?")
plt.show()

2019년 12월 13일 금요일

우분투 18.04에 Selenium standalone server 설치해서 remote webdriver 사용하기

1. https://selenium.dev/downloads/ 에서 서버 실행파일 .jar을 다운로드
예) selenium-server-standalone-3.141.59.jar

2. 서버실행 및 종료
 java -jar 파일명
종료는 ctr+c

3. 백그라운드 실행 및 종료
nohup java -jar 파일명 &
위와같이 명령을 넣어주면 "nohup: 입력 무시 및 'nohup.out' 에 출력 추가"라는 말이 출력
실행상태 확인은 cat nohup.out로 확인 가능
종료를 위해서는 pid확인하여 kill해줌되는데 아래 명령으로 확인
ps -ef|grep java
kill -9 해당 PID

4. nohup.out 파일 생략
장시간 백그라운드 실행으로 파일이 커지는 것을 방지하기 위해
nohup java -jar selenium-server-standalone-3.141.59.jar 1>/dev/null 2>1 &
위와같이 실행시켜주면 nohup.out 생성안되고 pid만 출력해줌

2019년 12월 2일 월요일

우분투 18.04 서버에 Jupyterhub 설치하여 여러 사용자 사용하도록 하기


1. 관련 패키지 설치
$ sudo apt install nodejs
$ sudo apt install npm
$ sudo npm install -g configurable-http-proxy

2. jupyterhub와 인증관련 모듈 설치
$ sudo apt install python3-pip
$ sudo -H pip3 install --upgrade setuptools
$ sudo -H pip3 install jupyterhub
$ sudo -H pip3 install sudospawner
$ sudo -H pip3 install jupyterlab

3. 실행할 전용 사용자 추가
$ sudo adduser tester
$ sudo nano /etc/sudoers

# 전역환경에 설치한 sudospawner 실행 파일을 JUPYTER_CMD로 설정
Cmnd_Alias JUPYTER_CMD = /usr/local/bin/sudospawner
# tester 사용자가 jupyterhub 그룹에 있는 사용자에 대해서 암호없이 JUPYTER_CMD를 실행
tester ALL=(%jupyterhub) NOPASSWD:JUPYTER_CMD

4. jupyterhub 그룹 추가
$ sudo groupadd jupyterhub
$ sudo usermod -a -G jupyterhub tester
$ sudo usermod -a -G jupyterhub tester1
$ sudo usermod -a -G jupyterhub tester2

6. root가 아닌 사용자가 PAM 동적인증 가능하게 하기
$ sudo usermod -a -G shadow tester
$ sudo -H pip3 install pamela
$ sudo -u tester python3 -c "import pamela, getpass; print(pamela.authenticate('$USER', getpass.getpass()))"
### tester가 jupyterhub를 실행시키면 사용자가 각자 아이디와 비번으로 입력하여 사용자인증 가능토록 설정 확인
$ sudo -u tester python3
>>> import pamela
>>> pamela.authenticate('tester1','tester1passwd')
>>> exit()

5. sudospawner 설정 테스트
$ sudo -u tester sudo -n -u $USER /usr/local/bin/sudospawner --help
맞게설정되었으면 help 실행
$ sudo -u tester sudo -n -u $USER echo 'fail'
sudo: 암호가 필요합니다

7. jupyterhub 폴더 만들기
$ sudo mkdir /etc/jupyterhub
$ sudo mkdir /etc/jupyterhub/pythonex
$ sudo chown -cR tester:jupyterhub /etc/jupyterhub
$ sudo chmod -R 755 /etc/jupyterhub/pythonex

8. configuration
$ cd /etc/jupyterhub
$ sudo -u tester jupyterhub --generate-config

9.  jupyterhub_config.py 설정
$ sudo nano /etc/jupyterhub/jupyterhub_config.py
==================================
# set of users who can administer the Hub itself
c.Authenticator.admin_users = {'tester'}

## The public facing port of the proxy.
c.JupyterHub.port = 9091

# set for sudospawner
c.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'
c.SudoSpawner.sudospawner_path = '/usr/local/bin/sudospawner'

# set of users working directory
c.Spawner.notebook_dir = '/etc/jupyterhub/pythonex'

# jupyterlab을 띄우고 싶으면 jupyterlab을 설치하고 디폴트 경로 설정
#c.Spawner.default_url = '/lab'

#  Supports Linux and BSD variants only.
c.LocalAuthenticator.create_system_users = True

## The command to use for creating users as a list of strings
c.Authenticator.add_user_cmd = ['adduser', '--force-badname', '-q', '--gecos', '""', '--disabled-password']

===================================
Alt + a, Ctr + k

10. 서버 실행, 반드시 cd /etc/jupyterhub 폴더에서 실행
$ sudo -u tester jupyterhub jupyterhub_config.py

11. 서비스 등록 및 자동실행
$ sudo nano /lib/systemd/system/jupyterhub.service
===============
[Unit]
Description=Jupyterhub

[Service]
User=root
ExecStart=/usr/local/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py

[Install]
WantedBy=multi-user.target
================
12. 데몬등록 실행 cd /lib/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable jupyterhub
$ systemctl start jupyterhub

13. 실행중 로그 보기
$ journalctl -u jupyterhub

14. 서비스 취소시
$ sudo systemctl stop jupyterhub
$ sudo systemctl disable jupyterhub

15. 추가 가입자 설정
$ sudo adduser tester3
$ sudo usermod -a -G jupyterhub tester3

16. 추가 사용자 쓰기 설정
$ sudo chmod -R 775 /etc/jupyterhub/pythonex
* 지우기 : $ sudo userdel -r or f tester3
* group 확인: $ grep jupyterhub /etc/group