<

![endif]-->

fc2ブログ

AnsibleでUbuntuに最新のjemallocをインストール

Ubuntuに最新のjemallocをインストールしたいのですが
なぜかppaにあるのはバージョン3系ばかりで最新の4系が無いんですよ。
なので、Ansibleでソースからインストールするroleを書いてみました。

tasks/main.yaml
- name: "test jemalloc"
command: bash -lc "ls -la {{ src_dir }}|grep {{ jemalloc_name }}"
register: jemalloc_installed
ignore_errors: yes

- name: "get file"
get_url:
url: "{{ jemalloc_url }}"
dest: "{{ src_dir }}"
mode: 0664
when: jemalloc_installed|failed

- name: "unarchive"
unarchive:
copy: no
src: "{{ jemalloc_archive }}"
dest: "{{ src_dir }}"
when: jemalloc_installed|failed

- name: "rm archive"
file:
path: "{{ jemalloc_archive }}"
state: absent
when: jemalloc_installed|failed

- name: "configure"
command: ./configure
args:
chdir: "{{ jemalloc_dir }}"
when: jemalloc_installed|failed

- name: "make"
command: make
args:
chdir: "{{ jemalloc_dir }}"
when: jemalloc_installed|failed

- name: "setting"
template:
src: ld.so.preload.j2
dest: /etc/ld.so.preload
mode: 0644
owner: root
group: root
when: jemalloc_installed|failed
become: yes


templates/ld.so.preload.j2
{{ jemalloc_library }}


vars/main.yaml
jemalloc_version: "4.0.4"
jemalloc_name: "jemalloc-{{ jemalloc_version }}"
jemalloc_url: "https://github.com/jemalloc/jemalloc/releases/download/{{ jemalloc_version }}/{{ jemalloc_name }}.tar.bz2"
jemalloc_dir: "{{ src_dir }}/{{ jemalloc_name }}"
jemalloc_archive: "{{ jemalloc_dir }}.tar.bz2"
jemalloc_library: "{{ jemalloc_dir }}/lib/libjemalloc.so"

vimの設定をgithubで管理してみた

[vim]パソコン買ったらまず最初に入れとくべきモダンなvim管理を参考にvimの設定をgithubに入れてみました。

https://github.com/aoyagikouhei/dotfiles-vim

まだたいして設定は入ってませんが、おいおい追加していきます。
バージョン管理されてるから気楽に変更できますね。
ちなみに、おもにMacVimを使うので上記記事の内容に加えて.gvimrcを加えています。

rsyncで簡単デプロイ

今の自分の環境がPHPのZend Frameworkでして
Windowsで開発して、Linuxサーバにデプロイしています。
いちいちFTPやSFTPなどでデプロイしていると日が暮れるので
rsyncコマンドを使って、バッチファイルをダブルクリックするだけでデプロイが完了します。
この方法なら最近流行のガンブラーも関係ありません。

まずWindowsでrsyncを動かす環境を整えます。
cwrsyncをダウンロードしてインストールします。
次にサーバへパスワード認証無しにデプロイしたいので、公開鍵と秘密鍵を作成します。
まず公開鍵と秘密鍵を保存するフォルダーを作成します。
ホームディレクトリの直下に.sshというディレクトリを作成します。

cd %HOMEDRIVE%%HOMEPATH%
mkdir .ssh

次が公開鍵と秘密鍵の発行。
cwrsyncをインストールしたディレクトリの中のbinディレクトリにputtygen.exeがあるのでダブルクリックします。
@Generateボタンを押して、しばらくマウスをグルグルしていると作成が完了します。
公開鍵が画面上のテキストエリアに生成されるので、これをコピーしてid_rsa.pubというファイル名で.sshに保存します。
秘密鍵はConversionsメニューのExport OpenSSH Keyを選択します。id_rasというファイル名で.sshに保存します。

この後Linuxサーバにssh等でアクセスして、公開鍵をセットします。

cd
mkdir .ssh
chmod 700 .ssh
vi .ssh/authorized_keys
作成した公開鍵を記述
chmod 600 .ssh/authorized_keys

これで環境が整いましたので、デプロイ先を確認します。
Zend Frameworkのプロジェクト名をmyappとして、Linuxサーバでは/var/www/myappに保存することにします。
ちなみに、Apacheのドキュメントルートは/var/www/htdocsにしています。
Webで公開するのはmyapp/publicディレクトリだけですので以下のコマンドで一度だけ実行します。

mkdir /var/www/htdocs/myapp
ln -s /var/www/myapp/public /var/www/htdocs/myapp

では、いよいよデプロイのバッチファイルです。
cwrsyncのインストール先のディレクトリ等は自分の環境に合わせてください。
deploy.bat

SETLOCAL
SET CWRSYNCHOME=C:\Program Files (x86)\cwRsync
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
SET EXCLUDE=/cygdrive/c/exclude_pattern
SET SRC_DIR=/cygdrive/c/myapp/
SET [email protected]:/var/www/myapp

rsync -avz --chmod=Da+xr,Du+w,Fa+r,Fu+w -e ssh --delete --exclude-from=%EXCLUDE% %SRC_DIR% %DST_DIR%

バッチファイルを実行すると一度目は接続するサーバが正しいか確認されるのでyesとしてください。
二度目からは聞かれないので、実行後は自動的にデプロイが完了します。

exclude_patternはコピーしないファイルの指定になります。
例えば.svnと記述しておけばsubversionの情報をコピーしません。
今私が設定しているのは以下の通りです。

.svn
.DS_Store
exclude_pattern
.htaccess

.htaccessを外しているのは、開発環境、本番環境の情報をここに記述しているので、
自動で配置されると困るからです。.htaccessは手動でおいています。

以上で簡単デプロイの完成です。
簡単だけではなく.svnを排除する、FTPを使わない(ガンブラー対策)、暗号化通信、パスワードを入力しないなど
数々のセキュリティを向上させるポイントが含まれています。
最初の設定の手間はかかりますが、ソースを修正して確認する作業は開発中は何度も行いますから、すぐに時間の元は取れるとおもいますよ。

分散バージョン管理システム

最近は一人で開発することが多くなってきたので、わざわざsvnを使うのも大げさな気もして、流行の分散バージョン管理システムを試してみようと思いました。参考にしたのは、この記事。
分散バージョン管理Git/Mercurial/Bazaar徹底比較」この中で日本語がちゃんと使えそうなのはBazzarぽっかったので、Bazzerに決定。早速インストールして試してみました。

主にMacを使っているので、古き良きコマンドラインで試してみましたが、かなりお気軽にバージョン管理できるのでびっくりです。
管理したいアプリのトップディレクトリに移動して
$bzr init
で管理開始。
$bzr add
でファイルやらディレクトリやらを追加して、最後に
$bzr commit -m "最初の登録"
ばりばり日本語対応しているので、当然コミットコメントも日本語でOK。
あとは、修正したらcommit、追加したいならadd
消したい時は、もちろんbzrのコマンドもあるけど、ふつーにファイル消して
commitでも行けるみたいです。

操作も簡単ですが、管理ディレクトリが一つしかないのが、CVSやSVNと大きく違うところです。
Bazzerはなんと、initコマンドを実行したディレクトリにだけ管理フォルダを作ります。
個人的な感想なんですけど、ソースツリーをあまり汚していない気になれるんですよ。
問題があっても、その一つの管理ディレクトリを削除すれば、すぐに元のソースツリーに戻れます。
これがちょっと気持ちいいですね。

で、この特性を生かして面白いソース管理を実際の開発で試してみました。
複数人の開発者がいる環境で既にソースはCVSで管理されていました。
なんか今時CVSなんて古くさくてやだなぁなんと思っていたんですが・・・ええ、ここにBazzarを差し込んでみました。
CVSにはBazzarの管理ファイルは無視させます。一つしかないから簡単にできます。
ローカルで開発しては、ちょくちょくBazzerのコミットをします。実験コードを書いても気にせずコミット。
実験コードは別のブランチで・・・とかめんどくさいことやってられません!
で、ほどほどちゃんと動くようになって、初めてCVSでコミットします。
変なコード書いて他人に迷惑かけることないし、さくさく実験できるのがすごく気持ちいいです。簡単にコミットできない環境だと、実験コード書いて消して、ああ!あのコード元に戻したいと思っても後の祭りってこと、よくありました。

導入がやたらと簡単ですし、SVNやCVSと平行してできるし、実は単体で大規模もへっちゃらだったりするし(ドキュメントの受け売り、まで試してません)、結構面白いですよ。

Tag : Bazzar

Macでバックスラッシュの入力

PHPでプログラムを組んでいた時、文字列内に改行を含みたい場合には
$val = "aaaa¥n";
と書きますよね。
しかし、ファイルの文字コードをUTF-8にしていると、「¥」は「C2A5」に変換されています。本来は「5C」にしてもらいたいです。
なんでだろ?としばらく悩みましたが、ことえりの環境設定を思い出しました。
kotoeri01.png
¥マークが設定している場合に、optionキーを押しながら打てば\が入力されます。
これを使えば、「5C」として認識されます。
つまりテキストエディタ上で
$val = "aaaa\n";
と表示されていれば、きちんと改行してもらえます。
ちなみに、私が使っているCotEditorではoptionでなくcommandキー入力で\が入力できました。

Tag : mac