SSブログ

VPS設定:Subsonic - ディレクトリ構成の罠 - その2 [iPhone]

せっかくのSubsonicを音楽だけではもったいないと思い、動画も見られるように
設定>一般>音楽フォルダ にWevDAVで動画を入れているディレクトリを指定したみた。

だがしかし、androidのSubsonicではフォルダー内容が空。
これはどういうことなんだろう。。。。と検索してみると、Subsonicの考え方はこの「音楽フォルダー」
で指定した中にフォルダー単位でメディアファイルが収録されているという発想らしい。
現状は指定したフォルダー直下にファイルがあるので、それらは見えない。
(検索では出てくるらしい)

解決策はこれまた、こつこつと手作業でフォルダー作りとなる。
指定したフォルダー以下に、「Movie」とか「PV」とか「Other」とか。。。。

AirVideoでも使っている場所なので、途中でやめた。AirVideoの方が使いやすいし、Androidで
動画を見るにはブラウザー経由かWebDAV直接にしよう。


VPS設定:Subsonic - Download機能の罠 [iPhone]

Subsonicには曲やアルバム、プレイリスト内の曲をZIPにまとめてDownloadする機能がある。
ユーザー毎に利用可否を設定できるけど基本NGにしていたのでなかなか気がつかなかったことがある。

このZIPファイル、ファイル名自体も中のディレクトリ名、ファイル名も日本語は盛大に文字化けします。
確かに何に使うのか分からない機能だし、使えるユーザーもadmin以外は設定していないからどうでも
良いことなのかもしれないけど気になる。

ということで色々と検索してみると、 プログラム修正が必要らしい。
で、早速修正開始。
1.ソースの取得&修正
  やっぱりsvn使った方が楽そうなので、最新の安定版4.6を取得。ちなみにsvnは元からインストール済み。
  subsonicディレクトリを作って、その中からsvnを利用。
  svn co -r2585 https://subsonic.svn.sourceforge.net/svnroot/subsonic/trunk release-4.6
  リビジョンは2585がversion 4.6
  修正対象はDownloadController.javaなので、それを探して修正。
  ちなみに場所はsubsonic-main/src/main/java/net/sourceforge/subsonic/controller/DownloadController.java
  修正内容は文字コードをファイル名もZIP内もMS S-JISにしてしまうので、プラットフォームによっては問題かも。
  >>>>
  199行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
  232行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
  262行 out.setEncoding("MS932"); // Set Encode MS S-JIS 追加
  171行 file.getName()を「new String(file.getName().getBytes("MS932"), "ISO-8859-1")に変更
  190行 dir.getName()をnew String(dir.getName().getBytes("MS932"),"ISO-8859-1")
  225行 file.getName()を「new String(file.getName().getBytes("MS932"), "ISO-8859-1")に変更
  <<<<
2.javaのコンパイル
  JDKじゃなくても大丈夫。とりあえず。但し、mavenはインストールされていないので、そこから開始。
  まずは最新のmavenを入手。
  wget http://www.apache.org/dyn/closer.cgi/maven/source/apache-maven-3.0.4-src.tar.gz
  適当な場所に展開。めったに使いそうもないので、Pathを通すこともなく、無難に/usr/local/mavenに展開してみた。
  更に、ソースのルートにあるpom.xmlのBuildnumber展開がどうしてもうまくいかなかったので、直接修正してみた。
  build_number.txt設定部分の{$BuildNumber}を今回は2585に直接修正。
  やっとここでコンパイル。
  /usr/local/maven/bin/mvn install
  targetディレクトリ内にsubsonic.warが作成される。
  booterも作り直した方がいいかもしれないということなので、subsonic-booterディレクトリに移動して
  /usr/local/maven/bin/mvn install
  targetディレクトリ内にsubsonic-booter-jar-with-dependencies.jarが作成される。
3.インストール
  念のためのバックアップ
  /usr/share/subsonicへ移動
  cp subsonic.war subsonic.war.org
  cp ubsonic-booter-jar-with-dependencies.jar ubsonic-booter-jar-with-dependencies.jar.org
  作成した2ファイルをコピー
  service subsonic restart

これでDownload機能も文字化けなく使えるようになった。
しかし、WebDAVが使えているというのに、この行為に果たして意味があるのか。。。。
分からない。。。。。。。。 


VPS設定:Subsonic - ディレクトリ構成の罠 [iPhone]

自宅PCでは音楽を Artist名 - Album名 のフォルダー名で管理している。
iTunesでもAudiogalaxyでもフォルダー構成とは別にTagから情報管理しているので、この構成の
方が「CDを並べている」感じがして良かった。

ところが、Subsonicではフォルダー名(ディレクトリ名)をアルバム名と認識するようで、推奨される構成は
Artist名のフォルダー\Album名のフォルダーということらしい。
現状の構成だと、SubsonicのWebでは左の一覧にフォルダー名「Artist名 - Album名」と出てしまい
少し鬱陶しい。
ここはArtist名として目次的に使いたいので、ここは一工夫。。。。できる訳もなく、素直にディレクトリ構成
を変えましたとさ。手作業で。。。
更に残念なことに、Cover ArtはAlbum単位というかディレクトリ単位になるので、ディレクトリ内に複数の
Cover Artがあると、最初のものもしくはjpegファイル等になってしまう。
Single集めてUK Top 40とか作っているとちょっと空しい。

これだけだと悔しいので、少しは良いことはないかと考えてみる。
Subsonicでは索引(左側のABC...部分)を自由に設定できる。
設定>一般>索引の頭文字 がその部分。
ここに「あいうえお...」としても漢字を認識してくれるわけではないが、2バイト文字のArtistが少ないならば
一工夫できる。
例えば、
  A B C ...というところを
  A(A相安新) B C...とすると、相川さんとか、安室さんとか、新垣さんとかが「A」の索引に入る。
読みが違ってもまとめられてしまうので、日本人のコレクション主体だとちょっと問題ありかも知れないけど、
自分のコレクションでは重複はなかったから大丈夫。
問題は、追加がある度に設定を変える必要があること。
まぁ増えないということで大丈夫。

これで快適に。。。。と思ったらまだまだ罠は続いていた。。。。


VPS設定:Subsonic [iPhone]

動画はOKになったから、次は音楽。
自宅PCではAudiogalaxyだからLinux用を使ってみたものの、、、、日本語のファイルは読み込まない。
Tag内の日本語は大丈夫なんだけどなぁ。

ということで、代替としてSubsonicを導入してみる。これも詳しい手順は公開済み。便利なサイトです。
これまた差分だけ記載してみると、
1.javaのバージョン
  Sun java7で動いてる。本家のForumでは非互換かもという記事はあるものの、明確ではないので
  このままでいく。
2.インストールするライブラリ
  vorbisは使わないので入れない。
  ffmpegとlameは本体と一緒に入るので不要。
  ということで、メディア用のライブラリは要らないけど、それ以外で「ない」とエラーになったので追加。
  yum install libncurses.so.5
3.SSL対応:自己証明書の使用
  SubsonicでSSL使用にするとsubsonic.orgが発行した証明書を使うので、「不正な証明書」になって
  鬱陶しい。
  それで自己証明書を利用。
  Keystore作成:keytoolにPathが通っていないので以下の通り。
  /usr/java/jdk1.7.0_03/bin/keytool -genkey -alias subsonic -keyalg RSA -dname N=wwwAAAAAAA.sakura.ne.jp,OU=subsonic,O=なにか,L=場所を,S=書いておく,C=JP" validity 3560 -keystore /etc/ssl/certs/subsonic.keystore -storepass xxxx -keypass xxxx
  xxxは適当なパスワード。
  SubsonicをKeystoreを使用するように修正
  /usr/bin/subsonicを修正
    113行のJAVA設定に追加
    -Dsubsonic.ssl.keystore=/etc/ssl/certs/subsonic.keystore \
    -Dsubsonic.ssl.password=subsonic \
  Subsonic再起動
  service subsonic restart

これでChromeを使っても証明書インストールさえすればOK。
快適に使える。。と思ったらここにもまた落とし穴が。。。


VPS設定:AirVideo [iPhone]

動画もたくさん収納できたので、メディアサーバーとして働いてもらおう。
自宅PCに入れているAirVideoを導入。詳しい手順はすでに公開されているので、差分だけ記録。

まずは動作環境。imotenでSun jave 7を入れているから、Open JDK 1.6ではなくて、java 7
をそのまま使用する。よって追加のインストールはこれだけ。
  yum install yasm git SDL-devel faac faad2-devel
ポートオープンも忘れずに。45631が標準。自宅PCもこれなのでそのまま。
  /etc/sysconfig/iptablesを編集。
  -A INPUT -p tcp -m tcp --dport 45631 -j ACCEPT
  service iptables restart
ログのローテーションについてはAirVideoの再起動が必要みたい。よって。
  /etc/logrotate.d/airvideoを編集
>>>>
/var/log/airvideo.log {
    notifempty
    missingok
    sharedscripts
    copytruncate
    postrotate
        /etc/init.d/airvideo restart > /dev/null || true
    endscript
}
<<<<
後は起動するだけ。これもなんとなく手起動で。
  service airvideo start

ということで、iPhoneからAirVideoでしっかりと見えることを確認。トランスコードもちゃんと
しているみたいだし、自宅PCが止まっていてもビデオが見られる。
でもテレビ録画用に24時間立ち上がっているATOMサーバーだから止めることもないし。。。


VPS設定:WebDAV &文字対応 [iPhone]

どんどんコピーということでWindowsのWebフォルダーを使っていると、使えないファイルやフォルダー
があることを発見。
どうやら"&"が入るとそれ以降の文字が表示されないようだ。
まあ、&使う方が悪いんだけど、いまさらWindows側を修正するのも癪なので、対応方法を検索してみる。

どうやらapacheを修正するしかないみたい。ということで、早速対応。
必要となる修正内容もしくはパッチはこちら

SVNでソースを取ってくるのが面倒だったので、PCで丸ごとソースを取ってきてrootで作業開始。
patchの対象はmod_dav.cなので、modules/dav/mainへ移動。
  cd modules/dav/main
念のためにバックアップ。
  cp mod_dav.c mod_dav.c.org
パッチを当てるなり、手修正するなりでソース修正。内容を見たかったので直接修正してみた。
修正が終わったらmake開始。ソースのルートディレクトリでまず設定を行う。
  ./configure --enable-so --enable-dav=shared
早速make
  make
ちゃんと修正していたらきちんとできるはず。エラーが出てないことを確認して、patch後のモジュールを
確保する。場所はmodules/dav/main/.libs/mod_dav.so
これを/usr/lib64/httpd/modules/にコピー。バックアップも忘れずに。
  cd /usr/lib64/httpd/modules/
  cp mod_dav.so mod_dav.so.org
  cp xxxmodules/dav/main/.libs/mod_dav.so mod_dav.so
  →xxxはソースのルート
  service httpd restart

これで&文字も大丈夫。どんどんコピー。。。


VPS設定:WebDAV [iPhone]

いよいよディスク容量を有効活用するためにWebDAVを導入。
これでWindwosやMac、それにiPhoneからも読み書きができるストレージができる。

さくらVPSはapacheが導入されていないので、そこから開始。
rootになってから以下の作業を行う。
1.インストール:yumが使える:これでインストールされるのはapacheの2.2.22らしい。
  yum install httpd
2.とりあえず設定:
  /etc/httpd/conf/httpd.confを編集:編集箇所は以下。
  >>>
  ServerTokens OS→Prod
  KeepAlive Off→On
  ServerSignature On→Off
  <IfModule prefork.c>
  StartServers       8→5
  MinSpareServers    5
  MaxSpareServers   20→10
  ServerLimit      256→15
  MaxClients       256→15
  MaxRequestsPerChild  4000
  </IfModule>
  #LoadModule authn_anon_module modules/mod_authn_anon.so
  #LoadModule ldap_module modules/mod_ldap.so
  #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
  #LoadModule proxy_module modules/mod_proxy.so
  #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
  #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  #LoadModule proxy_http_module modules/mod_proxy_http.so
  #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
  #LoadModule proxy_connect_module modules/mod_proxy_connect.so
  #LoadModule authn_dbm_module modules/mod_authn_dbm.so
  #LoadModule authz_dbm_module modules/mod_authz_dbm.so
  #LoadModule ext_filter_module modules/mod_ext_filter.so
  #LoadModule usertrack_module modules/mod_usertrack.so
  #LoadModule version_module modules/mod_version.so
  #LoadModule suexec_module modules/mod_suexec.so
  #LoadModule deflate_module modules/mod_deflate.so
  #LoadModule speling_module modules/mod_speling.so
  <<<<
  とりあえず、HPではないので、プロセス数を最小限にするということと、メモリ節約のために不要そうなmodule
  は使わないようにコメントアウト(#つける) 
  Webテストページ非表示にする設定:見えるといやな感じだし。
  conf.d/welcome.confを編集
  すべてコメントアウト
  conf/httpd.confを編集
  >>>>
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks
    Options -Indexes FollowSymLinks
  </Directory>
  <<<<
  安全のためには自己証明書でもSSLがいいので、mod SSLインストール
  yum install mod_ssl
  サーバー証明書作成
  /etc/pki/tls/certs/で作業すると楽。xxxxはお好み。AAAAAAAは決まってるもの。
  make server.key
  PWD:xxxx
  make /etc/pki/tls/certs/server.csr
   Country Name (2 letter code) [XX]:JP
   State or Province Name (full name) []:どこでも
   Locality Name (eg, city) [Default City]:いいから
   Organization Name (eg, company) [Default Company Ltd]:書いて
   Organizational Unit Name (eg, section) []:
   Common Name (eg, your name or your server's hostname) []:wwwAAAAAAA.sakura.ne.jp
   Email Address []:
   Please enter the following 'extra' attributes
   to be sent with your certificate request
   A challenge password []:xxxx
   An optional company name []:
  openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 3650
  chmod 400 /etc/pki/tls/certs/server.key
  chmod 400 /etc/pki/tls/certs/server.csr
  chmod 400 /etc/pki/tls/certs/server.pem
  apacheでSSLを使うように設定
  /etc/httpd/conf.d/ssl.confを編集。
  >>>>
  DocumentRoot "/var/www/html"
  SSLCertificateFile /etc/pki/tls/certs/server.pem
  SSLCertificateKeyFile /etc/pki/tls/certs/server.key
  <<<<
  ポートオープンしないと大変。
  /etc/sysconfig/iptablesを編集
  -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
  service iptables restart

3.共有フォルダの設定
  ファイルの置き場所。面倒なのでデフォルトの下に作る。権限はapacheに変更
  mkdir /var/www/html/dav
  chown apache.apache /var/www/html/dav
  chmod 755 /var/www/html/dav (700から変更)
  ここでポイント。WebDAVで簡便なアクセスコントロールをしてあるユーザー(adminuser)はどこでも編集可能
  だけれども、その他のユーザーは一部のディレクトリだけ編集可能で他は参照のみとしたい。
  というようなことを行う設定。
  WebDAV設定ファイル:/etc/httpd/conf.d/webdav.confを編集。
  >>>>
  alias /dav/ "/var/www/html/dav/"
  <IfModule mod_dav.c>
    DAVMinTimeout 600
    <Location /dav>
     DAV On
     EnableSendfile off
     SSLRequireSSL
     AuthType Basic
     AuthName "Login WebDAV"
     AuthUserFile "/etc/httpd/conf/.htpasswd"
     <Limit PROPFIND GET HEAD OPTIONS>
       Require valid-user
     </Limit>
     <LimitExcept PROPFIND GET HEAD OPTIONS>
       Require user adminuser
     </LimitExcept>
     Order deny,allow
     Deny from all
     Allow from all
    </Location>
    <Location /dav/Documents>
     DAV On
     EnableSendfile off
     SSLRequireSSL
     AuthType Basic
     AuthName "Login WebDAV"
     AuthUserFile "/etc/httpd/conf/.htpasswd"
     Require valid-user
     Order deny,allow
     Deny from all
     Allow from all
    </Location>
  </IfModule>
  <<<<
  これでadminuserはどこでもいじれるけれども、それ以外のユーザーはDocumentsの下のみ編集可能になる。
  気合があればユーザー毎に設定もできるけれども、今はこの辺で。
  忘れずにロックファイル作成:複数ユーザでの編集を制御しないと。
  touch /var/lib/dav/lockdb
  chown apache.apache /var/lib/dav/lockdb
4.アクセスユーザーの作成
  htpasswd -c /etc/httpd/conf/.htpasswd adminuser
  PWD:xxxx
  ユーザー追加
  htpasswd /etc/httpd/conf/.htpasswd 他のユーザー
5.その他の設定
  使っている最中にlogrotateのためにセッションが切れてしまうと悲しいので、ログの取得方法を
  ちょっと変更。
  /etc/logortate.d/httpdを編集
  reloadからgracefulに変更
  /sbin/service httpd graceful > /dev/null 2>/dev/null || true

6.httpd起動
  service httpd start

この設定だと、SSLの認証ファイルにパスワードがかかっているので、httpd立ち上げ時にパスワード
入力が必要になる。
よって、自動起動にはせずに、サーバーリブート時には手起動にする。

これでWebDAV:ちょっとだけアクセスコントロールが完成。
せっせとファイルをコピーしよう。上り1MのADSLは辛い。。。。。更なる落とし穴も。。。。。


VPS設定:monit [iPhone]

ということで、設定メモ

imotenの設定はどこでもあるので、まずはサーバーの監視。
ちなみにimotenはSun java7で元気に稼働中。

そもそも、imodeメールの転送をしている以上、imotenが止まってしまうとメールを見ない身勝手な人
になってしまうので、imotenのプロセスを監視して、止まっていたら通知かつGmailに連絡。という
のが目的。

それで、プロセス監視のためにmonitを導入。
ちなみにさくらVPSでOSはCentOS6.2 64bit

Rootになってから以下の作業を行う。
1.インストール
 yum install monit
 mkdir /var/monit
2.設定変更:  /etc/monit.confを編集
  >>ここから
  set daemon 120
  set logfile syslog facility log_daemon
  set mailserver smtp.gmail.com port 587 username "xxx@gmail.com" password "xxx" using tlsv1
  set alert xxx@gmail.com   # receive all alerts
  check process imoten
    with pidfile /usr/local/imoten/bin/imoten.pid
    start program = "/etc/init.d/imoten start"
    stop program = "/etc/init.d/imoten stop"
    if failed port 587 then alert
  <<ここまでが編集内容。
  imotenでのメール送信はTLSを使っているのでポート587を利用しているから、一緒にチェックしてる。
3.ファイルの権限確認
  chmod 700 monit.conf
  -rwx------ 1 root root 10964 Sep  8 18:02 monit.conf
4.自動起動の設定かつ起動
 chkconfig monit on
 service monit start

これでmonitでの監視が開始。
ServersManがおかしくなった時にはこのalertメールが山のように来て最悪だった。


久しぶりに:さくらVPS [iPhone]

なんと3年ぶりに放置していたここを更新。
色々あった訳ではなく、模型を作る時間がなくなっていただけでした。

そう言えば、去年携帯をiPhone4に変更して、その環境構築に勤しんでいたということもあったかな。
メールアドレスを変えるのが面倒かつファミ割を維持したいのでdocomoでiPhone利用。
そのために、imodeメール転送(imoten)サーバーをServersMan@VPSで作っていたけれど、
先月のメンテナンスでOpenVZのバージョンが上がったらしく、それがjavaとの相性最悪ということで
まともに動かなくなってしまいました。

衝動的にVPSをさくらVPS1Gに変更してみたら、こちらはKVMなのでやっぱり快適。
490円/月から980円/月に負担増加だけど、イライラするよりははるかにまし。
それにディスクスペースが100Gになったので、ストレージとしても使える。
ということで、設定内容を備忘録で残しておこう。

ちなみに、もけいの方は在庫が増えただけ。
 ドイツ機 204機/完成68機
 日本機 184機/完成42機
 その他 84機/完成11機
 現用機 107機/完成32機   合計:589機/完成153機
..........これは作りきれない。。。。。
陸物は数える気力もない。


ダイエット BBX

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。