Glitch

MySQL, MongoDB, Python, Go

RPMforge, EPEL, RemiのRPMのありか

なんかうまく探せなかったのでメモ.
Enterprise Linux 6(x86_64)向けです.

インストール

コマンドは以下のように.

rpm -ivh (url.rpm)

アップグレードならば

rpm -Uvh (url.rpm)

vimで開いた日本語文章が文字化け!

rubyのインストールをしてたわけですけども,開発者の方が日本人なだけあってソースに日本語のREADMEがついてます.(README.ja)
んでこれ見たわけなんですけども,文字化けてる…
そういやKAGOYAの方は文字エンコーディング何も設定してなかったんでした.

というわけでエンコードのお時間です.
普通は以下のようにする(らしい).

/etc/sysconfig/i18nを以下のように編集.

#LANG="en_US.UTF-8" # コメントアウト
LANG="ja_JP.EUC-JP"

んだども,サーバ全体に影響があるのはなぁ.とも思い,
てかREADME.jaはEUCらしく,UTF8を使っていきたい私としてはなんとも(´・ω・`)

なのでvimだけエンコーディングを変えることにしました.
~/.vimrcに以下を追加.

:set encoding=utf-8
:set fileencodings=utf8,iso-2022-jp,euc-jp,sjis

encodingはvim内部のエンコーディング,fileencodingsはファイルを開く際に使用するエンコーディング.
先頭から順番に試していってエラーが出なかったものを採用,みたいな.
ちなみにfileencodeとはまた違うので注意…

KAGOYA CLOUD / VPS借りた

さくらのVPSが(高々\980を未納したがために)お亡くなりになりました.
なのでKAGOYAのクラウド / VPSを借りました.
ちょうどIaaSクラウドサーバを体感してみたいな,と思っていたので結構ピッタリです.
OpenVZなのでカーネルに制限があったりしますけどもとりあえずそんなコアな使い方しないと思うので.

CentOS5しか無いけど,以下の記事にCentOS6を導入する方法がありました.
カゴヤクラウドVPSが正式サービスイン→早速CentOS6に入れ替えてみたw - y-kawazの日記

これで快適CentOS6ライフ(・∀・)
yumで入れられるパッケージも広がりうれしい.

ちなみに@と一緒にKAGOYAとったので,管理がぐちゃぐちゃに(´・ω・`)
まぁありがちだけどホスト名つけました.

$ vim /etc/sysconfig/network
HOSTNAME="kagoya" # この一行を追加(あれば書き換え)
$ shutdown -Fr now

これでOK.
サイトに寄っては /etc/hosts も変更してるからこっちも変えたほうがいいのかなぁ.
ここ変えて不具合が起きたことあるので保留(´-ω-`)

/etc/hostsについて(2012/6/3追記)

やっぱ設定せなあかんかった…(´・ω・`)
いわゆるローカルに自分を参照することがあるとき,おかしくなるかも,ってカンジです.
以下のように変更.

127.0.0.1   localhost localhost.localdomain (〜中略〜) kagoya.okdtsk
::1              localhost localhost.localdomain (〜中略〜) kagoya.okdtsk

httpd.confのServerNameについて(2012/6/4追記)

Redmineの設定をしているときにApacheを再起動したら…

httpd: Could not reliably determine the server's fully qualified domain name using kagoya.okdtsk for ServerName

なんですと('A`)ヴァー
ErrorじゃなくてWarningだと思うけど,とりあえずServerNameを記述していないのが問題らしい.

ということで/etc/httpd/conf/httpd.confを以下のように変更.

# ServerName www.example.info:80
ServerName kagoya.okdtsk.info:80

これでok(・∀・)

pip install web2pyでインストールされたスクリプトについて

前エントリの派生.
web2pyは公式からソース持ってきても簡単なんだけど,せっかくvirtualenv入れてるしpipでやってしまおうと.
現在PyPiにあるversionは1.98.2.最新の1.99.4じゃない...
とりあえずインストール方法おさらい.

$ mkvirtualenv web2py_demo
$ pip install web2py
ownloading/unpacking web2py
  Downloading web2py-1.98.2.tar.gz (4.7Mb): 4.7Mb downloaded
  Running setup.py egg_info for package web2py
Installing collected packages: web2py
  Running setup.py install for web2py
    changing mode of build/scripts-2.6/w2p_apps from 664 to 775
    changing mode of build/scripts-2.6/w2p_run from 664 to 775
    changing mode of build/scripts-2.6/w2p_clone from 664 to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_clone to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_apps to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_run to 775
Successfully installed web2py
Cleaning up...

スクリプト

メッセージから分かる通り,以下の三つのスクリプトがインストールされました.

  • w2p_clone
  • w2p_apps
  • w2p_run

これを全部使うのかっていうとそうでもありません.
PyPiにあるweb2pyのスクリプトは頻繁に変更されるみたいで,以前は名前が違いました.

変更前 変更後(現在)
web2py_clone w2p_clone
mkweb2pyenv w2p_apps
runweb2py w2p_run

Re: pip install web2py - Christopher Steel - com.googlegroups.web2py - MarkMail

なんか名前が変わって分かりづらくなったなぁ.appsでmakeね.

w2p_clone

端的に言ってしまえばvirtualenvの環境変数下にweb2pyディレクトリをインストールする方法.
公式ではこちらが推薦されているようです.
ソースはこちら.
w2p_clone -
web2py -


Enterprise Web Framework - Google Project Hosting

ソースを見れば分かるんですが,https://code.google.com/p/web2py/からソースを引っ張ってきています.んでhg cloneと.
当たり前なんですがこちらだとcode.google.comから引っ張ってくるんで,最新版(安定板)で環境構築できます.
PyPiにおいてあるweb2pyが前のバージョンでも大丈夫ってことですね.
以下試してみた結果です.

$ w2p_clone
$ python ~/.virtualenvs/web2py_demo/web2py/web2py.py --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2477" to shutdown the web2py server

ちゃんと1.99.4になってる!
ただコマンドが長ったらしい?

w2p_appsとw2p_run

w2p_appsは,pip install web2py時にダウンロードしたenv.tarという圧縮ファイルを指定のディレクトリ,ないしカレントディレクトリに解凍.
w2p_apps -
web2py -


Enterprise Web Framework - Google Project Hosting

w2p_runは,上記w2p_appsで作成したディレクトリを指定,そこにあるweb2pyのソースを実行するというものです.
w2p_run -
web2py -


Enterprise Web Framework - Google Project Hosting

双方共にgluonモジュールというものを使っています.web2pyのモジュールかな?
こちらだと,ローカルでインストールができる,web2pyを展開するディレクトリが指定できる上,サーバもw2p_runコマンドで起動できるのですが,推薦されていないだけあってなんかちょっと動作が不安定っぽいです.
てかw2p_runのなかで環境変数思いっきり書き換えてるのがなんかちょっと...いいんだけども,気をつけないと行けない所.
それと,大きな違いはversion.こちらはpip install web2pyの時のversion,即ちPyPiに登録されているweb2pyのversionを使うため,バージョンが古いことがままあります.
実際2012/1/3現在,1.98.2が立ち上がるので古いです.

$ w2p_apps
Creating a web2py env in: /home/user/web2py_demo
$ w2p_run --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.98.2 (2011-08-28 09:59:26)
Database drivers available: SQLite3
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2454" to shutdown the web2py server

どっちを使う?

一応公式に推薦されているのはw2p_cloneなのでこちらを使おうと思います.
ただmakeとrunが分かれている方が何かと都合がいいかもなのでw2p_apps&w2p_runのコンビで最新版ちゃんとしてくれるといいなぁ.
てか,w2p_runの引数にvirtualenvの環境変数を入れればいいのでは.

$ w2p_run ~/.virtualenvs/web2py_demo/web2py/ --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2500" to shutdown the web2py server

でけた.
うーむ,gluonモジュールが何か分かってないのでそこだけ怖いけどな...

web2pyを使う

けっこう前から気になっていたpython版のweb framework,web2pyを使ってみようと思います.

web2py Web Framework

いちおう公式ソースは1.99.4なんだけど,PyPiだと1.98.2.
でもとりあえずpipでインストールする.

$ pip install web2py
Downloading/unpacking web2py
  Downloading web2py-1.98.2.tar.gz (4.7Mb): 4.7Mb downloaded
  Running setup.py egg_info for package web2py
Installing collected packages: web2py
  Running setup.py install for web2py
    changing mode of build/scripts-2.6/w2p_apps from 664 to 775
    changing mode of build/scripts-2.6/w2p_run from 664 to 775
    changing mode of build/scripts-2.6/w2p_clone from 664 to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_clone to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_apps to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_run to 775
Successfully installed web2py
Cleaning up...

滞りなく終了!
んでいろいろ探してみるとweb2py_cloneだったり,mkweb2pyenvだったり.*1
いろいろ実行ファイルの名前かわってらっしゃるのかしら…
とりあえず現在はw2p_cloneを使う.
w2p_cloneのドキュメントを見てみる.

"""
Author: Christopher Steel on behalf of Voice of Access
Copyright: Copyrighted (c) by Massimo Di Pierro (2007-2011)

web2py_clone becomes part of the web2py distribution available
on Pypi via 'pip install web2py'

web2py_clone is one of multiple commands that become available after running
'pip install web2py' in a virtual environment. It requires
mercurial to be installed in the virtual environment.

web2py_clone creates a local clone from the Web2py google code
project in the directory "./web2py," a directory called web2py
one directory up from the location of this script.

./bin/web2py_clone
./web2py
"""

ヘー (´・∀・`)
mercurialってのは分散バージョン管理システム.Gitみたいなもんか.
w2p_cloneの中身はここにある.
w2p_clone -
web2py -


Enterprise Web Framework - Google Project Hosting

.virtualenv/(name)/配下にweb2pyをぶちこむだけのスクリプトですた.あとhgに登録.
とりあえずmercurial入れてw2p_clone実行.

$ yum install hg
$ w2p_clone
cwd now: /home/user/envname
cwd now: /home/user/.virtualenvs/envname/bin
attempting to clone https://code.google.com/p/web2py/
to ../web2py
requesting all changes
adding changesets
adding manifests
adding file changes
added 2833 changesets with 8161 changes to 1257 files
updating to branch default
752 files updated, 0 files merged, 0 files removed, 0 files unresolved

いいかんじ〜
んで以下のコマンドでサーバ起動.

$ python ~/.virtualenvs/envname/web2py/web2py.py --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2082" to shutdown the web2py server

オプションはGUIなしと,パスワード指定です.
TK libraryなるものを入れていればGUIで起動できるのかな.
んでここで気づいたけどversionが最新版の1.99.4.
PyPiでは1.98.2なのに?
これについては次のエントリで.

*1:[http://markmail.org/message/oias744f7sr7atgj:title]

NaverBot

なんかサーバがブォンブォにってるから何事…っておもってtopコマンドで調べた.
そしたらhttpdがむっちゃ回ってるやん...

普段全然アクセスない(放置)なのになんだ,ってことでアクセスログ調べたらNaverBotなるものが.
なかなか悪名高いBotだそうで...
秒単位の連続アクセスってDDoS攻撃と変わらんですがな(´・ω・`)
ADSL1.5M+CelD+512Mなのにヽ(;´Д`)ノヤメテー

.htaccessで制御しました.
でもUserAgentがちょくちょく変わるらしい...
早めにさくらに移行しよう.

Eclipseでvirtualenv環境を使う

UbuntuEclipse Indigo入れました.
ついでにPyDev,EGitも.
こなへんは[Help]-[Install New Software...]からできるので楽ね(・∀・)

んでpython使いとしてはvirtualenv環境でEclipse使いたいなぁと.
んでいろいろググりながらやってみました.ほぼ参考サイトのとおりですが.

まず新規プロジェクトの作成画面へ.
InterpreterがDefaultになってます.
これだと普通の環境になるので,新しくvirtualenv用のinterpreterを作ります.
[Click here to configure an interpreter not listed.]を押してinterpreterの設定画面へ.
f:id:okdtsk:20111221055845p:image:w320

新しくInterpreterを作るので[New]をクリック.
f:id:okdtsk:20111221055846p:image:w320

"Interpreter Name"にはInterpreterの名前をつけます.
"Interpreter Executable"にはvirtualenvでのpython実行ファイルを指定します.
自分の環境ではvirtualenvは基本的に~/.virtualenvs/配下に作成されるようにしてあるので,その下を探れば出てくると思います.
virtualenvwrapper使ってる人なら.bashrcとか.zshrcとかにWORKON_HOMEがあると思うのでそれを参考に.
f:id:okdtsk:20111221055847p:image:w320

次にPYTHONPATHに入るライブラリのパスを指定します.
だいたいデフォルトでやってくれるのでこんなかんじです.
ちゃんと/usr/lib/配下のライブラリは無視して,~/.virtualenvs/配下のライブラリのみチェックしてくれてます.
ここで注意点./usr/lib/python2.7だけはインポートすること.
f:id:okdtsk:20111221055848p:image:w320

これしないとError出ちゃいます.
ちゃんとError文にもvirtualenvの時のこと書いてくれてるのね.
site-packeagesはオプショナルとのこと.
f:id:okdtsk:20111221055849p:image:w320

これで晴れてitnerpreter出来ました.
最後にプロジェクトのInterpreterを今作成したものに変えること,忘れずに.
f:id:okdtsk:20111221055850p:image:w320

できたプロジェクトの中身.
ちゃんとInterpreterのパスがvirtualenvになってます.
f:id:okdtsk:20111221055851p:image:w320

画像使ってみたかっただけでした.まる.