シェルスクリプトメモ

メモです。

研究でログ取ったり、いっぱいデーモン立ち上げたりするときに必要だったので調べた。

残しておかないとすぐ無くす・・

シェルスクリプトでミリ秒を含むUnixTimeの出力

$ echo $(printf '%d' $(expr `date +%s%N` / 1000000))
> 1370856437368

指定した文字列(foo)を含むプロセスの終了

kill -9 `ps aux | grep foo | cut -c10-14`

gitでWebページのデプロイ

銀鷹です。

お題の通りですが、金曜日に研究室のWebページのデプロイを

gitで出来るようにしたのでまとめておきます。

今までは、Webページの管理者がWinSCPとかで頑張ってやってたんだけど、

更新が衝突することが多かったのでやってみた。

あと、ついでに研究室のGitLabにもミラーリポジトリを作ったので更新履歴がWebでも見れる。

git万歳。

必要な手順については、以下のとおり。

1. Webページ用のbareリポジトリの作成

どこか、適当な場所に作る。

gitでpushする際に、SSHでログインするので、SSHでログイン出来るユーザのホームに作った。

mkdir -p ~/repos/web
cd ~/repos/web
$ git init --bare --shared=true

bareリポジトリ

作業ファイルのない、管理情報だけのリポジトリらしい。

つまるところ、普段pushする先のリポジトリ(サーバ側のリポジトリ)ということなんだと思う。

2. baraリポジトリをWebページのDocumentRootでclone

cd /var/www
sudo git clone ~/repos/web ##/var/www/webがDocumentRoot
sudo chown -R yutaka:yutaka web/

3. bareリポジトリにhookを設定

post-receive(クライアントからのpushが終わったら呼ばれる)で、

2.でcloneしたリポジトリ(DocumentRoot)でpullするhookを設定する。

cd ~/repost/www/hooks
cp post-receive.sample post-receive
echo "(cd /var/www/web; git --git-dir=.git pull)"

4. クライアントでcloneしてWebページのコンテンツをデプロイ

まずは、SSHの設定をする。

# .ssh/config
Host web-deploy
     User yutaka
     Port 10022
     Hostname 10.0.0.1
     IdentityFile ~/.ssh/id_rsa

設定が終わったらリポジトリをcloneする。

cd
git clone web-deploy:~/repos/web

リポジトリに変更を加えてpush、これでWebページのコンテンツが更新される。

cd web
echo "test" > test.txt
git add .
git commit -m "add: test.txt"
git push

以上で設定は完了。

これで、gitで簡単なデプロイが出来るようになる。

研究室の環境では、これに加えて、事前に作成したミラーへもpushするようにしてあるので、

ミラーが登録されているGitLabで更新履歴が見れるので便利。

感想

適当にbareリポジトリを作っておくと、あとはSSHでログインさえ出来ればcloneやpushが出来て、

hookを仕掛けるだけでお手軽にこういった環境を作れるのは便利だ。

今回の場合、基本的には静的なコンテンツしか無いので、単純にpullで済むけど、

そうじゃない場合はhookに頼るんじゃなくて、fabricとかを使ったほうがいいのかな?

いまいち、gitでのデプロイと他のデプロイツールの使い分けがわからない。

ブログ移行と近況報告

銀鷹です。

以前から、どこかに移行しようと思っていたので、思い切って移行しました。

暫くはてなブログでやってみて、問題無さそうなら続けて行きたいなと。

近況報告

無駄に忙しいです。

特に、学会発表の準備が2件と英語論文1本が同時進行してるあたり無理がある。

07/9-07/12に北海道

07/15に英語論文締切

09/09-09/11に北九州

最後に通れば11月にドイツらしい。

あと、夏休みはインターンに行きたいので、その準備もやってます。

普段はあんまりプロダクト作ってないのでそのへん辛いけど、

何とかやれるようにやりたいなと思っている。

ひとまず、AnsibleとRedisあたりの検証とかはやっておきたいな。

如何せん、Webサービス的なものを作るのは苦手です。同期が羨ましい。

ブログ移転

gistが貼り付けられなかったり、Markdownが書けなかったりと色々不満があったので移行。

なんか、記事の移行も出来るらしいけど、特に必要は無いと感じているので、

お互いに移行した事実だけ書いておいて置いておこうと思う。

旧銀鷹のメモ帳 http://d.hatena.ne.jp/yutaka_j/