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

2019년 11월 23일 토요일

우분투 18.04에 Jupyter notebook 및 anaconda, spyder 설치

1. 주피터 노트북 설치
$ sudo apt -y install ipython
$ sudo -H pip3 install jupyter
$ jupyter notebook --generate-config
$ sudo nano ~/.jupyter/jupyter_notebook_config.py

c = get_config()
c.NotebookApp.ip = ''
c.NotebookApp.allow_origin = ''
c.NotebookApp.allow_remote_access = True
c.NotebookApp.notebook_dir = 'pythonex'
c.NotebookApp.port = 8000

$ jupyter notebook

2. Kernel 열람/편집
jupyter kernelspec list
sudo jupyter kernelspec uninstall python2
sudo python -m pip install ipykernel
sudo python -m ipykernel install --user

3. 주피터 노트북 제거
$ sudo -H python -m pip uninstall jupyter_core jupyter_qtconsole nbformat nbconvert notebook
$ sudo -H python3 -m pip uninstall jupyter_core jupyter_qtconsole nbformat nbconvert notebook
$ sudo -H pip install pip-autoremove
$ pip-autoremove jupyter -y

4. 아나콘다 설치
$ wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
$ bash Anaconda3-5.1.0-Linux-x86_64.sh

5. 설치확인
$ source ~/.bashrc    // bashrc에 등록한것을 활성해 준다
$ conda --version     // 버전확인
$ conda update conda  // 아나콘다 업데이트

6. 터미널에 (base) 나타나는 것 해제
conda config --show | grep auto_activate_base //결과 True
conda config --set auto_activate_base False

7. 필요시 삭제방법
$ rm -rf ~/anaconda3
$ vi ~/.bashrc // # added by Anaconda3 installer 제거
$ rm -rf ~/.condarc ~/.conda ~/.continuum

8. spyder 설치 
sudo apt-get update
sudo apt-get install spyder
sudo -H pip install spyder






2019년 11월 17일 일요일

우분투 18.04에 Mysql 설치

1. Mysql 설치
$ sudo apt install mysql-server
*설치 중 패스워드 설정은 recommend 방법으로 선택 및 8자리 이상 패스 설정

2. 보안 설정 확인
$ sudo mysql_secure_installation
* 앞에서 설정한 패스 입력, 패스 수준 0, 패스 재설정 no, 나머지는 가능하면 y로 설정

3.  기타 사용자 추가 및 권한 설정
> create user 'master'@'%' identified by '마스터 비번';
> GRANT ALL PRIVILEGES ON *.* TO 'master'@'%';

4. 새로운 database 및 table 생성, 사용자 설정
>  create database pythonex;
>  create user 'pythoner'@'%' identified by '비번';
>  GRANT ALL PRIVILEGES ON pythonex.* TO 'pythoner'@'%';
>  create table customer( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(32) NOT NULL, category int, region VARCHAR(12) );
>  INSERT INTO customer (name, category, region) VALUES('Hong', 1,'Seoul');
> INSERT INTO customer (name, category, region) VALUES('Kang', 2,'Seoul');
> INSERT INTO customer (name, category, region) VALUES('홍길동', 2,'부산');
> show tables;
> desc customer;
> select * from customer;
> exit;



2019년 11월 16일 토요일

우분투 18.04에 MongoDB 설치 방법

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 참조

1. MongDB 설치
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

2. 서비스 및 데이터베이스 확인
$ sudo service mongod start
$ sudo service mongod status
$ mongo --eval 'db.runCommand({ connectionStatus: 1 })'
여기서 버전과 서버 port 확인 가능, //127.0.0.1:27017

3. MongoDB 서비스 관리
$ sudo service mongod status
$ sudo service mongod start
$ sudo service mongod stop
$ sudo service mongod restart

4. 방화벽 조정 (필요시)
$ sudo ufw allow from your_other_server_ip/32 to any port 27017 네트워크 접근 허용
$ sudo ufw status  또는 netstat -tnlp
$ sudo nano /etc/mongodb.conf  인터넷에서 서버접근 허용 , 뒤에 서버 ip 추가 편집
    bind_ip = 127.0.0.1, your_server_ip
$ sudo service mongod restart

5. MongDB 제거
$  sudo service mongod stop
$ sudo apt-get purge mongodb-org*
$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb




2019년 10월 30일 수요일

워드프레스 새로운 버전으로 업데이트 오류 조치

통상 wp-content 쓰기 권한 설정이나 

wp-admin/includes/update-core.php 등의 오류로 새로운 버전으로 업데이트가 안돼는 경우가 있다. 이럴때 조치


1. 폴더 소유자 설정확인
sudo chown -R www-data:www-data /var/www/html/wordpress

2. wp-config.php 설정파일 수정
sudo nano /var/www/html/wordpress/wp-config.php
맨 밑에 줄에 아래 내용 추가
define('FS_METHOD', 'direct');

이렇게 하면 새로운 버전으로 업데이트 가능

2019년 9월 16일 월요일

우분투 18.04 불루투스 연결 안될 때 조치 Ubuntu 18.04 Bluetooth 문제

1. 아래 리파지토리 추가
sudo add-apt-repository ppa:bluetooth/bluez
명령입력 후 Enter

2. 업데이트 및 업그레이드
sudo apt update
sudo apt upgrade -y

3. 설치된 버젼 확인 5.5 이상이면 문제없음
dpkg --status bluez | grep '^Version:'
결과 Version: 5.50-0ubuntu0ppa1

2019년 3월 24일 일요일

우분투 18.04 네트워크 설정과 WOL(랜카드에의한 PC켜기) 설정

WOL(Wake on LAN) 기능을 활용하기 위해서 다음의 세가지 설정이 필요하다.
1. 내 PC의 Bios 설정에서 하드웨어적으로 WOL 기능이 On 되도록 설정
2. 내 PC의 OS 상 WOL이 되도록 설정
3. 내 네트워크 장비상에서 WOL 기능이 되도록 설정
이중에 1번과 3번은 장비 제조사별 안내를 따르면 될 텐데 2번의 경우 우분투 버전이 18.04로 변경되면서 네트워크 설정부분이 많이 변경되어 여기 저기 안내되어 있는 글들이 맞지않은 경우가 많다.
그래서 경험에 비춰보면 아래와 같이 설정하는 것이 가장 좋을 듯하다. 
$ ifconfig 로 내 pc의 이더넷 명칭 확인
$ sudo ethtool enp3s0  마지막 부분이 내 PC의 이더넷 명칭 임 ethtool 명령이 안먹으면 
sudo apt install ethtool로 앱 설치 후 시도
이때 Supports Wake-on: pumbg
 Wake-on: g
 Current message level
위에서 처럼 wake-on이 g 상태이면 설정이 된 것이고 아니고 d로 되어 있는 경우 아래와 같이 설정이 필요

우분투 18.04 network 설정개념이 바뀌어서 기존 네트워크 설정파일 /etc/network/interfaces 에서 설정하지 않고 netplan/*.yaml 파일에서 설정
내것이 어떤 것인지 확인을 위해 sudo ls netplan/*.yaml 로 파일명 확인하고 찾은 파일을 아래와 같이 수정
sudo nano /etc/netplan/01-netcfg.yaml
#아래는 고정 IP 설정과 WOL 설정의 예인데 특히 renderer를 networkd로하면 해결안됨
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp3s0:
     addresses: [192.168.0.XXX/24]
     gateway4: 192.168.0.XXX
     nameservers:
       addresses: [1.214.XX.X, 61.41.XXX.X]
    wakeonlan: true

위와같이 수정후 고정아이피 설정과 WOL 설정을 아래와 같이 확인
$ ifconfig
$ sudo ethtool enp3s0
이결과 위에서 설명한 것처럼 Wake-on: g으로 되어 있으면 원격으로 PC 켜기가 가능해짐

참고로 위의 3번 설정을 위해 LG U+ 라우터 GAPD-7200의 예를 들면 라우터 홈 - Wake on LAN-MAC 주소 검색 PC설명 입력 - 추가 후 설정을 적용하면 외부 인터넷에서 라우터에 접속하여 꺼져 있는 PC를 켜서 포트포우딩을 활성화 할 수 있다.
 

LG U+ 라우터 GAPD-7200의 DDNS 설정과 포트포워딩 설정

집에 IP TV나 인터넷 서비스를 LG U+로 변경한 후 내 PC설정이나 네트워크 설정들을 새롭게 조정해야 하는데 노력 낭비가 많이 있었다. 그래서 독자들에게 시간을 아껴주기 위해서 공유한다.
  1. 라우터를 외부에서 접속하기 위해서는 인터넷 IP주소:88을 치고 접속하면 할 수 있지만 보안상 port번호를 변경하려면 라우터 내부설정에서 네트워크설정-세부설정-원격제어-원격제어 사용포트 설정에 3333등 자주사용하지 않는 포트로 설정 후 우하단 설정적용을 클릭하면 다음부터는 라우터의 인터넷IP주소:3333으로 주소를 입력해야 자신의 라우터에 접근이 가능하다.
  2. DDNS설정을 위해서는 네트워크설정-세부설정-DDNS로 들어가 보면 서비스 연결 홈페이지가 dyndns.org와 noip.com이 연결되어 있는데 앞에 것은 유료화되어 있고 뒤에 noip 것은 한달에 한번 호스트네임을 업데이트 하면 되기 때문에 noip 서비스에 가입할 것을 권장한다.
  3. noip.com에 접속하여 자신의 이메일계정과 패스워드 설정 후 계정을 받으면 접속해서 다시 자신의 id를 설정하고 호스트도메인을 예를 들어 id.hopto.org 같은 주소를 얻을 수 있다. 이렇게 설정한 id와 패스워드를 라우터의 네트워설정-세부설정-DDNS로 들어가서 DDNS 사용함, DDNS서버 noip.com, 사용자에 id입력, 비밀번호 입력, 호스트도메인 입력하고 우하단 설정적용을 클릭하면 설정 완료됨
  4. 이후 나의 라우터 인터넷 ip가 바뀌어도 ip.hopto.org:3333 주소를 치고 접속하면 원격으로 내 라우터 접속이 가능하며, 설정 변경이 가능하다.
  5. 포트포워딩을 위해서는 한가지 설정이 더 필요한데 라우터 홈-DMZ서버-포트포워딩에서 포트포워딩 추가 누르고 예를 들어 홈페이지 포워딩을 설정한다면 포트번호 80, 내부 ip 주소 192.168.219.100, 내부포트 80으로 설정해주고 우하단의 설정적용을 누르면 된다.
  6. 80번 홈페이지 포트 추가 후 on상태로 유지하고 외부 주소 ip.hopto.org로 인터넷 주소를 입력하면 내가 설정한 로컬 PC에서 제공하는 홉페이지 접속이 가능하다. 따라서 내 라우터가 재부팅되어 인터넷 주소가 변경되어도 위의 호스트 name으로 변경없이 접속이 가능한 Dynamic DNS 서비스 사용이 가능하다.
  7. 다만 위의 5번에서 설정한 내부 PC의 내부 IP는 라우터의 상태정보-DHCP할당정보-DHCP 고정할당 페이지에서 고정적으로 ip가 부여될 수 있도록 설정되어야 한다. DHCP 할당목록에 보면 할당된 상태에 IP고정 할당이라고 되어있어야 PC를 재부팅해도 변함없이 포트포워딩이 된다.

2019년 3월 23일 토요일

리눅스 명령어 중 하드웨어 메인보드, 메모리, os 버젼, 주변장치 등 확인 명령 lspci dmidecode 등

하드웨어 확인 명령중 일반적으로 확인하는 정보는
$ cat /proc/cpuinfo 로 CPU 정보를 확인하는 방법이 있고
$ sudo dmidecode 로 PC의 모델명 등을 확인하는 방법이 있으며, 메인보드 제원은 sudo dmidecode -t baseboard 으로 간단히 확인 가능하고
$ lspci 주변 장치목록 등 제원이 확인 가능하며, 필요시 옵션 -t -v로 추가정보 확인 가능하다.
$ cat /proc/meminfo 로 메모리에 대한 내용 확인이 가능하고
$ cat /etc/issue 로 OS 버전정보 확인이 가능하다.
$ df 로 하드별 파일시스템 사용량 확인

2019년 3월 16일 토요일

우분투 벼루 입력 키보드를 이용한 한글 설정

1. sudo apt install uim 설치
2. 시스템설정-지역 및 언어-설치된 언어관리에서 언어는 한국어(대한민국), 키보드 입력기는 UIM으로 설정 닫기
3. 입력소스를 영어(미국) 만 남기고 모두 제거
4. 리부팅 후 입력 프로그램에서 uim(가위모양) 입력기 실행
5. 왼쪽 탭에서 벼루키설정 1의 [벼루] 한글모드로 [벼루]영문모드로 에 "hangul"추가하는데
키보드 번호 설정을 변경해줘야함
* 커멘드라인에서 xmodmap를 실행시켜 봤을 때 mod1 에 Alt_R, control에 Control_R이 정의되어 들어가 있으면 안됨. 이경우 아래와 같이 변경
**커멘드라인 열고 아래 실행
/ 오른쪽 Alt키의 기본 키 맵핑을 제거하고 'Hangul'키로 맵핑
$ xmodmap -e 'remove mod1 = Alt_R'
$ xmodmap -e 'keycode 108 = Hangul'

// 오른쪽 Ctrl키의 기본 키 맵핑을 제거하고 'Hangul_Hanja'키로 맵핑
$ xmodmap -e 'remove control = Control_R'
$ xmodmap -e 'keycode 105 = Hangul_Hanja'

// 키 맵핑 저장
$ xmodmap -pke > ~/.Xmodmap

6. 위의 명령 5줄 실행 후 한/영 키를 잡아주면되는데 '편집' 누르고, '잡기'누르고 한/영키 누르면 "hangul"로 인식 후 추가 후 닫기로 설정해주면 됨



2019년 2월 26일 화요일

워드프레스 아차! 해당 페이지를 찾을 수 없습니다. 오류 해결 방법

로그인 - 설정 -고유주소  에서
'사용자정의구조' 체크된 것을 '기본'으로 체크하고 변경사항 저장하면 해결됨

2019년 2월 2일 토요일

Wordpress 워드프레스 업데이트 오류 해결하기 - 디렉터리를 생성할 수 없는 경우

원인 : 블로그가 위치한 디렉터리 사용 권한이 허가되지않아서 발생
해당디렉터리 이동하여 권한 변경
예) sudo chown -Rf www-data:www-data blog(해당폴더명)