<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dabits &#187; Apache関連</title>
	<atom:link href="http://www.dabits.net/archives/category/tips/apache%e9%96%a2%e9%80%a3/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dabits.net</link>
	<description>あったらいいな をカタチにする</description>
	<lastBuildDate>Sun, 04 Jul 2010 17:02:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Redmineのアカウントを使って、Subversionの認証を行う on debian lenny</title>
		<link>http://www.dabits.net/archives/87</link>
		<comments>http://www.dabits.net/archives/87#comments</comments>
		<pubDate>Tue, 30 Mar 2010 02:15:57 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>

		<guid isPermaLink="false">http://www.dabits.net/?p=87</guid>
		<description><![CDATA[むちゃくちゃつまづきどころが多かったのでメモ。
mod_auth_mysqlのインストール
普通にコマンド入力してインストールします
www@admin:~$ sudo apt-get install libapache [...]]]></description>
			<content:encoded><![CDATA[<p>むちゃくちゃつまづきどころが多かったのでメモ。</p>
<p>mod_auth_mysqlのインストール</p>
<p>普通にコマンド入力してインストールします<br />
<code>www@admin:~$ sudo apt-get install libapache2-mod-auth-mysql</code></p>
<p>問題が、mod_auth_mysql.so が mod_auth_basic.so より先に読み込めないと、以下のエラーが出ちゃいます。</p>
<blockquote><p>pcfg_openfile() called with NULL filename</p></blockquote>
<p>ということで名前を変えて先に起動するようにセット<br />
<code>www@admin:~$ sudo cp /etc/apache2/mods-available/auth_mysql.load /etc/apache2/mods-available/auth_00mysql.load</code></p>
<p>各種モジュール有効化<br />
<code>www@admin:~$ sudo a2enmod auth_00mysql auth_basic auth_digest</code><br />
で、設定したいsvnのconfに以下のように記述<br />
<code><br />
&lt;Location "/svn"&gt;<br />
DAV svn<br />
SVNParentPath /var/www/svn<br />
     &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;<br />
       Auth_MySQL                      On<br />
       Auth_MySQL_Socket               /var/run/mysqld/mysqld.sock<br />
       Auth_MySQL_Host                 localhost<br />
       Auth_MySQL_User                 [redmineのデータベースユーザ名]<br />
       Auth_MySQL_Password             [redmineのデータベースパスワード]<br />
       Auth_MySQL_DB                   [redmineのデータベース名]<br />
       Auth_MySQL_Password_Table       users<br />
       Auth_MySQL_Username_Field       login<br />
       Auth_MySQL_Password_Field       hashed_password<br />
       Auth_MySQL_Encryption_Types     SHA1Sum<br />
       Auth_MySQL_Empty_Passwords      Off<br />
       AuthType Basic<br />
       AuthName "Authorization Realm"<br />
       Require valid-user<br />
     &lt;/LimitExcept&gt;<br />
&lt;/Location&gt;<br />
</code></p>
<p>AuthMySQLのパラメータ名が違うのと、Encryption_TypesがSHA1Sumなのがコツ。<br />
なんでsha1じゃねーんだ。。ヽ(`Д´)ﾉウワーン</p>
<p>パラメータ違うと、</p>
<blockquote><p>Invalid command &#8216;AuthMySQLEnable&#8217;, perhaps misspelled or defined by a module not included in the server configuration</p></blockquote>
<p>って出るし、SHA1Sumじゃないと</p>
<blockquote><p>Unsupported encryption type: sha1</p></blockquote>
<p>って出る。分かるかい！ヽ(`Д´)ﾉウワーン</p>
<p>ということで、<br />
<code>www@admin:~$ sudo /etc/init.d/apache2 reload</code><br />
して無事にsvnが動くのでした。。疲れた。。</p>
<p>参考サイト：<br />
<a href="http://d.hatena.ne.jp/ksaito11/20090924">Subversion+Apache からredmineの認証を使う</a><br />
<a href="http://www.nognog.com/techmemo/Apache2_MySQL_Auth_HOWTO.php">うにっくすさんの覚え書き &#8211; Apache2 &#8211; MySQL認証</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/87/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOSでmod_rails(Passenger)のインストール</title>
		<link>http://www.dabits.net/archives/11</link>
		<comments>http://www.dabits.net/archives/11#comments</comments>
		<pubDate>Fri, 23 Jan 2009 11:49:40 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>
		<category><![CDATA[サーバ構築]]></category>

		<guid isPermaLink="false">http://tips.dabits.net/archives/10</guid>
		<description><![CDATA[仕事先でmod_railsを使う機会があったのでインストールしてみました。
mod_railsは何かというと、ruby on railsをapacheのモジュールとして起動する事により
効率を大幅に上げよう、というもので [...]]]></description>
			<content:encoded><![CDATA[<p>仕事先でmod_railsを使う機会があったのでインストールしてみました。<br />
mod_railsは何かというと、ruby on railsをapacheのモジュールとして起動する事により<br />
効率を大幅に上げよう、というものです。<br />
また、特定数秒(デフォでは120秒)アクセスがないと、自動的にプロセスが終了したり、<br />
アクセスが多いと増加するので、単純にmongrelをたくさん起動しておくよりも効率的です。<br />
以前はApache+mongrel_railsでしたが、明らかにレスポンスが向上しました。<br />
では早速インストールの記録を。<br />
<span id="more-11"></span><br />
<b>1.passengerのインストール</b><br />
gemを使ってpassengerをインストールします。<br />
なんか下にwarning出たけど問題ありませんでした。</p>
<blockquote><p>[root@rails-dev ~]# <font color="green">gem install passenger</font><br />
Building native extensions.  This could take a while&#8230;<br />
Successfully installed rack-0.9.1<br />
Successfully installed passenger-2.0.6<br />
2 gems installed<br />
Installing ri documentation for rack-0.9.1&#8230;<br />
Installing ri documentation for passenger-2.0.6&#8230;<br />
Installing RDoc documentation for rack-0.9.1&#8230;<br />
Installing RDoc documentation for passenger-2.0.6&#8230;<br />
./doc/template/horo.rb:17: warning: already initialized constant FONTS<br />
./doc/template/horo.rb:19: warning: already initialized constant STYLE<br />
./doc/template/horo.rb:213: warning: already initialized constant XHTML_PREAMBLE<br />
./doc/template/horo.rb:221: warning: already initialized constant HEADER<br />
./doc/template/horo.rb:272: warning: already initialized constant FILE_PAGE<br />
./doc/template/horo.rb:300: warning: already initialized constant CLASS_PAGE<br />
./doc/template/horo.rb:338: warning: already initialized constant METHOD_LIST<br />
./doc/template/horo.rb:486: warning: already initialized constant FOOTER<br />
./doc/template/horo.rb:491: warning: already initialized constant BODY<br />
./doc/template/horo.rb:503: warning: already initialized constant SRC_PAGE<br />
./doc/template/horo.rb:531: warning: already initialized constant FR_INDEX_BODY<br />
./doc/template/horo.rb:535: warning: already initialized constant FILE_INDEX<br />
./doc/template/horo.rb:583: warning: already initialized constant CLASS_INDEX<br />
./doc/template/horo.rb:584: warning: already initialized constant METHOD_INDEX<br />
./doc/template/horo.rb:586: warning: already initialized constant INDEX</p></blockquote>
<p><b>2.http-develのインストール</b><br />
mod_railsを生成するにはapacheモジュールとしてのコンパイルが必要です。<br />
事前にyumで開発キットをインストールしておきます。<br />
(その前にgcc,gppなどをあらかじめインストールしておいてください。)</p>
<blockquote><p>[root@rails-dev ~]# <font color="green">yum -y install httpd-devel</font><br />
base                      100% |=========================| 1.1 kB    00:00<br />
updates                   100% |=========================|  951 B    00:00<br />
primary.xml.gz            100% |=========================| 369 kB    00:00<br />
updates   : ################################################## 796/796<br />
addons                    100% |=========================|  951 B    00:00<br />
extras                    100% |=========================| 1.1 kB    00:00<br />
Setting up Install Process<br />
・<br />
・<br />
・<br />
Installed: httpd-devel.i386 0:2.2.3-11.el5_2.centos.4<br />
Dependency Installed: apr-devel.i386 0:1.2.7-11 apr-util-devel.i386 0:1.2.7-7.el<br />
5<br />
Updated: httpd.i386 0:2.2.3-11.el5_2.centos.4<br />
Dependency Updated: httpd-manual.i386 0:2.2.3-11.el5_2.centos.4 mod_ssl.i386 1:2<br />
.2.3-11.el5_2.centos.4<br />
Complete!</p></blockquote>
<p><b>3.passengerの設定</b><br />
passengerを設定し、モジュールを作成します。</p>
<blockquote><p>[root@rails-dev insoshi]# <font color="green">passenger-install-apache2-module</font><br />
Welcome to the Phusion Passenger Apache 2 module installer, v2.0.6.<br />
This installer will guide you through the entire installation process. It<br />
shouldn&#8217;t take more than 3 minutes in total.<br />
Here&#8217;s what you can expect from the installation process:<br />
1. The Apache 2 module will be installed for you.<br />
2. You&#8217;ll learn how to configure Apache.<br />
3. You&#8217;ll learn how to deploy a Ruby on Rails application.<br />
Don&#8217;t worry if anything goes wrong. This installer will advise you on how to<br />
solve any problems.<br />
Press Enter to continue, or Ctrl-C to abort.<br />
<font color="green">1</font><br />
Checking for required software&#8230;<br />
* GNU C++ compiler&#8230; found at /usr/bin/g++<br />
* Ruby development headers&#8230; found<br />
* OpenSSL support for Ruby&#8230; found<br />
* RubyGems&#8230; found<br />
* Rake&#8230; found at /usr/bin/rake<br />
* Apache 2&#8230; found at /usr/sbin/httpd<br />
* Apache 2 development headers&#8230; found at /usr/sbin/apxs<br />
* Apache Portable Runtime (APR) development headers&#8230; found at /usr/bin/apr-1-<br />
config<br />
* Apache Portable Runtime Utility (APR) development headers&#8230; found at /usr/bi<br />
n/apu-1-config<br />
* fastthread&#8230; found<br />
* rack&#8230; found<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Compiling and installing Apache 2 module&#8230;<br />
cd /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6<br />
/usr/bin/ruby -S rake clean apache2<br />
(in /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6)<br />
・・・コンパイルが始まる・・・<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
The Apache 2 module was successfully installed.<br />
Please edit your Apache configuration file, and add these lines:<br />
<font color="blue">   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so<br />
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6<br />
PassengerRuby /usr/bin/ruby</font><br />
<font color="green">↑以上がapacheの設定に書き込む部分になるので、コピーしておきます。</font><br />
After you restart Apache, you are ready to deploy any number of Ruby on Rails<br />
applications on Apache, without any further Ruby on Rails-specific<br />
configuration!<br />
Press ENTER to continue.<br />
<font color="green">エンターを押す</font><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Deploying a Ruby on Rails application: an example<br />
Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host<br />
to your Apache configuration file, and set its DocumentRoot to<br />
/somewhere/public, like this:<br />
<virtualHost *:80><br />
ServerName www.yourhost.com<br />
DocumentRoot /somewhere/public<br />
</virtualHost><br />
And that&#8217;s it! You may also want to check the Users Guide for security and<br />
optimization tips and other useful information:<br />
/usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/doc/Users guide.html<br />
Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) <img src='http://www.dabits.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>http://www.modrails.com/</p>
<p>Phusion Passenger is a trademark of Hongli Lai &#038; Ninh Bui.</p></blockquote>
<p><b>4.apacheの設定をする</b><br />
先ほどコピーした内容を貼り付け、さらに具体的に使用するrailsアプリケーションの指定をします。<br />
今回はinsoshiというrailsアプリケーションを使いました。</p>
<blockquote><p>[root@rails-dev ~]# <font color="green">vi /etc/httpd/conf.d/mod_rails.conf</font><br />
<font color="green">   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so<br />
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6<br />
PassengerRuby /usr/bin/ruby<br />
<font color="blue">↑先ほどコピーした部分をそのまま貼り付け</font><br />
<virtualHost *:80><br />
DocumentRoot /var/shared/insoshi/public<br />
<directory /var/shared/insoshi/public><br />
Options Indexes FollowSymLinks Includes ExecCGI<br />
AllowOverride All<br />
Order allow,deny<br />
Allow from all<br />
</directory><br />
<font color="blue">↑DocumentRootにはpublicを指定</font><br />
</virtualHost></font></p></blockquote>
<p><b>5.apacheのリロード</b><br />
apacheの設定をリロードさせて、設定を適用します。</p>
<blockquote><p>[root@rails-dev ~]#<font color="green">service httpd reload</font></p></blockquote>
<p>これで対象のサーバにアクセスすると、無事起動する事ができました。<br />
*参考サイト<br />
<a href="http://d.hatena.ne.jp/rx7/20080412/p1" target="_blank">Passenger (mod_rails for Apache) を使ってRedmineを動かしてみたよ！ &#8211; RX-7乗りの適当な日々</a><br />
<a href="http://doruby.kbmj.com/yoppi_on_rails/20080417/Passenger__mod_rails_for_apache_" target="_blank">Passenger (mod_rails for apache)での色んな設定値について調べてみた</a><br />
<a href="http://redmine.jp/tech_note/apache-passenger/" target="_blank">Apache上でRuby on Railsアプリケーションを動かす／Passenger(mod_rails for Apache)の利用</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>拡張子がmp3のファイルを強制ダウンロードさせる</title>
		<link>http://www.dabits.net/archives/9</link>
		<comments>http://www.dabits.net/archives/9#comments</comments>
		<pubDate>Tue, 21 Oct 2008 11:41:31 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>
		<category><![CDATA[サーバ構築]]></category>

		<guid isPermaLink="false">http://tips.dabits.net/archives/8</guid>
		<description><![CDATA[通常、単にmp3ファイルをweb上に置いただけでは、
mimeタイプがaudio/mp3となってしまい、ブラウザによってプレーヤが起動したり、ダウンロードしたり、と挙動が異なってしまいます。
そこで、拡張子がmp3のファ [...]]]></description>
			<content:encoded><![CDATA[<p>通常、単にmp3ファイルをweb上に置いただけでは、<br />
mimeタイプがaudio/mp3となってしまい、ブラウザによってプレーヤが起動したり、ダウンロードしたり、と挙動が異なってしまいます。<br />
そこで、拡張子がmp3のファイルは、mimeタイプを変えて強制ダウンロードさせることにしました。<br />
＜方法＞<br />
対象のディレクトリに.htaccessファイルを作り、以下の内容を記入します。</p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">AddType application/octet-stream .<span style="">mp3</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
※最終行の改行をお忘れなく。<br />
これで、ファイルのクリックをした場合、ダウンロード画面が表示されるようになりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>suPHPの設定とインストール</title>
		<link>http://www.dabits.net/archives/5</link>
		<comments>http://www.dabits.net/archives/5#comments</comments>
		<pubDate>Sun, 29 Jun 2008 17:06:35 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>
		<category><![CDATA[サーバ構築]]></category>

		<guid isPermaLink="false">http://tips.dabits.net/archives/4</guid>
		<description><![CDATA[//概要
CGIWrapではperlCGIによるラッパー機能を提供してきた。
しかし、このラッパーではPHP容易にセキュア化したり、バーチャルホストごとの設定が困難である。
そこで、今回はsuPHPを用いてこの問題に対処 [...]]]></description>
			<content:encoded><![CDATA[<p><b>//概要</b><br />
CGIWrapではperlCGIによるラッパー機能を提供してきた。<br />
しかし、このラッパーではPHP容易にセキュア化したり、バーチャルホストごとの設定が困難である。<br />
そこで、今回はsuPHPを用いてこの問題に対処する。</p>
<hr />
<b>//suPHPとは</b><br />
suPHPとは、mod_cgiwrapの後継となるもので、元々はcgiwrapのモジュール版であった。<br />
cgiwrapをモジュール化することにより、より高速にCGIを動かす工夫がなされた。<br />
これを発展させたのがsuPHPであり、その名のとおりPHPに対応したラッパーである。<br />
本来の機能として、PHPを自UID/GIDで実行できる他、通常のCGIも自UID/GIDで実行することが可能だ。<br />
さらに、mod_vhost_aliasに対応しているため、容易にバーチャルホスト毎に別UID/GIDで動作することができるのである。</p>
<hr />
<b>//動作速度の問題</b><br />
suPHPが嫌われる原因としてよく挙げられるのが、動作速度の問題である。<br />
これは、本来PHPが高速で動作しているのはPHPインタプリタがモジュールとして動作しているためであって、<br />
それ以外の方法で(CGIにより)動作させると少なからず動作速度が落ちてしまう、ということである。<br />
従って、PHPをCGIモードで動作させるsuPHPが速度が落ちがちだといわれる。<s>が、実はそうでもない。<br />
現バージョンのsuPHPの場合は、FastCGI方式を採用しているためPHPインタプリタが常に常駐化され、<br />
ほぼモジュール版と変わらない動作速度で動作することが可能なのである。<br />
#これについては環境変数で出た情報のみから記述しているため、実際のところは不明。<br />
#分かり次第(ソースがあり次第)追記することにする。</s><br />
実際は、単にPHPがFastCGIに対応していただけの模様。</p>
<hr />
<b>//設定・インストール</b><br />
・ここでは、当サーバの設定を例に一連の流れを説明する。<br />
Fedora Core 5の場合は、すでにrpmパッケージが公開されているので、yumからmod_suphpをインストールすればよい。<br />
今回使用しているディストリビューションはCentOSだが、Fedoraのソースrpmをコンパイルして使用することにする。<br />
*DACにあるパッケージはコンパイルの設定が違う、またソースからのインストールはパッチを当てなければならない箇所が多いため。<br />
○ファイルのダウンロード・リビルド・インストール<br />
基本的にFedoraとCentOSは互換性があるが、glibcのバージョンの関係上同じバイナリファイルを使用できない。<br />
そのため、Fedora CoreのExtrasよりソースrpmをタウンロード、リビルドして使用する。</p>
<blockquote><p>
[root@www ~]# <font color="skyblue">wget http://ftp.riken.jp/Linux/fedora/extras/5/SRPMS/mod_suphp-0.6.1-4.fc5.src.rpm</font><br />
--21:59:08--  http://ftp.riken.jp/Linux/fedora/extras/5/SRPMS/mod_suphp-0.6.1-4.fc5.src.rpm<br />
=> `mod_suphp-0.6.1-4.fc5.src.rpm'<br />
Resolving ftp.riken.jp... 134.160.38.1<br />
Connecting to ftp.riken.jp|134.160.38.1|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 375,718 (367K) [application/x-wais-source]<br />
100%[====================================>] 375,718        1.16M/s<br />
21:59:08 (1.15 MB/s) - `mod_suphp-0.6.1-4.fc5.src.rpm' saved [375718/375718]<br />
[root@www ~]# <font color="skyblue">rpmbuild --rebuild mod_suphp-0.6.1-4.fc5.src.rpm</font><font color="lime">←ソースrpmをリビルド</font><br />
......<br />
+ umask 022<br />
+ cd /usr/src/redhat/BUILD<br />
+ cd suphp-0.6.1<br />
+ rm -rf /var/tmp/mod_suphp-0.6.1-4-root-root<br />
+ exit 0<br />
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.27399<br />
+ umask 022<br />
+ cd /usr/src/redhat/BUILD<br />
+ rm -rf suphp-0.6.1<br />
+ exit 0<br />
[root@www ~]# <font color="skyblue">rpm -ivh /usr/src/redhat/RPMS/i386/mod_suphp-0.6.1-4.i386.rpm</font><font color="lime">←suPHPのインストール</font><br />
Preparing...                ########################################### [100%]<br />
1:mod_suphp<br />
########################################### [100%]<br />
[root@www ~]# <font color="skyblue">chmod o+rx /usr/sbin/suphp</font><font color="lime">←現行パッケージのバグ対策</font>
</p></blockquote>
<p>○suPHPの設定<br />
suPHPの設定ファイルを開き、設定する。</p>
<blockquote><p>
[root@www ~]# vi /etc/suphp.conf<br />
docroot=<font color="skyblue">/</font><font color="lime">←変更(/home/より上層での実行禁止)</font><br />
↓<br />
docroot=<font color="skyblue">/home/</font><br />
umask=<font color="skyblue">0077</font><font color="lime">←umaskの変更(作成ファイルのデフォルトパーミッションを644にする)</font><br />
↓<br />
umask=<font color="skyblue">0022</font><br />
handle_userdir=<font color="skyblue">true</font><font color="lime">←変更(/~以降のユーザディレクトリでも動作可能にする)</font><br />
errors_to_browser=<font color="skyblue">false</font><font color="lime">←変更(エラーをブラウザ上に表示)</font><br />
↓<br />
errors_to_browser=<font color="skyblue">true</font>
</p></blockquote>
<p>○Apache再設定<br />
suPHPを適用するためApacheを再設定する。</p>
<blockquote><p>
[root@www ~]# vi /etc/httpd/conf.d/suphp.conf<br />
suPHP_Engine <font color="skyblue">off</font><font color="lime">←変更(suPHPを有効にする)</font><br />
↓<br />
suPHP_Engine <font color="skyblue">on</font><br />
<font color="skyblue">AddType application/x-httpd-php .php<font color="lime">←追加(〃)</font><br />
AddHandler x-httpd-php .php<br />
AddHandler x-suphp-cgi .cgi .pl</font><br />
<font color="skyblue">#</font> suPHP_AddHandler x-httpd-php<font color="lime">←コメントアウト(〃)</font><br />
↓<br />
suPHP_AddHandler x-httpd-php<br />
<font color="skyblue">suPHP_AddHandler x-suphp-cgi</font><font color="lime">←追加(〃)</font><br />
[root@www ~]# mv /etc/httpd/conf.d/php5.conf /etc/httpd/conf.d/php5.conf.org<font color="lime">←名前変更(module版PHPによる実行をストップ)</font><br />
[root@www ~]# /etc/init.d/httpd restart<font color="lime">←Apache再起動</font>
</p></blockquote>
<p>これにより、CGI/PHPともに自UID/GIDで実行できる。<br />
また、suPHPにより、ディレクトリやファイルのパーミッションが777である場合、実行が強制ストップされる。<br />
(/etc/suphp.confにより変更可能)<br />
また、mod_vhost_aliasを適用することによりバーチャルホスト毎に別UID/GIDで動作することができた。<br />
-><a href="http://www.dabits.net/tips/server/virtualhost.html">ユーザ毎にバーチャルホストを設定する方法</a></p>
<hr />
<b>//参考サイト</b><br />
suPHP - Home:<br />
<a href="http://www.suphp.org/Home.html">http://www.suphp.org/Home.html</a><br />
サードパーティリポジトリーを使う:<br />
<a href="http://www.geocities.jp/hoge_tomo/20050318.html">http://www.geocities.jp/hoge_tomo/20050318.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ユーザ毎にバーチャルホストを設定する方法</title>
		<link>http://www.dabits.net/archives/3</link>
		<comments>http://www.dabits.net/archives/3#comments</comments>
		<pubDate>Sun, 29 Jun 2008 17:04:15 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>
		<category><![CDATA[サーバ構築]]></category>

		<guid isPermaLink="false">http://tips.dabits.net/archives/2</guid>
		<description><![CDATA[//概要
普段、ユーザのpublic_htmlディレクトリはhttp://www.example.com/~foo/の形で公開される。
今回は、それをワンランクアップし、http://foo.example.com/でア [...]]]></description>
			<content:encoded><![CDATA[<p><b>//概要</b><br />
普段、ユーザのpublic_htmlディレクトリはhttp://www.example.com/~foo/の形で公開される。<br />
今回は、それをワンランクアップし、http://foo.example.com/でアクセスできるように設定する。</p>
<hr />
<b>//mod_vhost_aliasを使用した方法</b><br />
・Apache付属のモジュールの中に、<a href="http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html">mod_vhost_alias</a>と言うモジュールがある。<br />
　これを使用すると、たった一行でバーチャルドメインが実現できる。以下に例を示す。</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white"><br />
VirtualDocumentRoot /home/%1/public_html<br />
<font color="lime">↑http://foo.example.com/に対して/home/foo/public_htmlを割り当てる。</font>
</pre>
<p></font></td>
</tr>
</table>
<p>お分かりいただけるだろうか。見ての通り実に簡単である。<br />
ただし問題点はある。それは<i>各種ラッパーを一切使用できない</i>ことだ。<br />
理由は、ラッパーの仕組みを思い出せば分かってくる。<br />
数あるラッパー、例を挙げるとCGIWrapの場合ユーザとパスを判別するには環境変数の'PATH_INFO'か'QUERY_STRING'から情報を抜き取って判別している。<br />
PATH_INFOの場合、/~foo/hoge.cgiの形式でないと認識できないし、<br />
QUERY_STRINGの場合、/path-to-cgiwrap/cgiwrap/foo/hoge.cgiの形式でないと認識できない。<br />
つまり、バーチャルホストにした際のパスでは/~foo/hoge.cgiにならないため認識できないのである。<br />
対処方法としては、以下のようにmod_rewriteを使用した方法がある。</p>
<hr />
<b>//mod_rewriteを使用した方法</b><br />
<u>1,/~fooへマッピングする</u><br />
・すぐに思いつく方法としては、http://foo.example.com/へ向けられた要求を/~fooへ向けることである。<br />
これにより、バーチャルホストのマッピングができるうえに、CGIWrapの認識できるパス通りにPATH_INFOを設定できる。<br />
以下に例を示す。</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white"><br />
<virtualHost 192.168.1.20><br />
ServerName www.example.com<br />
ServerAlias *.example.com<br />
RewriteEngine On<br />
RewriteCond  %{HTTP_HOST}              !^www\.example\.com$<br />
RewriteCond  %{REQUEST_URI}            !^/cgiwrap/<br />
RewriteCond  %{REQUEST_URI}            !^/icons/<br />
RewriteCond  %{REQUEST_URI}            !^/~<br />
<font color="lime">↑www.example.com , /cgiwrap , /icons , /~ を含むアドレスにはマッピングしない</font><br />
RewriteRule  ^(.+) %{HTTP_HOST}$1                  [C]<br />
RewriteRule  ^([^.]+)\.example\.com/(.*)   /~$1/$2  [PT]<br />
RewriteRule  ^([^.]+)\.example\.com$       /~$1/    [PT]<br />
<font color="lime">↑http://foo.example.com/に対して/~fooを割り当てる。</font><br />
</virtualHost>
</pre>
<p></font></td>
</tr>
</table>
<p>これで、/~fooに対してマッピングできる。しかし、これにも欠点がある。<br />
それは、cgiなどで相対パス等を取り扱ったときにhttp://foo.example.com/~foo/と表示されてしまう点だ。<br />
NotFoundなどのエラーメッセージにも同様の症状が発生する。http://foo.example.com/hoge.cgiでアクセスしたはずなのに、<br />
いつの間にかhttp://foo.example.com/~foo/hoge.cgiになっていた、なんていうことも起こってしまう。<br />
これは当然の挙動としか言いようが無い。http://foo.example.com/に対して</p>
<p>http://foo.example.com/~foo/をマッピングしているのだから。</p>
<p>対処法としては、以下の方法がある。<br />
<u>2,/home/foo/public_htmlへマッピングし、CGIScriptに対しては/cgi-bin/cgiwrap/foo/へマッピングする</u><br />
・標準時は/home/foo/public_htmlへ直接マッピングをかけてあげて、<br />
ラッパー対象ファイルに対しては/cgi-bin/cgiwrap/foo/へマッピングすれば、CGIWrapがQUERY_STRINGを使用して<br />
認識できるので見事に実現できるはずである。以下に例を示す。</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white"><virtualHost 192.168.1.20><br />
ServerName www.example.com<br />
ServerAlias *.example.com<br />
RewriteEngine On<br />
RewriteCond  %{HTTP_HOST}              !^www\.example\.com$<br />
RewriteCond  %{REQUEST_URI}            !^/cgiwrap/<br />
RewriteCond  %{REQUEST_URI}            !^/icons/<br />
RewriteCond  %{REQUEST_URI}            !^/~<br />
<font color="lime">↑www.example.com , /cgiwrap , /icons , /~ を含むアドレスにはマッピングしない</font><br />
RewriteRule   ^(.+)                      %{HTTP_HOST}$1 [C]<br />
# For CGI Files<br />
RewriteRule   ^([^.]+)\.example\.com/(.+)\.cgi(.*) /cgi-bin/cgiwrap/$1/$2\.cgi$3<br />
[NS,T=application/x-http-cgi,PT,L]<br />
<font color="lime">↑http://foo.example.com/hoge.cgiに対して/cgi-bin/cgiwrap/foo/hoge.cgiを割り当てる。</font><br />
# For Normal Files<br />
RewriteRule   ^([^.]+)\.example\.com/(.*) /home/$1/public_html/$2 [L]<br />
RewriteRule   ^([^.]+)\.example\.com$     /home/$1/public_html     [L]<br />
<font color="lime">↑http://foo.example.com/に対して/home/foo/public_htmlを割り当てる。</font><br />
</virtualHost>
</pre>
<p></font></td>
</tr>
</table>
<p>これで、ユーザ毎にバーチャルドキュメントを実現でき、かつCGIWrapが有効になる。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CGIWrapの設定とインストール</title>
		<link>http://www.dabits.net/archives/2</link>
		<comments>http://www.dabits.net/archives/2#comments</comments>
		<pubDate>Sun, 29 Jun 2008 17:00:51 +0000</pubDate>
		<dc:creator>hiroki</dc:creator>
				<category><![CDATA[Apache関連]]></category>
		<category><![CDATA[サーバ構築]]></category>

		<guid isPermaLink="false">http://tips.dabits.net/archives/1</guid>
		<description><![CDATA[//概要
CGIWrapはSuexecの様な「ユーザ権限でCGIを実行できる」ラッパーである。
使い方次第でSuexecよりも使い勝手が良いため、導入する方も少なくない。
今回は、そのCGIWrapの仕組み/設定/インス [...]]]></description>
			<content:encoded><![CDATA[<p><b>//概要</b><br />
CGIWrapはSuexecの様な「ユーザ権限でCGIを実行できる」ラッパーである。<br />
使い方次第でSuexecよりも使い勝手が良いため、導入する方も少なくない。<br />
今回は、そのCGIWrapの仕組み/設定/インストールまでを行う。</p>
<hr />
<b>//CGIをユーザ権限で実行する意味とは？</b><br />
通常、CGIはサーバにあるhttpd(Apache等)で設定されたユーザ(デフォルトではapacheやnobody)<br />
により実行される。その際、ログを読み書きする場合にはCGI実行ユーザとファイルの所持者が違うため<br />
そのログファイルのパーミッションを+w(だれでも書き込める様)に設定しなければならない。<br />
ここで少し考えてほしい。<br />
「誰でも書き込むことができる」と言うことは、「同サーバ上の他ユーザでも書き込める」<br />
と言うことになってしまう。これではログを書き換えられてしまう恐れがあり、セキュリティ上好ましくない。<br />
そこで出てくるのがCGIWrapやSuexec等のラッパーである。ラッパーを通して実行することにより<br />
CGIがその所持ユーザにより実行されるため、ログのパーミッションを誰でも書き込める様に設定する必要が無くなる。<br />
これにより、他のユーザに不正にファイルを書き換えられるのを防ぐことができるわけだ。</p>
<hr />
<b>//設定・インストール</b><br />
・ここでは、当サーバの設定を例に一連の流れを説明する。</p>
<p>
○ファイルのダウンロード・展開<br />
<a href="http://cgiwrap.unixtools.org/">http://cgiwrap.unixtools.org/</a>よりCGIWrapの最新版をダウンロードして、展開する</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white">[root@www ~]# <font color="skyblue">wget http://jaist.dl.sourceforge.net/sourceforge/cgiwrap/cgiwrap-3.9.tar.gz</font><br />
=> `cgiwrap-3.9.tar.gz.1'<br />
jaist.dl.sourceforge.net をDNSに問いあわせています... 150.65.7.130<br />
jaist.dl.sourceforge.net[150.65.7.130]:80 に接続しています... 接続しました。<br />
HTTP による接続要求を送信しました、応答を待っています... 200 OK<br />
長さ: 138,875 [application/x-gzip]<br />
100%[====================================>] 138,875      541.00K/s<br />
19:57:25 (539.90 KB/s) - `cgiwrap-3.9.tar.gz' saved [138,875/138,875]<br />
[root@www ~]#<font color="skyblue">tar zxvf cgiwrap-3.9.tar.gz</font><br />
cgiwrap-3.9/<br />
cgiwrap-3.9/COPYING<br />
　　　　・<br />
　　　　・<br />
　　　　・<br />
cgiwrap-3.9/util.c<br />
cgiwrap-3.9/util.h<br />
[root@www ~]#<font color="skyblue">cd cgiwrap-3.9</font><br />
[root@www cgiwrap-3.9]#
</pre>
<p></font></td>
</tr>
</table>
<p>
○CGIWrapの設定/インストール<br />
./configure の後に続くオプションでCGIWrapを設定していく。主なオプションは<a href="http://cgiwrap.unixtools.org/install.html">こちら</a>のConfiguration Optionsに掲載してある(英語)<br />
なお、最小限'--with-install-dir'と'--with-httpd-user' は必要となっている。</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white">[root@www cgiwrap-3.9]#./configure --with-perl=/usr/bin/perl \	<font color="lime">←perlの位置</font><br />
> --with-local-contact-email=webmaster@dabits.net \	<font color="lime">←管理者メールアドレス</font><br />
> --with-install-dir=/var/www/cgi-bin \	<font color="lime">←インストールディレクトリを設定(CGIWrapの推奨設定)</font><br />
> --with-cgi-dir=html \			<font color="lime">←ユーザディレクトリをhtml</font><br />
> --with-httpd-user=apache \		<font color="lime">←httpd実行ユーザをapache</font><br />
> --with-check-shell \			<font color="lime">←シェルユーザによる実行禁止</font><br />
> --without-logging-file		<font color="lime">←ログの記録をしない</font><br />
checking build system type... i686-pc-linux-gnu<br />
　　　　・<br />
　　　　・<br />
　　　　・<br />
config.status: creating config.h<br />
config.status: config.h is unchanged<br />
[root@www cgiwrap-3.9]# <font color="skyblue">make</font>		<font color="lime">←コンパイル</font><br />
gcc -c -g -O2  -I. -I. cgiwrap.c<br />
gcc -c -g -O2  -I. -I. debug.c<br />
gcc -c -g -O2  -I. -I. util.c<br />
gcc -c -g -O2  -I. -I. fetch.c<br />
gcc -c -g -O2  -I. -I. stdutil.c<br />
gcc -c -g -O2  -I. -I. msgs.c<br />
gcc -o cgiwrap cgiwrap.o debug.o util.o fetch.o stdutil.o msgs.o<br />
[root@www cgiwrap-3.9]# <font color="skyblue">make install</font>	<font color="lime">←インストール</font><br />
rm -f /var/www/cgi-bin/cgiwrap<br />
rm -f /var/www/cgi-bin/cgiwrapd<br />
rm -f /var/www/cgi-bin/nph-cgiwrap<br />
rm -f /var/www/cgi-bin/nph-cgiwrapd<br />
# rm -f /var/www/cgi-bin/php-cgiwrap<br />
# rm -f /var/www/cgi-bin/php-cgiwrapd<br />
cp cgiwrap /var/www/cgi-bin/cgiwrap<br />
chown root /var/www/cgi-bin/cgiwrap<br />
chgrp root /var/www/cgi-bin/cgiwrap<br />
chmod 4755 /var/www/cgi-bin/cgiwrap<br />
ln /var/www/cgi-bin/cgiwrap /var/www/cgi-bin/cgiwrapd<br />
ln /var/www/cgi-bin/cgiwrap /var/www/cgi-bin/nph-cgiwrap<br />
ln /var/www/cgi-bin/cgiwrap /var/www/cgi-bin/nph-cgiwrapd<br />
# ln /var/www/cgi-bin/cgiwrap /var/www/cgi-bin/php-cgiwrap<br />
# ln /var/www/cgi-bin/cgiwrap /var/www/cgi-bin/php-cgiwrapd<br />
[root@www cgiwrap-3.9]#<font color="skyblue">cd ..</font><br />
[root@www ~]# <font color="skyblue">rm -rf cgiwrap-3.9</font>	<font color="lime">←解凍したディレクトリを削除</font><br />
[root@www ~]# <font color="skyblue">rm -f cgiwrap-3.9.tar.gz</font>	<font color="lime">←ダウンロードしたファイルを削除</font>
</pre>
<p></font></td>
</tr>
</table>
<p>
○Apache再設定<br />
CGIWrapを適用するためApacheを再設定する。</p>
<table bgcolor="black" width="100%">
<tr>
<td><font color="white">[root@www ~]# <font color="skyblue">vi /etc/httpd/conf/httpd.conf</font><br />
<directory "/var/www/html"><br />
Action cgi-wrapper /cgi-bin/cgiwrap/apache<br />
↑追加(ドキュメントルートにあるスクリプトをapache権限で動作させるため。)<br />
</directory><br />
<font color="skyblue">#</font> ScriptAlias /cgi-bin/ /var/www/cgi-bin/	<font color="lime">←コメントをはずす</font><br />
↓<br />
ScriptAlias /cgi-bin/ /var/www/cgi-bin/<br />
AddHandler <font color="skyblue">cgi-script</font> .cgi .pl			<font color="lime">←変更(CGIの実行をCGIWrap経由にさせる。)</font><br />
↓<br />
AddHandler <font color="skyblue">cgi-wrapper</font> .cgi .pl<br />
<font color="skyblue">Action cgi-wrapper /cgi-bin/cgiwrap</font>		<font color="lime">←追加(〃)</font><br />
[root@www ~]# <font color="skyblue">/etc/init.d/httpd restart</font>		<font color="lime">←Apache再起動</font>
</pre>
<p></font></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.dabits.net/archives/2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
