タグ:Linux

これからサーバー構築する友人へ サービスを公開するLinuxサーバーを構築するときに何点か意識をしておかないと後で面倒な事になります。 運用に一度乗ってしまうと、そう易々と設定を変えられないことに起因するんですが、実際にサーバー構築して、運用に乗っけてから失敗したなぁ・・・って事が在ったので、書いておきます。

サーバーのディレクトリやアプリの構成は統一すべし

Linuxをインストールする際に、出来るだけサーバー構成を統一しましょう。 ディレクトリ構成だけでなく、アプリケーションのインストール先や、設定ファイルの置き場等は絶対同じにしていた方がいいです。 何故かと言うと、トラフィックが増大してきた時に、一台ではまかないきれなくなってきます。 そうすると、MPP環境を構築する事になると思うのですが、MPP環境を構築するとき、サーバーの構成が違っていると、か・な・り面倒です。 並列化するソフトウェアを使う場合、サーバー構成が同じであることが条件であるソフトが結構在ります。 大体台数が増えてくると、いちいちサーバーの違いなんて覚えていられません。

アプリを稼働させる前にバックアップ計画を

特にDBにかんしてですが、バックアップ計画を先に立てておかないと、非常に困ります。 一度運用始まると、アプリケーションの再起動すらなかなか出来ません。 特にDBによっては、バックアップ時にロックをかける事があるので、多少なりとも停止してしまう時間が出来てしまいます。 メンテナンスウィンド(システム停止時間)を何処に置くかをちゃんと考えておかないと、すぐにメンテナンス出来なくなってしまいます。 365日24時間稼働の無停止システムとなると、その難易度は更に増大します。ってか基本的に止められないので、バックアップやバージョンアップが出来ません。初めからHA構成にしておかないと、痛い目見ます。 HAにしたところで、切り替えの時は一時的に停止してしまうと思うので、更に冗長化する必要が在ります。 激しく気を遣ってください。

運用はshellで

どんなに運用計画をシッカリ立てても、人手を介す限りミスは発生してしまいます。 そこで、出来るだけshellスクリプトで自動化しておきましょう。 リリース、バージョンアップ、サーバーのヘルスチェック、設定変更etc...各種shellを用意しておくと便利です。

パスワード認証は破られる

パスワード認証危ないです。ウチのサーバーも一日3000件以上不正アクセスを受けています。 辞書攻撃をくらったりするので、最低でもsshの公開鍵認証は設定しましょう。 それでもセキュリティホールはあるので、Logwatchなどで、ログのサマリーを取得してメールで送るようにしておくと便利。
このエントリーをはてなブックマークに追加

Linuxを入れていたThinkPadを工場出荷状態にリカバリしようとおもったのですが、 リカバリを行おうとすると[Error #1828 Error: Free Space is too small] とか怒られます。 リカバリ用のソフトを展開するときに、MBRにでも展開してしまうからか...? fdiskコマンドでパーティーションを開放すればいいんだけど、 中途半端にファイルが書き込まれたため、GRUBからLinuxが起動しなくなってしまった。 仕方ないので、そこいら辺りにころがっていたubuntuをCDブートして、fdiskで領域を全て開放したら、リカバリできそうな気配。 いまリカバリ中だけど遅くていつまでかかるやら・・・ ずっと奴のターン。

Powered by ScribeFire.

このエントリーをはてなブックマークに追加

最近何かと話題のOpenCVを入れてみる。 OpenCVは画像を解析するアルゴリズムをおさめたライブラリです。 なんだか取っても未来指向♪ すでにOpenCVをつかって攻殻機動隊の「笑い男フィルタ」を作っているひとが居ます。おもしろー。 早速、OpenCVの開発ページからダウンロードして適当なディレクトリへ展開。
$ tar zxvf opencv-1.0.0.tar.gz
でいつも通り
$ cd opencv-1.0.0
$ . ./configure
$ make
$ make install 
ライブラリを使うために環境変数が必要なようなので、/etc/profileに以下を追加。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
/etc/ld.so.confに/usr/local/libへパスを通して
$ ldconfig
これで共有ライブラリ設定もOK。 あとは使うだけ! さーていっちょあそんでみっかぁ。
このエントリーをはてなブックマークに追加

よくSELinux運用下でWebサーバー立ててると直面する現象に、 ちゃんとパーミッションの設定したのに、Permission denyで怒られる事があります。 原因は、SELinuxで、コレを知るまでエライ目に遭ったことが有ります。 ちゃんと勉強しないといけないんですが、軽くメモを。 全然詳しい訳でもないので、もしかしたら大嘘付いているかもしれません。 例えばWebサーバーで、権限設定はあっているのにパーミッションエラーでアクセス出来ないなんて場合が有ります。
$ ls -l hoge.html
-rw-r--r--   1 apache  apache  719  2  5 22:58 hoge.html
そんな時はlsのZオプションを指定すると、SELinuxのセキュリティコンテキストが見れます。
$ ls -lZ hoge.html
-rw-r--r--  apache  apache system_u:object_r:user_home_t hoge.html
system_u:object_r:user_home_tの部分がセキュリティコンテキストですね。 前から、ユーザー識別子、ロール識別子、タイプ識別子と言うらしいのですが、一番重要なのは、タイプ識別子です。 上記例の場合タイプ識別しがuser_home_tになっています。 一方httpdが所属するのはhttpd_tです。コレをドメインと言うようです。SELinux上の各ドメインはお互いにコンパートメント化されており、ほかのドメインからの不正なアクセスを許可しないように定義されています。その為、たとえOSのパーミッションが有っていてもアクセスできないのですね。 セキュリティコンテキストを変えるためには、chconコマンドを使います。
$ chcon system_u:object_r:httpd_sys_content_t hoge.html
$ ls -lZ hoge.html
-rw-r--r--  apache apache system_u:object_r:httpd_sys_content_t hoge.html
コレでWebサーバーからhoge.htmlにアクセス出来ます。 httpdのドメインがhttpd_tなのにhttpd_sys_content_tと権限設定するのは何故かって事は聞かないで下さい。 嵌りがちなので書いた程度なので。近々ちゃんと勉強します・・・。
このエントリーをはてなブックマークに追加

Tracのサイトのヘッダーロゴを変えようと思ったんですが、何処で変えるのかにちょっと悩ました。 プロジェクトホーム/conf/trac.ini に [header_logo]って項目があって此処を変えればいんですが、問題は何処に画像ファイルを置けばいいか?って所です。 そこでデフォルトのヘッダーロゴが何処にあるかfindしてみたところ、 /usr/share/trac/htdocs下にありました。 ・・・でもコレ、グローバル設定だよねぇ。 そこには入れたくないなぁ・・・と思っていたら、 プロジェクトホーム/htdocsというフォルダが有ることを発見。 此処に画像を置いてtrac.iniを編集
[header_logo]
alt =
height = -1
link = http://192.168.11.6/main/
src = common/trac_banner.png
width = -1
srcを変えれば良いわけですが・・・common? そんあフォルダないぞ。Apacheのtrac.confでも定義してないし、trac.cgiで定義されているんだろうなぁ。 結局、マニュアル読んでいたら、 commonを指定すると、グローバルの/usr/share/trac/htdocsを見に行って、 プロジェクトホーム/htdocsを見に行くときは、site/画像ファイル名と書いてあげれば良いことを発見。
[header_logo]
alt =
height = -1
link = http://192.168.11.6/main/
src = site/hoge.png
width = -1
と書いておいた。なるほどぉ。 cssとかも同様に行けるのかな?
このエントリーをはてなブックマークに追加

↑このページのトップヘ