2014/08/10

Rsapberry Pi に MediaTomb と ownCloud 第2話

パッケージインストール編

●権限追加

自ユーザーにwww-dataの権限を追加

# usermod -G www-data [ hogehoge ]

●USBメモリのマウント

USBメモリを挿し込んで入電。dmesg等でデバイス名を確認しておく。

# mkdir /var/media
# mkdir /var/www
# chmod 777 /var/media
# chmod 777 /var/www
# chown pi:pi /var/media
# chown www-data:www-data /var/www

fstabの編集
# vi /etc/fstab

/dev/sda1       /var/media      ext4    defaults          0       0
/dev/sdb1       /var/www        ext4    defaults          0       0

再起動してUSBメモリにアクセスできることを確認する。

●必要パッケージのインストール

$ su -
# apt-get install apache2 php5 sqlite3
# apt-get install libapache2-mod-php5 php5-intl
# apt-get install php5-gd php-xml-parser php5-curl
# apt-get install php5-sqlite php-apc
# apt-get install mediatomb
# apt-get install samba samba-common-bin

●MediaTombの設定

# vi /etc/mediatomb/config.xml

<protocolInfo extend="no"/>

<protocolInfo extend="yes"/>

↓間に2行追加
  <import hidden-files="no">
    <filesystem-charset>UTF-8</filesystem-charset>
    <metadata-charset>UTF-8</metadata-charset>
    <scripting script-charset="UTF-8">

↓非コメント化
        <map from="avi" to="video/divx"/>

↓mimeセクションに追加
      <extension-mimetype ignore-unknown="no">
        <map from="jpg" to="image/jpeg"/>
        <map from="jpeg" to="image/jpeg"/>
        <map from="gif" to="image/gif"/>
        <map from="png" to="image/png"/>
        <map from="m4a" to="audio/mp4"/>
        <map from="m4v" to="video/mp4"/>
        <map from="mp4" to="video/mp4"/>
        <map from="mpg" to="video/mpeg"/>
        <map from="MPG" to="video/mpeg"/>
        <map from="mpeg" to="video/mpeg"/>
        <map from="m2p" to="video/mpeg"/>

# vi /etc/default/mediatomb
INTERFACE=""
INTERFACE="eth0"

サービスのリスタート
# service mediatomb restart

他PCから「http://192.168.xxx.yyy:49152/」にアクセス
MediaTombの設定画面が開けばOK

●sambaの設定

# vi /etc/samba/smb.conf

[media]
comment = media
path = /var/media
writeable = yes
guest ok = yes
create mask = 0777
directory mask = 0777
read only = no
browseable = yes
force user = pi
public = yes

サービスのリスタート
# service samba restart

他PCから「smb://[ホスト名]/media/」にアクセス
ファイルの読み書きができればOK

●Apacheの設定

起動プロセス制限
# vi /etc/apache2/apache2.conf

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
↓↓
<IfModule mpm_prefork_module>
    StartServers          1
    MinSpareServers       1
    MaxSpareServers       3
    MaxClients            3
    MaxRequestsPerChild   2
</IfModule>
※値は必ずしも最適値ではない

Apacheの動作設定
# vi /etc/apache2/sites-enabled/000-default

<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
<Directory /var/www/>
↓↓
<Directory /var/www/>
  Options -Indexes ExecCGI FollowSymlinks
  AllowOverride All
  Order allow,deny
  allow from all
<Directory /var/www/>

ログレベル設定
# vi /etc/apache2/apache2.conf

LogLevel warn
↓↓
LogLevel emerg

サービスのリスタート
# service apache2 restart

他PCから「http://192.168.xxx.yyy」にアクセス
何かが表示されてればOK

●ownCloudインストール

ownCloud本体のダウンロード
http://owncloud.org/install/
Unix版のダウンロードアドレスをホストマシンのクリップボードにコピーする。

# cd /var/www
# wget https://download.owncloud.org/community/owncloud-x.x.x.tar.bz2

# tar -xjf owncloud-x.x.x.tar.bz2
# chown -R www-data:www-data owncloud

.htaccessの設定
owncloud の.htaccessをapacheの設定値として流用する
# cp /var/www/owncloud/.htaccess /etc/apache2/conf.d/owncloud.conf

# vi /etc/apache2/conf.d/owncloud.conf
(ファイル先頭に追加)
Alias /owncloud /var/www/owncloud
<Directory /var/www/owncloud>

(ファイル末尾に追加)
</Directory>

Apache2を再起動し、ブラウザでアクセスしてみる。
# service apache2 restart

http://192.168.xxx.yyy/owncloud
管理者アカウントを設定。
その他の詳細設定はお好みで設定(デフォルトのままでもOK)。

Rsapberry Pi に MediaTomb と ownCloud 第1話

今までのをまとめて書き直し

Raspbianインストール編

B+購入記念にMediaTombとownCloudをインストールして24時間運用してみる。

準備したもの
・RaspberryPi ・・・ 1 枚
・SDカード ・・・ 1 枚 (Raspbian用)
・USBメモリ ・・・ 2 本 (MediaTomb用 1本 ownCloud用 1本)
逝っちゃった時の被害を最小限に抑えるため、それぞれ独立させた。
・・・が有効な方法なのかは不明。

●Raspbianインストール

ホストマシンにSDカードを差し込む
自動認識する場合はアンマウント(全パーティションをアンマウント)
$ umount /dev/mmcblk0p1

ダウンロードしたRaspbianイメージを書き込む
$ sudo dd if=YYYY-MM-DD-wheezy-raspbian.img of=/dev/mmcblk0 bs=1M

固定IPでセットアップするために一旦挿し直す
マウント先のinterfacesファイルを編集
$ sudo vi /media/[マウント先]/etc/network/interfaces

iface eth0 inet dhcp
↓↓
iface eth0 inet static
  address 192.168.xxx.yyy
  network 192.168.xxx.0
  netmask 255.255.255.0
  broadcast 192.168.xxx.255
  gateway 192.168.xxx.zzz
  dns-nameservers 192.168.xxx.zzz

キーボード設定ファイルを編集
$ sudo vi /media/[マウント先]/etc/default/keyboard

XKBMODEL="pc105"
XKBLAYOUT="gb"
↓↓
XKBMODEL="jp106"
XKBLAYOUT="jp"

RaspberryPiに挿し込んで、いざ入電!

●Raspbianセットアップ

ホストからラズパイに接続
$ ssh pi@192.168.xxx.yyy

初期設定
$ sudo raspi-config

[ 1 Expand Filesystem ]
[ 4 Internationalisation Options ] - [ I1 Change Locale ] - [ [*] ja_JP.UTF-8 UTF-8 ] - [ ja_JP.UTF-8 ]
[ 4 Internationalisation Options ] - [ I2 Change Timezone ] - [ Asia ] - [ Tokyo ]
[ 8 Advanced Options ] - [ A2 Hostname ] - [ 任意のホスト名 ]
[ 8 Advanced Options ] - [ A3 Memory Split ] - [ 16 ]


再起動してから再接続
rootパスワード定義
[HOST]$ ssh pi@192.168.xxx.yyy
$ sudo passwd root

ユーザー作成
$ su -
# useradd -m -s /bin/bash [ 任意のユーザー名 ]
# passwd [ 任意のユーザー名 ]

viを高機能版に変更
# apt-get install vim
# update-alternatives --config editor
 ⇛ "vim.basic"を選択する

rootログイン禁止、パスワード認証禁止、チャレンジレスポンス認証を許可
# vi /etc/ssh/sshd_config

PermitRootLogin yes
↓↓
PermitRootLogin no

ChallengeResponseAuthentication no
↓↓
ChallengeResponseAuthentication yes

#PasswordAuthentication yes
↓↓
PasswordAuthentication no

ttyの一部を無効化
# vi /etc/inittab

2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
↓↓
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

システム&ファーム更新
# apt-get update
# apt-get upgrade
# apt-get autoremove
# rpi-update

不要サービス停止
# update-rc.d dbus disable
# update-rc.d triggerhappy disable
# update-rc.d alsa-utils disable
# update-rc.d lightdm disable
# update-rc.d motd disable
# update-rc.d plymouth disable
# update-rc.d ntp disable

ntpクライアント(ntpdate)インストール&時刻合わせ設定
# apt-get install ntpdate
# vi /etc/default/ntpdate

NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
↓↓
#NTPSERVERS="0.debian.pool.ntp.org ...
NTPSERVERS="0.ntp.nict.jp 1.ntp.jst.mfeed.ad.jp 2.ntp.ring.gr.jp"

# crontab -e

0 1 * * * /etc/network/if-up.d/ntpdate > /dev/null 2>&1

アカウントpiを停止するために再起動(作成したアカウントでログインしなおす)
# reboot

[HOST]$ ssh [hogehoge]@192.168.xxx.yyy
$ su -
# passwd -l pi

追加アカウントでsudoが使えるようにする
# visudo

[hogehoge] ALL=(ALL) ALL

fstabを編集しRAMDiskを有効化(/tmpなど をtmpfsへ)
# vi /etc/fstab

/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
↓↓
/dev/mmcblk0p1  /boot           vfat    defaults          0       0
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       0
tmpfs           /tmp            tmpfs   defaults,size=32m 0       0
tmpfs           /var/tmp        tmpfs   defaults,size=16m 0       0
tmpfs           /var/log        tmpfs   defaults,size=32m 0       0

仮想メモリ停止
# dphys-swapfile swapoff
# dphys-swapfile uninstall
# update-rc.d dphys-swapfile disable

ログ出力抑制
# vi /etc/rsyslog.conf
(抜粋)
###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
#kern.*                         -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
#mail.*                         -/var/log/mail.log
#user.*                         -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
#mail.err                       /var/log/mail.err

#
# Logging for INN news system.
#
#news.crit                      /var/log/news/news.crit
#news.err                       /var/log/news/news.err
#news.notice                    -/var/log/news/news.notice

#
# Some "catch-all" log files.
#
#*.=debug;\
#       auth,authpriv.none;\
#       news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                         :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
#
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
#daemon.*;mail.*;\
#       news.err;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       |/dev/xconsole

ログ初期設定スクリプト
# vi /etc/init.d/make-logfile

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          make-varlog-files
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create /var/log/... files on tmpfs at startup
# Description:       Create /var/log/... files needed by system daemon
### END INIT INFO

#
# main()
#
case "${1:-''}" in
  'start')

    mkdir -p /var/log/ConsoleKit
    mkdir -p /var/log/apt
    mkdir -p /var/log/fsck
    mkdir -p /var/log/mrtg
    mkdir -p /var/log/ntpstats
    mkdir -p /var/log/samba
    mkdir -p /var/log/squid3
    mkdir -p /var/log/apache2

    chown root.adm /var/log/mrtg
    chown ntp.ntp /var/log/ntpstats
    chown root.adm /var/log/samba
    chown proxy.proxy /var/log/squid3
    chown root.adm /var/log/apache2
    chmod 750 /var/log/apache2

    touch /var/log/lastlog
    touch /var/log/wtmp
    touch /var/log/btmp
    touch /var/log/apache2/access.log
    touch /var/log/apache2/error.log
    touch /var/log/apache2/other_vhosts_access.log


    chown root.utmp /var/log/lastlog
    chown root.utmp /var/log/wtmp
    chown root.utmp /var/log/btmp
    chown root.adm /var/log/apache2
    chown root.adm /var/log/apache2/access.log
    chown root.adm /var/log/apache2/error.log

    chmod 640 /var/log/apache2/access.log
    chmod 640 /var/log/apache2/error.log


   ;;
  'stop')
   ;;
  'restart')
   ;;
  'reload'|'force-reload')
   ;;
  'status')
   ;;
  *)
   echo "Usage: $SELF start"
   exit 1
   ;;
esac

サービス登録
# chmod 755 /etc/init.d/make-logfile
# update-rc.d make-logfile defaults 01 10

再起動してエラーが発生しないか確かめる

フォロワー