Debian apache2.2にWordPressをインストール

インストール

$sudo apt-get install php5 php5-mysql

日本語 — WordPress ← ここから最新版のWordPressを持ってくる

設定

wordpress用のmysqlユーザとデータベースを作成して
落としてきた最新版を解凍そして

$sudo chown -R apache:apache dir_name 

等としてapacheの実行ユーザ、実行グループに変更。
公開するディレクトリに解答したファイルを移動して
ブラウザからアクセスして後は画面とおりに設定。
とてもらく〜。

ユーザ名の変更

最初もらうユーザ名はadminから変更できないので
管理者権限をもつユーザを作成してそちらにログイン後adminを削除でOK

Debian ddclientの設定

DynDNSを使用していて1つのドメインだけ登録していたときはルータから更新をかけていたのだけれども
複数登録した場合はルータから更新できないみたいだったので、更新用のクライアントソフトを入れてみた。

インストール

$sudo apt-get install ddclient

設定

インストール時にいろいろ聞かれ /etc/ddclient.conf というサンプルのファイルが出来上がるのだけども
dyndnsのサイトが conf ファイルを自動生成してくれるのでそっちを使った方が楽。
Create Dyn Account or Login
passwordの部分だけは自分で書き換える

ddclientの再起動

後は再起動するだけ

$sudo /etc/init.d/ddclient restart

Debian apache2.2でWebDAV

前々から一度は使ってみようと思って使っていなかったので使ってみた。
その時の設定

インストールするもの

文字化け対策として以下をインストールする

$sudo apt-get install libapache2-mod-encoding

設定

WebDAVで共有するディレクトリを作成し chown -R で www-date:www-date に設定する
/etc/apache2/site-available/defaultに以下を追加

 1     Alias /share/ "/var/www/share/"
 2     <Location /share/>
 3     DAV On
 4     order allow,deny
 5     allow from all
 6     </Location>



/etc/apache2/mods-available/encoding.conf を作成して以下を書き込む

  1 
  2 <IfModule mod_encoding.c>
  3 EncodingEngine on
  4 NormalizeUsername on
  5 SetServerEncoding UTF-8
  6 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
  7 AddClientEncoding "cadaver/" EUC-JP
  8 </IfModule>

モジュールの有効化

$sudo a2enmod dav
$sudo a2enmod dav_fs
$sudo a2enmod encoding
$sudo a2enmod dav_lock

確認

apache2を再起動してWebDAVにアクセスできるか確認する nautilusからアクセスしたり cadaver からアクセスしたりして。

DebianでRealtek RTL8111/8168Bのドライバ インストール

DebianでのRealtek RTL8111/8168Bのドライバ

どうにもDebianがr8168のドライバが必要なはずなのに間違えてr8169をロードしてしまうらしい
のでRealtekのサイトからドライバのソースを持ってきてビルドしてドライバを入れてあげる。
パソコン側でもnicを認識してるしr8169でデバイスもできてるのでけっこうはまった。

インストール手順

必要な物
$uname -r

カーネルのバージョンを調べて

#apt-get install gcc make
#apt-get install linux-headers-2.6.26-2-686
#apt-get install linux-kbuild-2.6.26
インストール

まずr8169がロードされていたら外す

$lsmod | grep r
$rmmod r8169

落としてきたファイルを

$tar jxvf file_name

で解答して

$cd file_name
$./autorun.sh

autorun.shがビルドからモジュールのロードまでやってくれる

バイスの確認

$ifconfig -a

でeth0で認識してることを確認して
/etc/network/interfaces に以下を追記する

auto eth0
iface eth0 inet dhcp
auto eth0

以下でDHCPからアドレスをもらう

#ifdown eth0
#ifup eth0

次回起動時の設定

再起動するとまたr8169をロードしてしまうので以下のようにしてinitrdを直す

#mkinitramfs -o ./initrd.img-2.6.26-2-686 2.6.26-2-686
#mv /boot/initrd.img-2.6.26-2-686 /boot/initrd.img-2.6.26-2-686.bkup
#mv initrd.img-2.6.26-2-686 /boot/

DebianにGitをインストール

Git

分散バージョン管理システム
githubを使いたくなったのでインストールしてみた

インストール

$ sudo apt-get install git-core

初期設定

$ git config --global user.name 'hogehoge'
$ git config --global user.email 'bar@hogehoge.com'
$ git config --global color.ui auto

コマンドとかはまた後で

Ruby RindaとRingとdrubyで作ってみた

rindaをさわってみたのでちょっとしたものを作って見ました。

作ってみた物

エンコードのリクエストを入れると順番にエンコードしてくれるサーバみたいなものを作ってみました。
FFmpegでEncodeをするリクエストを受け付けるServerみたいなものだから、クラス名がFFEServerって適当な名前

ffe_server.rb
 1 #!/usr/bin/ruby
  2 
  3 require 'drb/drb'
  4 require 'rinda/tuplespace'
  5 require 'rinda/ring'
  6 require 'lib/ffe_file'
  7 require 'ring/ffe_ring'
  8 
  9 class FFEServer
 10     def initialize
 11         @encode_list = Rinda::TupleSpace.new
 12     end 
 13     
 14     def request(encode_type, file_name)
 15         ffe_file = FFEFile.new(encode_type, file_name)
 16         @encode_list.write([:encode, ffe_file])
 17         return [true, ffe_file.file_name]
 18     rescue
 19         return [false]
 20     end 
 21     
 22     def encode_loop
 23         loop do
 24             begin
 25             now_encode = @encode_list.take([:encode, nil])
 26             now_encode[1].encode
 27             now_encode[1].move
 28             now_encode[1].delete
 29             rescue
 30             end
 31         end 
 32     end 
 33 end 
 34 
 35 Signal.trap(:INT) { exit 0 }
 36 
 37 ffe_server = FFEServer.new
 38 DRb.start_service(nil, ffe_server)
 39 
 40 provider = Rinda::RingProvider.new(:FFE, DRbObject.new(ffe_server), 'FFEServer')
 41 provider.provide
 42 
 43 ffe_server.encode_loop
 44 
lib/ffe_file.rb
 1 #!/usr/bin/ruby
  2 
  3 $LOAD_PATH << File.dirname(__FILE__)
  4 
  5 #require 'random_string'
  6 require 'encode_type'
  7 
  8 class FFEFile
  9     #include RandomString
 10 
 11     SRC_DIR = "./common/encode"
 12     DEST_DIR = "./common/encoded"
 13     TMP_DIR = "./common/tmp"
 14 
 15     attr_reader :file_name
 16 
 17     def initialize(encode_type, file_name)
 18         @file_name = file_name
 19         @encoder = encode_for(encode_type)
 20     end
 21 
 22     def encode
 23         @encoder.encode
 24     end
 25 
 26     def move
 27         File.rename("#{TMP_DIR}/#{@encoder.dest_file_name}", "#{DEST_DIR}/#{@encoder.dest_file_name}")
 28     end
 29 
 30     def delete
 31         File.delete "#{SRC_DIR}/#{@file_name}"
 32     end
 33 
 34     private
 35     def encode_for(encode_type)
 36         if encode_check(encode_type)
 37             encode_name = "#{encode_type.capitalize}Encode"
 38             encode_class = self.class.const_get(encode_name)
 39             encode_class.new(@file_name, SRC_DIR, TMP_DIR)
 40         else
 41             raise 'Error encode type'
 42         end 
 43     end 
 44     
 45     def encode_check(encode_type)
 46         encodes = encode_list
 47         encodes.include?(encode_type)
 48     end 
 49     
 50     def encode_list
 51         encode_dir = File.dirname(__FILE__)
 52         full_pattern = File.join(encode_dir, 'encoder', '*.rb')
 53         Dir.glob(full_pattern).map {|file|  File.basename(file).gsub(/encode\.rb$/, "") }
 54     end 
 55 end
 56
lib/encode_type
 #!/usr/bin/ruby
  2 
  3 def load_encoder
  4     lib_dir = File.dirname(__FILE__)
  5     full_pattern = File.join(lib_dir, 'encoder', '*.rb')
  6     Dir.glob(full_pattern).each {|file| require file }
  7 end
  8 
  9 load_encoder
ring/ffe_ring.rb
1 #!/usr/bin/ruby
  2 
  3 $LOAD_PATH << File.dirname(__FILE__)
  4 
  5 require 'rinda/ring'
  6 require 'rinda/tuplespace'
  7 
  8 DRb.start_service
  9 
 10 ts = Rinda::TupleSpace.new
 11 place = Rinda::RingServer.new(ts)
 12 
 13 #DRb.thread.join
 14 
概要

FFEFile::SRC_DIR 以下にエンコードするファイルを突っ込んでその後drubyで公開されている
ffe_serverのrequestメソッドをエンコードしたい種類とファイル名を引数にして呼べば後は勝手にエンコードしてくれる。
ファイル自体もdrubyで送ろうとおもったけど、パイプが壊れたり、接続が切れたりする(Fileオブジェクトの参照渡しのせい)ので断念。

エンコードの種類

エンコードの種類は ffe_file.rbが置いてある場所に encoder ディレクトリを作ってそこに種類毎にclassを作ってる
例 : ipodってゆう種類を作りたかったら ipodencode.rb 等の名前でrbファイル作って以下のような感じで書いてみた。 "ipod".capitialize + "Encode" がクラス名になる

/lib/encoder/ipodencode.rb
  1 #!/usr/bin/ruby
  2 
  3 class IpodEncode
  4     attr_reader :dest_file_name
  5 
  6     def initialize(file_name, src_dir, tmp_dir)
  7         @file_name = file_name
  8         @src_dir = src_dir
  9         @tmp_dir = tmp_dir
 10         @dest_file_name = file_name.gsub(/\.[^.]+$/, '.mp4')
 11     end
 12 
 13     def encode
 14         system "ffmpeg -i #{@src_dir}/#{@file_name} -croptop 8 -cropbottom 8 -cropleft 8 -cropright 8 \
 15         -level 13 -s 480x320 -b 1000000 \
 16         -ar 48000 -ab 256000 -ac 2 -aspect 16:9 -r 120 -vcodec libx264 -acodec aac -vpre default \
 17         -mbd 2 #{@tmp_dir}/#{@dest_file_name}"
 18     end
 19 end
 20 

encodeメソッドは単にsystemで動かしてるだけ
試しに ipodniconico を作ってみた

クライアント

ffe_serverが起動している同じパソコンないだったら

 1 #!/usr/bin/ruby
  2 
  3 require 'rinda/ring'
  4 require 'fileutils'
  5 
  6 file_name = ARGV.shift
  7 encode_type = ARGV.shift
  8 
  9 FileUtils.cp(file_name, "./common/encode/#{File.basename(file_name)}")
 10 
 11 DRb.start_service
 12 ts = Rinda::RingFinger.primary
 13 ffe = ts.read([:name, :FFE, DRbObject, nil])[2]
 14 ffe.request(encode_type, File.basename(file_name))
 15 

な感じかな

他のパソコンからだったらアップロードを受け付けるCGIでも作って受け取ったファイルをFFEFile::SRC_DIRに作成してリクエストを送ってあげる。
これが一番楽かなと、誰からでも使えるし。

エンコードをやるのはシェルスクリプトでいいんじゃねとか思ったけど まあrindaの練習 兼 CGI作って公開すればみんなで使えるってことで