🛠️

地球観測データの処理環境としてJupyterNotebookを整える

2022/04/13に公開

前提条件

本環境はCentOS-Stream release8[1]
インストールは「最低限のパッケージ」を選択

基本的な環境の準備

圧縮や解凍、EPEL(Extra Packages for Enterprise Linux)の有効化

# dnf-3 install -y zip tar
# dnf-3 install -y epel-release
# sed -ie "s/^enabled=0$/enabled=1/g" /etc/yum.repos.d/CentOS-Stream-PowerTools.repo 

rpmでインストールできるパッケージのインストール

gccやmakeなどの開発環境、HDF5やprojなどの地球観測データの処理に必要なパッケージでrpmで提供されているものをインストール。

# dnf-3 install -y python3-h5py hdf5-devel hdf5-static
# dnf-3 install -y python3-scipy python3-nose python2-numpy
# dnf-3 install -y python3-Cython proj proj-devel gcc gcc-c++  platform-python-devel geos geos-devel make
# dnf-3 install -y python3-pyproj python3-pillow python3-pillow-devel

python環境の準備

Jupyterをインストールするために必要なpython環境をインストール。

# dnf-3 install -y python36
# alternatives --config python
2 プログラムがあり 'python' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python3

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
# update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

Jupyterのインストール

Jupyter(Notebook)のインストール

Jupyterをインストール。

# pip install jupyter

Jupyterサービスの追加

# cat<<_EOF_>/etc/systemd/system/jupyter.service
[Unit]
Description = Jupyter Notebook

[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/usr/local/bin/jupyter notebook
WorkingDirectory=/home/<username>/jupyter/
User=<username>
Group=<groupname>
Restart=always

[Install]
WantedBy = multi-user.target
_EOF_

<username>と<groupname>には適宜、jupyternotebookで利用するユーザ、グループを設定する。

Jupyter作業ディレクトリ、設定ファイルの作成

$ mkdir ${HOME}/.jupyter
$ mkdir ${HOME}/jupyter

パスワードハッシュの生成

$ python -c 'from notebook.auth import passwd;print(passwd())'
Enter password: 
Verify password: 
argon2:$argon2id$v=19$m=10240,t=10,p=8$k/wpkX6W3NB+UZJYVgpzng$lDkk6aYYnSB+YjyFy35+eDFLm1PGu4IOzjONrT1sz0Y

上記は「hoge」をパスワードとして入力したハッシュ。
このハッシュをコピーしておく。

configファイルの作成

パスワードハッシュで作成した、ハッシュトークンをc.NotebookApp.passwordの箇所に設定

$ cat<<_EOF_>${HOME}/.jupyter/jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$k/wpkX6W3NB+UZJYVgpzng$lDkk6aYYnSB+YjyFy35+eDFLm1PGu4IOzjONrT1sz0Y'
c.NotebookApp.port = 8888
_EOF_

firewall設定

# firewall-cmd --add-port=8888/tcp
# firewall-cmd --add-port=8888/tcp --permanent
# firewall-cmd --reload

Jupyterサービスの有効化、起動

# systemctl list-unit-files --type=service |grep jupyter
# systemctl daemon-reload
# systemctl enable jupyter
# systemctl list-unit-files --type=service |grep jupyter
# systemctl start jupyter
# systemctl status jupyter

暗号化ポリシーの設定

# update-crypto-policies --set LEGACY

(主にPythonの)解析に利用するパッケージのインストール

gdal

# curl -skOL http://download.osgeo.org/gdal/3.4.2/gdal-3.4.2.tar.gz
# tar zxvf gdal-3.4.2.tar.gz
# cd gdal-3.4.2
# ./configure
# make
# make install
# easy-install-3.6 gdal
# echo /usr/local/lib/ > /etc/ld.so.conf.d/libgdal.conf
# ldconfig

その他

# pip install numpy pandas shapely fiona six descartes matplotlib geopy geopandas
# pip install pyepsg cartopy xarray
脚注
  1. 執筆時点でのKernelは4.18.0-373.el8.x86_64 ↩︎

Discussion