vagrantにdockerでtensorflow入れて、jupyterでhello world
what is this
tensorflow入れて、hello worldするまで
1. virtualenvで入れようとするが、activateされない
2. anacondaで入れようとするが、pyenvと衝突するから?か、activateしようとするとbashが落ちる
3. anacondaで、フルパスでactivateしようとするが、なんかおかしい
4. vagrantにdockerでtensorflow入れる→解決
how I did
1. virtualenvで入れようとする
基本的にここにあるようにやる
Download and Setup
virtualenvで~/tensorflowディレクトリ作って、$source source ~/tensorflow/bin/activate
で何もエラー出ず、プロンプトも変わらず、という現象に。
2. anacondaでいれようとする
上記のリンクと同じページのやり方に則ってやる。
が、source activate tensorflow
のところで、これを実行するとbashごと落ちる、という現象に…
3. フルパスでactivateトライ
bashごと落ちる問題はここにそれらしいものが書いてました。
pyenvとanacondaを共存させる時のactivate衝突問題の回避策3種類 - Qiita
ここによるとpyenvとanacondaのactivateが衝突してるとのことなので、フルパスで試してみた。
が、prepending $PATH_TO_PYENV/versions/anaconda3-4.0.0/envs/tensorflow/bin to PATH
とのエラーが出て、プロンプト起動せず。
conda info -e
でチェックすると、確かにtensorflow環境に切り替わってるけど、うまくいかない。
4. vagrantにdockerで入れる
まず、現行のdockerがcentos7じゃないとだめなので、適当にcentos7入ってるvagrant boxを探してきて、box addする。
適当なレポジトリ作って、vagrant init
して、Vagrantfileのboxを該当boxに書き換える。で、vagrant up!
Installation on CentOS
終わったら上のリンク通りにdocker入れる。
終わったら、tensorflowのドキュメントに戻って、Create a Docker group to allow launching containers without sudo
をやる。あとは、書いてる通りに、docker runするとjupyterが立ち上がる。
で、jupyterのGUIをwebから触るために、virtualboxのポート設定をする。以下参考リンク。この通りにやればOK
How do I start tensorflow docker jupyter notebook - Stack Overflow
以上。
サーバー間でmysqlデータをバックアップ・更新する
this is what
サーバーAにあるデータベース1を、サーバーBに持っていて同期(更新)する、というのをしたい。
定期的にするようにcronに登録する。
this is how
*今回はexpectコマンドを使った。expect入れてない場合はyum install expect
で入れる。
まずDBをダンプする。
$ mysqldump -u root --password="hoge" db_name > db_name.sql
サーバーAからBへ送る
# ssh ver2使ってる場合は`-2`オプション $ scp -2 -P 1111 db_name.sql user@serverB:/home/username/db_name.sql
な感じだけど、途中ssh鍵のパスワード求めらたりするので、cron出する場合はexpect使う。
スクリプト書く。
#!/bin/sh HOST=serverB PASS=hogehoge IDENT=/home/username/.ssh/id_rsa expect -c " set timeout -1 spawn scp -2 -i $IDENT -P 1111 /home/username/db_name.sql user@$HOST:/home/username/db_name.sql expect \"Enter passphrase for key\" send \"${PASS}\r\" expect eof "
で、これをcronに登録して回すとdumpしたファイルをサーバーBに送ってくれる。
*参考
expectコマンドをcronで使うためときのポイント | thiroyoshi.blog
シェル以外からexpectしててハマったメモ | ブログ :: Web notes.log
以上
centos7, apacheでSymlink使う場合
これのCentOS7バージョン
CentOS, ApacheでSymlinkを使う場合の設定 - mazeltov7のweb断片
*参考
apacheのDocumentRootをユーザディレクトリのシンボリックリンクに - Qiita
#現在の設定確認 root> getsebool -a | grep "httpd_enable_homedirs\|httpd_read_user_content" root> httpd_enable_homedirs --> off root> httpd_read_user_content --> off #設定変更 root> setsebool -P httpd_enable_homedirs on root> setsebool -P httpd_read_user_content on
onになってるのを確認して、リンク貼って、実際に確認。表示されたらOK
以上。
さくらVPSにCentOS7入れたらすること(ssh)
概ねここに則る感じで大丈夫(centos6の時のメモ)
さくらVPSにCentOS入れたらすること - mazeltov7のweb断片
なんだけど、sshログインのportのところでcentosの場合はしなきゃな部分がある。
*参考
- CentOS 7 で ssh のポート番号を変更する | Balun Software (Info)
- CentOS 7 で sshd のポート番号を変更する - Web Application Security Memo
- CentOS 7 で sshd のポートを変更する(firewalld, SELinuxの設定) | CentOS | daily memorandum 3.0.0
centos7ではiptableやなくて、firewalld使う感じで、sshログインで使うポートを設定する必要があるって感じ。やり方は参考リンク見ましょう笑
以上。
apacheでwebとcliでphpのバージョンが違った件
これはなに
memcachedを使おうとしたら、コマンドラインでは動くのに、web(localhost)で動かなった話。なんかphpバージョンも違ってなんやこれと思った
どうやった
まず、memcachedを起動する部分と別にphpで使うライブラリを入れる。(この辺はメモ)
ちなみに、 brewで入れたやつはここに入ってて、 /usr/local/Cellar/php56-memcached pecl/手動makeしたのはこちらに入ってる /usr/local/Cellar/php56/5.6.17/~~
で、/usr/local/opt
のが効いてるぽいけど、
/usr/local/opt
は/usr/local/Cellar
からのリンクになってる。
php.iniについてだけど、web(apache)の方は/etc/php.ini
を見てて、
cliは/usr/local/etc/php/5.6/php.ini
を見てる。
apacheのモジュールとルートについて、
/etc/httpd.conf
に設定書いてるけど、その中で、
apacheのルートが/usr
な場合はhttpd.con内にLoadModule libexec/hogehoge
とか書いてたら、/usr/libexec/hogehoge
で読み込んでる。
ここで元の話に戻る。webとcliでphpバージョンも設定も違ってwtfっとなってたところ、この記事を発見。
OSX Apache using wrong version of PHP - Stack Overflow
で、brew info php56
すると、Caveats
以下に入れたらこれやれよ、的な事が書いてあって、その中に、
To enable PHP in Apache add the following to httpd.conf and restart Apache: LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
とあり、httpd.confみにいくと、LoadModule php5_module libexec/apache2/libphp5.so
となってた。。。これやぁぁぁぁ、、、、ってことで、書き換えて、sudo apachectl restart
するとバージョンもmemcachedも解決。
jqueryでコロン含むセレクタを使う場合
これなに
jqueryではコロンはセレクタで特別な意味を持つのでエスケープしないといけない。んだけど、\:
て感じで書いてもうまく動かなくてハマりかけた。
解決
$('#hoge\:wowo')な感じで、\\
スラッシュを二回入れるとエスケープできる。
参考:
- ARKの技術メモ: [jQuery]コロンを含むセレクタを指定する方法
- JQueryでコロン付きのセレクターを使う場合 - ほげほげ(仮)
以上
mysqlでUTCのepoch timeをintで入れようとしてエラー出た件
これはなに
UTCのepoch timeをintでmysqlに突っ込もうとしたら、怒られたって話。
mysqlの最大値は決まってて、2,100,000,000くらいまで。
で、今回入れようとしてたのは1453101209560( = 1,453,101,209,560)(てか、ミリ秒やんこれorz)で、余裕アウトw
まぁ、string入れました。
ここ参考にした。
これだけは覚えておきたい!!MySQL の6つの自動変換 - sakaikの日々雑感~(T)編