投稿

ラベル(PC)が付いた投稿を表示しています

2010年12月31日時点のPC環境

イメージ
今年は1年の間に結構色々とPC環境に手を入れた気がするのでちょっとまとめようと思う。

Debian に HAProxy をインストール

HAProxy はロードバランサで、複数の Web サーバに処理を振り分けるために使われたりするもの。 このマシンで Web サーバとして使い始めた nginx も同じ用途で使えるので、通常あれば HAProxy を入れなくても大体同じことができる。 が、密かに企んでいる将来の目的にはどうも nginx が使えないらしい。目的の詳細についてはまた別な記事で語ることにして、今回は取りあえず HAProxy を経由して nginx に接続させるところまでやってみる。 apt-get install haproxy インストールができたら、/etc/default/haproxy の ENABLED を 1 に変更する。 vim /etc/default/haproxy #ENABLED=0 ENABLED=1 更に haproxy の設定ファイルを書き換える。 最初の時点でなんかわりと色々と書いてあるのだが、今回は真面目にロードバランサとして使うわけではないので取りあえずファイルをバックアップしつつ全面的に書きなおす方向で進める。 cd /etc/haproxy cp haproxy.cfg haproxy.cfg.default vim haproxy.cfg global user haproxy group haproxy daemon defaults mode http retries 3 option redispatch option forwardfor except 127.0.0.1/8 option SERVERID rewrite backend web timeout client 30s timeout server 30s timeout connect 1s balance roundrobin server web1 127.0.0.1:60080 rspirep ^(Location:\ [a-z]+://[-.a-z0-9]+)(:[0-9]+)(.*)$ \1\3 frontend all 0.0.0.0:80 default_backend web ※2010-12-01 追記 - Locationヘッダの書き換えを...

Debian に Zend Framework をインストール

現在動いているメールフォームは PHP 標準機能とか mb_string ぐらいしか使っていなくて、わりと持ち運びしやすいスクリプトではあるのだが、ServersMan@VPS ではメールサーバを立てるつもりがないので mail 関数がそもそも使えなくなる。 外部の SMTP サーバを使ってメールを送信するには PEAR::Mail を使う手もあるが、今回は Zend Framework に存在する Zend_Mail を使ってその辺を作ってみようと思う。 なので Zend Framework 自体をインストールする。 cd ~ wget http://framework.zend.com/releases/ZendFramework-1.11.0/ZendFramework-1.11.0-minimal.tar.gz tar -zxf ZendFramework-1.11.0-minimal.tar.gz cd ZendFramework-1.11.0-minimal bin と library ディレクトリをインストール先に配置したい。まずは library を取りあえず他のPHPのファイルもある /usr/share/php を真似て /usr/local/share/php に一緒に突っ込んでしまうか。 mv library /usr/local/share/php あとは bin だけどこれも慣例的には /usr/local/bin でいいのかな? これは中身を入れる。 zf.bat は Windows 用のファイルで必要ないので消してしまおう。 あとマニュアル上では zf ってコマンドで呼ぼうとしてるので合わせるようにしてみる。 cd bin rm zf.bat mv zf.sh zf chmod 755 zf mv * /usr/local/bin php.ini に /usr/local/share/php を見に行くようにさせる。php5-fpm と cli の両方を設定しないとダメそう。 あとスクリプトを書き始めてから php.ini で date.timezone と mbstring.language と mbstring.internal_encoding が未設定なことに気づいた。この設定もこの辺でしておくとよさげ。...

自宅サーバを Ubuntu から Debian に変更

ServersMan@VPS で Debian を使い始めたので、自宅にあるサーバ用 Atom マシンを Ubuntu から Debian に切り替えた。 この PC は gPXE が使えるので、ネットワーク経由で小さいイメージを http ダウンロードして直接インストールできる。 基本的には ServersMan@VPS と同じような構成だけど、相変わらず自宅は固定 IP ではないので IP が変化するたびに DynamicDNS を更新する必要がある。 この更新は Ubuntu の時にも使っていた Python スクリプトがあるのでこれをそのまま持ち込んだ。 ただ、もちろん初期の状態では Python も入っていないので apt-get でインストールする。 apt-get install python これでインストールされる Python は 2.5 で若干古いものの、世の中にある Python 用のライブラリなどを調べているとどうも 2.5 が一番無難そうな気配があるのでこのままにしておく。 Python も準備できたところでスクリプトを配置する。 mkdir /usr/local/share/diceoov/ vim /usr/local/share/diceoov/diceoov.py #!/usr/bin/python # -*- coding: utf-8 -*- import urllib2, re, os IPCHECKER = r"http://global-ip.appspot.com/" DDNS_UPDATER = r"[DDNS更新用のリクエスト先URL]" def main(OLD_IP): #現在のIPアドレスを取得する now_ip = urllib2.urlopen(IPCHECKER).read().strip() #正しいIPアドレス表現で、前回からIPアドレスは変わっているか? if re.match(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", now_ip) and now_ip != OLD_IP: #IPアドレスの更新リクエスト a = urllib2.urlope...

Debian に Kyoto Tycoon、Net_KyotoTycoon をインストール

前回の記事でカウンタを SQLite3 に移行することに成功したのだが、なんか妙にパフォーマンスが安定しない。何度か F5 で読み込み直すと 100msec ちょっとぐらいで返ってきたり(それでも遅いけど)、500msec 以上掛かったり。 もしかして SQLite2 だと問題ないのかなと思い結局 php-sqlite を入れたりして実験してみると、確かに SQLite2 のコードの方が安定して 100msec を切っていた(それでも同時アクセスが集中すると簡単に遅くなっていく)。 アクセスが少ないんだからそれでいいじゃんという話もあるが、せっかく好き放題できるサーバなのだから好き放題やってみようと思い、 Kyoto Tycoon のサーバを立てて PHP からアクセスさせてみることにした。こんなアクセスの少ないサイトに対してこんな豪華なものが使えるなんて幸せだ。 mikio さんのチュートリアル を参考にインストールする。とは言っても王道の流れで入れられるので特に壁になるようなことはない。 apt-get install g++ wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.24.tar.gz tar -zxf kyotocabinet-1.2.24.tar.gz pushd kyotocabinet-1.2.24 ./configure make make install popd wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.7.tar.gz tar -zxf kyototycoon-0.9.7.tar.gz pushd kyototycoon-0.9.7 ./configure make make install チュートリアルのように ktserver を起動して、ktremovemgr から set をしようとすると接続に失敗した。これは恐らく iptables によるものだと思うので、ループバックインターフェイスを正しく経由するように明示的に -h localhost を加えることで上手く動いた。 問題なく動いているようなので、PHP からアクセスできるように Net_KyotoTycoon をインス...

ServersMan@VPS の Entry を契約した

イメージ
無事にカードの再発行も済んだので、予定通り ServersMan@VPS の Entry プランに申し込んだ。 取りあえず使う予定のない ServersMan 提供ツール群は必要ないので Apache2 を消した。 その他 smadmin、serversman も必要ないので削除。 ServersMan@VPS の Debian はどうも locale が指定されていない状態になっているのか PuTTY で UTF-8 に設定した状態で日本語を打とうとしたら打てないことに気づいた。その辺の設定は ここの記述 を参考にして en_US.UTF-8 に設定した。 dpkg-reconfigure locales update-locale LANG=en_US.UTF-8 そして今まで書いてきたのとほぼ同じ手順でサーバを準備して、早速サイトの移植を開始。 元々のサーバである XREA.COM や CORESERVER.JP の時に入っていたモジュールが一部入っていなかったりするので、その辺は随時インストールしながら作業していくことにする。 アクセスカウンタ ほとんど見えないぐらい小さいサイズでさり気なく存在しているアクセスカウンタは、簡単な自作スクリプト。 データは SQLite2 のデータベースで扱っていて、文字の出力は GD 経由で xbm 形式の画像を読み込んで、png 画像として出力している。 ここで使っている SQLite2 と GD はどちらも入っていない。とはいえ SQLite2 をわざわざ入れるよりは SQLite3 を使ったコードに直すべきだと思うので、そこはコード側を修正する方針で進める(直す対象のコードも少ない)。インストールついでに APC も入れておく。高速化バンザイ。 SQLite2 と SQLite3 のデータベースファイルは互換性がないのでコンバート作業が必要。 apt-get install php5-gd php5-apc sqlite sqlite3 invoke-rc.d php5-fpm reload sqlite [カウンタのデータベースファイル名] .dump | sqlite3 [新しいデータベースファイル名] とても単純な構造だったので特に問題なく変換できた(もちろん本当は生成され...

Debian に daemontools をインストール

実は以前 Windows でも nginx + PHP の環境を作って PHP スクリプトを書いていたこともあったのだが、その時「いつの間にかプロセスが居なくなっている」というミステリーに遭遇した。 Windows 版がそんなに安定動作するとは思えないのでそれ自体は不思議ではないのだが、やはりサーバとして使うのであれば勝手に nginx とか PHP が居なくなってサイトが見れなくなっているのは寂しい(とはいえアクセスが少ないので実質的な問題はほとんどないが……)。 ServerMan@VPS の Entry プランはメモリも少なめで swap 領域も現状はないので、OOM Killer 様がやってきて殺戮していく可能性もあるし、でも自分が書いたスクリプトのバグなどで大量にメモリ食い潰したりした時は落として欲しいので OOM Killer 様も必要。 というわけで落ちた後に何食わぬ顔で立ち上がってくるようにしておきたいので、今回は daemontools をインストールしてみようと思う。 daemontools は apt-get でインストール。 apt-get install daemontools daemontools-run 基本的にはこれだけで daemontools は起動する。 daemontools でプロセスを監視させる場合、daemontools 側からサービス起動をしなければいけないようなので、nginx と php5-fpm を自動実行の対象から外しておく。sshd は OOM Killer の対象外だし失敗すると作業続行が出来なくなる可能性があるので取りあえず今回は除外。 まずは nginx から。 invoke-rc.d nginx stop update-rc.d -f nginx remove pushd /etc/service mkdir nginx pushd nginx vim run #!/bin/sh exec 2>&1 exec /usr/local/sbin/nginx -c /usr/local/nginx/nginx.conf -g 'daemon off;' chmod 700 run svc -u /etc/service/nginx これで daem...

Debian に PHP5.3 をインストール

iptables の設定も終わったので、次は予定通り PHP のインストールをしようと思う。 PHP も頻繁にアップデートがあるのでソースから入れようかと思っていたのだが、丁度 似たような時期に似たようなことをしている人 がいて、明らかに自分より詳しそうな人なのでホイホイ参考にさせてもらいながら php5-fpm を入れてみようと思う。 php5-fpm 自体は Dotdeb のリポジトリにあるらしいので、 一つ前の記事 も参考にさせてもらいながら /etc/apt/sources.list にリポジトリを追加などを行う( Dotdebのインストラクションはこちら )。 ただし、hkp鍵サーバとの通信のために tcp の 11371番ポートで外部へアクセスできないといけないので、iptables の設定を弄る必要があった(※前回の記事を既に編集済み)。 su echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list echo "deb-src http://php53.dotdeb.org stable all" >> /etc/apt/sources.list gpg --keyserver keys.gnupg.net --recv-key 89DF5277 gpg -a --export 89DF5277 | apt-key add - apt-get update apt-get install php5-fpm invoke-rc.d php5-fpm start あっさりと立ち上がるところまできてしまった。 あとは書いてあるように nginx.conf を編集すれば使えそうだ。 vim /usr/local/nginx/nginx.conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_F...

Debian に iptables を設定

前回から少し間があいてしまったが、sshd と httpd が立っている Debian に対して、必要最低限のアクセスのみを許可するような設定を施したい。ただ iptables で出来る設定はネットワークに関する知識が乏しい自分にはなかなか難しく、手探り状態ながら作業してみる。 方針としてはその辺のサイトの解説でもよくあるようなホワイトリスト方式。ただし作業元の環境は固定IPアドレスは持っていないので、IPによる接続元制限はできない。 念のため netstat で使用中のポート一覧も確認して知らぬ間にサーバが立っていないか確認しておく。 以降のコマンドは全て su で root になった状態で叩いている。 netstat -anp 問題なさそうだったので、/etc/firewall.sh というファイルを新規作成して、vim で内容を作る。 touch /etc/firewall.sh chmod 700 /etc/firewall.sh vim /etc/firewall.sh #! /bin/sh LOCALNET=192.168.11.0/255.255.255.0 MY_SSHD_CONFIG=/etc/ssh/sshd_config iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # Loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf # ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 sysctl -w net.ipv4....

Debian に nginx をインストール

前回 SSH で秘密鍵を使ったログインができるようになった Debian に、今度は nginx を入れようと思う。 枯れているし .htaccess が使える Apache はとても便利だけど、非力なマシンでは軽さを優先したい。 そんな理由で今回は nginx を入れようと思う。 nginx は今もバリバリバージョンアップされているので、apt-get を使って入れた場合のバージョンを先に調べてみる。 apt-cache show nginx どうやら apt-get で入れようとすると現状では 0.6.32 がインストールされるらしい。 ちょっと古過ぎる気もするのでソースからインストールすることにしようと思う。 本当に何もない状態からのインストールなので、gcc や make なども必要。 とりあえず今回は libpcre3-dev と lib-ssl-dev があれば configure に成功するようだ。 一気に make と make install までやる。 su apt-get install gcc make libpcre3-dev libssl-dev cd ~ wget http://nginx.org/download/nginx-0.8.53.tar.gz tar -zxf nginx-0.8.53.tar.gz cd nginx-0.8.53 ./configure --user=www-data --group=www-data --sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/logs/nginx.pid --with-http_ssl_module make make install インストールに成功したら、起動用のスクリプトを ここ からもらってくる。 configure の際のパラメータは予めこの起動用スクリプトに合わせたファイル構成にしてあるから改変なしで上手くいく。 wget -O /etc/init.d/nginx http://www.debianadmin.com/images/nginx chmod 755 /etc/ini...

Windows Virtual PC に Debian をインストールし、SSH の設定をする

イメージ
ServersMan@VPS の Entry プランを試しに申し込んでみようかと思っているものの、 先日起きた個人情報流出 に巻き込まれてしまって普段使っているカードが一時的に使えなくなっているので、取りあえず予行練習ということで Windows Virtual PC に Debian をインストールしてみようと思う。 元々 Windows 以外の OS に関してはそんなに詳しくはないものの、Ubuntu は多少使ったことがあるので CentOS よりは Debian の方が慣れやすいだろう、というところで Debian を選んだ。 取りあえずメモリは ServersMan@VPS の Entry プランの基本になる 256MB に。HDD は検索したところによると容量可変のHDDを使うと VirtualPC 2007 で問題が起こっていたらしいので、取りあえず「詳細オプションを使用して仮想ハードディスクを作成する」を選んで、「固定サイズ」、10240MB の HDD を作成。 Debian は 150MB 程の小さい ISO イメージをダウンロードした。 仮想マシンを起動したら ISO イメージを選択。インストーラの起動画面まで到達できた。 2007 だとここからもまだ Kernel Panic が起こったりして noreplace-paravirt というオプションが必要になったりするらしい話も見かけたものの、手元の環境では何も指定しなくても問題なさそうだ。 まず言語選択。ここは迷わず English を選択する。大抵の場合 English の方が都合がいいから。 次に「Choose a country, territory or area」と言われるが、ここでは「other」を選ぶ。 すると「Choose a continent or region」と言われるので、選択肢の中から「Asia」を選ぶ。 こうすると次の「Choose a country, territory or area」ではさっき存在しなかった「Japan」が選べるので選ぶ。 続いてキーボードレイアウトを選ぶ。日本語キーボードを使っているので「Japanese」を選ぶ。 少しの間色々と進行して、ネットワークの設定が始まる。Hostnam...

64GBのSSDを購入

Electri6ity を買って以来、ただでさえそんなに速くはなかったプロジェクトの読み込みや音色の読み込みが更に遅くなり DAW を開くのさえ面倒になってきていたので、思い切って  CSSD-SM64WJ3   を買った(注文当時 Amazon に在庫がなかったのでツクモで注文したけど今はある模様)。 3.5インチベイ取り付け用の金具を買っていないので PC ケースが開けっ放しな上に SSD を PC の上に置きっぱなしという中途半端な状態ながら早速使用開始。 フォーマットにあたっては遅いと思われる GPT + NTFS を先に試してみた。 そもそも作曲用の音源を入れっぱなしにするために買ったのでジャーナリングなどは必要ないはずなのだが、取りあえず CrysitalDiskMark で 512K ランダムリードだけテストして、すぐ MBR + exFAT でフォーマットしなおした。 GPT + NTFS で 170 前後、MBR + exFAT で 190 前後のスコアを出していたのでまあまあ予想通りな感じ。 フォーマットが済んだので入れるデータを選ぶのだが、Electri6ity を入れてもまだ余裕があるので、KOMPLETE7 についてきた音源のうち使用頻度が高そうで HDD への負担が高そうなものを選んでコピーした。 Electri6ity 26.2GB Abbey Road 60s Drums Library 6.32GB Scarbee MM-Bass 2.96GB New York Concert Grand 2.70GB Vienna Concert Grand 3.12GB Berlin Concert Grand 2.77GB Upright Piano 2.55GB ここまでで残り容量が約 13GB ぐらいになっていたので、ついでに Battery3 のライブラリのデータも 12GB 弱ぐらいなので入れようと思ったら Battery3 はサンプルごとにファイルが分かれていてコピーに恐ろしく時間が掛かるようなので結局諦めた。 本当は KONTAKT4 のライブラリも入れたかったけどこれは容量オーバーになるので諦め。 準備も終わったので DAW を立ち上げて以前作りかけで投げ出していたプロ...