よく忘れるので


/var/www配下のパーミッションをどうすべきかについて情報が錯綜してて困ったので自分なりに調べたことをまとめておきます。

サーバープロセスが直接ファイルの変更を行うか、複数人管理かがどうかで結構変わるのでめんどくさくなってるみたいですね。

まとめ

  1. サーバープロセスがファイルの変更を行わず、sudo可ユーザーのみが変更
    /var/www 以下は全て root:root
    理由:apache, nginx などのプロセスが乗っ取られてもroot権限がないと改変できないため

  2. サーバープロセスがファイルの変更を行わず、sudo不可のユーザーも変更
    /var/www/siteftp-user:root に。
    複数ユーザーがFTPでアクセスして書き込み権を持つなら ftp-user:ftp-userで適当にユーザーをグループに追加

  3. サーバープロセスがファイルの変更を行う(WordPressなど)、
    /var/www/site 以下の必要なフォルダ、ファイルだけftp-user:www-user にして
    サーバープロセスのユーザーをwww-userに追加、apache所有には絶対にしない


phantomjs でzipファイルをダウンロードしたかったけど、ダウンロードオプションはまだ本体には取り込まれてないようなのでheadlessなChromeかFirefoxをVPSに入れて幸せな自動化処理生活を送ろうと思ったら全然うまく行きませんでした。

俺の苦労を返せ!

やったこと

めんどくさいので説明は最低限で。

FirefoxとChrome、それにSelenium Webdriverで使うためのChromeDriverをインストール

この時点で

すればFirefoxが立ち上がるはずだけどエラーが出てうまくいかない。
色々と検索してみるけど結局エラーを除去する方法は見つからず。

Rubyとか

こちらはRubyを入れてselenium-webdriverを入れるまでのよくある感じのインストールメモ。DigitalOcean上のUbuntuにrootでログインしてそのままやってます。

他にもChromiumとか試してみたけど結局すべて失敗に終わりました。


Digital OceanではOSを気軽にDropletで作成して、気軽にポイポイ捨てれるのが売りですが、そのせいで sshで新しく繋ぎ直したホストに繋ごうとすると

と怒られてしまう。

毎回、手動で該当行を削除するのはめんどくさいので最終行を削除するコマンドを使うことにした。

やり方

でOK。ブラボー、ブラボー!

ちなみに”linuxで”とは書きましたが、自分はWindowsのcygwinで使ってます。

参考

linux – Deleting last line of a file – Stack Overflow


ruby 2.1.0 も出たことだし、とりあえずさくらVPSにおいてるCentOS上に入れておこうと思ったけど、ちょっと古いバージョンしか rbenv install --list で出てくれない。

rbenv updateという便利なコマンドはないようなのでアップデート方法を調べてアップデートしてみた。

アップデート方法

どうやってインストールしたかは全く覚えてなかったけど調べてみるとどうやら git clone でインストールしたっぽいので cd ~/.rbenv; git pull するだけでOKらしい。

無事にアップデートできたのでもう一度インストールできるrubyのバージョンを確認したら ない。ない。

どうやらrubyのインストールには ruby-buildを使ってるのでそっちをアップデートしないとインストール可能なバージョンは更新されないらしい。ちなみに存在しないバージョンのインストールを試みるとこんな感じに教えてくれる。

ruby-build のアップデート

ruby-buildもgit cloneしてるだけなので、 cd .rbenv/plugins/ruby-build/; git pull すれば最新の状態に反映される。後はいつも通り rbenv install --list して 2.1.0 があることを確認して rbenv install 2.1.0 でインストールできる。時間がかかるので放置しときましょう。


作業目的

さくらのVPSで自動ダウンロードしてるNHKの語学講座が大量になってきて容量が馬鹿にならなくなってきたので
mp3で出力されたものをm4aに変換しようとNeroAAC Encoderのインストール作業メモ。

インストール方法

まず

コマンドラインツールをここからダウンロードしてくる。
http://www.nero.com/enu/company/about-nero/nero-aac-codec.php

wgetで直接取ってくるなら
$ wget http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip

圧縮ファイルを展開して
$ unzip ~/NeroAACCodec-1.5.1.zip -d neroaac

実行権限を付加
$ chmod +x ./neroaac/linux/neroAac*

んで、動作を確認
$ ./neroaac/linux/neroAacEnc

が表示されれればインストール作業は終了!

エラーが出た時の対処

残念ながら自分の環境ではエラーが出てしまった。
$ ./neroaac/linux/neroAacEnc
-bash: ./neroaac/linux/neroAacEnc: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません

sudo yum install ld-linux.so.2

してld-linux.so.2をインストールしたら今度は別のエラー。

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

libstdc++.so.6を

$ sudo yum install libstdc++.so.6

で持ってこようとすると、複数バージョンがあるから選べって言われる。

Error: Protected multilib versions: libstdc++-4.4.7-3.el6.i686 != libstdc++-4.4.6-4.el6.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

$ sudo yum install libstdc++

で呼べばいいらしい。よくわからーん!
なんでそのエラーメッセージで対処法がこうなるんだろう…?

んで、これだけだとだめでこの後に

$ sudo yum install libstdc++.so.6

を呼べば上手くいった。つまりやったことは

$ sudo yum install ld-linux.so.2
$ sudo yum install libstdc++
$ sudo yum install libstdc++.so.6

の3つ。

やっと動いた

あとは /usr/local/bin にでも移動して終了。インストールしたユーザーしか使わないなら必要なし。

neroAacEncの使い方

基本的な使い方は

neroAacEnc.exe -br 32000 -if input_file.wav -of output_file.m4a
32kb/sのm4aファイルに変換。

neroAacEncはwavファイルしかインプットに使えないので
ffmpegでmp3をwavに変換して、それをpipeでそのままneroAacEncに渡す場合はこう。

$ ffmpeg -i input_file.mp3 -acodec pcm_s32le -ac 1 -f wav - | neroAacEnc -if - -br 32000 -ignorelength -of output_file.m4a

-acは 音声のchなので適宜変える。

結果

これだけ頑張ってインストールしたけども、NHKのラジオ音声をコレ以上ビットレート下げるとハッキリとわかるぐらいに音声が劣化したので自動変換するのはやめておいた。

悲しいけど、まあいつか使うことがあるかも知れないと思い込むことにしよう…。

参考

Nero AAC Encoder をLinux (Ubuntu)で使えるようにする手順メモ | 銀メモ -SilveryMemo-
http://silverymemo.wordpress.com/2012/01/07/article-2329/

decode 5.1 audio with ffmpeg and pipe to neroaacenc ? [Archive] – Doom9's Forum
http://forum.doom9.org/archive/index.php/t-141723.html


前回の記事の続きです。

NHK語学のラジオ講座をさくらのVPSで自動ダウンロード
http://programming.ironsand.net/2012/auto-download-nhk-language-mp3-by-vps/

今回はさくらVPSにダウンロードしたmp3をSugarsyncにアップロードするについて解説します。

さくらのVPS上にSugarSyncやDropboxを常駐させるのはできるのかどうかわかりませんでしたし、できてもメモリを食いそうなので今回はSugarSyncが提供するAPIを使用します。

自動的にSugarSyncにファイルをアップロードさせるための手順は以下の流れになります。

1. APIを使うためにSugarSyncのDeveloperに登録
2. upload_nhkradio.rb の設定
3. cronの設定

1. APIを使うためにSugarSyncのDeveloperに登録

まずSugarSyncのAPIを使うためにDeveloperとして登録を行います。
http://www.sugarsync.com/developer/signup

もしSugarsyncのアカウント自体を持ってない方がいたら、まずこちらからSugarSync自体のアカウントを作ってください。

Developer登録をすると Access Key IDPrivate Access Key が手に入りますのでメモっていてください。あとで必要になります。

次に[Create App]から新しいアプリの登録を行いアプリケーションキーを取得してください。

新しいアプリの作成には以下の5つの情報を入力する必要があります。

Name:[アプリ名]”NHK Radio Uploader”とか適当に
Publisher:[製作者] #名前をいれておきましょう。
Description:[詳細] “Upload NHK radio mp3” とでも。
Support URL:[作者サイト] 自分はTwitterのアカウントいれてます。
Support Email:[連絡先] 普通に自分のメールアドレスを。

以上でAppが作れたら App ID が入手できますのでコレもメモっておいてください。

2. upload_nhkradio.rb の設定

必要な情報が揃いましたので upload_nhkradio.rb の設定を行います。

まずupload_nhkradio.zipをダウンロードして解凍し、sugarsync.rb, upload_nhkradio.rb, upload_nhkradio_ini.rbの3つのファイルを取り出してください。

そしてupload_nhkradio_ini.rbを開いて先ほど入手した情報とアップロードするフォルダ名を設定します。

設定がおわったら3つのファイルを前回の記事で作成したCaptureStream.rbが置いてあるnhklangディレクトリにWinSCPなどでアップロードします。

これでアップロードする準備は整いました。

$ruby upload_nhkrandio.rb

とするだけでアップロードが開始されるはずです。(時間が掛かるので注意)

3. cronの設定

ここまで来れば後は前回設定したcronに少し設定を加えるだけです。

してcronの設定を開き

でcronの設定ファイルを開いて

の1行を加えて全ての設定は終了です。

これで来週から月曜日の12時頃にはパソコンのローカルフォルダに自動的に語学講座のmp3がダウンロードされてるはずです。

リトル・チャロ ~ニューヨーク編~ Vol.1 ロスト・イン・ニューヨーク [DVD]
リトル・チャロ ~ニューヨーク編~ Vol.1 ロスト・イン・ニューヨーク [DVD]
NHKエンタープライズ 2008-09-26
売り上げランキング : 14644

Amazonで詳しく見る by G-Tools


NHKラジオの語学講座を毎週ダウンロードしてるんですが、
外国語を勉強してるのは海外に行くためでして、海外だとダウンロードができないことがよくあります。

なのでせっかくさくらのVPSをお金払って借りてるんだから
勝手にダウンロードするように設定しましたので参考にどうぞ。

月曜日の12時頃には決めておいたフォルダにmp3ファイルができてます。
実際に先週から動かしてみてますが、こりゃ楽でいいです。
SugarSync にアップロードしてるので海外にいるときにiPhoneがあるだけで新しい音声を聞くことも出来ます。

記事が長くなるので今回の
さくらVPSを使って自動的にNHKラジオ講座をダウンロード

次回の
さくらVPSにダウンロードしたmp3をSugarsyncにアップロードする

の2つにわけて解説していきます。

自動的にNHKラジオ講座をダウンロードするには以下の4つの手順が必要です。

1. flvstreamerのダウンロード、コンパイル
2. Rubyのインストール
3. CaptureStream の設定
4. cronの設定

1. flvstreamerのダウンロード、コンパイル

flvstreamer をインストールするんですが、
まずさくらのVPSが32ビットなのか64ビットなのか確認します。

$ cat /proc/cpuinfo | grep flags

して値に lm が含まれていれば64bitのCPUです。

次に

$ uname -a

X86_64とかamd64とかが表示されたら、64ビット版のカーネルです。

64bitだとわかったので、64bitのflvstreamerをインストールしたいんですが、
32bitしかバイナリがおいてないので自分でコンパイルします。

# yum install ruby

やってることは

1. wget で flvstreamerの圧縮されたソースコードをダウンロード
2. tar で圧縮ファイルを展開
3. 展開したファイルに移動してビルド
4. 引数なしで動かしてインストールが正常終了したか動作確認

となります。

動作を確認したら

とHOMEフォルダ直下にbinを作って、そこに置いておきます。
( ~/ はユーザーのHOMEディレクトリ)

それからついでにbashにPATHを通しておきましょう。

$vi ~/.bashrc

でBashの設定ファイルを開いてファイルの最後に
PATH="$PATH":~/bin
を追加しておきます。

$source ~/.bashrc

として設定を反映させておきましょう。
これでどこからでもflvstreamerを呼び出せるようになりました。

2. rubyのインストール

次にCaptureStream.rbを動かすためにrubyをインストールします。

以前は yum で入るRubyのバージョンが1.8.5だったので、1.8.7を入れるためにソースからインストールしていたようですが、今は1.8.7が普通に入るので yum でインストールします。

sudo yum install ruby

3. CaptureStream の設定

まず CaptureStream.rb をダウンロードしてきます。
http://sourceforge.jp/projects/capturestream/releases/

ダウンロードしてきた CaptureStream.rbをテキストエディタで開いて設定します。

中に設定方法が書いていますが、

$default_target = []

$default_target = ["business1","business2","chinese","french", "italian", "hangeul", "german", "spanish", "russian", "levelup-chinese", "levelup-hangeul"]

のようにダウンロードしたい講座名を指定します。

これだけで動作は問題ないのですが、
自分の場合は保存ファイル名が「毎日ドイツ語_2012_06_04」のよりも「毎日ドイツ語-2012-06-04」の方が好きなので

の値を「”%k_%Y_%M_%D” → “%k-%Y-%M-%D”」と変更しました。

設定が終わったらnhklangなど適当な名前のフォルダを作ってWinSCPなどでCaptureStream.rbをアップロードします。

ここまでの設定で既に語学講座のダウンロードはできるようになっているはずなので、

で実際にファイルがダウンロードできてるか確認しておいたほうが良いでしょう。
うまくいかなかったらコメント欄に質問をどうぞ。

4. cronの設定

あとは毎週決まった時間にダウンロードするためのcronの設定を行います。

でcronの設定ファイルを開いて

と書いて保存します。これで毎週月曜日の11時にダウンロードが行われます。
ただ、実際に来週まで動くかどうか待つのは面倒だという方は時間設定を数分後にして動作確認をすると良いでしょう。

参考

Ubuntu 10.4 Server上でCaptureStream Ruby版を使ってNHK語学講座をダウンロード: らぶらぶ♪じゃんく
http://app.m-cocolog.jp/t/typecast/27561/29112/69881215?page=2

CaptureStream Ruby版を使ってCentOS 5.5上でNHK語学講座をダウンロードする – fujitaka’s lifelog
http://d.hatena.ne.jp/fujitakastyle/20110403/1301837105

Linuxでの32ビットと64ビットマシンの見分け方。 – IT memorandum
http://d.hatena.ne.jp/jun-ya/20090511/1242028435

CaptureStream Ruby版を使ってCentOS 5.5上でNHK語学講座をダウンロードする – fujitaka’s lifelog
http://d.hatena.ne.jp/fujitakastyle/20110403/1301837105

さくらVPSでRuby on Railsを動かすメモ – @yuumi3のお仕事日記
http://d.hatena.ne.jp/yuum3/20100927/1285567203

[さくらVPS] デフォルトだと日本語が文字化けするよね? | DENPA GROOVE
http://jokami.mydns.jp/2010/10/01/%E3%81%95%E3%81%8F%E3%82%89vps%E3%80%80%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A0%E3%81%A8%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%8C%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%99%E3%82%8B/

cron(クーロン)の設定 – プログラムを定期的に自動実行 [Fedora, RedHat, CentOS] – Linux
http://memorva.jp/memo/linux/cron.php


さくらのVPSにputtyを使ってSSHでログインしてる時に間違えて /usr/bin/python を叩いてしまい(コピーしようとしたら貼りつけてしまった。)インタプリタを終了できなくてちょっと焦ったので終了方法のメモ。

‘Use Ctrl-D (i.e. EOF) to exit.’

とか言ってるくるけど Ctrl-D をおしてもサーバーまで届かない。

正しい終了方法は

だそうです。 ああ、そうか sys をインポートしなきゃならんのか。プログラムを書いてる時だと気づくのにインタプリタ普段使わないから何かちがうものだと勝手に思い込んじゃってたよ…。

参考

pythonインタプリタを終了する
http://blog.justoneplanet.info/2010/08/07/python%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%82%92%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B/