‘Linuxサーバ’ カテゴリーのアーカイブ

サイト移行と自宅サーバ

サーバの運用 | by 管理者
5月 03日 2012 年

約2週間くらい前からレンタルサーバ上にサイト構築を行い、並行してホームページの見直しと自宅サーバのコンテンツの移行を行ってきましたが、ようやく終了しました。

今は、バリュードメインのDNSの参照先を切り替えるだけで、自宅サーバにしたりレンタルサーバにしたり、柔軟に切り替えることができるようになりました。

こうしてみると、トラぶったときの対処としてバックアップ環境が1つあると心理的にも心強いですね。

今回の移行先はさくらインターネットのVPSサーバでメモリ1GB・ハードディスク100GBの980円/月のプランですが、予想よりサクサクと動きます。

今までは自宅サーバを主にしてレンタルサーバをバックアップに考えていましたが、レンタルサーバを主にして自宅サーバをバックアップにしても良いのではないか?なんて思っています。

何故か今年のGWは涼しいですが、例年ならもっと暑かった記憶が・・・・

無人の家の中でサーバの熱暴走や火災等考えられるので、暑くなる前にサーバの移行が終了して良かった。

 

*** 追加 ***

これを書いた翌日ですが、とんでもないミスを発見しました。

WordPressに掲載した画像がこんな感じにIPアドレスでリンクされていました。

http://123.123.123.123/wordpress/image/abcd.jpg

早い話、固定IPなら問題ないですが、動的IPだと非常に不味いです。

WordPressのバックアップをBackWPupで戻したときに、ドメイン名がIPアドレスになってしまったみたい。

もう1度BackWPupでテキストデータのみ戻しました。

 

*** さらに追加 ***

上記対策でもダメでした。

そこで、phyMyaAminを使用してsqlでIPアドレスをドメイン名に置換しました。

実行したsqlはこれです。

  • UPDATE wp_options SET option_value=REPLACE(option_value,"http://123.123.123.123","http://www.trend-ai.com") WHERE option_name = 'home' OR option_name = 'siteurl';
  • UPDATE wp_posts SET post_content=REPLACE(post_content,"http://123.123.123.123","http://www.trend-ai.com");
  • UPDATE wp_posts SET guid=REPLACE(guid,"http://123.123.123.123","http://www.trend-ai.com");
  • UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"http://123.123.123.123","http://www.trend-ai.com");

 

※ http://123.123.123.123 を http://www.trend-ai.com に置換します。

参考にししたサイトはココです。

http://notnil-creative.com/blog/archives/446

レンタルサーバへのサイトの構築

セットアップ | by 管理者
4月 17日 2012 年

現在、自宅にWEBサーバーを配置して自宅から情報発信していますが、台風による停電でサーバが壊れる危険性や真夏の猛暑で火災になる危険性があり、このリスキーな期間は外部のレンタルサーバにサイトを移転することを考えております。

具体的には、自宅サーバにあるコンテンツと全く同じコンテンツを外部のサーバーに持たせて、DNSを切り替えて自宅サーバーを参照したり、レンタルサーバーを参照したりします。

つまり運用上リスキーな期間はレンタルサーバを参照し、そうでない期間は自宅サーバを参照するようにDNSを切り替えます。

そこでさくらインターネットの1番安い980円/月のVPSサーバーを契約してみました。

申し込み当時は4月16日から使用できるとのことでしたが、昨日サーバを起動することができなかったのでサポートに問い合わせたところ、未だ準備が出来ていないらしく、今週中に提供したいとの回答でした。

現在は、自宅サーバとはいえ1台のPCを専用で使用しているので、これ以上ない贅沢な環境で使っているのですが、共用で使うVPSサーバーだとどんな感じになるのでしょうか?

ホームページ運用やブログは運用上問題無いでしょうが、動画の動きがギクシャクするかもしれません。

それでも、サイトが存在して動作していることが一番重要なので、この方向で対策を行う予定です。

(備忘録)Linuxで同じ型番のマザーボードに交換しただけなのにネットワークが使えないときの対処方法

サーバトラブル | by 管理者
10月 18日 2011 年

自宅サーバの予備のマザーボードを中古で手に入れた話をしましたが、保障期間が1ヶ月しかないので、動作確認が必要です。

それを本日の深夜に行いました。

マザーボードを入れ替えるだけなので、大したこと無いなんてタカを括っていたらとんでもない。

Linuxは起動するのですが、ネットワークが使えない。

写真を撮っておけば、後々の資料になるのですが、写真を撮る余裕なんて無かったです。

申し訳ありません。

 

24時間稼動のウェブサーバなので、ネットワークのトラブルシューティングしている余裕は無く、元のマザーボードに戻したら今度は起動すらしない。

ここでパニック・・・顔から血の気が引くとは正にこのこと。

 

ここで頭を整理し、ネットワークだけが使えないなんて故障は考え難い、もしネットワークが故障しても新規にLANボードを増設すればネットワークを使うことは出来るはずと考え、再度マザーボードの入れ替えを行いました。

ここで、何故ネットワークだけ使えないのか調べました。

原因は、以前ハードディスクを入れ換えて、データを戻しても使えないことがあったのですが、それと同じことが起こっていました。

Linuxはハードウェアアドレスを管理していて、例え型番が同じマザーボードを入れ換えても内臓Lanのハードウェアアドレスが違うとネットワークが使えないのです。

 

ここでトラブルシューティングを順当に

# ifconfig -a を実行すると、eth1 とloの2つのデバイスが認識されており、eth0が無い。

# ifconfig eth1 up を実行するとeth1の起動はできる。

本来eth0で起動するように設定してあったが、何かの原因でeth0がeth1に置き換わってしまったみたい。

 

そこで、以下の設定ファイルを見るとeth0 とeth1の両方の記述がありました。

このファイルのeth0の記述をコメントアウトし、eth1をeth0に変更してリブート

# vi /etc/udev/rules.d/70-persistent-net.rules

 

これでもネットワークが使えなったので、以下の設定ファイルを見ると、こちらにもハードウェアアドレスの記述がありました。

そこで、ハードウェアアドレスを書き換えてリブートしたら今度はネットワークが使えるようになりました。

ここで書き換えるハードウェアアドレスは、# ifconfig -a であらかじめ確認しておきます。

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

 

作業を始めたのが午前0時、作業終了が午前4時

とんでもない目にあいました。

 

※ 今サーバで動いているマザーボードは今回手に入れた予備の方です。

起動しなかったマザーボードを改めて別のパソコンから部品を剥ぎ取って電源を入れ直したら起動できたので壊れていませんでした。

良かった。  ε-(´。`*)ホッ

ようやくLinuxサーバの予備パーツ、マザーボードが入手できました。

サーバの運用 | by 管理者
10月 15日 2011 年

自宅サーバのOSはLinuxです。

サーバにハード障害が発生したときに簡単に同じパーツが入手できれば大きな問題ではないのですが、そうでない場合は新しくサーバを組み立ててLinuxを入れなおし、再設定する手間が発生します。

これがWindowsであればどうってことないのですが、Linuxは面倒くさくてやりたくない。

そしてこの問題で一番入手困難なパーツがマザーボードです。

※ おそらく数年先でもマザーボード以外のパーツは問題なく入手できると思います。

サーバを組んだのが今から1年半前ですが、そのときと比較してマザーボードはすでに新しいアーキテクチャに置き換わっており、その当時のマザーボードはほとんど販売されていません。

そのことに気づいてマザーボードを入手しようと動き出したのが今からわずか2ヶ月前

ヤフオクにマザーボードの型番でアラートを仕掛けても見つからず、半分あきらめかけていましたが、今日偶然名古屋のソフマップに行ったときに中古ですがまったく同じマザーボードを見つけることが出来ました。

中古なので保障のある1ヶ月以内に動作確認する必要がありますが、今動いているパソコンからパーツを剥ぎ取って組み立てないといけないので面倒くさい。

できればサーバを停止したくありませんが、これに付けられるCPUはサーバ以外に持ち合わせがないので、サーバからCPUを移植して動作確認している最中はサーバを稼動させることが出来ません。

こうしてみると、つくづく「サーバメンテナンス中のお知らせ」機能を作って良かったと思いました。

この機能は、以下で実現しています。

http://it.trend-ai.com/?p=2934

 

このマザーボードはATXの規格なのでセットアップ対象のパソコンのケースが限定されます。

よって、このブログを書いているパソコンの部品を外して組み立てることになるため、別のパソコンである娘のパソコンを借りて「サーバメンテナンス中のお知らせ」を出す予定です。

今思えば、どのパソコンでも動作させられるように「サーバメンテナンス中のお知らせ」機能をVMware上で作って良かったと思いました。

 

*** 記事追加 2011/10/18  ***

サーバのマザーボードを入れ替えて動作確認しただけなのに、トンでもない目にあいました。

詳細はここに書きました。

http://it.trend-ai.com/?p=3360

「サーバメンテナンス中」のお知らせをサーバ機とは別のWindowsXP + Apacheパソコンで表示できるようにしました。

サーバの運用 | by 管理者
9月 22日 2011 年

企業ではサーバのメンテナンスをするため、サーバの電源を切ったりネットワークから切り離したりするときは、別のサーバにユーザからのリクエストを転送し、「サーバメンテナンス中」のお知らせを表示して目的のホームページがメンテナンス中で閲覧出来ないことをアナウンスし、同時に検索エンジンにHTTPレスポンス503を返します。

そこで、今回これと同等のことを実現するため、別のWindowsXPパソコンに「サーバメンテナンス中」のお知らせを表示させます。

その際、「サーバメンテナンス中」を出すためのOSとWEBサーバはVMwarePlayer上のWindowsXPとApacheとし、ポータブルハードディスクにバックアップを取っておいて、サーバメンテナンスをする時にWndowsパソコンにコピーして動かすようにします。

このようにすれば、2台あるWindowsパソコンのうち使っていない方のパソコンを使えば良いし、第一Windowsパソコンの調子が悪くなってApacheが立ち上がらなくなったとか,Windowsパソコンを再セットアップしたら、一緒にWEBサーバも消えてしまった等のトラブルを防ぐ事が出来ます。

※ プロバイダのサーバにホームページを持つことができればこんな面倒なことをしなくて良いのですが、それができないところなので こんなことをやっております。あまり深く追求しないで下さい。

 

手順は以下のとおり

1.VMware Playerのインストール

・WindowsパソコンにVMwarePlayerを以下からダウンロードしてインストールする。

https://www.vmware.com/jp/tryvmware/?p=player&lp=1

・VMwarePlayer上にWindowsXPをインストールします。

・セットアップしたWindowsXPが稼動中のWebサーバと同一セグメントになるように、ネットワークアダプタの設定をブリッジ接続にします。

 

 

・IPアドレスを設定します。(サーバが稼働中なので、サーバとは別のIPアドレスでセットアップする。)

 

 

・セットアップが完了すると、WindowsXP上でWindowsXPが動くことになります。
※ 下の画面を見ると、WindowsXP画面の上にもう一枚WindowsXPが出ているのが分かります。

 

 

2.Apacheのインストール

・Apacheを以下からダウンロードし、VMwarePlayer上のWindowsXPにインストールします。

http://httpd.apache.org/download.cgi

 

 

・同意してNext

 

 

・運用しているドメインの名称、メールアドレスを入力します。

 

 

・Typicalを選択します。

 

 

3.PHPのインストール

・PHPを以下からダウンロードし、VMwarePlayer上のWindowsXPにインストールします。

http://windows.php.net/download/

※ Apache2.2Moduleが含まれているものを選択します。探したところ、VC9でコンパイルしたものには入っていませんでした。今回ダウンロードしたのは赤枠で囲ったものです。

 

 

・同意してNext

 

 

・インストール先を確認してNext

 

 

・Apache2.2.x Moduleを選択してNext

 

 

・確認してNext

 

 

・Multi-Byte Stringを選択してNext
※ 日本語はマルチバイトなので必須

 

4.Apacheのコンフィグレーション

・Cドライブにフォルダ"C:\WWW\htdocs"を作成します。
・C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.confを開きます。

 

 

・PHPのモジュールの格納場所をhttpd.confに追加します。
PHPIniDir "C:\Program Files\PHP\"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

 

・.htaccessでリダイレクトするため、先頭の#を外します。
LoadModule rewrite_module modules/mod_rewrite.so

 

・ドキュメントルートを変更します。
DocumentRoot "C:/WWW/htdocs"に変更します。
※ デフォルトは階層が深くて使い難いので変更します。

 

・ドキュメントルートの属性を変更します。
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/WWW/htdocs"> ← "C:/WWW/htdocs"に変更
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks ExecCGI   ← ExecCGIの追加

#
# 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 all ← Noneからallに変更

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

</Directory>

 

・cgiの拡張子を紐づけます。
AddHandler cgi-script .cgi
AddType application/x-httpd-php .php

 

・#を外して以下の関連ファイルを読み込みます。
# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

 

・mime.typesの修正
C:\Program Files\Apache Software Foundation\Apache2.2\conf\mime.typesを開きます。

最終行に以下を追加します。
application/x-httpd-php php
application/x-httpd-php-source phps

 

・httpd-languages.conf の修正
C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra¥httpd-languages.confを開きます。

以下を追加します。
DefaultLanguage ja

 

・デフォルトの文字コードを変更します。
AddDefaultCharset shift_jis

 

5.PHPのコンフィグレーション

・C:\Program Files\PHP\php.inifを開きます。

・画面にエラー表示するようにします。
display_errors = On

 

・デフォルトの文字コードを指定します。
default_charset = "Shift_JIS"

・日本語などマルチバイト文字を使うため、以下を追加します。
extension=php_mbstring.dll
extension_dir=C:\Program Files\PHP\ext

 

・各自の環境に合せて日本語処理の設定を行います。
[mbstring]
; language for internal character representation.
mbstring.language = Japanese

 

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8

 

; http input encoding.
mbstring.http_input = pass

 

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = pass

 

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
mbstring.encoding_translation = Off

 

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

 

; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;

 

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0

 

; enable strict encoding detection.
;mbstring.strict_detection = Off

 

 

5.Apacheの再起動

Apacheを再起動します。

 

6.「サーバメンテナンス中」画面の作成と設定

・htaccessの作成

以下の内容でC:\www\htdocsに.htaccessを作成します
RewriteEngine on
RewriteRule ^503/ - [L]
RewriteRule ^.*$ 503/503.php
Options -Indexes

 

・503フォルダの作成
C:\www\htdocs¥503フォルダを作成します。

 

・以下の内容でC:\www\htdocs¥503に503.phpを作成します
<?php
header ("HTTP/1.0 503 Service Temporarily Unavailable");
include(dirname(__FILE__) . "./maintenance.html");
?>

 

・C:\www\htdocs¥503に「サーバメンテナンス中」ページを作成します。

※ 「サーバメンテナンス中」画面の作成と設定に関して、http://labs.unoh.net/2007/07/post_93.htmlを参考にしました。

7.確認

ブラウザを立ち上げて、http://IPアドレスで「サーバメンテナンス中」画面が表示されます。

 

サーバメンテナンスで、サーバをネットワークから切り離してしまうときは、サーバのIPアドレスをVMware上のWindowsXPのIPアドレスに設定してやればよい、

もし、サーバをネットワークに参加させたままサーバメンテナンスするときは、ルータのコンフィグレーションファイル開いてメンテナンス中のサーバのIPアドレスをVMware上にセットアップしたWindowsXPのIPアドレスに変更してやればよい。

ということです。

細かいところはずいぶんと端折ってしまいましたが、緊急避難で使う機能なので、これで良しとします。

3回目のサーバー障害でgoogleからペナルティ?アクセス数は落ちるのか?

サーバトラブル, SEO | by 管理者
9月 02日 2011 年

自宅でサーバを構築し、ホームページを開設していると何かと問題が発生します。

8月22日には、Diceが間違ったIPアドレスでDNSを更新したため、8月22日の朝7:00~夜7:00までの間ホームページが見れませんでした。

googleは数十分程度の短時間サーバに繋がらないのであれば問題ないようですが、これほど長時間に渡り、何度(3回)も繰り返すとペナルティが有るみたいで、未だにアクセス数が2割ほど落ちたまま元に戻っていません。

※インデックスの数は変わっていないみたいですが、検索順位が落ちたようです。

 

 

 

このグラフは、google analysticsのページビューを切り出したものですが、見事に8月22日からガクっと落ちています。

これは、自分の管理責任の致すところなので仕方ないことですが、これと同様のことが1ヶ月前もあり、そのときはすぐに回復したのですが何故か今回はダメ。

おそらく今回が3回目なので、何度も繰り返すとペナルティになるみたいです。

ところで、また台風が近づいています。

本当にうっとうしい。

雷が鳴り始めると停電対策としてサーバーを落としたいのですが、こんなことがあると簡単には落とせないですね。

安いUPSでも買おうかな。・・・前回の台風の時と同じことを言ってるにわかサバ管でした。

落雷による停電対策のため、昨夜WEBサーバの電源を落としました。@豊橋

サーバの運用 | by 管理者
8月 25日 2011 年

昨夜の0:30頃、雷がすごかったですね。@豊橋

にわかサバ管として、落雷により停電する可能性があったので、24時間稼動のWEBサーバーの電源を落としました。

今朝になって、実際に停電があったかどうか早速調べましたが、中部電力のホームページには載っていないですね。

小規模な停電は載せないのかも。

まちBBSを見たら、2011/08/25(木) 01:05:04 「瞬停ありました@二川 」って書き込みがあったので、ここから10Km程度離れた場所で瞬間停電はあったみたいです。

例え瞬間停電でもサーバのハードディスクが壊れる可能性があるので、サーバーの電源を落として正解だったと思います。

ディスク障害が発生してもWindowsは手軽にセットアップできますが、さすがにLinuxは手間が掛かるので、このリスクを考えると雷対策用にUPSが欲しいです。

Diceが間違ったIPアドレスでDNSを更新する件、解決しました。

サーバトラブル | by 管理者
8月 24日 2011 年

題記の件ですが、DiceのIP確認で「IPアドレスチェック」が タイムアウトしていたのが原因でした。

Diceのevent.logが文字化けして見れないので、いつも個別のid000001.log~のログを見ていましたが、

#  nkf /usr/local/bin/DiCE/log/events.log | more

を実行すると、event.logが文字化けしないで見れるようになったため、ようやく理由がわかりました。

こんな事なら、さっさとevent.logを見れるように調査すれば良かった。

 

DiceのIP確認で「IPアドレスチェック」が タイムアウトすると、dice.iniの「CheckIPAddress」に記載されたIPアドレスで更新するようです。

その時、「CheckIPAddress」のアドレスが間違っていると、間違ったIPアドレスでDNSが更新されます。

タイムアウトするときとタイムアウトしないときがあって、成功したり失敗したりするみたいです。

そのため、信頼性の無いDiceのIPアドレスチェックを止めて、外部のスクリプトに変更しました。

# /usr/local/bin/DiCE/diced

:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>2
-------------------------------------------------
スクリプトのURLを入力してください
<現在:>
(N)変更しない (P)戻る
http://www.dyndns.org/cgi-bin/check_ip.cgi

 

確認の為、dice.iniの「CheckIPAddress」を0.0.0.0に変更して

:ex イベント番号

を実行したところ、正しいIPアドレスでDNSが更新され、dice.iniの「CheckIPAddress」も正しいIPアドレスで更新されました。

ようやく解決しました。

めでたし、めでたし。

 

*** 記事追加 2011/8/25  ***

今まで1年間問題が発生していなかったのに、突然DiceのIPチェックがタイムアウトするようになりました。

思い当たることは、電話番号を2回線使えるように光モデムを変更したこと。

グローバルIPの確認はルータだけでなく、光モデムまで見に行くのでしょうか?

でないとつじつまが合わない。

再発、Diceが間違ったIPアドレスでDNSを更新する。

サーバトラブル | by 管理者
8月 23日 2011 年

しばらく調子良かったのですが、Diceが今朝の定期更新で間違ったIPアドレスをDNSに書き込んだため、ついさっきまでサーバー接続できませんでした。

申し訳ありませんでした。

Lan内からは問題なく接続できていたので気が付きませんでした。

原因は良く分かりません。

Diceのコマンド「setup」でIPアドレスを自動検出すると問題なく正しいIPアドレスを取得するのですが、「ex イベント番号」を実行すると、dice.iniに記載された間違ったIPアドレスを取得してDNSを更新してしまいます。

取りあえず、dice.iniに正しいIPアドレスを入れておきましたが、単なる時間稼ぎにしかならないので。

前回は、 「ex イベント番号」で即時実行したら正しいIPアドレスで更新、スケジュール実行すると間違ったIPアドレスで更新していたので、前回と若干違っています。

困ったものです。

Diceが間違ったグローバルIPアドレスでDNSを更新してしまう。・・・続報

サーバトラブル | by 管理者
7月 26日 2011 年

6月30日にDiceが違ったIPアドレスでDNSを更新するため、ホームページが見えなくなるという報告をしましたが、その続報です。

「ex  イベント番号」で「手動」でイベントを実行すると正しいIPアドレスでDNSが更新されますが、スケジュールで更新すると失敗します。

スケジュールは「IPアドレス変化時 (7日毎)」に設定してあるので、7日ごとにホームページが見えなくなっていました。

そこで、/var/log/messagesを見ると、スケジュールでイベントが実行されたときに、IPv6関連でエラーが出ていました。

こんなエラーです。

error (network unreachable) resolving './NS/IN': 2001:xxx:xx#xx

この障害が初めて発生したのがケーブルモデムの取替えとほぼ同時だったので、ケーブルモデムを疑っていましたが、どうやらIPv6のアドレスが影響していそうです。

よって、/etc/sysconfig/namedにOPTIONS="-4"を追加し、Bindを IPv4専用モードで再起動してみました。

本来のDiceの次回の実行スケジュールは7日後ですが、すぐに確認したかったので10分後にスケジュールを変更してイベントを実行したところ、今度は正しいIPアドレスに更新されました。

これで解決だと良いのですが。

 

*** 記事追加 2011/8/3  ***

スケジュールどおり、8月2日に無事正しく更新されました。

解決しました。