Home > サーバ Archive

サーバ Archive

自宅サーバ(Debian)にOpenVPNを導入(サーバ編) 自宅サーバ(Debian)にOpenVPNを導入(サーバ編)

  • Posted by: kadoppe
  • 2008年6月16日 01:16
  • サーバ

いつでも・どこからでも、同じ環境で作業を行えるようにするため、自宅サーバ(Debian etch)にOpenVPNを導入してみました。

基本的な方針は以下の通り。

  • 家の外にあるPC(外部PC)から自宅のVPNサーバに接続
  • 外部PCは自宅LANの仮装的なハブに接続する感じ
  • 外部PCは自宅LANと同じネットワークアドレスをもらえる
  • 「外部PC→自宅LAN内PC」アクセス可能
  • 「自宅LAN内PC→外部PC」アクセス可能
  • 別々に接続した外部PC同士も通信可能

これが実現できたら凄く便利そうですよね。

それでは自分用メモということで、作業内容を書いていきたいと思います。
今回はサーバ編ということで、サーバの設定作業が完了するまでの記録です。
クライアント編はまた後日、別エントリーとして作成したいと思います。

以下のページを参考にさせていただきました。ありがとうございました。

1. 必要なものをaptでインストール

まず、以下のファイルがサーバ上に存在するかどうか確認します。

/dev/net/tun

無事見つかったらaptによりopenvpnをインストールします。(ついでにopensslもインストール。)

# apt-get install openvpn openssl

次に、サーバにブリッジ用の仮想的なネットワークインタフェースを作るためのbridge-utilsをインストールします。

# apt-gtet install bridge-utils

2. ブリッジの作成

ブリッジを作成することで、VPN接続した外部PCを、あたかも自宅LANのスイッチングハブに繋いだかのように扱うことができるみたいです。

ブリッジを作成する前に、一旦サーバのネットワークを落としておきます。

# /etc/init.d/networking stop

次に、/etc/network/interfacesを以下のように書き換えます。(アドレス関係は各自読み替えてください)
この設定により、br0(ブリッジインタフェース)で、eth0(実際に自宅LANと繋がっているインタフェース)とtan0(VPNで外部PCが接続するインタフェース)をブリッジすることができるようです。

auto lo
iface lo inet loopback
allow-hotplug eth0
auto eth0
iface eth0 inet static
auto br0
iface br0 inet static
       address 192.168.3.210
       netmask 255.255.255.0
       network 192.168.3.0
       broadcast 192.168.3.255
       gateway 192.168.3.1
       bridge_ports eth0 tap0
       pre-up /usr/sbin/openvpn --mktun --dev tap0
       pre-up /sbin/ifconfig tap0 0.0.0.0 promisc up
       pre-up /sbin/ifconfig eth0 0.0.0.0 promisc up
       pre-up /usr/sbin/brctl addbr br0
       pre-up /usr/sbin/brctl addif br0 eth0
       pre-up /usr/sbin/brctl addif br0 tap0
       post-down /usr/sbin/brctl delif br0 tap0
       post-down /usr/sbin/brctl delbr br0
       post-down /usr/sbin/openvpn --rmtun --dev tap0
       post-down /sbin/ifconfig eth0 down

設定が終わったらサーバのネットワークを起動します。

# /etc/init.d/networking start

ifconfigを実行し、br0に自宅LANのアドレスが割り当てられ、eth0とtan0に関する情報が表示されれば、一応ここまでは設定成功です

3. IPフォワードの設定

ブリッジを正常に機能させるためには、あるネットワークインタフェースで受信したパケットを別のネットワークインタフェースから送信できるようにしなければなりません(IPフォワード)。

有効にするため、/etc/sysctl.confに以下を追記します。

net.ipv4.ip_forward=1

さらに以下のコマンドを実行し、設定を有効にします。

# sysctl -p /etc/sysctl.conf

一旦サーバを再起動し、以下のコマンドを入力して「1」と表示されれば設定完了です。

4. 証明書の作成

次に、VPNサーバ構築・VPN接続に必要な証明書群を作成します。

まずはじめに、簡単に鍵・証明書が作成できるツール群をわかりやすい場所にコピーします。

# cp -r /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
# cd /etc/openvpn/easy-rsa/

次に、鍵生成用の環境設定ファイルを編集します。(設定内容は各自読み替えてください)

# vi vars
export KEY_COUNTRY="JP"
export KEY_PROVINCE="OSAKA"
export KEY_CITY="HIRAKATA"
export KEY_ORG="hoge.com"
export KEY_EMAIL="hogehoge@hoge.com"

編集が済んだら、以下のコマンドを実行し、設定を反映させます。
さらに証明書作成ツールの初期化も行っておきます。

# source vars
# ./clean-all

下準備が終わったので、まずCAの証明書、および秘密鍵を作成します。
以下のコマンドを入力し、生成ツールを起動します。
何度か入力を求められますが、全て空ENTERで結構です。

# ./build-ca

作成が完了したら、以下のコマンドを実行し、作成した証明書を適切な場所に移動させます。

# cp keys/ca.crt /etc/openvpn/

次は、サーバの証明書および秘密鍵の作成です
以下のコマンドを入力し、生成ツールを起動します。
こちらも基本的に全て空ENTERでよいのですが、何カ所か入力すべき場所があるようなので要注意です。

# ./build-key-server server
Common Name (eg, your name or your server's hostname) [server] 【「server」と入力】
Sign the certificate? [y/n]: 【「y」と入力】
1 out of 1 certificate requests certified, commit? [y/n] 【「y」と入力】

作成が完了したら、以下のコマンドを実行し、作成した証明書を適切な場所に移動させます。

# cp keys/server.crt /etc/openvpn/
# cp keys/server.key /etc/openvpn/

次に、Diffie Hellmanパラメータというのを作成します。
作成が完了したら(時間が掛かる)、先ほどと同じように適切な場所に移動させます。

# ./build-dh
# cp keys/dh1024.pem /etc/openvpn/

最後に、以下のコマンドを実行し、TLS認証鍵を生成します。

openvpn --genkey --secret /etc/openvpn/ta.key

5. OpenVPNの設定

ようやくOpenVPN自体の設定に移ります。

以下のコマンドを実行し、設定ファイルの作成・編集を行います。

# vi /etc/openvpn/server.conf
port 1194 # 使用するポート

proto udp # 使用するプロトコル

dev tap0 # 使用するデバイス。今回はLayer2をエミュレート

ca ca.crt # 使用する証明書 
cert server.crt
key server.key 
dh dh1024.pem

ifconfig-pool-persist ipp.txt # クライアントに割り当てられたIPアドレスを管理するファイル

server-bridge 192.168.3.210 255.255.255.0 192.168.3.220 192.168.3.230 # 超重要、[サーバのIPアドレス] [サブネットマスク] [クライアントに割り当てるIPアドレスの範囲(開始)] [範囲(終了)]

client-to-client # クライアント同士の接続を許可

keepalive 10 120 # タイムアウト対策

tls-auth ta.key 0 # tls認証を有効化

cipher BF-CBC        # Blowfish (default)

comp-lzo

user nobody # OpenVPN実行権限を下げる
group nogroup
persist-key
persist-tun

status openvpn-status.log # ログの出力先
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log

verb 3 # ログの出力レベル

udp-mtu 1400 # mtuの設定

6. OpenVPNの起動、仕上げ

上記の設定がすべて終わったら、ようやくOpenVPNの起動を行うことができます。
以下のコマンドを実行し、OpenVPNを起動します。

# /etc/init.d/openvpn start

無事起動したらとりあえずサーバの設定は完了です。

最後に忘れずに自宅のルータのポートフォワーディングの設定をします。
僕の環境だと、1194番ポート宛のUDPパケットを192.168.3.210に転送するように設定しました。
みなさんの環境にあわせて設定してみください。

7. まとめ

なんとかOpenVPNの稼働までこぎ着けました。
少し長くなってしまいましたね・・・。

もしかしたら誤った記述などあるかもしれません。
発見された方は、ここぞとばかりにコメントしていただけると、こちらとしても嬉しいです。

次回は、実際に外部のPCがVPN接続するまでを書きたいと思っています。

よろしくお願いしまーす。

第3回情報危機管理コンテストに出場させて頂きました第3回情報危機管理コンテストに出場させて頂きました

6/5から6/7に白浜で開催された、「第3回情報危機管理コンテスト」という大会に出場させて頂きました。

大会の概要は以下の通り。

(1) 参加チームは、本委員会の監視チーム、および審査委員のもとで本コンテストを実施します。
(2) 参加チームは、各仮想企業の情報セキュリティ担当部署を演じていただき、提供されたインシデントの発生したシステム環境を調査し、かっこよく対応していただきます。
(3) 当該システム環境には、あらかじめ監視チームにより、インシデントあるいはこれを発生させるためのセキュリティホールが内包されています。
(4) 参加チームには、事前に当該システム環境と運用のフレームワーク概要をお知らせします。
(5) Bot系ツール、フィッシング、DoS(サービス不能攻撃)、パスワード走査と侵入、SQLインジェクション等、経路アナウンスの妨害など、さまざまなインシデントを想定してください。
(6) 監視チームは、ネットワーク上のトラフィック監視を中心に参加チームの対応状況を把握するとともに、顧客あるいは外部ユーザーを演じて適宜問い合わせや苦情のメールを送信します。
http://www.sccs-jp.org/SCCS2008/sccs03.html

五つの教育機関から五つのチームが出場し、それぞれが一つのブース(ネットワークやサーバが設置されている)を担当します。

一体何を競い合うのかというと、

  • 復旧までの時間
  • インシデントの対応手法
  • 上司への報告・提案

の3つが主な評価指標だったと思います。
これらを総合的に判断し、どのチームが一番かっこよく対応できたかを決める大会です。

僕が参加した同志社大学チームは、過去2大会で最優秀賞を頂いているチームです。(僕は昨年度の大会から参加)
今年はやはり、3連覇という気持ちの良い数字がかかっていることと、僕は今年で卒業してしまうこともあってか、「絶対に最優秀賞を頂いてみせるぞ!」と意気込んで、それなりにたくさん準備をして大会に臨みました。
結果、苦しみながらもなんとか最優秀賞(Best Award 賞)を頂くことができました。

表彰式で講評を頂いたのですが、その中で最も嬉しかったのが、前回課題とされいたことが克服できていたと評価していただいたことです。

前回は、

  • ネットワークに弱い(実はそうでもなかったのですが、実力を発揮できずorz)
  • トラブルチケット(上司への報告)が最悪(前々回も同じ評価)

という評価を頂いていました。
この2点(特にトラブルチケット)を改善するのがチームの一員としての僕のテーマであったので、感無量になってしまいました。
ありがとうございます。

このような手の掛かる大会を主催されている方々は、本当に大変だっただろうなと思います。
主催者の皆様の血のにじむような準備のおかげで、僕たち参加者は素晴らしい経験をコンテストを通して得ることができました。
この場をお借りして、感謝の言葉を述べさせていただきます。
ありがとうございました。

もう少し時間があるので、僕たちのチームはどのようなことを考えて準備をしたか、について差し支えない程度に一部だけ紹介したいと思います。
(まずかったらすぐ消します)

1.トラブルチケットをできるだけ詳しく

トラブルチケットはできるだけ詳しく、詳しすぎるほど詳しく書いた方が良いみたいです。
(実社会においてはどうなのかわかりませんが、少なくともコンテストにおいては)

駄目なトラブルチケットの例を挙げますと(実際に一昨年の第1回コンテストで作成したチケット)、

Open Date: 2006/05/27 14:59
Close Date: 2006/05/27 15:11
報告者:hoge
担当者:hoge
内容:hogehoge(有)トップページにて、再び改竄を確認
対応:
調査したところWebDAVが有効になっていることを確認
http.confで阻止

こんな感じになります。
これだと、

  • トラブルの具体的な内容がわからない。事細かに書くべき。
  • 「調査したところ」でとあるが、担当者がいつ・何を考え・どのように調査したのかわからない。
  • WebDAVが有効になっていることが何故問題なのかがわからない。
  • 「http.confで阻止」とあるが、何をどう対処したのか全くわからない。
  • 今後同じトラブルが起こらないようにするにはどのようにすればいいのかがわからない。

が問題になってしまうと思います。
これらの点をきちんとカバーできるチケットを書けるようになるためのトレーニングが必要だと考えます。

2. メンバー間における情報共有のためのインフラを作る

上で紹介したようなチケットしかかけなかった最大の理由は、「メンバー間の情報共有が上手くできていなかった」ことだと考えます。
そのため、メンバー間の情報共有をシームレスに行うためのインフラ・仕組みを構築して持って行くことが重要です。

具体的には、次のような情報の共有をメンバー間で行う必要があると思います。

  • 時系列に並んだ各メンバーの詳細な作業履歴
  • 各メンバーの状態
  • 各メンバーの考えていること

これらの情報を、時を遡ってメンバー全員が閲覧することができたとしたら、トラブルチケットを書く人もかなり楽になります。

問題は、どうやってこれらの情報を共有するためのインフラを作るか、なのですが、実現するための手段としては数え切れないくらいあると思います。

もちろん、メンバー全員が常に詳細な情報をコンテスト中に発信し続ける必要がありますが、その手間を上回る効果があると考えます。

3. まとめ

上に挙げたのは、チームとして準備したことのほんの一部です。
他にいろいろと準備しなければならないことがたくさんあると思います。

そもそも、トラブルを解決できるだけの技術力がないと、情報を共有できたってらちがあかないですし・・・・orz

情報危機管理コンテストは、普段の大学・大学院生活ではほとんどの人が考えないようなことを真剣に考えることができる、素晴らしい大会だと思います。

僕は今年の大会で卒業してしまいますが、次回があれば、我こそはという人はエントリーしてみてはどうでしょうか?
貴重な体験が待っていると思います。

[自宅サーバ]eo光のOP25B対策(Postfix)[自宅サーバ]eo光のOP25B対策(Postfix)

今年の2月頃、自宅のインターネットプロバイダをYahoo BBからeo光に変えました。

それと時期を同じくして、自宅サーバから毎日送られてくるはずのログファイルが突然送られてこなくなってしまいました。
結果として、当ブログに頂いたコメント・トラックバックに対するレスポンスが遅れてしまったりしました。
ごめんなさい・・

問題の原因は「OP25B」をeo光が導入していたことです。

OP25B 【Outbound Port 25 Blocking】
ネットワークの境界にあるルータなどの機器で、ネットワーク内から外部のコンピュータのTCPポート25番への通信を禁止すること。インターネットサービスプロバイダ(ISP)などが会員のパソコンからスパムメールが送信されるのをブロックするために行なっている。
OP25Bとは 【Outbound Port 25 Blocking】 - 意味・解説 : IT用語辞典

このままでは色々まずいと思い、今日対策を施しました。
サーバの環境はFedora 6 + Postfixです。
メールサーバは稼働させていないのですが、sendmailの設定は複雑そうだったので、サーバのrootからのメールを送信するためだけにPostfixを導入しました。

OP25B環境でサーバがメールを送信するためには、eo光のSMTPサーバにプロバイダから与えられたID、パスワードを使ってログインした後、メールをそのSMTPサーバに転送する必要があります。

設定には以下のページを参考にさせて頂きました。
OP25B(Outbound Port 25 Blocking)対策 - Fedoraで自宅サーバー構築

以下、eo光に特化した(といってもほとんど変わりありませんが)設定方法を紹介します。

(1)Postfixの設定
スーパーユーザになって、以下のコマンドを入力し、Postfixの設定ファイルを開きます。

# vi /etc/postfix/main.cf

ファイルを開けたら、末尾に以下を追記します。

relayhost = [smtpauth.eonet.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous

(2)SMTP認証情報の設定
以下のコマンドを入力し、 SMTPサーバの認証情報を設定します。
ユーザ名とパスワードはプロバイダと契約したときの書類に書かれていると思います。
(メールアドレスをデフォルトのものから変更した場合、ユーザ名も変更されるので注意)

# echo [smtpauth.eonet.ne.jp]:587 ユーザー名:パスワード > /etc/postfix/authinfo
# chmod 604 /etc/postfix/authinfo
# postmap /etc/postfix/authinfo

(3)Postfix再起動
以下のコマンドを入力し、Postfixを再起動して設定を反映させます。

# /etc/init.d/postfix restart

(4)動作確認
以下のコマンドを入力し、rootからのテストメールが自分のメールアドレスに届いているかを確認します。

# echo test | mail root

まとめ

ようやく、サーバからのメールが自分宛に届くようになりました。

OP25Bはスパムメールが増える昨今、必要な技術だとは思います。
が、自宅サーバを稼働させている人にとっては少し設定が面倒だなぁ、と思いました。

何はともあれ、メールが届くようになってよかった!
めでたしめでたしです。

Mac OS X LeopardにJBoss 4.2.2をインストールMac OS X LeopardにJBoss 4.2.2をインストール

Mac OS X LeopardにJBoss 4.2.2をインストールする方法です。

ファイルの取得

こちらから「jboss-4.2.2.GA.zip」というファイルをダウンロードします。

インストール

以下のコマンドを実行し、ダウンロードしたファイルを展開します。

$ unzip jboss-4.2.2.GA.zip

次に、インストール先のディレクトリを作成しておきます。

$ sudo mkdir /usr/local/jboss

作成したディレクトリの中に展開してできたディレクトリをコピーします。

$ sudo cp -R jboss-4.2.2.GA /usr/local/jboss/

後々、複数バージョンをインストールしたときのことを考えて、currentというシンボリックリンクを作成します。
こうすると、currentの指し示す先を変えるだけでバージョンの切替ができるようになります。

$ sudo ln -s /usr/local/jboss/jboss-4.2.2.GA /usr/local/jboss/current

最後に、使い易いように所有者を変えてインストール完了です。(ユーザ名は各自読み替えてください)

$ sudo chown -R username:staff /usr/local/jboss/jboss-4.2.2.GA /usr/local/jboss/current

環境変数の登録

~/.profileファイルに以下の記述があるかどうか確認します。なければ追記します。

export JAVA_HOME=/Library/Java/Home

新たに追記した場合は、ターミナルを再起動する事で有効になります

動作確認

以下のコマンドを実行し、JBossを起動します。

$ /usr/local/jboss/current/bin/run.sh

起動できたら、http://localhost:8080/にアクセスします。

以下のような画面が表示されればインストール完了です。

jboss.png

研究室で使っている某社のグループウェアがクラッシュ研究室で使っている某社のグループウェアがクラッシュ

  • Posted by: kadoppe
  • 2007年12月20日 23:52
  • サーバ

僕が所属している研究室で使用中の、某社のグループウェアがクラッシュしました。 約2ヶ月分のデータがパー・・・。

管理している方曰く、自動アップデートが原因とのこと。前にも自動アップデートの後に調子がおかしくなったことがありました。

自動アップデートによってクラッシュしてしまうようなシステムを世の中に出してしまって良いものなのでしょうか??
自動アップデートだけが原因ではないのかもしれませんが。 利用者の間違いもあるかもしれませんし。

結構内部用ディレクトリのルール作りとか頑張ったのに、少しがっかり。。。

Mac OS X(Leopard)にphpMyAdmin 2.11 をインストールMac OS X(Leopard)にphpMyAdmin 2.11 をインストール

  • Posted by: kadoppe
  • 2007年12月16日 10:19
  • サーバ

MySQLをWebインタフェースから操作するツール「phpMyAdmin」のバージョン2.11.3をMac OS X Leopardにインストールします。 前提として以下の作業を終えている必要があります

それではインストール手順の説明を始めます。

  • ソースのダウンロード

    こちらから「phpMyAdmin-2.11.3-all-languages.tar.gz」というファイルをダウンロードします。ダウンロードしたファイルは適当なディレクトリに格納しておきます。

  • インストール

    ターミナルを開き、先ほどダウンロードしたファイルを格納したディレクトリに移動します。移動したら以下のコマンドを実行しファイルを展開します。

    $ tar zxvf phpMyAdmin-2.11.3-all-languages.tar.gz
    

    展開が終わったら、できたディレクトリを以下のコマンドでリネーム&コピーします。

    $ cp -R phpMyAdmin-2.11.3-all-languages /var/www/phpMyAdmin
    

    次に設定ファイルを作成します。以下のコマンドを入力し「config.inc.php」というファイルを新たに作成します。

    $ vi /var/www/phpMyAdmin/config.inc.php
    

    ファイルを作成できたら、中に以下を記述します。「blowfish_secret」はパスワードを暗号化するためのキーです。任意のランダムな文字列を記述してください。

    <?php
    $cfg['blowfish_secret'] = 'xxxxxxxxxxxxxxxxxx';  // use here a value of your choice
    
    $i=0;
    $i++;
    $cfg['Servers'][$i]['auth_type']     = 'cookie';
    ?>
    

    最後にApacheの設定です。http://localhost/phpMyAdmin/でphpMyAdminにアクセスできるようにします。以下のコマンドを入力し、httpd.confを開きます。

    /usr/local/apache2/conf/httpd.conf
    

    開いたら、末尾に以下を追記します。

    # phpMyAdmin
    Alias /phpMyAdmin/ "/var/www/phpMyAdmin/"
    

    設定ファイルの修正が完了したらApacheを再起動します。

    http://localhost/phpMyAdmin/にアクセスし、以下のような画面が表示されればインストール完了です。

    phpmyadmin.png

Mac OS X(Leopard)にPHP 5.1.2をソースからインストールMac OS X(Leopard)にPHP 5.1.2をソースからインストール

Mac OS X (Leopard)にPHP 5.1.2をソースからインストールします。Apacheから利用できるようにもします。前提として以下の作業を終えている必要があります。

  • ソースコードのダウンロード

    以下のサイトからソースコードをダウンロードします。ダウンロードしたファイルは「~/src」などのわかりやすいディレクトリに格納しておきます。

  • インストール

    ターミナルを起動し、ダウンロードしたファイルを格納しているディレクトリに移動します。移動したら以下のコマンドを入力し、ファイルを展開します。

    $ tar zxvf php-5.1.2.tar.gz
    

    展開が完了したら、生成されたディレクトリの中に入ります。

    $ cd php-5.1.2
    

    次に、configureを行います。それぞれのオプションの意味は次の通りです。

    • --with-apxs2=/usr/local/apache2/bin/apxs

      apxsは、apacheに動的にリンクするモジュールを自動的に生成してくれるコマンドです。今回はphpモジュールをapacheに動的にリンクさせる必要があるので、apxsの場所を指定します。

    • --enable-mbstring

      phpで日本語などのマルチバイト文字を扱えるようにするためのオプションです。

    • --with-mysql=/usr/local/mysql/

      mysqlのインストール場所を指定するためのオプションです。mysqlをインストールしたディレクトリを指定します。

    • --with-mysql-sock=/tmp

      phpがmysqlに接続するためのソケットの在処を指定するためのオプションです。「mysql.sock」というファイルが存在するディレクトリを指定します。

    • --prefix=/usr/local/php

      phpのインストールディレクトリを指定しています。なお、指定しない場合は「/usr/local」にインストールされます。

    オプションの説明は以上です。以下のコマンドを入力しconfigureを行います。

    $ ./configure --with-apxs2=/usr/local/apache2/bin/apxs ¥
            --enable-mbstring --with-mysql=/usr/local/mysql/ ¥
            --with-mysql-sock=/tmp --prefix=/usr/local/php
    

    次はmake & make installを行います。以下のコマンドを入力します。

    $ make
    
    $ sudo make install
    

    エラーが出なければphpのインストールは完了です。

  • apacheの設定変更

    ApacheからPHPを利用できるようにするために、設定を変更します。

    まず、以下のコマンドを入力し、設定ファイルを開きます。

    $ vi /usr/local/apache2/conf/httpd.conf
    

    以下の記述が設定ファイル中に存在するかを確認します。この記述によってphpのモジュールが動的にapacheに読み込まれることになります。無ければファイル末尾にでも追加します。

    LoadModule php5_module        modules/libphp5.so
    

    次に、以下の部分を変更します。ファイル名を指定しないURLでサーバにアクセスした場合、index.phpというファイルにも自動でアクセスされるようになります。

    【変更前】
    DirectoryIndex index.html index.html.var
    
    【変更後】
    DirectoryIndex index.html index.html.var index.php
    

    最後に、ファイル末尾に以下の記述を追加します。ここでは「.php」という拡張子と「application/x-httpd-php」というMIMEタイプを関連づけています。

    # PHP
    AddType application/x-httpd-php .php
    

    設定ファイルの修正は以上です。apacheを再起動すると設定が反映されます。

  • 簡単な動作確認

    /var/www/htmlにindex.phpというファイルを作成します。中には以下のように記述します。

    <?php
    	phpinfo();
    ?>
    

    http://localhost/にアクセスし、以下のような画面が表示されればインストール成功です。

    php.png

Mac OS X(Leopard)にApache 2.0.61をインストールMac OS X(Leopard)にApache 2.0.61をインストール

Mac OS X(Leopard)にApache 2.0.61をインストールします。 デフォルトの状態でインストールされているApacheは2.2系ですので、2.0系のソースをwebから取得し、コンパイルすることでインストールします。

あらかじめ、Xcode toolsをインストールしておきます。

  • ファイルのダウンロード

    以下のサイトから「httpd-2.0.61.tar.gz」をダウンロードします。

  • インストール

    ダウンロードしたファイルを展開し、できたディレクトリの中に移動します。

    $ tar zxvf httpd-2.0.61.tar.gz
    $ cd httpd-2.0.61
    

    configureを実行します。ここでは、モジュールを動的に組み込み可能にするための「--enable-so」オプションと、sslを静的に組み込むための「--enable-ssl」オプションを適用しています。

    $ ./configure --enable-so --enable-ssl
    

    configureが完了したらこのままmake & make installと行きたいところですが、このままではコンパイル時にエラーが発生するためインストールすることができません。→参照

    この問題を解決するため、インストールに必要なヘッダファイルの一つである「apr.h」を修正します。以下のコマンドを入力し、修正対象のファイルを開きます。

    $ vi srclib/apr/include/apr.h
    

    次に、ファイル中の以下の場所を変更します。

    【変更前】
    #define APR_HAS_SENDFILE          1
    
    【変更後】
    #define APR_HAS_SENDFILE          0
    

    以上でコンパイル前の準備は完了です。make & make installを行います。

    $ make
    $ sudo make install
    

    エラーがなければインストール完了です。後々設定等を行いやすいようにApacheのインストールディレクトリの所有者を変更します。(usernameは環境により異なる)

    $ sudo chown -R username:staff /usr/local/apache2
    

    Apacheを起動するためには以下のコマンドを入力します。

    $ sudo /usr/local/apache2/bin/apachectl start
    

    ブラウザで
    http://localhost/
    にアクセスし、以下の画面が表示されればインストール成功です。

    apache2.png

    apacheを終了するには以下のコマンドを実行します。コマンド実行後、先ほどの画面が表示できなくなっていれば、apacheは正しく終了しています。

    $ sudo /usr/local/apache2/bin/apachectl stop
    
  • ドキュメントルートの変更(2007/12/15 追記)

    初期状態ではドキュメントルートが「/usr/local/apache2/htdocs」に設定されています。ここには既に色々なファイルが格納されていて、これから使っていく分に不便なので、ドキュメントルートを「/var/www/html」に設定します。

    Mac OS X Leopardには「/var/www/html」ディレクトリが初期状態ではありませんので、作成する必要があります。また、所有者や権限を適切に設定する必要があります。

    $ sudo mkdir -p /var/www/html
    $ sudo chown -R username:staff /var/www
    

    次に、apacheの設定ファイルを編集します。以下のコマンドを実行しhttpd.confを開きます。

    $ vi /usr/local/apache2/conf/httpd.conf
    

    開けたら、以下のように修正を行います。

    【変更前】
    DocumentRoot "/usr/local/apache2/htdocs"
    
    【変更後】
    DocumentRoot "/var/www/html"
    

    /var/www/htmlに適当なファイルを置き(例えばindex.html)、apacheを再起動してから
    html://localhost/index.html
    にアクセスして、きちんと表示されればOKです。

以上です。apr.hを編集する部分で少しはまりましたが、きちんとインストールできてよかったです。

APR(Apache Portable Runtime)APR(Apache Portable Runtime)

  • Posted by: kadoppe
  • 2007年12月14日 16:47
  • サーバ

前回の記事で、Mac OS X(Leopard)にApache 2.0.61をインストールしようとした時にエラーが出てしまったことを書きました。

エラーの原因は「APR」というものにあるようです。Wikipediaでは以下のようにAPRについて説明されています。

Apache Portable Runtime (APR) は Apache HTTP Server のサポートライブラリである。 OSとソフトウェアの間でOSなどの環境の違いを吸収するAPIを提供する。そして、他のOSに一般的にある機能が存在しないOSでは、APRが代替を提供する。よって、APRを使うことにより真のクロスプラットフォームなプログラムを作ることが出来る。

つまりはAPRは、OSとソフトウェア(今回の場合はApache)の間に位置するミドルウェアのようです。OSによる機能の差異を吸収することで、様々なプラットフォームでソフトウェアが動作するようになります。

apacheのインストール時におけるエラーは、MacOS X(Leopard)における「sendfile」という機能のバージョンが新しすぎて、APRの方がまだ対応していなかったことによって起きてしまったのだと推測します。 apache2.2系だったらインストールは成功していたのでしょうか?

今回少しトラブルがおきましたが、トラブルが起きるとそれを解決するために勉強するので、自分のためになりますね!

Mac OS X(Leopard)にApache 2.0.61を入れようとするとエラーが発生Mac OS X(Leopard)にApache 2.0.61を入れようとするとエラーが発生

  • Posted by: kadoppe
  • 2007年12月13日 19:21
  • サーバ

Mac OS X(Leopard)にApache 2.0.61をソースからインストールしようとするとエラーが発生してしまい、インストールできません。

まずは単純にインストールしてみようと思って、configureのオプションなしでのインストールを試みたのです。

$ tar zxvf httpd-2.0.61.tar.gz
$ cd httpd-2.0.61
$ ./configure
$ make

すると以下のようなエラーが表示されてしまいます。

p-precomp   -I../../include -I../../include/arch/unix -I../../include/arch/unix  -c sendrecv.c && touch sendrecv.lo
sendrecv.c:965:2: error: #error APR has detected sendfile on your system, but nobody has written a
sendrecv.c:966:2: error: #error version of it for APR yet. To get past this, either write apr_sendfile
sendrecv.c:967:2: error: #error or change APR_HAS_SENDFILE in apr.h to 0.
make[4]: *** [sendrecv.lo] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

「APRがあなたのシステムにsendfileが存在することを発見しました。しかし、まだ誰もそのバージョンに対するAPRのためのものを書いていません。これを通過するには誰かが"apr_sendfile"を書くか、apr.hのAPR_HAS_SENDFILEを0に変更する必要があります。」

のようなことが書かれています。最新版のxcode toolsをインストールしたのがだめだったのかな。apr.hというヘッダファイルを修正すれば何とかなるかもしれませんが、ヘッダファイルをいじるのは少し怖いです。

APRについての記事はこちら

解決してインストールを成功した結果はこちら

Mac OS XにMySQL(5.0.51)をソースからインストールMac OS XにMySQL(5.0.51)をソースからインストール

  • Posted by: kadoppe
  • 2007年12月12日 20:43
  • サーバ

Mac OS X(Leopard)にMySQL(5.0.51)をソースからインストールします。手順は以下のサイトにすべて書かれているため、ここでは詳しく述べません。インストールの方法から、自動起動の設定方法、アンインストールの方法まで書かれているすばらしいページです。(簡単な英語さえわかれば読めます)
以下のページでは、バージョン5.0.45をインストールされていますが、5.0.51でも大丈夫でした。

作業を進める前提としてXcode-toolをインストールしている必要があります。

環境変数にPATHを登録する部分があるのですが、僕は「.bash_login」には書かずに「.bash_profile」に書きました。ここら辺のファイルの用途の違いについても調べたいですね。。。

本当に、手順に沿ってコマンドを入力するだけでMySQLをインストール&自動起動することができました。僕もこんな記事を書きたいです。

---- 2007/12/17追記 ----

インストール直後はMySqlにパスワードなしでrootユーザとしてログインすることができてしまいます。セキュリティ的にまずいですので、rootユーザに対してパスワードを設定します。

まず、ターミナルで以下のコマンドを入力し、rootユーザでmysqlにログインします。

$ mysql -uroot

ログインできたら、次のコマンドを入力し、現在のユーザ情報を表示させます。

mysql> select user, host from mysql.user;

すると以下のようなテーブルが表示されるかと思います。「xxxxxxxxxxxxx」の部分は各自のコンピュータ名が入ります。

+------+---------------------+
| user | host                |
+------+---------------------+
| root | 127.0.0.1           | 
|      | xxxxxxxxxxxxx.local | 
| root | xxxxxxxxxxxxx.local | 
|      | localhost           | 
| root | localhost           | 
+------+---------------------+
5 rows in set (0.00 sec)

「host」が異なるすべてのrootユーザに対してパスワードを設定します。以下のコマンドを入力することでパスワードが設定できます。

mysql> set password for root@localhost=password('パスワード');
mysql> set password for root@xxxxxxxxxxxxx.local=password('パスワード');
mysql> set password for root@127.0.0.1=password('パスワード');

以上でパスワードを設定することができました。以下のコマンドを入力し、mysqlからログアウトします。

mysql> quit

Mac OS X(Leopard)にTomcatをインストールMac OS X(Leopard)にTomcatをインストール

Mac OS X (Leopard)にTomcatをインストールします。といっても、TomcatはJavaで書かれているのでバイナリファイルを展開するだけですけどね。

インストールには以下のサイトを参考にさせていただきました。

  • ファイルのダウンロード

    以下のサイトからバイナリをダウンロードします。左メニューの「Download」からダウンロードしたいバージョンを選択し、拡張子が「.tar.gz」のものをダウンロードします。

    ここでは、「jakarta-tomcat-5.0.28.tar.gz」というファイルをダウンロードしたものとして話を進めます。

  • インストール

    ターミナルを起動します。まず最初にダウンロードしたファイルが存在するディレクトリにcdコマンドで移動します。そして以下のコマンドを実行し、ダウンロードしたファイルを「/usr/local/tomcat」ディレクトリに移動させます。

    $ mkdir /usr/local/tomcat
    $ sudo mv jakarta-tomcat-5.0.28.tar.gz /usr/local/tomcat
    

    次に、以下のコマンドを入力し、ファイルの展開を行います。

    $ cd /usr/local
    $ sudo tar zxvf jakarta-tomcat-5.0.28.tar.gz 
    

    すると、「jakarta-tomcat-5.0.28」というディレクトリが出来上がります。次に、Tomcatを複数バージョンインストールした際に管理しやすくするため、「Current」というシンボリックリンクを作成し、リンク先を「jakarta-tomcat-5.0.28」に設定します。
    tomcatを呼び出すときは必ず「Current」を介するようにすると、シンボリックリンクのリンク先を変えるだけで、バージョンの入れ替えが可能になります。

    $ sudo ln -s /usr/local/tomcat/jakarta-tomcat-5.0.28/ /usr/local/tomcat/current
    

    一般ユーザからでも簡単に使えるようにするため、「/usr/local/tomcat/」内のディレクトリの所有者権限を変更します。

    $ sudo chown -R kkadowaki:staff jakarta-tomcat-5.0.28/
    $ sudo chown -R kkadowaki:staff Current/
    

    最後に、Tomcatを起動する際に必要な環境変数「JAVA_HOME」を設定します。環境変数を有効にするためには、ターミナルを一度終了させる必要があります。

    $ echo export JAVA_HOME=/Library/Java/Home >> .bash_profile
    
  • 動作確認

    以下のコマンドを入力し、Tomcatを起動します。

     
    $ /usr/local/tomcat/current/bin/startup.sh
    

    ブラウザで以下のURLにアクセスし、猫がこっちを向いているページが表示されればインストール成功です。

    http://localhost:8080/
    

    なお、 Tomcatを終了させるには次のコマンドを入力します。

    /usr/local/tomcat/current/bin/stutdown.sh
    

以上でTomcatのインストールは完了です。

MySQLのバックアップとリストアMySQLのバックアップとリストア

  • Posted by: kadoppe
  • 2007年11月30日 14:10
  • サーバ

MySQLに格納されているデータをバックアップする方法。今まで知らない僕、恥ずかしい。

「test」という名前のデータベースに格納されたデータをバックアップします。以下のコマンドを実行します。

mysqldump -u [ユーザ名] -p[パスワード] test > hogehoge.sql

これで、hogehoge.sqlというファイルの中にデータベースに格納されていたデータを表すSQL文が格納されます。 ユーザ名とパスワードは適宜自分の環境に置き換えます。(「-p」とパスワードの間に空白スペースが無いことに注意)

次に、「testtest」というデータベースに、先ほどバックアップしたデータをリストア(復旧)します。「test」という名前のデータベースが既に存在していれば、あらかじめ削除しておきます。

mysql>  drop database testtest;

「testtest」データベースが無いことを確認したら、リストアを実行します。以下のコマンドを実行すれば完了です。

mysql -u [ユーザ名] -p[パスワード] testtest < hogehoge.sql

思ってたよりも簡単にできるんですね!

Index of all entries

Home > サーバ Archive

Search
Recent Comments
第3回情報危機管理コンテストに出場させて頂きました
Recent Trackback
Mac OS X(Leopard)にTomcatをインストール
Feeds
Twitter

follow kadoppe at http://twitter.com
iKnow
Sponsored Link
Blog Parts
あわせて読みたい フィードメーター - CreativeStyle この日記のはてなブックマーク数 kadoppeさんの体重グラフ

Return to page top