会社がなかなかサーバを用意してくれない場合などに、Windowsの自端末を暫定サーバにする手順を書いておきます。
本番運用をする場合はDNSかリバプロ設定でIPアドレスを隠したり、他にもやることはあると思いますが、 暫定利用を想定しているのであまり細かいことは気にしません。
記事の内容
内容は以下になります。
Apache+Tomcatの設定
Tomcat
warファイルで提供されているアプリケーションを利用するために、Tomcatを利用します。
使用したいバージョンを確認して必要なTomcatを導入してください。
今回はGitBucketが動作するTomcat7を対象として話を進めます。
公式から7をダウンロードして、適当なフォルダにダウンロードした圧縮ファイルを解凍したものを配置します。
Apache
Tomcatでアプリケーションを公開するだけならApacheはいらないのですが、PHP利用のためWebサーバが必要になるのでApacheを導入します。
ApacheのWindowsバイナリを以下から落としてください。
Apache2.4は現時点でWindowsバイナリがないのでApache2.2の利用を想定しています。「httpd-2.2.25-win32-x86-openssl-0.9.8y.msi」というようなSSL入りのApacheをお奨めします。
ApacheとTomcatの連携手順
以下のサイトがわかりやすいので参考にしてください。Tomcat7でも同じです。
mod_proxy_ajpを使った設定がいいと思います。
具体的にはApacheのhttpd.confの2モジュールを許可し、Tomcatアプリへのパスを張ります。
#以下のモジュールをアンコメント LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so ~~~ #末尾に以下のような記述を追加 <IfModule mod_proxy_ajp.c> <Location /gitbucket/> ProxyPass ajp://localhost:8009/gitbucket/ </Location> </IfModule>
暫定利用なので触れませんが、Webアプリをバリバリ利用するなら Tomcatのログはローテするように設定しておきましょう。
80番ポートの開放
Windows 7ではTCPの80番ポートがファイアウォールでふさがれているので、以下のサイトを参考にポートを開けてください。
ただし、公開範囲はプライベート(ドメインに入っていればドメインも)にしておいてください。
Apache+PHPの設定
PHPの設定
Windowsのバイナリを以下からダウンロードしてください。
※最新のPHP(ver5.5)だとApache2.2用のDLLファイルが含まれていないので注意してください。
PHP 5.3 (5.3.28)には含まれていたので、ここでは5.3のThread Safe版を利用します。(5.4にもDLLはあるが動作は未確認)
これも以下のサイトを参考に設定作業を行ってください。『PHPのインストール』から実施して貰えればよいです。
以下、上記サイトとの相違点です。
- 「php.ini」のベースは「php.ini-production」を利用します。(開発するわけではないので)
- mbstring.internal_encodingにはUTF-8を設定します。(PukiwikiをUTF-8で利用するので)
mbstring.internal_encoding = UTF-8 - エラーメッセージ出力はOFFのままにします。
index.phpの入力を省略
Apacheの設定も先ほどのサイトの中にありますが、index.phpがindex.htmlのようにURLのデフォルトパスになるように、 httpd.confの以下の行を書き換えます。(index.htmlのあとにindex.phpを追加)
DirectoryIndex index.html ↓ DirectoryIndex index.html index.php
PukiWikiの導入
WikiとしてPukiWikiを導入します。
以下のサイトからUTF-8版のPukiWikiをダウンロードしてください。
基本はダウンロードファイルを解凍し、フォルダ名をpukiwikiなどにリネームしてApache上のhtdocsに配置するだけです。
Apache起動前に以下の設定を行ってください。
IRCサーバの導入
以下のソフトが導入が簡単なのでお勧めです。
サーバー間連携機能が使えないので、Jenkins連携などをする場合は別のものを利用する必要がありますが、
チャット機能として使う分には問題ありません。チャットログ公開用の設定もあります。
チャットログはチャットに入っていなかった日のログも参照できて便利なので、可能であればApacheサーバでの公開を検討してみてください。
WebDAVの設定
ファイルサーバ用途のため、ApacheのWebDAV機能を有効にします。
ApacheにはWebDAV用のhttpd-dav.confが用意されていますが、 ここではそれは利用せず、httpd.confに直接記載します。
- httpd.conf
# WebDAV有効化のため、以下のモジュールをアンコメントする(L84辺り) LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so # ファイルの末尾に以下を追加する DavLock "C:/Program Files (x86)/Apache Software Fundation/Apache2.2/var/DavLock" # 適当なパスで。 alias /share "D:\share" # 認証無し用の公開フォルダ alias /protected "D:\protected" # 認証有り用の公開フォルダ <IfModule mod_dav.c> DAVLock DavLockDB # 認証無し:誰でも見れる設定 <Location /share> Options Indexes Allow from all DAV on </Location> # 認証有り:.htpasswdはあらかじめ用意しておく <Location /protected> Options Indexes Allow from all DAV on AuthType Basic AuthName '認証ダイアログに表示するメッセージ(ファイルをUTF8にしても文字化けするので英語が無難)' AuthUserFile 'C:\Program Files (x86)\Apache Software Fundation\Apache2.2\conf\.htpasswd' Require valid-user </Location> </IfModule>
設定後、Apacheを再起動した後に以下のアドレスにアクセスすると、公開フォルダ配下の情報がブラウザから確認できます。 (各パスは適切なものに書き換え・読み替えてください)
URL | 公開フォルダ |
---|---|
http://localhost/share | D:\share |
http://localhost/protected | D:\protected |
protectedの方にアクセスした場合は、認証ダイアログが表示されるので、 フォルダの中身を見るためには、「.htpasswd」に設定したユーザ名とパスワードを入力する必要があります。
.htpasswdの作り方
WebDAVの認証フォルダにアクセスできるユーザ情報を、.htpasswdファイルに格納します。
コマンドプロンプト上で、Apacheのインストールフォルダ配下のbinフォルダに移動し (例えばC:\Program Files (x86)\Apache Software Fundation\Apache2.2\bin)、 以下のコマンドを実行してください。
htpasswd -c "C:/Program Files (x86)/Apache Software Fundation/Apache2.2/conf/.htpasswd" webdav
上記のコマンドの意味は、左から『コマンド、オプション、.htpasswdを作る場所、作成するユーザ名』になります。 既存の.htpasswdファイルにユーザを追加する場合は、-cオプションを付けずに、上記コマンドを実行してください。
WebDAVのクライアントについて
WebDAV上のファイルにブラウザからアクセスしていると、不便なこともあるので、 Windowsのネットワークフォルダ設定もしておくと便利です。
「コンピュータ」のエクスプローラ上で
- 右クリック→「ネットワークの場所を追加する」
または、
- 「コンピューター」タブの「ネットワークの場所の追加」
から設定することができます。
ただし、認証が必要なWebDAVには、この方法が使えません。 認証が必要なWebDAVについては、以下のようなクライアントを導入すると良いかと思います。
今更感がある話ですが、まあ毎度毎度同じことをやってその都度忘れてて調べ直すのと、あんまりWindowsでサーバ設定しないなぁというのもあってまとめてみました。
その他何かあれば以下に追加しておきます。
いや、ほんと、サーバ用意してくれればいいだけなんですけどね。