Archive for the ‘Linux(Debian)’ Category

第04回 福岡Debian勉強会 しゃべってきた ( #fukuoka_debian )

第04回 福岡Debian勉強会

というわけで今回はしゃべるほうでの参加となりました。

1番目、自分(爆)

しょっぱなでした(笑)
無線LANのおはなしですが、今回はカーネルまわりでのおはなしでした

無線LANデバイスについて(kernelレベル) from Yuki Uchikoba

mac80211とかnl80211とか、あとはWEとか、ドライバを野良ビルドするときの注意点とか。
そのへんの話をしてみました。

2番目の桜井さん、3番目の河合さんの、OpenBlocksのおはなし。

OpenBlocksは自分も欲しいなあと思っておったのですが、実際に実演してるのを見て、ますます興味がわきました。

4番目、下川さんの、zshのおはなし

zsh とわたし from Toshihiko Shimokawa

すごくよかった。というか濃かった。
ちなみに参加者の約半数がzsh使いでした。続いてbash、だったかな?
自分もzsh使っているわけですが(zsh + screen で使いやすいshell環境にしてみた。)、「こんなの知らないYo!」ってことばかりでしたね。

5番目、小室さんの、「大統一Debian勉強会」のレポート(写真)

6月29日に東京でありました、「大統一Debian勉強会」のお話でした。

そういえば私も参加してました。確かに面白かったねーと。
(参考:週末、千葉と東京に行ってた
あ、ブログ書くといいながら書いてなかった!うはーごめんなさいーー!

まとめると

濃かった。
なんというかレベルの高さが半端なかったです、はい。

主催の小室さん山田さん、そして参加したみなさん、おつかれさまでした&ありがとうございました!!

福岡Debian勉強会(2回目)行ってきた ( #fukuoka_debian )

そんなわけで、行ってきました。
福岡Debian勉強会 2回目 on Zusaar

実際に人に会って、いろいろと話をきいたりツッコミ入れたりwってやっぱり大事だなと改めて思ったり。
いろいろと自分の知らなかった肝心なところを知ることをできたりと、とても有意義でした。
初心者から中級者まで幅広く話題に参加できることでもすごく有意義だったのではと思います。

あと、今回の参加ルールで、

乾燥系お菓子を一つ持ってくる事。

ということで、先週鹿児島に(用事あって)帰省してたので「これは、(博多駅あたりで買えそうなメジャーどこじゃなくて)地元でしか買えないようなマイナーなお土産を持って行くしか!」ということで、地元限定のものを買ってもっていきました。
結果。
2013012614
面白いことになりました。
まさか「かすたどん」がくるとは思いませんでしたw
こういうルールも面白いよねと改めて思いました。これは是非やるべきw
(ただ、持ち込みすぎて余るリスクをどうするか…ですね!)

帰宅して、(今回の勉強会を受けて)自分のMacBook Proに入れてあるDebian(squeeze)をいろいろ弄り始めましたw
2013012611

あ、ホスト名(自宅サーバならびに仮想サーバなど含め全部)の命名ルールですが、ここ数年は「鉄道の特急・急行・新幹線の名前」であわせてます。
Debian走らせてるVMの「tsubame」は、九州新幹線の「つばめ」からとっております。
2013012612

最後に謝辞。
主催者・参加者のみなさん、ならびに会場提供してくださいましたpaperboy&co.福岡支社様、本当にありがとうございました!

LVMでファイル消しちゃったときの復旧方法(VM利用を前提)

実は…VMのLinux上で開発してたときに間違ってファイルを消してしまいました(爆)
調べてたら、extundeleteってのがありますので、それに頼りました。(ちなみにext3,ext4が対象です)
しかも、(CentOSのせた)LVM(論理ボリューム)なので、さらに厄介です。

まず、やっちまったLinux上でrunlevelを1にします。1になったところですかさずshutdown。

su
telinit 1
shutdown

そして、対象のハードディスクのイメージを安全な場所にコピーします(バックアップ)。

次に、LVMをマウントしてないLinuxを1つ用意します。
(ちなみに私のとこでは、別にDebianの環境があったので、それを使いました)
このマシンにさきほどの(復旧したい)ディスクイメージをつなぎます。
そしてそのマシンに、extundeleteを入れます。
C++と、ext2fsライブラリがいります。Debianだとこれで入ります。

aptitude install g++
aptitude install ext2fs-dev

extundeleteを展開し、configureしてmakeします。

bunzip2 -c -d extundelete-0.2.0.tar.bz2 | tar xvf -
cd extundelete-0.2.0
./configure
make
make install

デフォルトでは、LVMはマウントされてないはずなので(dfしてみてマウントされてなかったら大丈夫)、これからLVMの確認作業です。
pvscanで、いま繋がってるLVMのPhysical Volume一覧がでてきます。

pvscan

vgscanで、いま繋がってるLVMのVolume Group一覧がでてきます。デフォルトで「VolGroup00」とか出るあれです。

vgscan

lvscanで、論理ボリューム(Logical Volume)一覧がでてきます。

lvscan

いづれも、引数なしでOKです。

これで、LVMの VolumeGroup と LogicalVolume がわかると思います。
デフォルトは「VolGroup00」、「LogVol00」のはず。

これまでの /dev/sda1 と同じようなデバイス指定方法だと、

/dev/VolGroup00/LogVol00

みたいなかんじになります。

わかったところで、extundeleteを実行します。

extundelete --after (エポック時間) --restore-all /dev/VolGroup00/LogVol00

「エポック時間」は、time(2)で返される、1970年1月1日0時ジャストからの経過秒数です。
これで、指定時間「以降」に削除されたファイルが復元されます。

ま、LVMでも仕組みわかれば従来のファイルシステム同様に扱えるわけで。

とりあえず。
ひさびさに、マジで心臓に悪い思いをしました…。

とりあえず、一番大事なことは

  • 落ち着く
  • 容赦なく落とす
  • バックアップをとる

こんだけ。

参考にしたサイト

sysinfo関数でシステム情報取得。

Linuxのはなし。
とりあえずサンプル見てだだだーって書いてみました的。

#include <stdio.h>
#include <sys/sysinfo.h>

/* getla : Load Average を取得。値はuptimeで出る値の100倍。 */
unsigned long getla( long int * la01 , long int * la05 ) {
        struct  sysinfo         s_info          ;
        int                     rerror          ;
        unsigned long           la15            ;
        unsigned long           lashift         ;

        /* SI_LOAD_SHIFT のビット分が小数点以下の部分。 */
        lashift = ( 1 << SI_LOAD_SHIFT ) / 100 ;

        rerror = sysinfo( &s_info ) ;

        /* [0]=1min,[1]=5min,[2]=15min  */
        if ( la01 != NULL ) {
                *la01 = s_info.loads[0] / lashift ;
                *la05 = s_info.loads[1] / lashift ;
        }
        la15 = s_info.loads[2]  /lashift ;
        return la15 ;
}

main() {
        unsigned long la01 , la05 , la15 ;
        la15 = getla( &la01 , &la05 ) ;
        printf( "LoadAverage %lu / %lu / %lu\n" , la01 , la05 , la15 ) ;
}

sysinfo構造体のloadsで戻ってきた値を読んでもわからん数字だった。
どうやら、2のSI_LOAD_SHIFT乗の数字で割らないと正しい数字は得られないようだ。
ちなみに私んとこではこうなってた。
linux/kernel.h:

#define SI_LOAD_SHIFT    16

上記例の関数の引数があからさまにおかしいのは、テスト用にあとからla01とla05を追加した結果です(爆)本当にやりたいところでは、la15とれれば十分だったので・・・(^^;

参考:
man 2 sysinfo
sysinfo – システムコールの説明 – Linux コマンド集 一覧表
Linux の sysinfo での load average – spiritlooseのはてなダイアリー

Apache2 on Debian – あなたの予想に反してIt Works!

最近、いろいろあってDebianさわってます。
自宅のサーバ(2台目)もDebianです。
個人的には、FreeBSD触ってたらあまりストレスなく使えるかんじ。

さて。
DebianでApache2の設定をしようとしたら、いっぱいconfigファイルがあるので、混乱したわけですよ。
・・・ええ、いままで、httpd.conf (またはapache2.conf) に全部書いてたんで(笑)
このへんの解説を読んで再度勉強。

設定ファイルは、/etc/apache2/ 以下にあります。
そして、その中でよく弄るのが、 sites-available , mods-available のフォルダ内のファイル。
前者はVirtualHostの設定、後者はApacheモジュールの設定に関わります。

sites-available に (site-name) のファイル名で VirtualHostの設定を書いておけば、

# a2ensite (site-name)

これで sites-enabled フォルダにシンボリックリンクが生成され、有効になります。
モジュール設定も同様です。(a2enmod)

向こうにしたい場合は enをdisにすればOK。

※VirtualHost、moduleに関しての説明はばっさり割愛。
各自ぐぐってみてくだされ。

おまけ・・・というか、本当に余談。
モジュールというと、個人的にはここはチェックしておきたい。(個人的メモだけどw)
Apache 2.2でWebサイトをパフォーマンスアップ!(1/3) - @IT

debianにOpenPNE3いれてみた

基本的にインストールガイドの通りにやればOK。

気をつけなければいけないのはこのくらいかな。
・MySQL入れたかー( mysql5-server )
・php5-mysql 入れたかー
・MySQLサーバにアカウントとDB作ったかー
・CLIで動かすので、memory_imitが32Mのままになってないかー(途中でこける。とりあえず、64~128MBくらいにしておこう)
・mod_rewriteはちゃんと有効にしたかー。

# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/rewrite.load rewrite.load
# /etc/init.d/apache2 restart

・(サブディレクトリ下にある場合は)RewriteBaseは合ってるかー

しかし。
256MBしか積んでないサーバで動かすのは辛い(苦笑)

レンタルサーバで動かすと怒られるな・・・これは(爆)