2014年12月24日

debian Linux 7.7 2TBのRAID

TBでパーティションを分けずにRAIDを構築すると、
再起動後、見たこともないパーティションが現れる。

これだ!

2014-12-05 16.02.57.jpg
 まったく訳が分からない。

 結局パーティションを2つにすることで正常に機能した。
最初はNTFSフォーマットのせいなのかとか、GUIで使えるディスクユーティリティが
悪いのかとか、いろいろ推測したけど、結局2TBまるまるのディスクが使えないということらしい。

 RAIDじゃなくて、普通に単体なら使えるのかもしれないけど、確認しておりません。

 RAIDの構築についておさらいしておきます。

・データが存在しているHDDをRAID化する場合

# mdadm -c /dev/md0 -l1 -n2 /dev/空のHDD missing

 mdadm は RAID構築用のコマンドで、もしシステムにインストールされていないようだったら、インストールしてください。

   # aptitude Install mdadm  などのコマンドでインストールできると思います。

 mdadmに続く、"-c" はクリエイトモードを指定しています。md0はRAIDのデバイス名です。RAIDデバイスが増えるごとにナンバリングしていきます。"-l1"はRAID1を指定しています。"-n2"は構成するHDDの台数を指定します。"空のHDD"は取り付けた重要なデータの無いHDDを指定します。hdd1とhda1とかシステムによってデバイス名は変わります。
 missingは片肺での動作を指定します。

 これを実行すれば md0 のRAIDディスクが動き出すでしょう。

 fdiskコマンドで、md0 のパーティションを区切ってお好みの形式でフォーマットします。
 md0 を好みのマウントポイントにマウントして、重要なHDDからデータを md0 にコピーします。

 # cp -ax /重要なデータの入ったHDD/* /md0をマウントしたマウントポイント名

 さて片肺状態で動いているRAIDに、ここでもう一方のHDDを追加します。
おそらく余分なデバイスがなければ、さきほど重要なデータの移動元が追加するHDDとなるでしょうね。
 僕は2TBであったため余分のデバイスなどなく、記事冒頭の通り、復旧できなくなり、データが見かけ上なくなってしまいました。
フォーマットの形式が幸いWindowsのNTFSだったのでなんとかファイナルデータで復旧できましたけどね(使用容量も少なかったし)。

 # mdadm -a /dev/md0 /dev/追加するHDD

 ”-a” は指定されたデバイスを追加するコマンドです。

 これで、RAID1が構築できると思います。
 構築中は、 cat /proc/mdstat で進み具合が表示されます。打ったmdadmコマンドでは進行状況は表示はされませんのでご注意を。

fdiskやフォーマット等は別サイトでお勉強ください。 
RAIDに関しては、パーティションタイプなど厳格に設定する必要があるかもしれませんが、最近のシステムは特になにも設定しなくても素直に動いてくれるように思いますが、実際にどうなのか仮想PCでも使って、勉強するのもお勧めです。

 あと、ブルーレイディスクのRW(RE)をdebian Linuxで使いたい場合の要点だけお伝えして終わろう。

・BDREをdebian Linux 7.7で使う

 ブルーレイディスクをセットしてまずは(物理?)フォーマット

 # dvd+rw -format /dev/sr0

/dev/sr0 がドライブを示すデバイス名でシステムによって変わります。

 今度は(論理?)フォーマット

 # mkudffs /dev/sr0

 これでファイルシステムにマウントすれば、そのままフロッピーディスクのように書き込んだり削除したりができるはずです。

 rootユーザーでこれを行うときはパーミッションに注意してください。作られたディスクはrootユーザーが所有者となります。
つまりファイル操作をGUIでやると必然的にrootユーザー以外で使うことになりますから、書き込めないということが起こります。あれ? と思ったときはパーミッションを確認して、しかるべき権限を設定してください。

 dvd+rw や mkudffs などのコマンドプログラムは情報を検索してインストールしてください。

 いやーまだまだ Linux RAID は訳が分からないです。昔の仕様と今の仕様もごちゃごちゃで、ほんとに分かりにくいです。
 もしかしたら、GUIのディスクユーティリティを使ったほうが、簡単かもしれません。

 ちょっと、サーバー関連の話題はしばらくなしでいくかな。疲れた。
posted by 難波鷹史 at 20:54| 京都 ☁| Comment(0) | TrackBack(0) | マイコン | このブログの読者になる | 更新情報をチェックする

2014年12月14日

Debian Apache2のコンフィグファイル

ーバーの話題の続き

Debian Linux7.7.0について、標準のApacheをインストールすると
/etc/Apache2 配下に

conf.d/
mods-available/ これに関してはApache2をインストールする前から存在していた。
mods-enabled/
sites-available/
sites-enabled/
apache2.conf
envvars
magic
ports.conf

の初期設定ファイルが作られるのですが、一度、このファイル群を rm コマンドなどで消してしまうと、
その後、 aptitude reinstall apache2 とやっても、ファイルが復活しないことを
確認しました。
 復活しない原因はまったく不明で、検索しても上記方法で再インストールすれば?
っていう適当な情報ばかりです。

 ファイルをいじりまくって、設定が分からなくなったときに元に戻したいってよく思いますが、
Linuxでの作業の場合は、ファイル群をまるごと別の場所にコピーしておくか、.bak などの
拡張子をつけてオリジナルファイルを退避させておくのがいいでしょう。

 で、解決法ですが、結局分かりませんでした。
 僕としてはファイルを取っておいて、再配布するという方法しか分かりません。


 同じようなトラブルに直面した方にご利用くださればと思います。


 2014-12-11 21.58.02.jpg
 先日、久しぶりにラーメン食べに行きました。
 第一旭の六角店なのですが、よくある第一旭に比べると、ケモノ臭さがあって、とてもおいしいです。
 昔は、横綱もそうですが、こういう下品でうまいラーメン屋がたくさんあったと思うのですがねぇ。
posted by 難波鷹史 at 01:45| 京都 ☔| Comment(0) | TrackBack(0) | マイコン | このブログの読者になる | 更新情報をチェックする

2014年12月10日

XMailCFGをLinuxで動かしまくる!! for Debian

労した。
文献がぜんぜんないんだもん。


 2014-11-11 18.33.56.jpg


XMailCFGに付属のreadme.htmlの「非 Windows 環境への XMailCFG/K4 の移植について」の項を見ながらとりあえず進めてみました。
いろいろ説明不足な文書ですが、ポイントを抑えて書きます。

1 XMailをインストールして起動が可能な状態へ

 XMailのLinux版はこのブログの前回の記事など参考にしてインストールしてください。

2 ソースを変更する

 XMailCFGのperl指定部分を書き換える

 XMailCFGのCGIファイルの行頭がWindows用のperl指定になっているので、それを#/usr/bin/perl に書き換えます。
 cgiディレクトリーの中の setup.pl を使えば自動でやってくれます。
 cgiディレクトリーへ入って、perlコマンドで指定すればOK。

 例
 # /XMailCFG/cgi# perl setup.pl

 改行コードのチェック

 windowsで編集でもしない限り付属のcgiの改行コードは気にしなくても構いません。
 でも改行コードの調べ方も書いておきます。

 # /XMailCFG/cgi# nkf -g ファイル名

 これで改行コードが LF CR/LF になっているか確認できます。Windwsでしか使わない設定部分はCR/LFになってると思いますがLinuxでは動かないようになっている仕組みなので、無視して大丈夫でしょう。
 もし改行コードが LF でなければperlを使って以下のコマンドで書き換えます。

 # /XMailCFG/cgi# perl -pe 's/\r\n/\n/' ファイル名> ファイル名(変更後ファイル名)

 パス区切り記号のチェック 

 cgiプログラム内部のパスの区切りが¥(バックスラッシュ)でなく、/(スラッシュ)でなければならないそうですので、心当たりのある方は修正してください。たぶんノーチェックで大丈夫でしょう。



3 アクセス権の設定

 cgiディレクトリーのcgiファイルのパーミッションをすべて755にします。システムによっては655などと設定しなければ動かないかもしれません。ここでは読み取り権限と実行権限をすべてのユーザーに与えて755、もしくは655を設定します。(2016年11月17日追加)

 例
 # /XMailCFG/cgi# chmod 755 *.cgi

 非windows環境ではパーミッションの設定が大切と付属文書にはあります。
 ウェブサーバーが動かしているユーザーがアクセスできるようにtabファイルにもパーミッションを設定します。(2016年11月17日更新)
 ということらしいのですが、結局XMailがroot権限で動作し、パーミッション700のように自分しかアクセスできないファイルを作ってしまうので、ウェブサーバーもRoot権限で動くように細工をしなければなりません(後述)。

 最初はパーミッション777などで設定しても、XMailCFGが一見動くように見えるのですが、ユーザーやドメインを追加した場合に新規に作られるtabファイルへアクセスできなくなり、まったく使えないんです。ファイルが増えるごとにパーミッションの設定などできません。

 とりあえず、/var/MailRoot/bin と/var/MailRoot/直下のtabファイル群にアクセスできることが条件です。
 rootでウェブサーバーを動かすんだから、ファイルの所有者をrootにすればこのままで結構です。



4 XMailCFGのファイルをドキュメントルートにコピーする
  Linuxのコピーコマンドで、XMAILCFGのディレクトリーをそのままドキュメントルートにコピーします。
なお、XMailCFGディレクトリーを置くファイルシステムはNTFS(WIndowsのファイルシステム)ではなくLinuxファイルシステムに置いてください。これをしないとパーミッションに問題がでてtabファイル群にアクセスできなくなるようです。


5 root権限でスレッドを起動するウェブサーバー

 いろいろ探したけど結局 Apacheしかないみたいです。
 rootでスレッドを起動させるために以下の環境変数を設定してビルドやらコンパイルなどします。

  Apacheのコンフィグ時の設定
  Apacheの展開したディレクトリーへ入って以下のconfigureを行います。

 # env CFLAGS="-DBIG_SECURITY_HOLE" ./configure --enable-so --enable-shared --enable-ssl

 これで make make install してください。
  オプションの詳細は他のサイトを当たってもらうとして、XMailCFGを動かすにはこれで充分かと思います。

 ちなみにApacheは外用があるなら、今回の中用とでrootで動くやつと動かないやつと2つ立ち上げたほうが安全みたいです。今回の例では、debian標準でインストールされたApache2が外向きサーバーになりますので、ソースからインストールして2つ並列動作させる細工は行っておりません。


追記2105年4月14日
 並列動作させました。
 http.conf ファイルを名前を変えて用意します。
 もうひとつはhttp2.conf とでもしておきましょう。以下に肝心なところを書き出します。

 それぞれの設定ファイルで以下の項目が違うものである必要があります。

  ・実行ユーザーとグループ( User と Group )

  ・待ち受けポート( Listen ) 

  ・ドキュメントルート(ヴァーチャルホストの場合も含む)DocumentRoot

  ・エラーログファイル( ErrorLog )
    
  ・アクセスログファイル( CustomLog )

  ・PidFileの指定(以下の行をServerRoot の次の行にでも挿入してください。

    PidFile /usr/local/apache2/logs/任意のファイル名.pid

  ウェブサーバー起動スクリプトを2つ用意して一方に違う設定ファイルを以下の箇所に指定します。
  (起動スクリプトは、/usr/local/apache2/bin/apachectl を/etc/init.d/にコピーして作ります)

      HTTPD='/usr/local/apache2/bin/httpd'

                             ↓

     HTTPD='/usr/local/apache2/bin/httpd -f /usr/local/apache2/conf/httpd2.conf'
    

    自動起動は以下のように

   # update-rc.d apachectl(名前を変えた場合はその名前で) defaultts



6 Apacheの設定

 /usr/local/apache2/conf/httpd.conf を編集します。

 ポート番号の変更

  Listen 80

 のところは #Listen 80 にしてコメントにして無効にします。
かわりに Listen 8000 等べつのポート番号にして次の行に書きます(ネットで予約されている25や110は避けます)。

 #Listen 80
  Listen 8000


 ユーザーをROOTにする。

 User daemon
  Group daemon

  以上の箇所の部分をコメント化して、User root と Group root を
次の行に書きます。

 #User daemon
 #Group daemon

 User root
 Group root


 ドキュメントルートの変更

 XMalCFGのディレクトリーを指定します。

 # DocumentRoot "/usr/local/apache2/htdocs"
 DocumentRoot "/XMailCFG/" ← 自分が置いた任意の位置を指定。左は / 直下の場合。


 CGIの実行設定 

 CGIが動くように以下の文字列群を追加。
 見やすいようにCGIディレクトリー関係の部分に書いておきましょ。

<Directory "/xmailcfg">
    AllowOverride All
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Order allow,deny
    Allow from 192.168.1. ← 自分の環境で変更してください。この例では192.168.1.に属する192.168.1.0 から 192.168.1.255 までアクセスを許可します。

</Directory>

 Apacheの起動

  以下のコマンドでウェブサーバーを起動します。

 /usr/local/apache2/bin/apachectl start
再起動は start ではなく restart を指定。止めるには stop を指定。


 これで、なんとかCGIが動くようになりましたけど…。まだ終わらない。

7 いろいろな対処

 とりあえずセットアップ的なことを実行していきますが、あれよあれよと文句を言われます。

 XMailCFG 「基本認証をやれよ!!」

 xmaicgiのフォルダーに .htaccess というファイルを作ります。

 AuthUserFile /home/ユーザー名/.htpasswd
  AuthGroupFile /dev/null
  AuthName "XMailCFG 設定"
  AuthType Basic

  require valid-user

 <Files ~ "^.(htpasswd|htaccess)$">
    deny from all
 </Files>


 .htaccess の AuthUserFileで指定した場所に.htpasswdというパスワードファイルを作成

 # vi /home/.htpasswd

  ユーザー名:コード化したパスワード

 で表記して保存します。コード化したパスワードは「htpasswd コード化」などでネット検索すれば、任意のパスワードをコード化した文字列が手に入ることでしょう。.htpasswd ファイルはサーバーの実行ユーザーがアクセスできる場所においてください(今回はrootが実行ユーザーなので気にしないけど)。

 これで基本認証はパスできると思います。

 でもまだ終わらない。

 XMailCFG 「Perlインストールフォルダーへの変更許可くれよ!!」 

 「問題があります。 WWW サーバの実行ユーザに対して Perl インストールフォルダへの "変更" 権限を許可してください」

 この表示も出ると思いますので、@INCという検索パスを格納した変数を調べて、
 検索パスが示しているフォルダーで、実際に存在しないフォルダーを全て作成します。

 perl -e 'print join("\n", @INC);'

 で、検索パスを調べて、足りないフォルダーを作成します。

 /usr/local/lib/perl/5.14.2

  /usr/local/share/perl/5.14.2

  /usr/local/lib/site_perl

 debian 7.7.0 では以上のディレクトリーがありません。
 mkdirコマンドで作成します。

 権限がどうのこうの言われますのでパーミッションのことかと思ったらぜんぜん違いました。

 これで、一見正常に動いている感じにはなりますが・・・XMailのログとか見ますとまだ不完全なところがあります。


 ログファイルを見られるようにする

 /usr/local/apache2/logs/ にある Apache2のエラーログファイルでなにが起こっているのか確認します。

 # vi /usr/local/apache2/logs/error_log

  Archive/Zip.pm がないと言われるので、/usr/share/perl/5.14.2/IO/Compress/にある Zip.pm を 同じ 5.14.2 のフォルダーのArchiveフォルダにコピー。

 # cp /usr/share/perl/5.14.2/IO/Compress/Zip.pm /usr/share/perl/5.14.2/Archive/ 

 さらに続いて

  File/Stat.pm がないと言われますが、stat.pm はありますので、ファイルの表記を直します。

 # grep -ri 'File::Stat' /xmailcfg/cgi

 user_home.cgi
 common_mailbox.cgi
 XMQuotaMonitor.cgi (こちらはFile::stat と表記されており最新版では修正の必要はないかも2016年11月17日追記)
 report.cgi  (XMailCFG2.43C(10月26日最新版)でファイルが増えているのを確認。2016年11月17日追記)
 common_userinfo.cgi

 上記ファイルのうち5つが、 File::Stat となっていますので テキストエディターで大文字の「S」を小文字の「s」に変えてください。

 なお、○○::stat などの○○の部分はフォルダー名を指しています。(2017年1月27日追記)
-------------------------------
追記
 2017年7月10日
 XMailCFGのバージョンによっては、メールボックスの中身を見るときにも、Net/Smtp.pm がないといったエラーがでるかもしれません。
 ソースのエラー発生場所もApacheのログに表示されますので、そちらのソースをSmtp →smtp に修正し、
システムからsmtp.pm を探し出して、@INCに登録されている場所のNetディレクトリーの直下にコピーするかシンボリックリンクを張ってください。

 以下LinuxMintでの例

 # vi /XMailCFGのインストール先/XMailCFG/cgi/common_viewmsg.cgi  
 上記のファイル中の記述 Smtp を smtp に変更して保存する。

 smtp.pm を必要なディレクトリーにコピーする。

 # cp /usr/share/perl5/smtp.pm /usr/share/perl5/Net/ 
-------------------------------
 以上、これで完璧に動くのではないかと思います。

 なにか起こった場合は、Apache2のerror.logで確認してください。

続きを読む
posted by 難波鷹史 at 18:14| 京都 | Comment(0) | TrackBack(0) | マイコン | このブログの読者になる | 更新情報をチェックする