Django hack-a-thonまとめ

3/1にあったDjango hack-a-thonの内容が非常に充実していたのでメモ。
会場はBePROUDさんの会社。

■タイムテーブル
11:00 開場
11:30 自己紹介(予定より遅れて12時過ぎになった)
13:00 昼食(沖縄料理)
18:00 発表
19:00 解散(二次会で巻き串とビール)

Macのパッケージマネージャ homebrew が便利(さよならMac Ports, Fink)

Macでもgitやpregpといったツールを簡単に導入したい…そんな時はhomebrewがオススメ。

準備

Xcodeのインストール

導入手順

以下をコンソールで実行

/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/gist/323731)"
brew update

パッケージの検索

brew search ruby

色々インストール

brew install git
brew install proctools # pgrep等


いやー、homebrewは簡単でいいですね。

2TBを超えるHDD増設のメモ(linux)

WD30EZRXという3TBを超えるHDDを増設したので備忘録。

3TB以上のHDDはpartedで操作(fdiskは2TBまでらしいので)

# parted /dev/sdc
GNU Parted 2.3
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End  Size  File system  Flags

(parted) mkpart
parted: invalid token: primary
File system type?  [ext2]? ext4
Start? 0
End? 3001GB
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  3001GB  3001GB  ext4

(parted) quit
Information: You may need to update /etc/fstab.

ファイルシステム作成(今回はext4)

# mkfs.ext4 /dev/sdc

mke2fs 1.41.12 (17-May-2010)
/dev/sdc is entire device, not just one partition!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(気になるけど続行)
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
183148544 inodes, 732566646 blocks
36628332 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
	102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

HDDが使えるようにマウント

# mkdir /mnt/3tb_hdd
# mount -t ext4 /dev/sdc /mnt/3tb_hdd

起動時に自動マウントするようfstabへ追記

# ls -l /dev/disk/by-uuid | grep sdc
lrwxrwxrwx 1 root root  9 2012-02-22 16:24
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -> ../../sdc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(UUID確認)
# vi /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/3tb_hdd ext4 defaults,noatime 0 0

Apache2 + fcgid + phpの設定

Apache2 + FastCGIの構成です。簡単な設定メモですが、新規設定される方は参考にしていただければと思います。

インストール

aptitude install apahce2 libapache2-mod-fcgid php5-cli php5-cgi

「php5-cli」を入れる事。「php5」を選ぶとaptitudeがmod_phpを候補に出してくるので。

設定

vi /etc/apache2/apache2.conf
Timeout 60
KeepAlive Off

    MaxClients          100

KeepAliveをOffに。MaxClientsは少なめに。

vi /etc/apache2/mods-enabled/alias.conf
#Alias /icons/ "/usr/share/apache2/icons/"

#
#    Options Indexes MultiViews
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#

iconsのエイリアスは使わないのでコメントアウト

vi /etc/apache2/mods-enabled/fcgid.conf

  AddHandler    fcgid-script .fcgi .php
  FcgidConnectTimeout 20
  FcgidMaxProcesses  20
  FcgidMaxProcessesPerClass 10
  FcgidFixPathInfo 1
  FcgidOutputBufferSize 1048576
  FcgidProcessLifeTime 1800
  FcgidMinProcessesPerClass 2

abでベンチ取りながらざっくりチューニング。

vi /etc/apache2/mods-enabled/mime.conf
AddHandler cgi-script .cgi
#AddHandler type-map var
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

cgiが使えるように。使わない機能をコメントアウト

vi/etc/apache2/mods-enabled/negotiation.conf
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW

「ja」を一番前に移動。

vi /etc/apache2/sites-enabled/000-default

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        SetEnvIf Request_URI "\.(gif)|(jpeg)|(jpg)|(png)|(ico)$" no_log
        LogLevel warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined env=!no_log
        Redirect 404 /favicon.ico
        ErrorDocument 404 "404 Not found"

主にログの設定。accessログは画像を保存しない。errorログはfavicon見つからなくてもエラーを保存しない。

vi /etc/apache2/sites-available/example.com

001-example.com -> ../sites-available/example.com


        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
        
        DocumentRoot /var/www/example.com
        
                Options All MultiViews
                AllowOverride All
                AddHandler fcgid-script .php
                FcgidWrapper /usr/bin/php-cgi .php
                Order allow,deny
                allow from all
        

        SetEnvIf Request_URI "\.(gif)|(jpeg)|(jpg)|(png)|(ico)$" no_log
        LogLevel warn
        ErrorLog ${APACHE_LOG_DIR}/error-example.com.log
        CustomLog ${APACHE_LOG_DIR}/access-example.com.log combined env=!no_log
        Redirect 404 /favicon.ico
        ErrorDocument 404 "404 Not found"

「www」があってもなくてもアクセスできるようServerAlias設定。fcgid + phpの設定も。それからログの設定は上記同様です。

設定完了!

これでphpが動作します。簡単ですねー。