2012年11月15日木曜日

ノートPCをサーバにしまくっている。

ノートPCをサーバにするという手法は結構前からあるけれども、賛否両論のようなので、
僕の事例を交えつつ、結局どうなのよ、と思ったので、僕の場合をば。

結論から言うと、僕は業務用途としてガチでノートPCをサーバにしまくっている。
かれこれ台数だけなら20台を軽く超える。

まず2009年のスラッシュドットジャパン。
http://askslashdot.slashdot.jp/story/09/04/18/0420241/%E3%80%8C%E6%99%AE%E9%80%9A%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%80%8D%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AF%EF%BC%9F
これは末永氏の
http://d.hatena.ne.jp/tasukuchan/20090417/nicopedia_hardware
を受けての記事。
賛否両論。

僕はノートPCをサーバにすること自体は賛成なので、反対の人はどうだろうと思い、googleで
ノートPC サーバ
と検索した所、トップに出てきたのが
http://mzex.wordpress.com/2008/05/16/%E3%83%8E%E3%83%BC%E3%83%88pc%E3%82%92%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%88%E3%81%8F%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1/

なるほど。分かりやすくまとまっている。
前提条件が変(後述する)だが、丁度良いので、これをベースに「ノートPCをサーバにする理由」を以下。

・ノートPCをサーバにすると、デスクトップより性能は劣るけど、UPS付いてるし静かで良いです。
>物には適材適所ってものがあるんですよ。
というのは間違いなくて、適材適所な場所がサーバでした、ということ。
ただ、運用の仕方を間違うと、酷く間違ったことになってしまう。
上記URLの事例の場合、恐らく部署のよく分かっていない人が、ファイルサーバに仕立て上げていたんだろうと推測できる。
何故なら、そもそもOSの選定がおかしい。XPのHOMEは5台までの接続制限があるし、セッションを増やそうにも増えない筈。
winserver系や、Linuxでサーバを立てないと接続制限の壁を超えるのは一苦労。
というのも、昔同じ事を使用として失敗した経緯があるから分かるというまた切ない感じ・・。

・2.5型HDDはどういう用途に使われるように出来ているかは分からない
組み込みなので正直分からない。ただ、24時間がりがり読み書きするようには作られていないと推測するならば、
もしファイルサーバ用途にするならば、外部にサーバ用HDD(SGとかHGSTの)をUSBや、E-SATAで繋ぐべき。
僕は別事務所のファイルサーバでは、E-SATAで外付したHDDを、cronでUSBで外付けしたHDDにコピーして簡単な冗長化をしている。
他の機能を有したサーバは、普通に内蔵HDDで動いている。

・リチウムイオン電池は満充電状態で劣化するが、大したことはない
panasonicのレッツノート、東芝のダイナブック、シャープのメビウス、ソニーのVAIO、asusのEEEPC等々をサーバに仕立て上げ、
運用していた経験からすると、24時間付けっぱなしにしていたからということでリチウムイオン電池がへたったことは1回もない。
これはテストしてみたから分かるけれども、3年付けっぱなしにしていた複数台複数メーカーのノートサーバの電源を引っこ抜いた所、
実運用に差し障りがあるようなへたり方はしていなかった。要は1時間以上、バッテリーで動作し続けた。
東芝のダイナブックは凄くて、カタログスペックで1時間30分なのに、1時間以上バッテリーで動作し続けた。東芝凄いねえ。
因みに、バッテリーがへたってしまったらもう使えないのか、といわれると、答えはノーで、バッテリーを取り外した状態でも、電源さえ抜かなければ動く。
そうなったときにはじめてUPSのことを考えてもいいし、UPSを買ったらたこ足できる(笑)。
省電力ならではだよね。

・LCD、バックライトの回路がだめになっても気にしない
そもそもサーバ用途なのだから、ここはどうでも良くて。どうしても必要ならば外部接続すればいい。
むしろ液晶が壊れてしまったノートPCをサーバにすればいい。

・メンテをしたことがない。
ものはいつか壊れるので、ほこり取りは1Uサーバだろうが4Uサーバだろうがやったことがない(自慢できる事じゃないけど)。4Uサーバを一度開けたくらいか。
サーバの運用設計は、基本的に壊れること前提で運用するべき。
絶対壊れないものなんて無いんです。
あと、大抵のノートPCはファンが止まっても何故か動き続けている。

不思議。

・いつかは環境を破壊する。
ブレードサーバもSPARCも、どんなサーバもいつかは壊れる。というより、年々上がっていく要求スペックに耐えきれず、置き換え要求の方が早く来るのでは?

・プリントサーバ、ファイルサーバなら安価な専用機があり、簡単にしつらえるなら強くお薦め。
上記用途みたいなことで無駄にPCをサーバにするのは反対。サーバが必要なのは、同時接続数が多くなったり、いわゆる安価なサーバ製品が耐えられなくなった際に
必要に迫られるもの。本当はセキュリティリスクを抱えてまで、サーバなんて組みたくもない、というのが正直な所。

・ノートPC本体も24時間連続稼動を前提に設計されていないかもしれないが、十分耐える。
サーバ用途の製品を使っていないサーバなんてごろごろあるし、十分に実績があるので気にしていない。

・やっぱりノートPCはサーバに適している
ノートPCは「小さいし静かだし省エネだしUPSついてるし中古は安いし性能はデスクトップと同じだしサーバーにうってつけ。これ思いついた私サイコー!天才」
と思う人はおらず、実際は
「ノートPCって小さいし静かだし省エネだしUPSついてるし新品で買っても性能はデスクトップより劣るけどサーバーにうってつけ。これ思いついた私サイコー!天才。」
ではと。
天才まで入っているかどうかと言われると、違うと思うが。

・そもそもサーバ運用はインシデント発生が前提の世界
フォールトトレラント設計が前提の世界なので、業務用途で使うなら多重化は当たり前だろうし、
個人用途でもミッションクリティカルな状況が拙いものに、拙い設計をするはずがない。
もしそういう事が分からないままサーバにしようと思う人がいるのであれば、何を使っても同じなのではないか。
結局、「壊れても良い設計がないままにサーバを運用することはないので、何を使っても結果は同じ」ということ。
壊れて困るなら、何を使っててもバックアップのシステム組むよね。

・結局財布次第
僕だって高価なハードウェアを使いたいし、APCで重い無停電電源を買いたい。
でも3相200vを引けなかったり、IA64なんて死にそうなシステムを社費で買えなかったり、そもそも場所がなかったりするわけで。
リスクを減らすには金がかかるし、理想論を並べるならばいくらでも並ぶけど、
現実的なラインとしてノートPCを使わない手はない。
お金持ちは良いね。

現実的なリスクは・・・中華パッドよろしく爆発の懸念位か。
これは携帯電話もそうだけど、リチウムイオンバッテリーにつきまとうからなあ・・・。
まあ、爆発したことは無いですけどね。

2012年11月14日水曜日

centos6ミニマムインストールからowncloud導入まで

centos6ミニマムインストールからowncloud導入まで

firestorageやgigafile便や宅ファイル便みたいなのを自宅サーバでやるための導入手順メモ。

今だとdropboxと言った方が良いのかな?

オンラインストレージのパッケージ候補としてはdeco driveという徳島県が作ってたOSS製品があるけど、どうしても導入手順が分からない(あるはずのないパッケージを要求される)ので、断念した。

要件としてはdecoDriveの方が近かったんだけど。こちらruby on railsとmysqlだった。

丁寧なインストール方法か、動画があると良いなあ。

http://deco-project.org/

で、これを断念して、owncloudというパッケージにすることに。

こちらはphp+mysqlで動く。

http://owncloud.org/

この導入方法を以下に。

構成はいわゆる64bitPC。

core 2 duo E6300

メモリ2GB

ハードディスクは何故か2台入っていたので、これをそのまま使う。

sda1    300GB

sdb1    1.5TB

centosはcentos6.3 x86_64。

CentOSをPCにミニマムインストール。

ハードディスクが2台あったので、sdb1にシステム(/やswap)、

sda1に/varを入れた。

これは/varがhttpdのデータを入れておく場所になるので、大容量の方がowncloud運用には都合が良い(owncloudのデータは/var/www/http内に格納されていくので)。

ネットワークの設定。

centos6からは、自動で設定してくれなくなったので、ifcfg-eth0(一つしかない場合)を自動で認識するようにする。

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    ONBOOT="no"

    を

    ONBOOT="yes"

に変更して保存

    service network start

でネットワークスタート。

再起動してもonbootがyesなのでネットワークは起動する。

hosts.allow、hosts.denyを適時書く。

firewall設定(iptables)のシェルスクリプトを書く。

selinuxを止めておく。

この辺は

http://centossrv.com/

を参照のこと。

GUI環境が欲しかったので、yumでgroupinstall。

    yum -y groupinstall Desktop "X Window System"

これでGNOMEデスクトップ環境をインストール出来る。

起動は

    startx

但し、インストール直後にやると何故か落ちるので、一度再起動させた方が良い。

常態化するなら

/etc/inittab



id:3~になっているところを

id:5~にする。

ミニマムインストールだと日本語選択をしても日本語環境が入っていないので、日本語環境を入れる。

    yum -y groupinstall "Japanese Support"

導入後

    vi /etc/sysconfig/i18n

    LANG="ja_JP.UTF-8"

となっていることを確認。なっていないなら修正。

httpd(apache)インストール

phpをインストール。

正直何が必要か分からないので、全部突っ込む。
    yum -y groupinstall "Development Tools"
    yum -y install php php-mbstring php-xml php-gd php-pdo php-pear php-devel php-mysql
    yum -y install libzip libzip-devel zlib-devel
全部は駄目だってさー。
http://lamp-oita.blogspot.jp/2012/06/owncloudcentos-6.html
php(本体)とphp-mbstring(たしか2バイト文字を扱うやつ)は必須。

httpd.confを編集

    vi /etc/httpd/conf/httpd.conf

    ServerTokens OS

    ↓

    ServerTokens Prod

    #ServerName www.example.com:80

    ↓

    ServerName localhost:80

    # AllowOverride controls what directives may be placed in .htaccess files.

    # It can be "All", "None", or any combination of the keywords:

    #   Options FileInfo AuthConfig Limit

    #

        AllowOverride None

      ↓

        AllowOverride All ← .htaccessの許可

この辺は必ず必要。後は

http://centossrv.com/apache.shtml

を参照。

ブラウザ入れ忘れていたのでfirefoxを入れる。

    yum -y install firefox

phpのテストページ作成

    vi /var/www/html/test.php

    内容は
    <?php
      phpinfo();

    ?>

php.iniを編集し、最大アップロードサイズを変更。サーバ容量を加味して適当に。

    vi /etc/php.ini

    post_max_size = 8M

    ↓

    post_max_size = 8000M

    upload_max_size = 2M

    ↓

    upload_max_filesize = 8000M

httpd(apache)を起動させてみる。

    service httpd start

firefoxのアドレス欄に

    localhost

と入力しエンターした際に、apacheのスタートなどが見えれば問題なし。

また、先程作製したtest.phpにアクセスし、見えれば問題なし。

    localhost/test.php

ね。

次はSSLに対応させる。

ここは先人の手順を踏襲しつつ、改変する(ubuntuでの手順なので)。

http://dev.classmethod.jp/etc/owncloud-1/

まずはopensslとmod_sslをインストール

    yum -y install openssl

    yum -y install mod_ssl

鍵や証明書を保存するディレクトリ作成

    mkdir /usr/local/ssl

    cd /usr/local/ssl

秘密鍵を生成

    openssl genrsa -aes128 -rand /dev/urandom -out owncloud_server.key 2048

パスフレーズを聞かれるので、パスフレーズを入力。確認があるので再度入力。(パスフレーズは覚えておくように)

上記秘密鍵に対応した証明書を発行するための「CSR」を生成。

日本ベリサインのサイトが詳しい

https://www.verisign.co.jp/ssl/help/csr/capache_new.html

    openssl req -new -key owncloud_server.key -out owncloud_server.csr

パスフレーズを聞かれるのでパスフレーズ入力後、必要情報を書いていく。

チャレンジパスワードやオプショナルカンパニーネームは必要ないので空エンター。

「サーバ証明書」の発行。有効期限は参考URLに沿って5年。

    openssl req -in owncloud_server.csr -out owncloud_server.crt -key owncloud_server.key -x509 -days 1827

パスフレーズを聞かれるのでパスフレーズ入力。

秘密鍵のパスフレーズ削除。

    >ApacheでSSLを使用する場合、Apacheのサービス起動時に秘密鍵のパスフレーズを聞いてきて途中で止まってしまうのを回避するため、秘密鍵であるowncloud _server.keyを復号化して、パスフレーズを入力しなくても秘密鍵を使用できるようにします。(念のためにオリジナルはバックアップをとっておきます。)

らしい。

    cp -p owncloud_server.key owncloud_server.key.bak

    openssl rsa -in owncloud_server.key -out owncloud_server.key

パスフレーズを聞かれるのでパスフレーズ入力。

オーナー情報をrootに変更。といってもrootで作業しているはずなので、chmodのみで可。

    chmod 400 *

    chown root:root *

openSSLをapacheで使えるように/etc/httpd/conf.d/ssl.confを変更。

    vi /etc/httpd/conf.d/ssl.conf

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt

    ↓

    SSLCertificateFile /usr/local/ssl/owncloud_server.crt

    SSLCertificateKeyFile /etc/pki/tls/private/localhost.crt

    ↓

    SSLCertificateKeyFile /etc/pki/tls/certs/owncloud_server.key
    SSLCertificateKeyFile /usr/local/ssl/owncloud_server.key
 (2014.03.09コメント頂き修正)

    > #  General setup for the virtual host, inherited from global configuration

    > #DocumentRoot "/var/www/html" ← #を削除(コメント解除)

    > ↓

    > DocumentRoot "/var/www/html"

    もやっとくといいらしい。

http://centossrv.com/apache-ssl.shtml

これで

    service httpd restart

させると、

    https://localhost

が表示できる。自己証明なので、ブラウザによっては警告される。

mysqlのインストール。

こちらも先人に倣ってインストールする。

http://centossrv.com/mysql.shtml

http://dsp74118.blogspot.jp/2012/07/ownclouddbsqlitemysql.html

    yum -y install mysql-server

    vi /etc/my.cnf

    # Disabling symbolic-links is recommended to prevent assorted security risks

    symbolic-links=0

    character-set-server = utf8

    ↑文字コード追加

    service mysqld start

これでmysqlがスタートする。

初期設定

    mysql_secure_installation

初めに(mysqlの)rootパスワードを聞かれるが、設定してないので空エンター。

次にパスワード設定するかと言われるので、yもしくはからエンター。

パスワードをタイプし(覚えておくように)確認タイプ。

匿名ユーザの削除、リモートrootアクセスの禁止、テストデータベース削除の確認が続くが、全部空エンター。

要はオッケーオッケー。

設定が終わったら、owncloud用のユーザを作成。

    mysql -u root -p

パスワードを聞かれるので、先程設定した(mysqlの)パスワード入力。

mysqlデータベースに、「owncloud」というデータベースを作る。

    create database owncloud default character set utf8;

確認。

    show databases;

ユーザ「owncloud」を作成し、DB「owncloud」に対するアクセス権を付与。

シングルクオーテーション内のyourpasswordは任意のパスワード入力。

    grant all on owncloud.* to owncloud@localhost identified by 'yourpassword';

確認。

    select host,user from mysql.user;

    exit

でmysqlを抜け、やっとowncloudのインストール。

http://blog.rutti.net/item_1069.html

まずwgetをインストール。

    yum -y install wget

ソースの保存場所作成し、移動

    mkdir /usr/local/src/owncloud

    cd /usr/local/src/owncloud

http://owncloud.org/より、ダウンロードリンクを引っ張ってきてwget。

執筆時の最新版は4.5.4。

    wget http://mirrors.owncloud.org/releases/owncloud-4.5.4.tar.bz2

ダウンロードしたら、解凍。

    tar -xvjf owncloud-4.5.1.tar.bz2

apacheのルート(/var/www/html/)にコピー

    cp -r owncloud /var/www/html/

apacheのルートに移動

    cd /var/www/html/

ファイルの所有者をapacheに変更

    chown -R apache:apache owncloud/

データフォルダを作る

    cd owncloud

    mkdir data

    chown apache:apache data

ファイルのパーミッションを変更する

    chmod 770 data

    chmod 777 config

    chmod 777 apps

ブラウザでowncloudディレクトリにアクセスすると、ここからインストール。

初めにアドミンのユーザを登録するので、

アドミンユーザ名とパスワードを入力する。

次にadvancedから、データベースを登録する。

configure the database



mysqlを選択。

ユーザ名はmysqlのユーザである「owncloud」、パスワードはユーザ「owncloud」のパスワード、データベース名は「owncloud」

finish setup

を押下すれば終了。

お疲れ様でした。

かなり駆け足なので、セキュリティ面ではかなり不安が残る内容。

外部に公開する場合、必ずセキュリティアップは必要。

rootキット検知やウイルススキャン、ファイヤーウォール等々は勿論、細かい所まで見ないと駄目ですよ。

因みに、32bitOSと64bitOSで、owncloudには違いがあります。

なんと32bitOSだと、ファイルのアップロード制限がかかり、2GBまでに切られます。

これはhttpd(apache)が32bitのため。

http://devadjust.exblog.jp/9451351

64bitなら上限はあってないようなものです。

これも参考にした。

http://blog.rutti.net/item_1069.html

以上。

2012/12/18
色々間違っているものを修正しました。後何点か間違っているかもなので、ご指摘お願い致します。
まんまやっても入らなかったところが、それです。

2012年11月13日火曜日

CentOS6に、GNOMEをインストールしたい

centos6をミニマムインストールした後、GUI環境が欲しくなって、
昔のようにX Window SystemとGnome Desktop Environmentを入れようとした所、
何故か両方引っかからない。
おかしい。
何故だ、と、取り敢えず確認だけでもと思い、
yum grouplist
を実行。
あれ、Xあるじゃない。
再度
yum -y install "X Window System"
yum -y groupinstall "X Window System"
を叩くと入った。
それでもGNOMEは見つからず、仕方がないのでDESKTOPというグループをインストール。

startx
を叩くと起動した。

今は
http://blog.livedoor.jp/edworld/archives/1713784.html
のように、DESKTOPだけで動くらしい。へえ。

訂正
groupinstallでした。