Categories: コンピュータ

ubuntu server11.04 で ソフトウェアRAID1のSOHOサーバ構築

SOHO用のサーバとしてsubversionとsambaサーバが欲しいのでUT-VPNを使った外部からアクセス
可能なubuntuでサーバを作る
PCはATOM330 3,2GBRAM / OSはUbuntu Server11.04 64bit版

必要な機能(目標)
1) SSHで外部から操作
2) subversionサーバ
3) sambaサーバ
4) ut-vpnサーバ
5) 外部ディスクへの定期バックアップ
6) UPS連携
テスト用サーバは含めないのでLAMPを入れない
遠隔地に置いて長期で安定した運転が目標なので、HDDはソフトウェアRAIDに挑戦してみました。

次回も立ち上げできるように、サーバ立ち上げの手順をメモ


1) ubuntu serverをraid1でインストール(インストールサービスにsambaを選択)
基本的にはインストーラのメッセージに沿ってインストールを行う。
raid関係の設定が煩雑なので要点を忘れないようにメモ
参考 → http://thinkit.co.jp/cert/article/0707/11/2/3.htm
言語の選択で「日本語」を選択し、「Ubuntu serverをインストール」からインストール開始

メッセージに従ってインストール続行
「ディスクのパーティショニング画面」が表示されたら「手動」を選択。次に表示された画面で
ディスクのパーティションを作成

sdaとsdbの両方を「新しいパーティションの作成」で「最大容量」の「基本パーティション」で
作成し、「利用方法にRAIDの物理ボリューム」「起動フラグ:オフ」を指定し、「パーティ
ションセットアップを終了」で戻る

sdaとsdbの両方にパーティションを作成したら次のようになった
「パーティショニングの終了とディスクへの変更書き込み」を選択すると「記憶デバイスへの
変更を書き込み、RAIDを設定しますか?」と確認が出るので「はい」で続行(既にRAID領域を
作っている場合はソフトウェアRAIDの設定で一度MDデバイスを削除)

ソフトウェアRAIDの設定メニュで「MDデバイスの作成」を選択し「RAID1」を選択。
デバイス数等聞いてくるのでデフォルトのまま続行
RAID1アレイのアクティブデバイスを聞いてくるので「/dev/sda1」と「/dev/sdb1」に
チェックして次に進み「完了」で抜ける
RAIDデバイスが追加されるので、使用可能の設定をする。
「RAID1デバイスの領域1」を選択し「パーティションの利用方法」に「ext4ジャーナリング
ファイルシステム」を選択し「マウントポイント」に「ルートファイルシステム」を
選択して戻る

RAID設定が完了した画面はこんな感じ

英語で何かBoot領域のワーニングが出るが「はい」で続行。スワップ領域は作成せずに
続行。
その後は非RAID環境と同じ手順でインストール続行。
ホームディレクトリは暗号化する。プロキシは空。
taskselのソフトウェアの選択では「OpenSSH server」「Samba fileserver」「mail server」を
選択MBRにGRUBをインストールして完了

ツールのインストール
nanoエディタ : apt-get install nano

1-2) 端末の文字化け対策
インストール直後、起動するといきなり端末が文字化けしていた。
ネット上には情報がたくさんあるので、それを参考に各ユーザの.bashrcを追記
nano ~/.bashrc
参考→ http://thinkit.co.jp/cert/article/0707/11/2/4.htm
上記対策をしてもutvpncmdで化ける場合はsshで外部からログインしてAutoDetect UTF-8で操作

1-3) Ubuntu Desktopのインストール

Linux初心者の私にはオール端末環境は何かと厳しいのでGUIをインストール
sudo apt-get install ubuntu-desktop
インストール後再起動で特に問題なくデスクトップ利用可能。
日本語化参考は https://asakita.net/kabekin/2011/08/278.html
環境構築参考は https://asakita.net/kabekin/2011/07/116.html
クラシック設定は https://asakita.net/kabekin/2011/06/230.html
ターミナルの切り替えは CTRL+ALT+F1~F7 ubuntu desktopはF7 or F8だった

1-4) ubuntu serverの設定

ネットワークの設定 インストール時にDHCPで進んだ場合IPアドレスを固定
参考 → http://studio-bey.chicappa.jp/dougubako/ubuntu_server/298

1-5) RAIDディスクの監視
参考 → http://www.novell.com/ja-jp/support/tidj/jp/tidj/7001034J.html
http://linux.matchy.net/archives/35
http://walbrix.net/tech/raid.html
http://hellokitty68.main.jp/wiki/Mdadm

mdadmのインストール
apt-get install mdadm (11.04 でRADIを構築したときは自動で入っていた)
apt-get install postfix で監視メールを送れるようにする taskselで入れる
postfixの設定が表示され「メールサーバの形式」を聞いてきたので「インタ-ネットサイト」を選択
システムメール名:サーバ名
/etc/mdadm/mdadm.confを編集しMAILADDR にメールアドレスを記入
postfixの中継機能を使用してGmail経由でメール送信
/etc/postfix/main.cfにGmail経由関係の設定追記
# Gmail smtp settingrelay_transport=smtpsmtp_use_tls=yessmtp_sasl_auth_enable=yessmtp_sasl_password_maps=hash:/etc/postfix/sasl/sasl_passwdsmtp_sasl_security_options=noanonymoussmtp_sasl_mechanism_filter=plainrelayhost = [smtp.gmail.com]:587

パスワードファイルの作成
touch /etc/postfix/sasl/sasl_passwd でファイルを作成
中身に [smtp.gmail.com]:587 hoge@gmail.com:パスワード と平文で記入(自分のGmailアドレスと
パスワード)
chmod 600 /etc/postfix/sasl/sasl_passwd でパーミッション変更
postmapコマンドでdbファイル作成. postmap /etc/postfix/sasl/sasl_passwd

PC再起動で設定完了
mdadm –monitor –scan –test でメールが届くことを確認

2) sambaの設定
http://www.samba.gr.jp/
参考 → http://www.kozupon.com/samba/samba3.html
sambaはインストール時のtaskselで選択してインストール済みなので早速動かしてみる
smb.confは map to guest = Neverに変更。
samba用ユーザの作成 adduser sambauser 以下sambauserで作業
共有ディレクトリ「/home/sambauser/datavol/」の作成 (ホームディレクトリを暗号化しているのでホーム内に作成)
一応パーミッション変更 chmod 770 /home/sambauser/datavol
共有ディレクトリの公開 $ net usershare add datavol home/sambauser/datavol comment Everyone:F guest_ok=n
共有ディレクトリの解除 $ net usershare delete “datavol”
ちなみにWindows側のコネクト解除は net use * /delete らしい

3) subversionのインストールと設定
http://ameblo.jp/ghs4gj/entry-10690057187.html
server editionにはinetdが入っていないようなのでインストールする
subversion用のユーザを作成 adduser svnuser 以下svnuserで作業
リポジトリを作成するディレクトリを作成 「/home/svnuser/svnrepo」 (ホームディレクトリを
暗号化しているのでホーム内に作成)
一応パーミッション変更 chmod 770 /home/svnuser/svnrepo
subversionのインストール apt-get update / apt-get install subversion
/etc/inetd.confの最後に設定追記
svn stream tcp nowait svnuser /usr/sbin/tcpd /usr/bin/svnserve -i -r
/home/svnuser/svnrepo
リポジトリ作成 cd /home/svnuser/svnrepo でディレクトリ移動 svnadmin create repo1 で
リポジトリ作成
repo01の/conf/svnserve.confの設定を追記(コメントアウトを外す)
[general]
anon-access = none
auth-access = write
password-db = passwd
許可ユーザとパスワードの設定
repo01内のconf/passwdの[users]セクションに追記
[users]
user = password

4) ut-vpnのインストールと設定
http://utvpn.tsukuba.ac.jp/ja/
予め決めておくこと
仮想HUB名、各PCの仮想LANカード名、各PCのVPN側IPアドレス、各PCの接続ユーザ名と
パスワード、使用接続ポート

以下suで作業
apt-getもdebパッケージもなさそうなのでソースからインストール
ファイルをダウンロードし解凍
tar xvzf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
StartUpGuideによると、OpenSSL/liblconv/readline/ncurses が必要とある.。よく分からないがubuntu10.10 Desktopではlibreadline6-devのみ追加インストールするとmakeはできた。
apt-get install libreadline6-dev
(11.04 Serverでは libcurl4-openssl-devやmakeも必要だった)
解凍されたディレクトリに移動して 「./configure」 を実行
please select your operationg system below で 1:Linuxを選択
please select your CPU Bits below で 2:64bitを選択
Makefile is generated. Please exexute ‘make’ to build UT-VPNと表示が出たら 「make」を実行
makeが完了したらインストールを行う
make install
Installation completed successfully. と出たのでインストールOK

PCを再起動して設定作業続行
—– サーバ側の設定 —–
UT-VPNサーバの起動 sudo utvpnserver start (停止は utvpnserver stop)
コマンドライン管理ユーティリティでの設定
「utvpncmd」で実行 (操作の中断はCTRL+D)
「1. VPN ServerまたはVPN Brideの管理」を選択
接続先のホスト名またはIPアドレス:localhost」を設定
仮想HUB名は入力せずにそのままEnterで接続(そのままEnterしないと仮想HUB管理モードに
ならない)
VPN Server> と出ればServerソフトと接続OK
(コマンドやHUB名は大文字、小文字が区別されていない様子)

HubCreateで仮想HUBの作成 -> コマンドは正常に終了しました。 で仮想HUB作成完了
Hub 仮想HUB名で対象仮想HUBの切替 -> 仮想 HUB “仮想HUB名” を選択しました。
で仮想HUB切替OK
UserCreateでユーザの作成 -> グループは作成しなくてもOK(省略化) -> コマンドは正常に終了しました。 でユーザ作成OK
これで仮想HUBにユーザが登録される。
UserPasswordSetでユーザ認証方法をパスワード設定にしてパスワードを設定する(最大8文字かな?)
UserListで追加されたユーザが確認できる。
外部のWindowsマシンからGUIのUT-VPNサーバ管理マネージャで設定もできる様子。
新しい接続でホスト名とポート番号(443)で直接TCP/IP接続で接続
サーバ管理者パスワードを聞いてくるがとりあえずそのまま->ここでパスワードを設定するとコマンドライン管理からもパスワードが必要
仮想HUB名:DEFAULTをダブルクリックし「仮想HUB の管理 – DEFAULT」から「ユーザの管理」で

ユーザを作成
「新規作成」から「ユーザー名」「パスワード」「パスワードの確認」を入力し「OK」する
一通り動作確認できたらutvpnを自動起動に設定

—– クライアント側の設定 —–
コマンドモードでの起動
sudo utvpnclient start  (停止は utvpnclient stop)
コマンドライン管理ユーティリティでの設定
「utvpncmd」で実行 (操作の中断はCTRL+D)
「2. VPN Clientの管理」を選択
接続先のホスト名またはIPアドレス:localhost」を設定
VPN Client> と出ればClientソフトと接続OK
機能確認 check を実行しソフトの状態を確認する
仮想LANカードの作成 : NicCreate 仮想LANカード名 で作成 NicCreate:VPN
// 仮想LANカードの設定 : AccountNicSet 仮想LANカード名 で作成 AccountNicSet VPN

ubuntuのネットワーク設定
別端末で作業。VPN用LANカードはutvpnをスタートさせないと現れない。
VPN用LANカードを固定IPで使いたいので /etc/network/interfacesを編集
auto loiface lo inet loopback auto eth0iface eth0 inet dhcpauto utvpn_vpniface utvpn_vpn inet staticaddress 192.168.21.32network 192.168.0.0netmask 255.255.0.0broadcast 192.168.21.255gateway 192.168.21.50
/etc/resolv.conf の
nameserver 192.168.1.1 を nameserver ルータのIPアドレスに変更
対話モードで設定する場合はコマンドのみ入力し聞かれた項目を入力する。
AccountCreateで接続設定の作成
使用する仮想LANカード名は上記で作成した仮想LANカード
AccountPasswordSetでパスワードの設定
standard または radius の設定は standard
VPNの接続 AccountConnent 接続名 で接続 AccountConnect 接続名
AccountListで設定と状態を確認
状態が「接続完了」になっていることを確認
VPN接続の確認 AccountStatusGet
接続の切断 AccountDisconnect 接続名 で切断

通信のオプション設定
データ圧縮の有効化 : AccountCompressEnable
通信時の暗号化 : AccountEncryptEnable(新しい接続を作った時点で有効になっていた)
接続の詳細設定は AccountDetailSet
接続の詳細設定確認は AccountGet
一通りUT-VPNの動作が確認できたら自動起動のスクリプトを作成しrc.localに追加
スクリプト作成(ログに残すことを踏まえてこんな感じに)
#!/bin/shecho “—– utvpn start/stop cmd —–“dateif utvpnserver $1then echo “*** utvpnserver command ok ***”else echo “*** utvpnserver command ng ***”fiif utvpnclient $1then echo “*** utvpnclient command ok ***”else echo “*** utvpncliant command ng ***”fiecho “——————————-“ps -Al | grep utvpn*
実行属性を付けて/etc/init.d/rc.local に追記 /etc/mycmd/ssutvpn start >> /etc/mycmd/ssutvpn.log
ローカルの接続をスタートアップ接続に指定
AccountStartupSet

5) 外部ディスクへの定期バックアップ(rsync)
rsyncを使って外部のディスクに(同期モード–delete)データ領域のバックアップを取る
rsync -av –delete コピー元 コピー先
参考 → http://x68000.q-e-d.net/~68user/unix/pickup?rsync
http://www.ep.sci.hokudai.ac.jp/~inex/y2002/1101/1101_script.html
http://www.ne.jp/asahi/hishidama/home/tech/unix/sh.html
http://shellscript.sunone.me/input_output.html
バックアップ用ファイル(~/mycmd/backup1)を作成し実行属性を追加
外部ディクスへバックアップ用のスクリプト
(rsyncの戻り値はコピー先への結果を反映できないようですが一応結果を戻すように)
#!/bin/shclearecho “—– home datavol backup —–“dateif rsync -av –delete /home/fe/datavol /usbhdd1/datavolthen echo “*** BACKUP OK ***”else echo “*** BACKUP NG ***”fiecho “——————————-”
cronで自動実行
crontab -e でnanoを使い設定ファイルをいじる。
一日一回バックアップを行う設定にしておく
* 4 * * * * /home/fe/mycmd/backup1 >> /home/fe/mycmd/bu.log

参考)
外部USBHDDのフォーマット方法
1) fdisk -l で接続されているディスク一覧を確認し目的のディスク名を見つける
2) fdisk /dev/sdc1 等でディスクを指定してfdiskを起動
3) コマンドp でパーティションの状態を確認し、コマンドdでパーティションを削除する
4) コマンドn で基本パーティションLinux(ID83)を新規作成する((p – 1で初期値のまま
全領域で作成)
5) mkfs.ext4 /dev/sdc1 でext4ファイルシステム作成

外部HDDのマウント
1) mkdir /mnt/usbhdd1 ⇒ mount -t ext4 /dev/sdc1 /mnt/usbhdd1 でマウント
自動マウントの設定(ディスクの増減があっても変化しないUUIDを使うと安心)
1) blkid でUUIDを取得
2) /etc/fstab にマウント情報を追加 UUID=b4a91dc4-89cf-43e0-9d08-ba3a127033c8 /usbhdd1 ext4 defaults 0 0
3) これで/usbhdd1としてマウントされた
6) UPS連携
参考 → http://mizupc8.bio.mie-u.ac.jp/pukiwiki/?apcupsd

残件
UPS入手
UT-VPN Serverの暗号通信設定
subversionでプロジェクト毎にレビジョンを上げる方法
samdaのパーミッション詳細
外部USBディスクの自動マウント

kabekin

Recent Posts

謎なS1を頂いたので観察してみる 【その2】

謎なS1を観察してみるの第二弾…

5日 ago

初めてのGAL書込み GAL16V8A

XGecuのT48プログラマを…

2週間 ago

謎なS1を頂いたので観察してみる 【その1】

数年前にヤフオクで見かけたこと…

3週間 ago

かべきんブログ SSLに対応しました

ずっと後回しになっていたブログ…

1か月 ago

S1用アドレスマッピングRAMを注文 SIGNETICS S54S189F

S1用のアドレスマッピングRA…

1か月 ago