GeoNLPのインストール手順をまとめています。(前半はLinuxのお作法的な部分なのであまり本題とは関係ありませんが)
GeoNLPの説明とそれを利用した検証の結果はこちらのページに書きました。
CentOSの初期設定
SSHの設定変更
# nanoエディタをインストール
$ sudo yum -y install nano
# SSHサーバーの設定ファイルsshd_configを開く
$ sudo nano /etc/ssh/sshd_config
デフォルトポート番号は攻撃を受けやすいので、変更する。
変更前 | 変更後 |
---|---|
#Port 22 | Port {任意の番号} |
#PermitRootLogin yes | PermitRootLogin no |
SELinuxの設定変更
# SELinux設定変更コマンドのインストール
$ sudo yum install -y policycoreutils-python
# 先の任意番号を許可
$ sudo semanage port -a -t ssh_port_t -p tcp {任意の番号}
# 設定を確認
$ sudo semanage port -l | grep ssh
ssh_port_t tcp {任意の番号}, 22
$ sudo systemctl restart sshd.service
ファイアウォールの設定
通常であれば、続いてfirewalld(ファイアウォール)の設定を変更し、先のポート番号を許可させるが、AWS EC2の場合はAWS謹製の「セキュリティグループ」がファイアウォールの働きを担保しているため、firewalldは設定しない(そもそもインストールすらされていない)
AWS EC2インスタンス一覧の画面 > 左メニューにある「セキュリティグループ」> 任意のセキュリティグループ選択 > インバウンド > 編集 から、
「カスタム TCP ルール」を追加する。
パッケージの更新
$ sudo yum -y update
パッケージの自動更新設定
# crontabによるYUM自動更新を行うパッケージのインストール
$ sudo yum -y install yum-cron
$ sudo nano /etc/yum/yum-cron.conf
変更前 | 変更後 | 内容 |
---|---|---|
apply_updates = no | apply_updates = yes | 自動アップデートをON |
update_cmd = default | update_cmd = security | 自動アップデートをセキュリティアップデートに限定 |
# yum-cronを起動
$ sudo systemctl start yum-cron
# 自動起動をON
$ sudo systemctl enable yum-cron
不要なサービスを停止
「サービス」は、OS本体と独立可能なサブシステムのこと。
デフォルトで起動されているサービスのうち、不要なものはセキュリティリスクになるため、OFFにする。
下記ではPostfixをOFFにした。(Linuxで標準的に使用されているメールサーバー)
# 有効化されているサービスを一覧表示
$ systemctl list-unit-files --type service | grep enabled
# 不要なサービスの起動状態を確認
$ systemctl status postfix.service
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-10-22 01:05:44 UTC; 2h 3min ago
Main PID: 3930 (master)
# 不要なサービスの停止
$ sudo systemctl stop postfix.service
# 自動起動をOFF
$ sudo systemctl disable postfix.service
# ステータス確認
$ systemctl status postfix.service
# 自動起動を再度ONにした場合:
$ sudo systemctl enable postfix
ロケール・タイムゾーンの設定
# 現在のシステムロケールを確認
$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
# システムロケールをjpに変更
$ sudo localectl set-locale LANG=ja_JP.utf8
$ localectl status
System Locale: LANG=ja_JP.utf8
VC Keymap: us
X11 Layout: us
# タイムゾーンの変更
$ timedatectl status
$ sudo timedatectl set-timezone Asia/Tokyo
GeoNLPで使用するパッケージのインストール
# boostのインストール
$ sudo yum install -y gcc-c++ boost boost-devel
# SQLite3のインストール
$ sudo yum install -y sqlite3-devel
# automakeのインストール
$ sudo yum install -y automake
# autoconfのインストール
$ sudo yum install -y autoconf
MeCabのインストール
参考:CentOS7.6にMeCab+ipadic+neologd+pythonのmecabモジュールを丁寧にインストールする。
# 関連ライブラリのインストール
$ sudo yum install -y bzip2 bzip2-devel gcc gcc-c++ git make wget curl openssl-devel readline-devel zlib-devel patch file
# 作業フォルダを作成して移動
$ mkdir -p ~/source/mecab
$ cd ~/source/mecab
# ソースのダウンロード
$ wget 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE' -O mecab-0.996.tar.gz
# 解凍
$ tar zxvf mecab-0.996.tar.gz
# インストール先フォルダを作成
$ cd mecab-0.996
$ sudo mkdir -p /opt/mecab
# configureの実行
$ ./configure --prefix=/opt/mecab --with-charset=utf8 --enable-utf8-only
# コンパイル
$ make
# インストール
$ sudo make install
# MeCab実行ファイルをパスに追加
$ echo "export PATH=/opt/mecab/bin:\$PATH" >> ~/.bashrc
$ source ~/.bashrc
# mecabのライブラリにリンク作成
$ sudo bash -c "echo \"/opt/mecab/lib\" > /etc/ld.so.conf.d/libmecab.conf"
$ sudo ldconfig
NAIST辞書のインストール
参考:MeCabのセットアップ
# ソースのダウンロード
$ wget http://iij.dl.sourceforge.jp/naist-jdic/53500/mecab-naist-jdic-0.6.3b-20111013.tar.gz
# 解凍
$ tar xvzf mecab-naist-jdic-0.6.3b-20111013.tar.gz
# configureの実行
$ cd mecab-naist-jdic-0.6.3b-20111013
$ ./configure --with-mecab-config=/opt/mecab/bin/mecab-config --with-charset=utf8
# コンパイル
$ make
# インストール
$ sudo make install
# 辞書の参照先を変更
$ mecab -D
$ sudo nano /opt/mecab/etc/mecabrc
変更前 | 変更後 |
---|---|
dicdir = /opt/mecab/lib/mecab/dic/ipadic | dicdir = /opt/mecab/lib/mecab/dic/naist-jdic |
SQLite3のインストール
参考:Amazon Linux 2でSQLite3を最新バージョンにする
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3270100.tar.gz
$ tar xvfz sqlite-autoconf-3270100.tar.gz
$ cd sqlite-autoconf-3270100
# インストール先フォルダを作成
$ sudo mkdir -p /opt/sqlite3
# configureの実行
$ ./configure --prefix=/opt/sqlite3
# コンパイル
$ make
# インストール
$ sudo make install
# 元からインストールされていた方をみにいってしまうので、シンボリックリンクを貼る
$ find /usr/ -name sqlite3
/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
$ mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
$ ln -s /opt/sqlite3/bin/sqlite3 /usr/bin/sqlite3
$ sqlite3 --version
3.27.1 2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd
DAMSのインストール
ジオコーダDAMS(Distributed Address Matching System)は、住所文字列を経緯度に変換する「ジオコーディング」機能を提供するソフトウェアです。
# 作業フォルダを作成して移動
$ mkdir -p ~/source/dams
$ cd ~/source/dams
# ソースのダウンロード
$ wget http://newspat.csis.u-tokyo.ac.jp/download/dams-4.3.3.tgz
# 解凍
$ gzip -dc dams-4.3.3.tgz | tar xf -
$ cd dams-4.3.3
# 利用条件を確認
$ cat COPYING
# インストール先フォルダを作成
$ sudo mkdir -p /opt/dams
/home/centos/source/dams/dams-4.3.3
# configureの実行
$ ./configure --prefix=/opt/dams --with-charset=UTF8
% ./configure --with-charset=UTF8 LIBS=-liconv CPPFLAGS=-I/usr/local/include
# コンパイル
$ export LIBS=-liconv
$ make
# テキスト位置参照データからバイナリ位置参照データを作成
$ make dic
# インストール
$ sudo make install
(GDAL を利用する場合)GDALのインストール
# EPEL リポジトリを追加
$ sudo rpm -Uvh https://download.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install -y gdal-devel
#GeoNLPのインストール
# 作業フォルダを作成して移動
$ mkdir -p ~/source/geonlp
$ cd ~/source/geonlp
# ソースのダウンロード
$ wget https://geonlp.ex.nii.ac.jp/software/geonlp-1.2.0.tgz
# 解凍
$ gzip -dc geonlp-1.2.0.tgz | tar xfv -
# インストール先フォルダを作成
$ cd geonlp-1.2.0
$ sudo mkdir -p /opt/geonlp
# configureの実行
$ cd ~/source/geonlp/geonlp-1.2.0
$ ./configure --prefix=/opt/geonlp LDFLAGS="-L/opt/mecab/lib -L/opt/sqlite3/lib" CXXFLAGS="-I/opt/mecab/include -I/opt/sqlite3/include"
$ ./configure --prefix=/opt/geonlp LDFLAGS="-L/opt/mecab/lib -L/opt/sqlite3/lib -L/usr/lib64" INCLUDE="-I/opt/mecab/include -I/opt/sqlite3/include -I/usr/include" CXXFLAGS="-I/opt/mecab/include -I/opt/sqlite3/include -I/usr/include"
# コンパイル
$ make
# インストール
$ sudo make install