Apache

2016年9月19日

前回では経緯を語っただけで何の参考にもなりませんでした。
さすが私だな!!
さて、誰でも出来る鯖構築講座。
Windowsマシンを1台用意します。
出来れば2000以降がいいです。
というか、2000が本当はベスト。
次はサーバーソフトを用意します。
ロ〜レック姉さんは04WebServerっての使っています。
こいつはWindowsにぴったりでGUI操作で設定できるので
多分初心者にお勧めです。
というか、個人で運営するならこれが多分ベストです。
むしろ私がApacheってのがやりすぎなくらい。
私がこれを使わなかったのはApacheで組んだ時にまだこれがなかったからw
この使い方は…公式に全部載ってるので割愛。
というかGUIとヘルプで多分出来る。使ったことないから分からんけど。
次に私の使っているApacheの場合は、
GUIが鯖稼動or停止のコンソールしかありません。
Apacheは元々Unix用なので、設定は全部設定ファイルからやります。
因みに使ってるのはApache2であって、Apacheじゃないので
Apache使いたい人はここじゃ参考になりません、あしからず。
Apacheの方がレスポンスがいいらしいけどね…(・ω・)
さて、導入ですが、Apache2をとりあえず公式から落としてきます。
Win32版です。
インストールしようとすると、インストール先を聞かれるので
ふつーだとC:\Program Files\apache2\になりますが
ここは敢えてC:\でもどのドライブでもいいですが
別のドライブがあるなら、そっちの方が万が一の時に便利なので
D:\に入れるということで、D:\usr\にapache2を入れます。
D:\usr\apache2\という感じで。
つーわけで、こっからはapache2入れたのはDと仮定して話を進めます。
クソ長くなりそうなので追記に。


インストール中に、ドメイン名とサーバー名とメールアドレスが聞かれますが
ここはドメイン持ってたらドメイン名とか入れるけど
ここ見てる人はまず持ってないので、"localhost"でいいや。
サーバー名も"localhost"でいいや。
つーか、なんでもいい。
メールアドレスはその名のとおり自分の(管理者の)メールアドレス。
それと、更に下にあるラジオボタンは
上を選ぶとWindowsの今インストールしてるユーザーだけが使用できて
下を選ぶとWindowsのサービスとして登録するので
サーバーを常時稼動させるなら下のサービス登録がお勧め。
サービス登録すれば、Windowsさえ起動してしまえば、ようこそ画面で放置して
ユーザーとしてログインしなくても動いてます。
インストールが終わったら、ひとまずApacheインストールフォルダから
設定ファイルをいじって動くようにしなければなりません。
D:\usr\apache2\confにhttpd.confってファイルがあるので
バックアップを取ってからテキストエディッターで開いてください。
(コピればおk。"コピー 〜 httpd.conf"でもいいや。
 障害時にこれを元の名前にして使う)
編集するのにメモ帳でも可。使いにくいけど。
開いてみると、クソ長い英語が書いてありますが
読めないので次行きましょう。
#がいっぱい並んでいますが、下を見ていくと、一番初めに#が切れる所に
ServerRoot “Apache2入れたルートが書いてある"
があるので、それを自分のApache2入れたルートに書き換えてください。
今回の例だと
ServerRoot “D:/usr/Apache2"
でおk。\を/にして打ってね。英語圏では\→/なので。
まー、Apache2入れたらはじめっからこうなってるかも。
もう覚えてない。
こっから次々に#が切れた場所に設定項目がありますが
PidFileとかTimeoutとかKeepAliveとかそのままでおkです。
無反応時のタイムアウトを早めにしたかったら初期値
Timeout 300
を少なめにしてください。設定値は㍉秒。300だと30秒。
多分少なめにしすぎても多めにしてもあんま良くないからこれがベストなのかも。
PidFileとKeepAliveはぶっちゃけよく分からない。
KeepAliveはなんか接続が頻繁に有る場合に
同じ接続設定で接続するようにしてパフォーマンスを上げるらしいけど
その仕組みが理解出来ないので初期値のままにしてあります。
だからその下にある
MaxKeepAliveRequests 100
KeepAliveTimeout 15

ももちろん初期値のまま。多分KeepAliveを使う最大リクエスト数と
KeepAliveを使うか使わないかの間隔時間。15秒越えると前の接続設定破棄、だと思う。
こっからちょいと下がって
Listen 80
80のままだったけど、多分これはhttp://アドレス〜/で打った場合に
デフォルトでサーバーのどのポートにアクセスするかの設定だと思う。
ここを8080にするとhttp://アドレス〜/で
http://アドレス〜:8080/と同様になると思われる。
こっから下になると
LoadModule〜ってのがいっぱいあって
#がついてるのと、ついてないのがいっぱい。
Apache2のサーバー機能のどれを読み込むかの設定だと思う。
デフォルトで不具合無いので、デフォルトで。
(#はコメントアウトになる)
更に下
ServerAdmin 管理者メールアドレス
404とか403の時に出てくるメールアドレスですな。
ウチは404は自前にしてあるので出ませんが。
多分インストール時に聞かれてるのでパス。
ServerName localhost:80
初期設定でおk。
いじると多分公開前のテストで困る。
ここも多分インストール時のサーバー名が入ってる。
上記のようになってなかったら上記のか、127.0.0.1:80で。
UseCanonicalName Off
バーチャルホスト機能を使うか使わないからしいけど、
それ自体がよくわかんない。パス。
DocumentRoot “HPのファイル置いたルート"
HP公開するにはhtmlとかがないと意味ねーので
その公開したいファイルが置いてあるルートを書く。
Apache2の中にhogeってフォルダ作ってそこにhtmlファイルとか作ったら
DocumentRoot “D:/usr/Apache2/hoge"
ってなる。
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

ルートディレクトリ(htmlファイルとか置いてあるフォルダの一番上)配下の設定。
セキュリティの為に初期設定のままをお勧めします。
AllowOverrideのNoneをAllとかにすると.htaccessが使えるようになります。
.htaccessが使えると、ディレクトリどころかファイル単体ごとにアクセス権を
設定できるので、何かと便利ですが、記述が若干難しいので
通常は使わない方がよさげ。
UserDir “My Documents/My Website"
ここに何か書いても、ちょっと下にある
#<Directory “C:/*/htdocs">
の#を消さないと有効になりません。
これ使うと、プロバイダーのHPサービスみたいに
他の人に構築したwebサーバーを使わせることが出来ます。
http://hoge.com/~なんちゃら/ ってのが出来ます。
上記の初期設定の場合だと
サーバーマシンのC:/*/htdocsの
htmlファイルを公開します。
*の設定にすることで、*の部分を任意の名前にすれば
いくつでもユーザーを増やすことが可能。
例としてC:/may/htdocs、C:/renfa/htdocs、C:/nyan/htdocsとかフォルダ作ったら
http://hoge.com/~may/
http://hoge.com/~renfa/
http://hoge.com/~nyan/
って感じに。
複数ユーザーにスペース提供して運営するなら使う機能だけど、
個人だけならこの機能使いません。
DirectoryIndex index.html index.html index.cgi index.php
特定のディレクトリ、ルートディレクトリにファイル名指定無しで直接アクセスした場合に
そのディレクトリからここに列挙したファイル名のファイルを探して自動的に表示します。
左側が最も優先度高いです。indexが嫌いなら別のでもいいけど。
ここに指定したファイルが見つからない場合、
ディレクトリ内のファイル一覧を表示しちゃうので、セキュリティ上大変よろしくないです。
Index Of〜ってやつですな。
AccessFileName .htaccess
アクセス制限をする際のファイルのファイル名をここで指定。
.htaccessじゃなくてもいいのかもしれないけど、一応Unix準拠で。
Windowsだとそのままの設定だと.htaccessファイルが作れないから困る。
拡張子扱いされる上に、"."が手前にあるからファイル名がねーとか怒られる。
<Files ~ “^\.ht">
Order allow,deny
Deny from all
</Files>

拡張子がhtと続いてるファイルにはアクセスできないようにする設定。
他にも()でくくって|で区切れば他の拡張子も閲覧できないように出来ます。
logとかdatとかにしとけばログファイル覗かれる事もなくなります。
さて、しばらくずーっと下に下がっていって
途中に色々#がない設定する所ありますが初期設定でおkなので
以下を探します。
ScriptAlias /cgi-bin/ “CGIファイルを置いたディレクトリルート"
CGIを実行する場合、ここに書いたルートの中に入れないと実行しません。
上の方にあるルート配下のディレクトリ設定で設定変えて
全ディレクトリでCGI実行可能にすれば、ここの設定は意味ないです。
ここは複数行増やせば、CGI実行可能ディレクトリを増やせます。
因みにcgi-bin配下も含まれるのでcgi-bin配下にディレクトリ作ったからといっても
それをここに追加する必要はないです。
この設定のすぐ下にcgi-binディレクトリ配下のディレクトリ設定も出来ます。
ScriptAlias /cgi-bin/で設定してしまうと、cgi-bin配下の全ファイルは
CGIファイルとして認識されてしまうので、このままだとcgi-bin配下に入れた
画像ファイルとかが正常に表示されないので、このディレクトリ設定で
画像は画像ファイルと認識させるように設定することが出来ます。
AddHandler image/gif .gif
AddHandler image/jpeg .jpeg .jpg .jpe
AddHandler image/png .png
AddHandler text/html .html .htm
AddHandler text/text .txt .TXT
AddHandler text/dat .dat

とか書くとおk。なんとなく見て意味わかるっしょ。
更に下にいくと、AddLangageとかあるけど、パス。
その下の方にある
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ってのが重要。
言語優先度設定なので、jaが先頭じゃなかったら先頭にしておいてください。
じゃないと多分ブラウザの言語自動判別が狂ったりするかも。
やったことないからわからんけど。
更に下のほう。
AddCharsetってのが見えたら
いっぱい並んでる一番下に
AddCharset shift_jis .sjis
が無かったら、追加して置いてください。
ぽろぽろと設定項目が更に下にも出てきますが
AddHandler cgi-script .cgi .pl
ってのがAddCharsetのちょいと下のほうにあるはずです。
これはここに書いた拡張子は全部CGIファイルと認識するもの。
拡張子hageとかにしてhageファイルにCGIのソース書いて、
ここに.hageを追加すれば多分動く。
更に下のほうに行くと
ErrorDocument *** “htmlのアドレス"
ってのがいっぱい出てきます。
404とか500とか以外みたことねーんだけど、それ以外もいっぱいありますが
全部無視で。
自分の好きな404ページ(例:ガンダムを撃墜できません とか)を用意した場合は
このErrorDocumentが列挙されてる一番下に
ErrorDocument 404 /error/error404.html
って感じで追加。ここの/error/は"ルートディレクトリ/error/"になります。
これ以下もなんかまだ設定項目あるけど、初期設定のままで。
ここまででやっと終了。
書いてる私も面倒すぎるから、04WebServer使ったほうがいいね(マテ
Apache2の方は、設定終わったら、コンソールから再起動もしくは起動して
エラー出なかったら設定に不備はない模様。
で、ひとまずはブラウザを立ち上げて
http://localhost/もしくは、http://127.0.0.1/にアクセスして
D:\usr\Apache2\hoge\に置いたindexが表示されればおk。
これで一応公開準備は完了です。
CGI使いたい場合は、ActiveStateからActivePerlを
ダウンロードしてきてください。
5.6と5.8があるハズですが、どっちがいいか分からないけど
わたしゃ5.8にしました。
インストールする際に、さっきApache2をインストールした時みたいに
D:\usr配下にlocal、local配下にbinってフォルダ作って、そこにインストールしましょう。
D:\usr\local\bin\perlって感じで。
こうすると何があるのかというと
フリーのcgiを拾ってきた場合、cgiファイルの先頭が
#!/usr/local/bin/perl
になっていると思うので、
なんとっ! このパスを修正しなくてもすぐHPで使えるようになるからです。
ものぐさな人にピッタリ。
phpとかSQLデーターベースソフトは
webサーバー構築というだけでは不要なので割愛。
上記のやり方で、うpろだ置こうが、VNIしようが思いのままです。
HDDの容量がある限りのHPが作れます。
———————————————–
鯖を外部に公開
上記のままでは外部に公開できません。自分しか見れません。
というわけで、外部からアクセスできるようにします。
まずはhttpポートである80を空けなきゃ誰も入れません。
ルーター使ってる人ならポート開ける方法は知ってると思います。
Windows単体の場合だと、ファイアーウォールソフトか
WindowsXPのファイアーウォールが邪魔しやがりますので
何とかしてポート80を空けます。
開いたかなと思ったら、次はブラウザでアクセスです。
さっきのテストではhttp://localhostかhttp://127.0.0.1でアクセスしましたが
次はhttp://グローバルIP/でアクセスしてみてください。
グローバルIPが何だか分からんって場合は
スタートメニュー→ファイル名を指定して実行→cmdで
コマンドプロンプトを立ち上げます。
そこで"ipconfig /all"と入力してEnter。
出てきた"ローカルエリア接続"のIP アドレスの部分に
書いてあるのがグローバルIPです。きっと。
192.168.0.xxxは違うので、それっぽいの探してください(マテ
見つけたら、http://グローバルIPをそのIPに書き換えてHPが表示されればおk。
多分外部からも見れます。友達とかに見てもらってください。
これで見れなかったらポート80が開いてないので、再度見直してみてください。
あと、このままではIP丸出しなので見た目がよろしくない上に
ネット接続切るたびに相手にアドレスを教える必要があります。
(IP固定サービスなら除く)
だから、ウチみたいにhttp://mayragna.net/とかいった
アドレスにする必要がありますから
ダイナミックDNSというサービスを利用します。
これはこのサービスに登録することで
http://mayragna.net/がDDNSのサービス側で
ウチのグローバルIPに置き換えられて
それが閲覧者のブラウザにいくといったサービス。
mayragna.net = グローバルIP。
ただし、自分が接続しなおしてIP変わるたびに、そのDDNSサービス側に
IP更新をしなきゃいけません。
それを自動化するツールもあるので、あんまり面倒じゃありませんが。
各サービス毎、長所短所あるので、お勧めのDDNSは教えません。
ユーザーが多いdyndnsのHPを参考にすればいいかもしれない。
こんな感じで鯖構築記終了。
phpとSQLは書きたい時に書きます。一応備忘録だから。
文字ばっかはいかんね。誰か絵頂戴。
拍手

21:57 ♪ルパン! ばきゅーん!

SEAMOの2ndイイヨ〜〜。ルパンザファイヤーのPV付だし。