Pages

December 27, 2009

Ubuntuサーバ再構築(4)

DynamicDNSに登録してもIPころころ変わっては意味がないのでなんとか対応したい!そういう時にスクリプト書いて対応するのは良いのだが管理が大変になるかも。そーいうときはDiCEを使おう!

ということでDiCE導入から設定まで

cd /usr/local/bin
sudo wget http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019
sudo tar zxvf diced01914.tar.gz
sudo rm "diced01914.tar.gz"


※端末の文字コードをEUCへ変更する

sudo ./diced
:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない  (P)戻る
>2
-------------------------------------------------
スクリプトのURLを入力してください
<現在:>
(N)変更しない  (P)戻る
>http://ipcheck.ieserver.net/
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>y
検出IPアドレス>*******
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>n
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない  (P)戻る
>5
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分)  設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない  (P)戻る
>30
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>y
設定を保存しました
=================================================


ieServerを例に

:add
新しくイベントを追加します
DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>ieServer
-------------------------------------------------
<< ieServer Project >>
URL: http://www.ieserver.net/
*** 情報 ***
IPアドレスはサーバー側で自動検出します。
IPアドレスの指定は出来ません。
(入力しても無視されます)
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>dip.jp
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>dip.jp
=================================================
ホスト名を入力してください
(P)戻る
>*****
=================================================
ログインユーザ名を入力してください
(P)戻る
>*****
=================================================
ログインパスワードを入力してください
(P)戻る
>*****
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
>
=================================================
このイベントに題名を付けてください
(P)戻る
>*****
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎   (1)14日毎  (2)21日毎  (3)28日毎
(4)35日毎  (5)56日毎  (6)84日毎
(P)戻る
>0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ オフライン ]
(0)No (1)Yes
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>y
=================================================
イベントを保存しますか? (Y/N)
>y
イベント"*******"を保存しました
=================================================
:exit

コマンド一覧は"?"で表示可能
exit             DiCEを終了します
start            DiCEを開始します
startd           DiCEをバックグラウンドで開始します
setup            DiCEの環境設定を行います
list             登録済のイベント一覧を表示します
add              イベントを追加します
ed[it] <番号>    イベントを編集します
del <番号>       イベントを削除します
en[able] <番号>  イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号>   イベントの情報を表示します
ex[ec] <番号>    イベントを今すぐ実行します
logcr            ログをクリアします

次にシステム起動時のスクリプトを設定

cd /etc/init.d/
sudo cp skelton diced
vim diced


以下編集した部分
DESC="DiCE Daemon"
NAME=diced
DAEMON=/usr/local/bin/DiCE/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
do_start() {
start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON -- -d -l
}

sudo update-rc.d diced defaults 96 5

あとはシステム再起してプロセス確認して立ち上がっていればおk

Qt4環境を構築

sudo apt-get install libqt4-opengl-dev qt4-dev-tools libqt4-webkit-dbg libqt4-xmlpatterns-dbg libqt4-dbg qt4-doc qt4-demos-dbg

Ubuntu 64bit環境で32bitアプリを使う場合

sudo apt-get install ia32-libs


でパッケージをインスコ。

Ubuntuサーバ再構築(3)

OpenSSHインスコ

sudo apt-get install ssh

設定(参考)

vim /etc/ssh/sshd_config

#プロトコル
Protocol 2,1
#rootのログインの許可
PermitRootLogin no

でおk

あとはクライアントからログインでリモート操作出来ると思う。

出来ない場合はFWall関係を調べてみるといいだろう。

December 24, 2009

Ubuntuサーバ再構築(2)

vsftpdをインスコ

sudo apt-get install vsftpd

次にconfig弄りなのだが、そのまえにvimをインスコ(vimデビューなう)

sudo apt-get install vim-full

sudo.vimもついでに。(参考)

sudo wget -P /usr/share/vim/addons/plugin -O sudo.vim "http://www.vim.org/scripts/download_script.php?src_id=3477"
 
vimの使い方はこちらを参照

標準のエディタの変更は

sudo update-alternatives --config editor

で行える。

さて、気を取り直してvsftpdのconfigを弄る

基本的にvsftpd.confは/etc直下にあるが、ないという場合は以下を叩いてファイル位置を確認しよう。

dpkg -L vsftpd

vsftpd.confで弄った部分(参考1)(参考2)

#匿名ログインを許可
anonymous_enable=NO
#ローカルユーザのログインを許可
local_enable=YES
#書き込み許可
write_enable=YES
#デフォルトのumaskを022へ
local_umask=022
#ログ保存位置
xferlog_file=/var/log/vsftpd.log
#ログフォーマット
xferlog_std_fomat=NO
#アスキーモードでのアップロード許可
ascii_upload_enable=YES
#アスキーモードでのダウンロード許可
ascii_download_enable=YES
#ftpサーバ名 バージョンを表示させない。代替メッセージ
ftpd_banner=Welcome to my FTP serer.
#/homeより上層へのアクセスを制限
chroot_local_user=YES
#/homeより上層へのアクセスを制限するリストの有効化
chroot_list_enable=YES
#/homeより上層へのアクセスを制限リストの場所
chroot_list_file=/etc/vsftpd/chroot_list
#Dirごと削除できるようにする。
ls_recurse_enable=YES


service start vsftpd
最低限設定したほうがいいやつを上げた。あとは自分の構築したい環境に適宜変更よろ。

December 22, 2009

Ubuntuサーバ再構築(1)

結構前に触ったきりでちょい不安になったので、OS再インスコすることにした。
ディストリはUbuntu9.04。9.10はバグがアルらしく様子見(どんなバグがあるか詳しく調べていない)
  1. DNS Server
  2. LAMP Server
  3. OpenSSH Server
を選択。

BasicUbuntuServerに何が入っているのか分からないのでひとまずこれで。

ネットインスコだったけど念のため

sudo apt-get update / sudo apt-get upgrade

を叩いた。

ついでにGUI環境もということでLXDEを。

sudo apt-get install lxde

鯖構築終わったら、lxdeを起動時に立ち上げないようにすることを忘れずに。

次回は vsftpd apache2 Python FireWall などの設定構築。

December 21, 2009

CSVモジュールでのエラー解決!

この記事でとっても悩んでいたのですが、ついったーでこの問題を解決していただきました。
以下がやりとりです。


Dirにあるファイルのプライオリティが高いみたいです。
こーいう問題にぶち当たる辺り、ちゃんとどういう動作をしているのか意識しながらやらないといけないのかな。触り始めたばかり、なんて言って逃げたくはないので頑張ろう。

December 19, 2009

DoCoMoでスマフォ生活

DoCoMoのサイトで見て、てきとーに計算した。

タイプSS バリュー(ひとりでも割50) 934円(税込980円)/月
mopera U(Uライトプラン) 300円(税込315円)/月
Biz・ホーダイ ダブル 5,700円(税込5,985円)/月
計 6,916円(税込7,280円)/月

うむ。結構良い値段。これに端末代をいくらかずつ払うとなると8000~9000円になるだろう。
芋場とauを解約すれば何とかなるなぁ。

追記
以下サイトが詳しくかいてあった。
http://www40.atwiki.jp/ht03a2ch/

December 16, 2009

なんか残念なFirefoxさん

アップデートを促してきて指示に従ったのだが、更新できませんでした。っと言うのダサいなぁ~とか思った。まぁそれだけ。

December 14, 2009

自鯖の中身を引越した。

以前のケースがMini-ITX用で鯖に不向きだったのでATXケースに換装。



まぁこんな感じに。
構成は
RAM:2GB
POW:100W(AC)
HDD:160GB(HGST)
これに、爆熱チップセットのヒートシンクをHV-3747BL、サウスブリッジのチップセットにYH-3020Aをつけた。あとは8センチファンを2重にした糸で固定して完成(笑)。
ケースはDPC-2768BKを3980円で入手。
久しぶりのアキバでものすごく疲れたけど、楽しめたので良しとしよう。


December 12, 2009

csvモジュールが・・・・

下のようなコードを実行すると、「AttributeError: 'module' object has no attribute 'reader'」っと出るんですよね・・・。
import csv
csvfile = 'a.csv'
reader = csv.reader(open(csvfile, 'r'))
for row in reader:
    print row
謎すぎる。解決策をぼちぼち調べないと・・・

追記:
問題解決しました。記事

当ブログについて

まず最初に書かなくてはいけないノだけれども。
とりあえず、このブログはRenax64のメモ ノートとして使ってます。
ぶちあった問題などをとりあえず書いていきます。

PythonのcsvモジュールがUTF-16に対応していない件について

なんどやってもエラー吐くのでggってみたら、案の定だめっぽい。
どうしても読みたい場合はココのサンプルを利用すればいいっぽい。
まぁ、ファイルの文字コードにUTF-16を避けることに注意すればおkですね。
ここも参考になるかも。

December 11, 2009

SQLiteでデータ型指定の有無

詳しくはどうなっているか分からないけど、データ型を指定しなくても通る。
INSERT INTOで『''』で括っているか否かで判定しているのかな?

December 10, 2009

CSV2SQLなるものを見つけた。

題通りなんか見つけた。とりあえず参考にしながら自分でもCSV2SQL for Pythonを作ってみようと思う。

import sqlite3
import csv 
# SQLite内のデータはutf-8を想定
def sqlite2csv(db_name, table_name, out_filename):
  dbh = sqlite3.connect(db_name)
  writer = csv.writer(file(out_filename, 'w'))
  for row in dbh.execute('SELECT * FROM %(table_name)s' % locals()):
    writer.writerow([col.encode('utf-8') if isinstance(col, unicode) else col for col in row])
  dbh.close()
 
# csvのセパレータはカンマを想定
def csv2sqlite(db_name, table_name, in_filename):
  dbh = sqlite3.connect(db_name)
  reader = csv.reader(open("import.csv", "rb"))
  for row in reader:
    ph = "?," * (len(row) - 1) + "?"
    dbh.execute("INSERT INTO %(table_name)s VALUES(%(ph)s)" % locals(), tuple(row))
  dbh.commit()
  dbh.close()
引用:http://taichino.com/engineer-life/database/1016

CSS small-caps

英小文字をやや小さなサイズの英大文字に変える

December 08, 2009

カラム名でDBからデータを取得する方法

row_factory = sqlite3.Rowを利用する。
ex)
db = sqlite3.connect('xxx', isolation_level=None)
sql = u”select * from hoge”
db.row_factory = sqlite3.Row
c = db.execute(sql)
for row in c:
print row["カラム名を指定"]

Pythonでの関数定義

def hoge():
    処理内容 : インデントすること。

ex)
def hoge():
    print 'Hello Python'
hoge()

最初は何処まで定義されるのか分からなかったが、インデントされたか否かで判定してるっぽいです。
コードが綺麗に見えると言われる理由の一つなのかな?

Pythonで特定の行を読み込ませる

readlines()[n]
nに読み込みたい行を入れるだけ。

ex)
f = ‘fopeninout.txt’
fp = open(f, ‘r’)
Str = fp.readlines()[1]
fp.close
print Str
fopeninout.txt
test1
test2
test3