Symfoware

Symfowareについての考察blog

Debian easy_installで「SSL: CERTIFICATE_VERIFY_FAILED」エラー

ここでインストールしたDebian 9
Debian 9 (Stretch)を最小構成でインストールしssh接続を許可する

Pythonの環境をインストールしました。


# apt-get install python
# apt-get install python-setuptools




easy_installでcythonをインストールしようとしたら、
「SSL: CERTIFICATE_VERIFY_FAILED」
というエラーが発生。


# easy_install cython
Searching for cython
Reading https://pypi.python.org/simple/cython/
Download error on https://pypi.python.org/simple/cython/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) -- Some packages may not be found!
Couldn't find index page for 'cython' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) -- Some packages may not be found!
No local packages or working download links found for cython
error: Could not find suitable distribution for Requirement.parse('cython')




FreeBSDの時にも同様のエラーが発生したので、これを参考に
FreeBSD 10.1で、easy_installのSSLエラー(CERTIFICATE_VERIFY_FAILED)
ca-certificates package


「ca-certificates」をインストールしたら、エラーが解消されました。


# apt-get install ca-certificates



関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/19(月) 23:04:53|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Debian 9 (Stretch)を最小構成でインストールしssh接続を許可する

Debian 9 (Stretch)を最小構成でネットワークインストール。
sshで別の端末から接続できるよう構成します。



インストーラーの取得



こちらからインストーラーのisoファイルを取得しました。
https://www.debian.org/CD/netinst/

753_01.png


今回は、bittorrent 経由で「amd64」のインストーラーを取得します。
debian-9.0.0-amd64-netinst.isoが取得できました。






インストール



仮想環境(KVM)にインストールしてみます。
ダウンロードしたisoファイルをCD-ROMドライブに設定して起動。
デフォルトの「Graphical Install」を選択しました。

753_02.png


言語は「Japanese - 日本語」を選択。

753_03.png


場所とキーボートも日本語を選択しました。

753_04.png

753_05.png


ホスト名は適当に「debian9」としました。

753_06.png


ドメインは、存在しない場合は空白のままでOKです。

753_07.png


rootのパスワード指定です。任意のパスワードを入力します。

753_08.png


root以外のユーザーを作成しておきます。
「sshuser」としました。

753_09.png

753_10.png

753_11.png


ディスクのパーティション指定です。
デフォルトの「ガイド - ディスク全体を使う」を選択しました。

753_12.png


パーティショニングを行うディスクの選択です。
今回は1つだけディスクを搭載したので、そのまま「続ける」をクリックします。

753_13.png


パーティションの分割は行わず、デフォルトの
「すべてのファイルを1つのパーティションに」を選択しました。

753_14.png


確認画面が表示されるので「続ける」をクリック。

753_15.png


本当にディスクへ変更を反映するかの確認画面が表示されます。
デフォルトは「いいえ」になっているので「はい」に変更して続けるをクリックします。

753_16.png


基本的なシステムのインストールが始まります。

753_17.png


インストールパッケージをどこから取得するかの設定です。
すべてデフォルトのまま進みました。

753_18.png

753_19.png

753_20.png

753_21.png


使用しているパッケージの情報を送信するかの確認です。
デフォルトは「いいえ」ですが、少しでも協力できればと思い「はい」を選択して進めました。

753_22.png


インストールするソフトウェアの選択です。
すべてのチェックを外してインストールしました。

753_23.png


ブートローダーをインストールするかの選択です。
これ以外のOSをインストールする気はないので、「はい」を選択します。

753_24.png


インストールするデバイスの選択です。
デフォルトでは「デバイスを手動で入力」になっていますが、
検出されたディスクを選択します。

753_25.png


これでインストール完了です。
「続ける」をクリックすると自動的にリブートします。

753_26.png



リブート後、こんな画面が表示されます。
rootと入力してエンターを押下するとパスワードの入力を求められるので、
インストール時に設定したパスワードを入力するとログイン出来るはずです。

753_27.png


これでDebian 9のインストールは完了です。






固定IPの付与



インストール時、DHCPで自動的にIPアドレスを取得する構成になりました。
ssh接続する都合上、固定IPに変更しておきました。

ネットワークの設定ファイルを編集。


# vi /etc/network/interfaces




編集前の内容はこうなっていました。


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens3
iface ens3 inet dhcp
# This is an autoconfigured IPv6 interface
iface ens inet6 auto





IPアドレス、192.168.1.101を使用するよう変更します。


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens3
# iface ens3 inet dhcp
iface ens3 inet static
        address 192.168.1.101
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 192.168.1.1


# This is an autoconfigured IPv6 interface
# iface ens inet6 auto





設定の反映は再起動が確実かと思います。


# reboot







sshのインストール



別の端末からssh接続できるよう、sshデーモンをインストールします。


# apt-get install ssh




インストール直後から、通常ユーザーはssh接続できるようになっているはずです。
OSインストール時に作成した「sshuser」で接続できました。


$ ssh sshuser@192.168.1.101
sshuser@192.168.1.101's password:
Linux debian9 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2 (2017-06-12) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
sshuser@debian9:~$




しかし、rootユーザーはssh接続できません。
テスト用なので、rootもssh接続できるように変更しました。

sshdの設定ファイルを編集。


# vi /etc/ssh/sshd_config




「PermitRootLogin yes」の設定を追加します。


# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10






sshdをリスタート。


# service sshd restart




これでrootもssh接続できるようになります。




関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/18(日) 23:01:03|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

juman ユーザー辞書を作成し、固有名詞を解析する

jumanを使っていると、ユーザー独自辞書を定義し、固有名詞を解析したい時があります。

例)


化物語は面白い。

化物 化物 化物 名詞 6 普通名詞 1 * 0 * 0 "自動獲得:Wikipedia 読み不明 Wikipediaリダイレクト:お化け"
語 ご 語 名詞 6 普通名詞 1 * 0 * 0 "代表表記:語/ご 漢字読み:音 カテゴリ:抽象物"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
面白い おもしろい 面白い 形容詞 3 * 0 イ形容詞アウオ段 18 基本形 2 "代表表記:面白い/おもしろい 反義:形容詞:つまらない/つまらない"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS




この場合は、「化物語」を1語として解析してほしいなど。


ユーザー辞書の作成方法を調べてみました。

環境は、Debian 8にaptでインストールしたjuman 7です。
日本語形態素解析システム JUMANをDebian 8にapt-getでインストールする




ユーザー独自辞書の作成



こちらを参考にさせていただきました。
Juman のユーザ辞書の作り方
KNP, JUMANでユーザ辞書を追加する(機能語の場合に気をつけること)


最初、ユーザー独自の辞書を作成してjumanが読み込めるように変換した「ファイル」が
必要なのだと思っていました。

そうではなくて、jumanには辞書ファイルがある「ディレクトリ」のパスを指定。
指定するディレクトリには

・jumandic.dat
・jumandic.pat

という2つのファイルを配置しておくというルールのようです。


まず、適当なディレクトリを作成。


# mkdir -p /opt/juman/mydic




解析したい単語と読みを記載したファイルを作成します。
※今回は名詞なので簡単ですが、品詞の場合には複雑な指定になる模様。


# vi /opt/juman/mydic/usr.dic




ファイルの内容はこのようになりました。


(名詞 (普通名詞
((見出し語 化物語) (読み ばけものがたり))
((見出し語 傷物語) (読み きずものがたり))
((見出し語 偽物語) (読み にせものがたり))
))




このファイルを「jumandic.dat」「jumandic.pat」に変換します。
古いjumanのバージョンだと、ファイルの文字コードはEUCである必要があったようですが、
バージョン7の場合はUTF8でOKです。

変換プログラムはjumanに同梱されています。
debianの場合は「/usr/lib/juman/」に配置されています。

順にコマンドを実行。


# cd /opt/juman/mydic/
# /usr/lib/juman/makeint usr.dic
# /usr/lib/juman/dicsort usr.int > jumandic.dat
# /usr/lib/juman/makepat usr.int




コマンド実行後、/opt/juman/mydic/には以下の4つのファイルが存在するはずです。


jumandic.dat
jumandic.pat
usr.dic
usr.int







ユーザー独自辞書の指定



作成した辞書ファイルのあるディレクトリをjumanの設定ファイルに追記します。
debianの場合は「/etc/jumanrc」が設定ファイルとなります。


# vi /etc/jumanrc




ファイルの先頭「辞書ファイル」セクションに、「/opt/juman/mydic」を追記。


(文法ファイル
        /usr/lib/juman/dic
)

(辞書ファイル
        /usr/lib/juman/dic
        /usr/lib/juman/autodic
        /usr/lib/juman/wikipediadic
        /opt/juman/mydic
)

...




再度「化物語は面白い。」を解析してみます。


# juman
化物語は面白い。
化物語 ばけものがたり 化物語 名詞 6 普通名詞 1 * 0 * 0 NIL
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
面白い おもしろい 面白い 形容詞 3 * 0 イ形容詞アウオ段 18 基本形 2 "代表表記:面白い/おもしろい 反義:形容詞:つまらない/つまらない"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS




狙い通り、「化物語」が1単語で認識されています。




【参考URL】

Juman のユーザ辞書の作り方
KNP, JUMANでユーザ辞書を追加する(機能語の場合に気をつけること)

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/14(水) 22:57:20|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

juman systemdサーバーモードを自動起動する

日本語形態素解析システム JUMANをサーバーモードで起動し、PythonやPHPから接続してみました。

jumanをサーバーモードで起動し、Pythonから接続する
jumanをサーバーモードで起動し、PHPから接続する


Debianのコンソールで、


# juman -S -F



を実行し、jumanサーバーを起動していましたが...

・OS起動時に自動実行してほしい
・コマンドで開始や停止を制御したい

systemdで起動できるか試してみました。




systemd



「窓使いの憂鬱」をsystemdで自動起動できるか試した時の記事を参考にします。
Ubuntu Systemdでプログラムをサービス起動する(窓使いの憂鬱)


「juman.service」というファイルを作成。


# vi /etc/systemd/system/juman.service





記載する内容は以下の通り。


[Unit]
Description = juman daemon

[Service]
ExecStart = /usr/bin/juman -S -F
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target




ポイントは「-F」オプションを指定してフォアグランドで実行するようにしておくこと。
こうしておかないと、起動に失敗します。


サービスとして認識されたかチェックします。


# systemctl list-unit-files --type=service | grep juman
juman.service                         disabled




ちゃんとサービスとして認識されました。
サービスを有効にします。


# systemctl enable juman
Created symlink from /etc/systemd/system/multi-user.target.wants/juman.service to /etc/systemd/system/juman.service.




サービスを開始します。


# systemctl start juman




サービスとして起動してくれました。


# systemctl status juman
● juman.service - juman daemon
Loaded: loaded (/etc/systemd/system/juman.service; enabled)
Active: active (running) since 水 2017-06-14 21:59:56 JST; 3s ago
Main PID: 444 (juman)
CGroup: /system.slice/juman.service
         └─444 /usr/bin/juman -S -F

6月 14 21:59:56 juman systemd[1]: Starting juman daemon...
6月 14 21:59:56 juman systemd[1]: Started juman daemon.






telnetで接続して、起動しているかテストします。


$ telnet 192.168.1.102 32000
Trying 192.168.1.102...
Connected to 192.168.1.102.
Escape character is '^]'.
200 Running JUMAN version: 7.0
quit
205 Quit
Connection closed by foreign host.




応答がありますね。



サービスを停止してみます。


# systemctl stop juman




サーバーは停止し、接続できなくなりました。


$ telnet 192.168.1.102 32000
Trying 192.168.1.102...
telnet: Unable to connect to remote host: Connection refused




狙い通りの動作です。
systemd便利です。


関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/14(水) 22:04:03|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

jumanをサーバーモードで起動し、PHPから接続する

日本語形態素解析システム JUMANをDebianにインストール。
サーバーモードで起動し、Pythonから接続してみました。
jumanをサーバーモードで起動し、Pythonから接続する

同様の手法で、PHPから接続し形態素解析してみます。


サンプル



Pythonで書いたサンプルを参考に、PHPで実装してみます。


  1. <?php // juman serverへの接続サンプル
  2. $address = '192.168.1.102';
  3. $port = 32000;
  4. $fp = fsockopen($address, $port, $errno, $errstr, 30);
  5. if (!$fp) {
  6.     exit(1);
  7. }
  8. // タイトル取得(200 Running JUMAN version: 7.0)
  9. fgets($fp);
  10. // サーバーモード設定
  11. fwrite($fp, "RUN\n");
  12. // 200 OK
  13. fgets($fp);
  14. // 解析したい文字を設定
  15. $analyze = '形態解析テスト';
  16. fwrite($fp, $analyze."\n");
  17. while (true) {
  18.     $line = trim(fgets($fp));
  19.     if ($line == 'EOS') {
  20.         break;
  21.     }
  22.     
  23.     echo $line . PHP_EOL;
  24. }
  25. fclose($fp);




実行結果


# php sample.php
形態 けいたい 形態 名詞 6 普通名詞 1 * 0 * 0 "代表表記:形態/けいたい カテゴリ:形・模様"
解析 かいせき 解析 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:解析/かいせき カテゴリ:抽象物 ドメイン:教育・学習;科学・技術"
テスト てすと テスト 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:テスト/てすと カテゴリ:抽象物 ドメイン:教育・学習"




思いの外、あっさり実行できました。


juman、サーバーモードを利用すればバインディングが用意されていない言語からも、
簡単に利用できて便利です。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/06/13(火) 23:11:26|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ