月: 2019年9月

最近、pythonばかりでプログラムを書いているので、配布しやすいようにバイナリ化を検討する中で、「PyOxidizer」なるものを見つけたので試してみます。

PyOxidizerのインストール

PyOxidizerは、Rustでプログラムされているそうで、Rust 2018 (1.31 or newer)がまずはインストールされていないと駄目らしいので、インストールされているか確認する。

$ rustc --version

インストールされていれば、バージョンが表示されます。されない場合は、インストールします。

$ sudo apt install rustc

もう一度

$ rustc --version
rustc 1.36.0

問題ないようなので、PyOxidizer自身のインストールをします。

$ sudo cargo install pyoxidizer

残念ながら私の環境では、

error: failed to compile `pyoxidizer v0.3.0`,….. とエラーとなった

よく見ると、

error: failed to run custom build command for `openssl-sys v0.9.49`

opensslのコンパイルに失敗している….

$ sudo apt-get install libssl-dev

必要ライブラリーをインストールして、再び

$ sudo cargo install pyoxidizer
.......
.......
   Installed package `pyoxidizer v0.3.0` (executable `pyoxidizer`)
warning: be sure to add `/home/xxxxx/.cargo/bin` to your PATH to be able to run the installed binaries

どうやら実行ファイルのパスは手動となるようです。

/home/xxxxx/.profile (xxxxx:自分のパスね)に上記のパスを追記します。

$ vi ~/.profile 
PATH="$PATH:/home/xxxxx/.cargo/bin"
を追記
$ source ~/.profile

これでpathは通るはずなので、確認

$ pyoxidizer --version
PyOxidizer 0.3.0

ん、無事にversionが表示されたので、インストールは完了

いよいよpythonプログラムのバイナリ化の確認だけど、ちょっと時間切れ….またの機会に

 

 

宿泊施設用にIP-PBXを構築した覚書(未FIXの仮版)

システム要件は

  • 内線専用(外線は不要)
  • フロントとお帳場等同時呼び出し
  • 各客室内線
  • 従業員用内線

Ubuntu/Lubuntu 18.04 + Asterisk 16 で構築

最初にとりあえず、システムを最新状態にしておく。

必要なライブラリーを入れる。

sudo apt -y install libedit-dev libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev

Asteriskのソースを入手

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar zxvf asterisk-16-current.tar.gz
# cd asterisk-16.5.1

 

Asteriskのコンパイルとインストール

# sudo ./configure --with-jansson-bundled
# sudo make menuselect
# sudo make
# sudo make install
# sudo make samples
# sudo make basic-pbx
# sudo make config
# sudo make install-logrotate

「sudo make menuselect」の際にコンソールサイズが80×27以上ないと選択画面が表示されません。

Core Sound PackagesでCORE_SOUND-JA-GSM

q->sでsaveして抜けます

Asterisk設定ファイルの修正

 

  • /etc/asterisk/sip.conf
[general]
maxexpirey=3600
defaultexpirey=3600
context=default
;SIPポートは5060
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
allowguest=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=ja

;電話機用テンプレート(共通設定)
[phone](!)
type=friend
canreinvite=no
host=dynamic
dtmfmode=rfc2833
callgroup=1
pickupgroup=1
disallow=all
allow=ulaw

;ACL
;安全措置のため192.168系以外は受け付けない
;他のネットワークを使用している場合にはここを変更すること
deny=0.0.0.0/0
permit=192.168.0.0/255.255.0.0

;各電話機毎の設定
;以下各番号ごとにパスワード設定
[201](phone)
username=201
secret=pass

[202](phone)
username=202
secret=pass

[203](phone)
username=203
secret=pass

[205](phone)
username=205
secret=pass

[206](phone)
username=206
secret=pass

[207](phone)
username=207
secret=pass

[208](phone)
username=208
secret=pass

[210](phone)
username=210
secret=pass

;以下、省略....実際にはそれどれの番号で設定が必要

 

  • /etc/asterisk/extensions.conf
[general]
writeprotect=no
priorityjumping=no

[globals]
GROUP1=SIP/270&SIP/271&SIP/272&SIP/273&SIP/275
GROUP2=SIP/281&SIP/282&SIP/283&SIP/285&SIP/286&SIP/287&SIP/288
GROUP3=SIP/201&SIP/202&SIP/203&SIP/205&SIP/206&SIP/207&SIP/208&SIP/210&
       SIP/211&SIP/212&SIP/213&SIP/215&SIP/216&SIP/217&SIP/218&SIP/220&
       SIP/221&SIP/222&SIP/223&SIP/225&SIP/226&SIP/227&SIP/228&SIP/230
;自局の着信番号を設定する
;[incoming]セクションを参照

[default]
;200番をフロントに割り当て,270/271/272/273/275をCall
;グループ着信
exten => 200,1,NoOp(フロント着信)
exten => 200,n,Dial(${GROUP1},60)
exten => 200,n,Hangup

;280番を従業員用に割り当て,281/282/283/285/286/288をCall
;グループ着信
exten => 280,1,NoOp(従業員着信)
exten => 280,n,Dial(${GROUP2},60)
exten => 280,n,Hangup

;内線呼び出し
exten => _2ZZ,1,NoOp(内線呼出)
exten => _2ZZ,n,Dial(SIP/${EXTEN},60)
exten => _2ZZ,n,Hangup

この記述はこんな感じというだけで、実際に動作確認したのは別に記述しています。

まぁ、ここは、内線だけなら、この程度という参考

Asteriskをユーザモードで動作させる

この設定をしなくても、問題なく動作します。

しかし、ほぼメンテ無しで長時間動作させる為、セキュリティを配慮してユーザモードで動作させるようにします。

sudo groupadd asterisk
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk
sudo usermod -aG audio,dialout asterisk
sudo chown -R asterisk.asterisk /etc/asterisk
sudo chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk.asterisk /usr/lib/asterisk

グループ、ユーザを作って、所有者などを変更と

# sudo vi /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"

コメントアウトされているので頭の「#」を消す。

# sudo vi /etc/asterisk/asterisk.conf
runuser = asterisk
rungroup = asterisk

コメントアウトされているので頭の「;」を消す。

 

Asteriskのサービスをスタート

# sudo systemctl restart asterisk
# sudo systemctl enable asterisk

 

Oracle® VM VirtualBox® Oracle VM VirtualBoxを5.2に6.0を上書きインストールしたら、 「rtr3initex failed with rc=-1912 (rc=-1912) virtualbox」が発生して、ゲストOSが起動しなくなりました。 原因は、5.2の残骸(Kernelが残っている)があるとだめなよう
$ dpkg --list virtualbox-*
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前           バージョン   アーキテクチ 説明
+++-==============-============-============-=================================
un  virtualbox-2.0 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-2.1 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-2.2 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-3.0 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-3.1 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-3.2 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-4.0 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-4.1 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-4.2 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-4.3 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-5.0 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-5.1 <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-5.2 <なし>       <なし>       (説明 (description) がありません)
ii  virtualbox-6.0 6.0.12-13307 amd64        Oracle VM VirtualBox
ii  virtualbox-dkm 5.2.32-dfsg- all          x86 virtualization solution - ker
un  virtualbox-gue <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-gue <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-mod <なし>       <なし>       (説明 (description) がありません)
un  virtualbox-ose <なし>       <なし>       (説明 (description) がありません)
rc  virtualbox-qt  5.2.32-dfsg- amd64        x86 virtualization solution - Qt 
un  virtualbox-sou <なし>       <なし>       (説明 (description) がありません)
この5.2の残骸を削除します。
$ sudo apt-get autoremove --purge virtualbox-5.2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ 'virtualbox-5.2' はインストールされていないため削除もされません
以下のパッケージは「削除」されます:
  dkms* libgsoap-2.8.60* libvncserver1* virtualbox-dkms*
アップグレード: 0 個、新規インストール: 0 個、削除: 4 個、保留: 4 個。
この操作後に 7,583 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 377057 個のファイルとディレクトリがインストールされています。)
virtualbox-dkms (5.2.32-dfsg-0~ubuntu18.04.1) を削除しています ...

-------- Uninstall Beginning --------
Module:  virtualbox
Version: 5.2.32
Kernel:  4.15.0-62-generic (x86_64)
-------------------------------------
(以下省略)
で、仕上げ
$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
これでバッチリ起動しました。