Home > サーバ Archive
サーバ Archive
自宅サーバ(Debian)にOpenVPNを導入(サーバ編)
- 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回情報危機管理コンテストに出場させて頂きました
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
情報危機管理コンテストは、普段の大学・大学院生活ではほとんどの人が考えないようなことを真剣に考えることができる、素晴らしい大会だと思います。
僕は今年の大会で卒業してしまいますが、次回があれば、我こそはという人はエントリーしてみてはどうでしょうか?
貴重な体験が待っていると思います。
- Comments: 2
- TrackBack (Close): 0
[自宅サーバ]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をインストールする方法です。
ファイルの取得
こちらから「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/にアクセスします。
以下のような画面が表示されればインストール完了です。
研究室で使っている某社のグループウェアがクラッシュ
- 2007年12月20日 23:52
- サーバ
-
僕が所属している研究室で使用中の、某社のグループウェアがクラッシュしました。 約2ヶ月分のデータがパー・・・。
管理している方曰く、自動アップデートが原因とのこと。前にも自動アップデートの後に調子がおかしくなったことがありました。
自動アップデートによってクラッシュしてしまうようなシステムを世の中に出してしまって良いものなのでしょうか??
自動アップデートだけが原因ではないのかもしれませんが。
利用者の間違いもあるかもしれませんし。
結構内部用ディレクトリのルール作りとか頑張ったのに、少しがっかり。。。
Mac OS X(Leopard)にphpMyAdmin 2.11 をインストール
- 2007年12月16日 10:19
- サーバ
-
MySQLをWebインタフェースから操作するツール「phpMyAdmin」のバージョン2.11.3をMac OS X Leopardにインストールします。 前提として以下の作業を終えている必要があります
- Mac OS XにMySQL(5.0.51)をソースからインストール - CreativeStyle
- Mac OS X(Leopard)にApache 2.0.61をインストール - CreativeStyle
- Mac OS X(Leopard)にPHP 5.1.2をソースからインストール - CreativeStyle
それではインストール手順の説明を始めます。
- ソースのダウンロード
こちらから「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/にアクセスし、以下のような画面が表示されればインストール完了です。
Mac OS X(Leopard)にPHP 5.1.2をソースからインストール
Mac OS X (Leopard)にPHP 5.1.2をソースからインストールします。Apacheから利用できるようにもします。前提として以下の作業を終えている必要があります。
- Mac OS X(Leopard)にXcodeをインストール
- Mac OS X(Leopard)にApache 2.0.61をインストール
- Mac OS XにMySQL(5.0.51)をソースからインストール
- ソースコードのダウンロード
以下のサイトからソースコードをダウンロードします。ダウンロードしたファイルは「~/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のインストールは完了です。
- --with-apxs2=/usr/local/apache2/bin/apxs
- 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/にアクセスし、以下のような画面が表示されればインストール成功です。
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/
にアクセスし、以下の画面が表示されればインストール成功です。
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)
- 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を入れようとするとエラーが発生
- 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)をソースからインストール
- 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をインストールします。といっても、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のバックアップとリストア
- 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
思ってたよりも簡単にできるんですね!
Home > サーバ Archive
