2015年3月29日日曜日

Apache2でDigest認証を設定した

Aapcheで稼働しているWebサーバ上で,特定のページをパスワードで認証をかけたい!

そのために,今回はDigest認証を行いました.

一般的にベーシック認証もありますが,こちらの方がより安全とのことです.
ダイジェスト認証を設定する(AdminWeb)に従って進めました.

認証の準備

htdigestを使用するそうですが,インストールされていなかったためapt-getでインストールしました.
$ htgiest
-bash: htgiest: command not found
$apt-cache search htdigest
apache2-utils - Apache HTTP Server (utility programs for web servers)
$sudo apt-get install apache2-utils

また,Apache2のDigest認証のモジュールも有効にします. その後は当然再起動が必要ですが,まだApache2の設定が必要であるため,あとでまとめてやります.
$sudo a2enmod auth_digest
それでは,/etc/apache2/.digestpassをパスファイルとして自分の認証キーを追加します.
$sudo htdigest -c "/etc/apache2/.digestpass" "Digest Authentication" hiroyky
New password: 
Re-type new password: 
$sudo cat /etc/apache2/.digestpass  ←確認

Apacheの設定

今回は,ディレクトリではなくURL毎に制限を掛けたかったため先ほどのページとは異なり Locationで制限をかけました.といってもやり方は同じです.サイトの設定ファイルを編集します. 以前,gitlistを稼働させましたが,チームのメンバーだけなど限られた人のみが閲覧できるリポジトリにしたかったわけなのです. http://<my domain>/gitlist 以下を全て認証を行うようにします.
$sudo emacs /etc/apache2/sites-avairable/<サイトの設定ファイル>

    AuthType Digest
    AuthName "Digest Authentication" ←htdigestコマンドの2つめの引数,認証名と同じにする
    AuthUserFile "/etc/apache2/.digestpass"
    Require valid-user

で,Apacheを再起動します.
$sudo service apache2 restart

で〜きた!

2015年3月24日火曜日

GitlistでGithubみたいにWebからリポジトリを見られるようにした

GithubみたいにWebからリポジトリを確認したいな.

ODROID C1のUbuntuサーバ構築も一段落ついたので,今回はGitリポジトリをWebから閲覧できるようにしたいと思います. gitlistを使って実現します.チーム内だけの非公開リポジトリをつくるときなどに便利そうですよね.
gitlistでgitリポジトリを表示したところ

インストールと設定

$git clone https://github.com/klaussilveira/gitlist.git

$cd gitlist
$less README.md
Apacheは前回の通りインストール済みです.
$sudo apt-get install apache2

しかしREAD.mdによるとrewriteモジュールが必要なようなので有効にします.
$sudo apt-get install php5 
$sudo a2enmod rewrite 
gitlistはPHPで書かれているそうですが,まだPHPをインストールしていなかったので,インストールします.
$sudo apt-get install php5
$sudo a2enmod php5

さて,デプロイします.Apacheで設定したDocumentRootのディレクトリ以下にコピーするだけです.
cacheディレクトリがなければ作成してパーミッション変更.設定ファイルはサンプルをコピーして使います.
$sudo mv gitlist /var/www/html
$sudo chmod 777 cache
$cp config.ini-example config.ini
$emacs config.ini
[git]
client = '/usr/bin/git' ; ←git実行ファイルの場所
default_branch = 'master' ; ←デフォルトのブランチはマスターにするよ
repositories[] = '/home/git/repositories/' ;←リポジトリの場所,複数ある場合は改行して追記

; hidden[] = '/home/git/repositories/BetaTest' ; ←隠したいリポジトリを書く

debug = false
cache = true
theme = "default"
baseurl = "http://localhost/gitlist"; ←これを追記している記述を見かけます.

URLをRewriteするための.htaccessが既にgitlistの中に入っていると思います. Apache側で.htaccessを許可するか,.htaccessの中身を<Direcotry>セクションで書いてやるかして,,

これで,OKなはずです.Webブラウザからhttp://xxx.xxx.xx/gitlistで表示されるはず..

遭遇したトラブル?

空白ページが表示された( ゚Д゚)ヒョエー

blank pageです.真っ白.色々試行錯誤した結果ですが,gitのリポジトリディレクトリ(repositories)はApacheのユーザすなわちwww-dataでもアクセスできる許可が要るようです.リポジトリディレクトリのパーミッションを775など公開用にしてやるか,リポジトリのグループにwww-dataを足すなど,方法はいくつかあると思いますが,ともかくパーミッションがないとWebからも見れないみたいです.

私の場合は,リポジトリの持ち主はroot:repoでrepoグループに属していればアクセス可能にしていたので,
sudo gpasswd -a www-data repo
www-dataをrepoに追加して対応しました.

リポジトリの中身を見ようとすると404 NOT FOUND.

.htaccessを使用するなどして適切なRewrite設定ができていないとリポジトリの一覧ページが表示されても,リポジトリの中身を見ようとすと404エラーになりました.

2015年3月21日土曜日

Odroid C1 / Ubuntu でサーバ構築 5: Subsonicで音楽ストリーミングサーバにする

Odroid C1を利用してサーバを構築する.今回はSubsonicでメディアストリーミングサーバにします.
Subsonicは指定ディレクトリ以下の音楽ファイルなどを検索し,Web上でストリーミング配信が行えるJavaベースのシステムです.開発元にお金を支払うことでビデオなどの配信やスマートフォンからのアクセス,DLNAにも対応します.ユーザ名とパスワードで保護されます.

Subsonic事始め

インストール

Subsonicをダウンロードします.公式サイトからダウンロードのURL(恐らくsourceforge)を確認してwgetで取得します.ダウンロードページではなく,debファイルの直リンクURLですね.
ダウンロードしてインストールします.
$wget -O subsonic.deb http://downloads.sourceforge.net/project/subsonic/subsonic/5.2.1/subsonic-5.2.1.deb
$sudo dpkg -i subsonic.deb

SubsonicはJavaだからjreが必要なんじゃなかったけ??と思いつつインストールしました. パッケージマネージャがそのことを指摘するかと思いきやしない.

ともかく,この段階でsubsonicは既に稼働しているはずです.初期設定では4040ポートでアクセスを受け付けているのでブラウザから開きます.

http://192.168.1.xx:4040/

subsonicに初アクセス

設定

最初にadminユーザのパスワード設定行います.ログインページにもサッサと設定するように警告されていますね.ユーザ名admin, パスワードadminでログインして,,,表示されるページの指示に従ってパスワードを変更します.

再度ログインして音楽などのメディアディレクトリを指定すれば勝手にファイルを調べてくれて使えるようになります.カンタン

SSL(Https:443)でのアクセス,Apacheのリバースプロキシ

Subsonicの設定

ここまででもSubsonicは機能するのですが,安全のためにSSLを使ってhttpsによるアクセスをできるようにしましょう.
今回は,アクセスにはhttpsを使ったhttps://<ドメイン>/subsonic/ のURLにします.
まずはsubsonicの設定ファイルを編集します.SUBSONIC_ARGSを以下のように変更しました.httpsは後述のApacheで実現します.そのため,--port=4040 --https-port=443といった設定を今回は行いません.

$sudo emacs /etc/default/subsonic
SUBSONIC_ARGS="--max-memory=200 --context-path=/subsonic" 

--max-memoryは使用するメモリの最大値を指定するようですが,どれくらいがいいのでしょうか?? 一方の--context-pathはhttps://<ドメイン>/subsonic以下でSubsonicを運営するため,追加します.https://xxx/sonic以下で運営したい場合は/sonicにします.
その他の設定項目は

OpenSSLとApache, 鍵の作成

続いて,Httpsを実現するためにOpenSSLと,Apacheを設定します.OpenSSLはプリインストール済みかと思いますが確認します.
$whicl openssl
/usr/bin/openssl

無ければapt-getでインストールしましょう.

続いてApacheもインストールします.通常のUbuntu ServerならばOSインストール時に一緒にインストールすることもできますが,ODROIDのUbuntuでは恐らくないでしょう.
ApacheをインストールしてSSLのモジュールをONにします.また,SSLのサイトもONにします.
$sudo apt-get install apache2
$sudo a2enmod ssl
$sudo a2ensite default-ssl

SSLのための鍵を作成します.今回は/etc/apache2以下につくります.
秘密鍵,公開鍵,鍵の証明の3つを作ります.鍵の証明は本来は然るべき機関から発行してもらうわけですが,それには費用も掛かるため,今回は証明書を自分でつくります.いわゆるオレ様証明書であるため,ブラウザが「証明書の〜〜」うんぬんと警告してきてしまいますが目をつむります.
$cd /etc/apache2
$sudo su
#openssl genrsa -des3 1024 > https.key ←秘密鍵の作成(RSA des3フォーマット,1024bitの鍵)
Enter pass phrase: ←パスフレーズを入力
Verifying - Enter pass phrase: ←再入力

# openssl req -new -key https.key >https.key.csr ←公開鍵の作成
Enter pass phrase for https.key: ←先ほどのパスフレーズを入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----↓ここからは公開が基の情報を入力
Country Name (2 letter code) [AU]:ja ←国名(二文字のコードでja, us, uk, krなど)
State or Province Name (full name) [Some-State]:tokyo ←都道県名
Locality Name (eg, city) []: ←市町村名(今回は空白)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hiroyky ←組織名
Organizational Unit Name (eg, section) []: ←担当部署名
Common Name (e.g. server FQDN or YOUR name) []:Happy Server ←サイト名
Email Address []:xxxxx@mail.jp ←メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:   ←証明書破棄の際のパスワード(今回は空白)
An optional company name []: ←組織名2(今回は空白)

# openssl x509 -in https.key.csr -days 36500 -req -signkey https.key > https.key.crt ←証明書の発行(x509フォーマット,有効期限は36500日つまり100年←おい!笑)
Signature ok
subject=/C=ja/ST=tokyo/O=yokoyama/CN=Asuna/emailAddress=ykym_hirokazu@yahoo.co.jp
Getting Private key
Enter pass phrase for https.key: ←パスフレーズ入力
これにて作成が完了しました.

Apacheに鍵を登録

/etc/apache2/sites-available/default-ssl.confのSSLCertificateFileとSSLCertificateKeyFileを設定します.
$sudo emacs /etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile     /etc/apache2/https.key.crt ←証明書
SSLCertificateKeyFile /etc/apache2/https.key ←秘密鍵

で,Apacheを再起動します.
$sudo service apache2 restart

Apacheの警告 AH0058

$sudo service apache2 restart
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
こういう警告メッセージが出てきました.
ubuntuにおけるapache2のAH00558エラーを解決する。UbutnuでApache2を起動してみたにもあるようにServerNameを変えるか,/etc/hostsを設定するかのようです.もしくは無視しても構わないかもしれませんが..
というわけで前者のページに従い.
 sudo echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn
 sudo service apach2 restart
 * Restarting web server apache2 
として,ServerNameを設定しました.別ファイルを作るのも良いですが,/etc/apache2/apache2.confに追記しても良い気もしますが..

いずれにしてもhttpsでアクセスして,恐らく証明書の警告は表示されると思いますが,"It works!"のページが表示されました.

リバースプロキシの設定

https://<ドメイン>/subsonic でアクセスされたら4040ポートで稼働しているSubsonicにつなぎます.
proxyモジュールを有効にし,セクションを設定します.
$sudo a2enmod proxy
$sudo a2enmod proxy_http
$sudo emacs /etc/apache2/mods-available/proxy.conf
        
           AddDefaultCharset off
           Order deny,allow
           Allow from all
        #   #Require local                                                                                                          
        

SSLのVirtualHostを設定します.下記を追記します.
$sudo emacs /etc/apache2/sites-available/default-ssl
 SSLProxyEngine on ←プロキシを介してSSL化を有効にする
 ProxyPass /subsonic http://localhost:4040/subsonic ←リバースプロキシの設定
 ProxyPassReverse /subsonic http://localhost:4040/subsonic ←リバースプロキシの設定
リバースプロキシの設定はお察しの通り
 ProxyPass  <転送先> 
 ProxyPassReverse  転送先>
です.末尾の"/"スラッシュには注意です.

変更の適用

Subsonic, Apache共に再起動して変更を適応します.
$sudo service subsonic restart
$sudo service apache2 restart

 https://<ドメイン>/subsonicでsubsonicに行けるようになりました.

参考

http://www.jamescoyle.net/how-to/875-reverse-proxy-subsonic-with-apache
http://qiita.com/paty-fakename/items/829afd3577ba18dbb2c8

2015年3月20日金曜日

Odroid C1 / Ubuntu でサーバ構築 4: Samba

Odroid C1を利用してサーバを構築する.今回はsambaで他のWindowsなどからファイルにアクセスできるようにします.普通のLinuxでのサーバ構築ですが,,
まずは,apt-getでsambaをインストール
$sudo apt-get install samba
sambaのためのユーザを別途追加します.このときのユーザ名やパスワードはクライアントとなるWindowsと同じにしておけば再ログインすることなくWindowsなどからアクセスできます.
$sudo smbpasswd -a <ユーザ名>
このあとはsambaの設定をします./etc/samba/smb.confを変更します.バックアップしてから編集します.
まず,workgroupをWindowsなどで使っている名前に変更します.
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
sudo emacs /etc/samba/smb.conf
workgroup = <ワークグループ名>
[homes]のコメントを外して有効にして設定すれば,各ユーザのディレクトリにアクセスできるようになります.各設定項目をそれぞれ有効にします.

  • browsebleをyesにしてファイルのブラウジングを許可します.
  • read onlyをyesにしてファイルの書き換え,作成,削除を許可します.
  • create maskとdirectory maskでsambaアクセス時のパーミッションを設定します,
  • valid usersでアクセスできるユーザを限定します.
  • wide links follow symlinksでリンクをたどることを許可するかどうかを設定します.


[homes]
comment = Home Directories ←有効にする
browseable = yes ←有効にする, yesにする
read only = no ←有効にする, noにする
create mask = 0700 ←有効にする, sambaアクセス時のパーミッションを設定
 directory mask = 0700 ←有効にする, sambaアクセス時のパーミッションを設定
valid users = %S ←有効にする
他にも特定のディレクトリを共有したければ下記を追記します.
[共有名]
   comment = <コメント>
   path = <共有するディレクトリパス>
   browseable = yes
   read only = yes
   guest ok = no
   create mask = 770
   directory mask = 770
   wide links = yes
   unix extensions  = no
   follow symlinks = yes
   valid users = <アクセス可能なユーザーまたはグループをスペースで区切って入力>
設定後,sambaを開始します.
$sudo service samba start

Odroid C1 / Ubuntu でサーバ構築 3: rsync(lsyncd)の設定,リアルタイムのバックアップをする

Odroid C1を利用してサーバを構築する.今回は前回マウントした2基の外付けUSB HDDをミラーリングして自動バックアップできるようにします,

lsyncdのインストールと設定

インストール

lsyncdをapt-getでインストールしてとりあえずバージョンの確認,恐らく2.1系列だと思われる.
$sudo apt-get install lsyncd 
$lsyncd --version

設定

今回は,異なるストレージをまたぐものの,外部のマシンと同期するわけではないローカルディレクトリの同期であるため設定もシンプルなはず..
まず,設定ファイルを作成し,編集します.設定ファイルはサンプルをコピーし,編集します.設定ファイルの場所はデーモンのファイル/etc/init.d/lsyncdに記載されています.
cat /etc/init.d/lsyncd 
-省略-
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="synchronization daemon"
NAME=lsyncd
DAEMON=/usr/bin/$NAME
CONFIG=/etc/lsyncd/lsyncd.conf.lua
-省略-

CONFIGの位置ですね.これを書き換えても良いかと思いますが今回はコレを使います.
$sudo cp /usr/share/doc/lsyncd/examples/lrsync.lua /etc/lsyncd/lsyncd.conf.lua
$sudo emacs /etc/lsyncd.conf
File Edit Options Buffers Tools Conf Help                                                                                           
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings {
        logfile = "/var/log/lsyncd.log", ←追記
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsync,
        source="/mnt/storage/", ←変更(元ディレクトリ)
        target="/mnt/backup/", ←変更(コピー先ディレクトリ)
以下,追記
 rsync = {
       compress = false,
       _extra = {
             "--delete", 
             "-a",
             "exclude=*~",
       }
 }
ここまで追記
}

settingsの部分はlogfileを追記して,ログを記録するようにしましょう.あとはこのままで良いでしょう. 詳細はLsyncd 2.1.x ‖ The Configuration Fileで解説されています.
次のsyncではミラーリングするディレクトリ同士を個別に記述します.sourceとtargetを逆に書いてしまうと悲惨なことになるから注意ですね.毎回緊張します. オプションは,アーカイブすなわちファイルパーミッションなども維持したコピーを行う-aと元が削除されたらミラー先も削除する--deleteを付随させます. またemacsなどが出力する一時ファイル*~は除外します.
また,以前はsettings={}と記述したいようですが=(イコール)はいらないみたいですね.

rsyncオプションの書き方の注意

rsyncの2.1.xと2.0.xではrsyncオプションの書き方には大幅な変更が加えられているようです.
rsync2.0.xまではrsyncへのオプションを
rsyncOps={"-a", "--delete"}
などと書いていたようですが,2.1.xからはLsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behaviorにあるように,rsync={}で書くようになっているようです.
もし,2.0.xの書き方の場合,次のlsyncdの実行時に

Error: error preparing /etc/lsyncd/lsyncd.conf.lua: Parameter "rsyncOps" unknown. (if this is not a typo add it to checkgauge)

とエラーになると思います.

開始

lsyncdを開始します.
$sudo service lsyncd start

ミラーリングできてるか,ファイルを作成するなどして確認します.

inotifyの上限変更

lsyncdはinotifyでファイルの変更を検知しているようですが,たくさんのファイル変更には対して限界値が設定されています.限界を超えると同期がストップするようです.その際,ログ/var/log/lsyncd.logには次のように記載されていました.
Mon Mar 23 12:44:00 2015 Error: Terminating since out of inotify watches.
Consider increasing /proc/sys/fs/inotify/max_user_watches

/proc/sys/fs/inotify/max_user_watchesに記載された値が限界値のようです. これを大きくしてみましょう.初期の8192の10倍,81920と設定します.
/etc/sysctl.confもしくは/etc/sysctl.d/以下の*.confファイルに
fs.inotify.max_user_watches=81920
などと書き換えもしくは追記するという方法の紹介を見かけます. (例えば,CentOS 6 でも /etc/sysctl.d/ は使える(ipv6 無効化とか) lsyncd設定)

ただし,今回は
$sudo sysctl -w fs.inotify.max_user_watches=81920
で変更しました.

参考

http://www.shift-the-oracle.com/linux/utility/lsyncd-local.html

Odroid C1 / Ubuntu でサーバ構築 2 ストレージのマウント

Odroid C1を利用してサーバを構築する.前回は,基本的な設定を行いました.
今回は外付けHDDのマウントとバックアップ体制をつくります.

外付けHDDの初期化とマウント登録

ディスクのチェック

USBで外付けHDDを接続し,マウントできる状態にします.
/etc/fstabを設定してUbuntu起動時に自動マウントするように設定します.

接続されているストレージや各ストレージのパーティションなどの構成を表示,設定するfdiskで接続されているストレージデバイスを取得します.
$sudo fdisk -l
- 省略 -

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            3072      266239      131584    6  FAT16
/dev/mmcblk0p2          266240    61496320    30615040+  83  Linux

挿入済みのマイクロSDカードが表示されました.
それでは,USBの外付けHDDを接続してもう一度fdiskしてみましょう.
なんとまぁ,私は外付けHDDを接続して,電源を付けるのを忘れていました.

$sudo fdisk -l 

- 省略 -
       Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            3072      266239      131584    6  FAT16
/dev/mmcblk0p2          266240    61496320    30615040+  83  Linux

- 省略 -

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  1953525167   976761560   83  Linux

というわけで,接続した外付けHDDは/dev/sda1となっているようです.

初期化

今回は,パーティションで区切らず全体を1つとし,ext4で初期化します.
fdiskで初期化します.
$sudo fdisk /dev/sda

fdiskのモードに入ります.mでヘルプが見れてpで現在の状態が見れますね.wを押すまで変更は実際に適用されません.
指示に従ってnで作成を始めます.
Command (m for help): p

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
78 heads, 63 sectors/track, 397542 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-1953525167, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): 
Using default value 1953525167

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): q

領域ができたのでext4システムを作成します.
$sudo mkfs -t ext4 /dev/sda1

マウント設定

マウントポイントを作って,今回はUUIDを使ってマウントするように設定します.
マウントは/mnt/storageにします.
$sudo mkdir /mnt/storage
$sudo blkid /dev/sda1

このままmountコマンドでもOKですが,自動マウントするように/etc/fstabを編集します.書き方はarchlinuxjp.kusakata.com/wiki/Fstabの通りですね./etc/fstab追記します.
UUID=     /mnt/storage    defaults    0    2
今回はシステムでもなく単純にファイルを入れておくハードディスクドライブであるため最後の数値は2にしました.
/etc/fstabの通りマウントを反映します.そしてlsで確認します.無事マウントされていました.
$sudo mount -a
$ls /mnt/storage

同じ方法でもう1基HDDを接続&マウントしました.
次回は接続した2基のHDDを常時ミラーリングしてバックアップするようにします.

2015年3月19日木曜日

Odroid C1 / Ubuntu でサーバ構築 1: ネットワーク設定,ユーザの追加など

前々回前回の2回でOdoroid C1にUbuntuをインストールして起動しました.基本的な設定も行いました.今回からはこれを自宅サーバにしたいと思います.用途としてはSambaでNAS(Network Attach Server)にしたり,Subsonicで音楽配信サーバにしたりです.

Odroid C1でサーバの構築

要件

  • SSHデーモンによりリモート操作ができる.
  • 常時,ハードディスクドライブを2基マウントする.
  • 2基のハードディスクはrsyncでミラーリングしており,自動的にバックアップする.
  • Sambaでファイルサーバ(NAS)として稼働する.
  • Subsonicでハードディスク内の音楽ファイルをストリーミングで配信する.

GUIをオフにする

現在はブート後,自動的にXが立ち上がってグラフィカルな操作を可能になっていますが, サーバ用途では必要ないと考えられるため,Xをオフにします.
デスクトップの"ODROID Utility"を起動し,"5 Xorg On/Off"を選択し,Disabledにします. そして,再起動.
再起動後,またしても画面がちらついてしまいました.CUIこそ画面解像度は必要ないですし,この後はSSHによるリモート操作を行うため,boot.iniを再び書き換えます.書き換えは前回と同じで,画面解像度を変更してます.

再起動後のログイン

Xをオフにしたため,CUIでのログインになりました.
特に変更が無い限り,ユーザ名: odroid, パスワード: odroidです,

emacsのインストール

これからは設定ファイルを直接編集する機会が多くなります.
私は,emacsをエディタに使うので,emacsをインストールします.
$sudo apt-get install emacs

ちなみに,viは初めからインストールされているでしょう.

ネットワークの設定

サーバなので固定IPにします.
sudo emacs /etc/network/interfaces
下記を追記します.アドレスなどの部分は適切に書き換えてくださいね.
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
この後,
$sudo ifup -a
$sudo service networking restart
でOKなハズですが,ifconfigしてもIPアドレスが更新されないため,再起動しました. 再起動後,設定が反映されていることをifconfigで確認しました.

また,使用するDNSサーバの設定も行います./etc/resolvconf/resolv.conf.d/base を編集します.
sudo emacs /etc/resolvconf/resolv.conf.d/base 
nameserver 192.168.1.1

そして,DNSサーバの設定反映
sudo resolvconf -u

SSHでログイン

このままターミナル上でキーボードを直接叩いて操作しても良いのですが,SSHでリモート操作しましょう. SSHのデーモンはすでに稼働しているはずです,となりのパソコンなどからログインしましょう. odroidユーザーにログインです.
ログイン元であるクライアントから実行:
$ssh odroid@

ユーザーの追加

いままで,ユーザ名: odroidのアカウントで設定を行ってきましたが,そろそろ自分の名前のアカウントを作成しましょう.

ユーザ追加

ユーザー追加はadduserで行います.useraddではありません.
$sudo adduser <ユーザ名>
パスワードやその他の情報が求められます.その他の情報は空白でもOKみたいですね.

グループ追加

登録できるグループリストは
$cat /etc/group
で確認できますが,いろいろあって良く分からないというのが一般的な感想かと思います. それぞれの内容についてはさておき,参考に既存のodroidアカウントが所属しているグループに見てみましょう.
odroidアカウントが所属しているグループは,,
$cat /etc/group | grep odroid
adm:x:4:syslog,odroid
dialout:x:20:odroid
fax:x:21:odroid
cdrom:x:24:odroid
floppy:x:25:odroid
tape:x:26:odroid
sudo:x:27:odroid
audio:x:29:pulse,odroid
dip:x:30:odroid
video:x:44:odroid
plugdev:x:46:odroid
netdev:x:102:odroid
nopasswdlogin:x:108:odroid
odroid:x:1001:
lpadmin:x:114:odroid
scanner:x:115:saned,odroid
fuse:x:116:odroid
みたいですね.これを参考に先ほどつくったアカウントもグループ登録すれば良いかと思います.
しかし,nopasswdloginとやらまで追加したくないし,一方でsudoやadmなどは重要ですね.
必要に応じてあとから追加・削除すれば良いわけですしとりあえず今回は
$sudo usermod -G adm,cdrom,sudo,audio,video,plugdev,netdev,odroid,lpadmin,fuse <ユーザ名>
としました.初回だからusermodコマンドを使用しましたが,次からグループに追加するときはgpasswd -aの方がいいですね. usermod -Gだとオプションに指定しなかったグループからは外れてしまいますから.

Odroidアカウントのパスワード変更

さすがにユーザ名: odroid, パスワード: odroidのアカウントを残しておくのも問題なのでパスワード変更します.同時にrootのパスワードも変更します.
$sudo passwd odroid
$sudo passwd root

ここまで

ここまででセットアップの下ごしらえができました..文章書くのに疲れたので次回にします.そして,そろそろ普通のLinuxとして使えるようになってきました.

初めてのOdroid C1のUbuntuセットアップ その2

前回,マイクロSDカードにUbuntuの書き込みまでを行いました.

Ubuntuを起動

Odroid向けUbuntuを書き込んだマイクロSDカードを本体に挿入します.

ケースに梱包した後,電源アダプタ,LANケーブル,キーボード,ディスプレイを接続します.そして電源アダプタをコンセントに挿して起動します.

起動しない..

起動して,ターミナルのログイン画面が表示されるはずですが,表示されませんでした.画面がチラついて起動の途中で止まってしまします..
起動が途中でストップしてしまうのは,OSがきちんと書き込まれていなかったからでしょうか.ddコマンドでもう一度書き直し,何回もsyncしたらOKになりました.

画面がちらつく

無事にUbuntuが起動できたとしてもやたらと画面がチラつきます.

画面解像度を変更してみました.そのためには,/BOOT/boot.iniを編集します.これはMacやWindowsなど母艦となっているPCに再接続して編集してもOKです.

ODROIDC-UBOOT-CONFIG

# Possible screen resolutions
# Uncomment only a single Line! The line with setenv written.
# At least one mode must be selected.

# setenv m "vga"           # 640x480
# setenv m "480p"          # 720x480
# setenv m "576p"          # 720x576
# setenv m "800x480p60hz"  # 800x480
# setenv m "800x600p60hz"  # 800x600
# setenv m "1024x600p60hz" # 1024x600
# setenv m "1024x768p60hz" # 1024x768
# setenv m "1360x768p60hz"  # 1360x768
# setenv m "1366x768p60hz" # 1366x768
# setenv m "1440x900p60hz" # 1440x900
# setenv m "1600x900p60hz" # 1600x900
# setenv m "1680x1050p60hz" # 1680x1050
# setenv m "720p"          # 720p 1280x720
# setenv m "800p"          # 1280x800
# setenv m "sxga"          # 1280x1024
# setenv m "1080i50hz"          # 1080I@50Hz
# setenv m "1080p24hz"          # 1080P@24Hz
# setenv m "1080p50hz"          # 1080P@50Hz
setenv m "1080p"                # 1080P@60Hz
# setenv m "1920x1200"     # 1920x1200

ですが, setenv m "1080p" # 1080P@60Hz に#をつけてコメントアウトし,他の解像度を選んでみます.選びたい解像度の先頭の#をハズします. 渡しの場合は1024x768を選んでなんとか落ち着きました.

起動します

起動後,GUIのデスクトップ画面が表示されます.キーボードやマウスも認識されていると思います.

rootパーティションの拡張

デスクトップに置かれた"README FIRST"に目を通した後,それに記載されているとおり,"ODROID Utility"をダブルクリックして起動します.
いきなりパスワードが求められます.初期パスワードは"odroid"です.

何はともあれ,マイクロSDカードのルート領域を拡張します."4 Resize your root partition"を選択し,すすめます.完了後,再起動します.画面右下のボタンから再起動できます.
再起動後,左下のメニューボタンからPrefferences→Disksと進めてパーティションの区分を見ると,trustyと呼ばれる領域が最大限使用されています.

いろいろアップデート

画面左下のメニューからAcceories→LXTerminalとすすめてターミナルを開きます.
apt-getからアップデートをしておきましょう.
$sudo apt-get update && sudo apt-get upgrade

タイムゾーンの変更

おそらく,時刻が大きくずれて表示されているかもしれませんが,これはタイムゾーンが異なっているからです. タイムゾーンをAsia/Tokyoに設定します./etc/localtimeをAsia/Tokyoで上書きすればOKですが,念のため,バックアップを取ってから行います.
$sudo cp /etc/localtime /etc/localtime.org
$sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$date (←日付と時間を確認)

ホストネームの変更

ホストネーム,すなわちこのコンピュータの名前を変更します. 初期名はOdroidです.デスクトップの"ODROID Utility"から"7 Change Hostname"で変更します. 変更後は再起動が必要です.

総括

Odroid上でUbuntuを起動して,最初に必要な設定を行いました.
私はOdroidを音楽ストリーミング配信サーバ,自宅のファイルサーバとして利用するつもりです.次回からはこれらのサーバにするためにセットアップを行います.

 参考文献
http://forum.odroid.com/viewtopic.php?f=111&t=7611
http://qiita.com/azusanakano/items/b39bd22504313884a7c3

2015年3月18日水曜日

初めてのOdroid C1のUbuntuセットアップ その1

初めてのOdroid C1

知人に誘われて一緒にOdroid-C1を購入しました.
購入後,しばらく放置となっていましたが,今回Ubuntuをインストールして自宅サーバとして運用することにしました.
まずはUbuntuのインストールです.

流れ

  1. 必要な物品の用意
  2. Odroid向けのUbuntuをダウンロード
  3. MacからUbuntuをマイクロSDカードに書き込む

用意した物

  • Odroid C1 本体
  • 専用アダプタ
  • Odroidのケース
  • マイクロHDMIとHDMIの変換ケーブル
  • マイクロSDカード(32GB)
  • マイクロSDカードのカードリーダ(USB接続)
  • PC(今回はMacbook Air)
  • ディスプレイ(HDMI付,最近ではテレビでもOKですね)
  • (コーヒー)
用意した物,Odoroid本体はケースに梱包済み

Ubuntuのダウンロード

お手物とのコンピュータで,OdoroidのWikiSoftware Release for Linux/UbuntuからUbuntuのイメージファイルをダウンロードします.本屋Ubuntuのサイトからダウンロードするのではありません.OdroidはARM系のCPUに対して本屋Ubuntuサイトは一般のPC向け,すなわちx86系を配布しています.
ダウンロードしたら解凍します.
$ unxz ubuntu-14.04.1lts-lubuntu-odroid-c1-20150204.img.xz 
ubuntu-14.04.1lts-lubuntu-odroid-c1-20150204.imgが作成されました.(ファイル名はバージョンなどによって違うと思います.)

マイクロSDカードにUbuntuの書き込み

Flashing S/W Releaseの手順に従って,マイクロSDカードにダウンロードしたUbuntuを書き込みました.

このページに,マイクロSDカードを通常サイズのSDカードとしてマウントするリーダでは失敗する場合があると記載されていたため,USBのカードリーダを準備しました.(わざわざ買いました http://goo.gl/x9ufiC)

今回はMac(UNIX)であるためddコマンドから実行しました.

まず,マイクロSDカードを接続する前にターミナルのdfコマンドで現在接続されているストレージ一覧を表示します.
$ df
Filesystem      Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk1     233Gi  143Gi   90Gi    62% 37436143 23542671   61%   /
devfs          183Ki  183Ki    0Bi   100%      633        0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0        0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0        0  100%   /home

続いて,マイクロSDカードのUSBカードリーダを接続してもう一度dfします.
$df
Filesystem    512-blocks      Used Available Capacity  iused    ifree %iused  Mounted on
/dev/disk1     487830528 298991288 188327240    62% 37437909 23540905   61%   /
devfs                367       367         0   100%      636        0  100%   /dev
map -hosts             0         0         0   100%        0        0  100%   /net
map auto_home          0         0         0   100%        0        0  100%   /home
/dev/disk2s1    61472768      4992  61467776     1%        0        0  100%   /Volumes/NO NAME

差分を見て分かるとおり,マイクロSDカードが/dev/disk2s1になっています.
一旦,これをアンマウントします.
$sudo diskutil unmount /dev/disk2s1
Password: 

ようやくddコマンドで書き込みます.of=の後に書き込み先を指定します. ただし,/dev/の後に続くデバイス名の先頭にrを付けて,後ろのs1などを消します. 今回は/dev/disk2s1なので,/dev/rdisk2とします. ddコマンドは誤ると,PCのデータを消してしまいかねないので慎重に実行します.(←毎回緊張します)
$sudo su
# dd if=ubuntu-14.04.1lts-lubuntu-odroid-c1-20150204.img of=/dev/rdisk2 bs=1m conv=sync
# sync; sync; sync; sync; sync; sync; sync; sync; sync; sync; sync; sync; sync; sync;
syncは何回も実行します. このまま実行すると進捗が表示されませんが,実行されているはずです.場合によっては時間が掛かるかもしれません.

終了するとBOOTとしてマウントされていました.

以上で,Ubuntuの書き込み(OSのインストール)は完了です.

参考

http://odroid.com/dokuwiki/doku.php?id=en:c1_release_linux_ubuntu
http://odroid.com/dokuwiki/doku.php?id=en:odroid_flashing_tools