2016年6月3日金曜日

letsencryptのerror: ImportError: No module named interface

letsencryptを導入後しばらくほっといたらエラー発生してた。
http://blog.fspm.jp/2016/03/ec2amazon-linuxletsencryptsslhttpsnginx.html

エラー内容は
Automated renewal failed:
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in 
    from certbot.main import main
  File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/certbot/main.py", line 11, in 
    import zope.component
  File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/__init__.py", line 16, in 
    from zope.interface import Interface
ImportError: No module named interface


この2ヶ月程の間にlib名がletsencrypt -> certbotへ変わったりしてる。

原因はこれ。
https://github.com/certbot/certbot/issues/2823

解決策は
# unset PYTHON_INSTALL_LAYOUT


pipのupgradeとか、python2.6, 2.7とかなんも関係なかった、、、

2016年3月17日木曜日

Chatworkのメッセージ記法リスト(2016.3.16時点)

チャットワークのメッセージ記法は、HTMLタグの< >のように[ ]とブラケット(角括弧)文字にてタグ表記され、 単独のタグとして[tagname:value]や[tagname attr=value]と表記される場合と、[tagname]...[/tagname]のように開始タグと終了タグとで囲む表記があります。
http://developer.chatwork.com/ja/messagenotation.html


使いそう


tag desc
[hr] 罫線(横のライン)
[info][title]見出し[/title]内容[/info] タスク追加や概要編集した際の様なinfo boxが投稿される
[code]...[/code] メッセージ記法を無視して入力したテキストがそのまま表示される+code highlighting


使わなそうだけど有効ぽいもの


tag desc
[preview id=****** ht=150] アップロードした画像を表示。idは数値、htはheight?不明
[To:{account_id}] 宛先
[rp aid={account_id} to={room_id}-{message_id}] 返信
[qt aid={account_id} time={timestamp}]...[/qt] 引用。[引用 aid=228520]...[/引用]の様にqtを引用に置き換えたり、timeを省略してもおk
[picon:{account_id}] アカウントアイコン
[piconname:{account_id}] アイコン+名前



ユーザIDに適当な値を入れるとそのユーザのアイコンや名前が表示される(存在すれば)。これはそういう仕様なのかな。

参考

2016年3月5日土曜日

EC2(Amazon Linux)をletsencryptでSSL(https)証明書設定(nginx利用)


Install letsencrypt - インストール


めんどくさいのでrootで。

# git clone https://github.com/letsencrypt/letsencrypt /usr/local
# cd letsencrypt
# ./letsencrypt-auto --help



Edit nginx conf (for letsencrypt) - letsencryptからの確認アクセス用設定


# vi /etc/nginx/conf.d/virtual.conf (or site-availables ... etc)

---
server {
    listen 80;
    server_name example.jp;

    location '/.well-known/' {
        default_type "text/plain";
        root /tmp/letsencrypttmp;
    }
    location / {
        return 301 https://$host$request_uri;
    }
}



Get certificates - 証明書取得


# mkdir /tmp/letsencrypttmp
# /path/to/letsencrypt-auto certonly --webroot -w /tmp/letsencrypttmp -d example.com --agree-tos

Error が出た。
Downloading zope.interface==4.1.3 (141K)...
Downloading mock==1.0.1 (818K)...
Downloading acme==0.4.2 (95K)...
Downloading letsencrypt==0.4.2 (199K)...
Downloading letsencrypt-apache==0.4.2 (99K)...
You are using pip version 6.0.8, however version 8.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Processing /tmp/peep-xGHlQg/argparse-1.4.0-py2.py3-none-any.whl
Installing collected packages: argparse

Successfully installed argparse-1.4.0
You are using pip version 6.0.8, however version 8.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Processing /tmp/peep-uCy7pg/pycparser-2.14.tar.gz
Installing collected packages: pycparser
  Running setup.py install for pycparser
    Build the lexing/parsing tables
Successfully installed pycparser-2.14
You are using pip version 6.0.8, however version 8.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Processing /tmp/peep-ee_aNB/cffi-1.4.2.tar.gz
Installing collected packages: cffi
  Running setup.py install for cffi
    building '_cffi_backend' extension
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DUSE__THREAD -I/usr/include/python2.7 -c c/_cffi_backend.c -o build/temp.linux-x86_64-2.7/c/_cffi_backend.o
    c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
     #include 
                        ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1

python2.7用のライブラリが欠けてるらしい。
https://community.letsencrypt.org/t/redhat-centos-6-x-users-need-python-2-7/2190

# yum install python27-devel python27-pip python27-setuptools python27-virtualenv

今回はpython27-virtualenvが欠けているだけだった。

最初のコマンドを再実行。以下の結果が出ればOK。/etc/letsencrypt配下にそれぞれファイルが保存される。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.jp/fullchain.pem. Your cert
   will expire on 2016-06-02. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


cert.pem(証明書)
chain.pem(中間証明書)
fullchain.pem(cert.pem + chain.pem)
privkey.pem(秘密鍵)




Setting nginx SSL - nginxでSSL設定



# vi /etc/nginx/conf.d/virtual.conf (or site-availables ... etc)

---
server {
    listen 443 ssl;
    ssl on;
    ssl_certificate      /etc/letsencrypt/live/example.jp/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/example.jp/privkey.pem;
    server_name example.jp;

#    ~~~(略)
}

reloadでSSLが動く
# /etc/init.d/nginx reload



Set auto update script - 自動更新


/path/to/update.sh
#!/bin/sh
if ! /usr/local/letsencrypt/letsencrypt-auto renew --force-renew > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi
/etc/init.d/nginx reload

crontabとかに登録。毎月2日4:30。どのくらいのペースで実行すればいいんだろう。
# crontab -e
30 04 02 * * /home/xxxx/letsencrypt/update.sh


セットアップのためになんどもrenewしてたら多すぎって怒られた。5回目くらいからかな。



参考