CentOS6にてVirtualHostをapache以外のユーザーで実行させたい。
やりたいことはずばりこれだ!
1Webサーバにて複数のViartualHostを公開するときに、VirtualHost単位で管理者を分け、他のVirtualHostの操作はできないようにさせたい
今回はFTPによるWeb公開ファイルの操作を行いたいという依頼を受けて方法を探してみたら、めちゃくちゃ簡単な方法があったので共有させて頂きます。
1. epelリポジトリを追加
yumリポジトリへのepelリポジトリの追加を行っていない方はこちらの記事を参考に追加
2. httpd-itkをインストールする
# yum -y install httpd-itk # which httpd.itk /usr/sbin/httpd.itk
3. httpd起動プログラムを置き換える
/etc/sysconfig/httpdを編集し、起動プログラムを上記2で確認した/usr/sbin/httpd.itkに変更する。
# cp -p /etc/sysconfig/httpd /etc/sysconfig/httpd.org~
# echo "HTTPD=/usr/sbin/httpd.itk" >> /etc/sysconfig/httpd
4. デフォルトの起動ユーザーがapacheであることを設定ファイルとして明記
# vi /etc/httpd/conf.d/itk.conf <IfModule itk.c> AssignUserId apache apache </IfModule>
5. 既存のVirtualHostの設定内に管理を希望するユーザIDとグループを指定
以下はユーザ名とグループ名が「web01」の場合
<VirtualHost *:80>
ServerName example.com
DocumentRoot /peth/to/web/root
AssignUserId web01 web01
# ~省略~
</VirtualHost>
6. PHPの利用がある場合
/etc/httpd/conf.d/php.confに以下の記述を追加
<IfModule itk.c> LoadModule php5_module modules/libphp5.so </IfModule>
8. Webコンテンツの所有者と権限を変更する
# chown -R web01:web01 /peth/to/web/root # chmod o-rwx /peth/to/web/root
7.httpdを再起動する
# service httpd restart
8.VirtualHostにアクセスする
問題なくアクセスできることを確認してください。
9.アクセスした状態で ps コマンドで指定のユーザで実行されていることを確認
# ps auxww | grep web01
これで完了です。
今後はVirtualHost毎に異なる管理者をつけて運用ができますね。
以上です。
コメント
今晩は、久々の更新とコメントですかね?
お久しぶりです。
さて、弊社サーバーを新規事業で新サーバーに乗り換えます。
OSはCentOS7と教えていただいたwebtaticのphp5.6とmariadb10
そしてwebサーバーはnginx&apacheを採用、後は侵入検知のfail2banを導入。
今回はうるさいのがこの事業にかかわらないので自分の好みで作れるのがとてもうれしいですね。
自分のサーバーはさくらVPSに3月に移動してipv4とipv6のデュアルスタックと常時ssl化にしました。
webtaticのphpを教えていただきありがとうございました。
くりくりさん
お久しぶりです!
CentOS7なんですね~ 時代の流れについていけていないです(^^;)
私はまだDTIのVPSを利用してます。
記事の更新ぜんぜんしていなかったので、今後は少しずつ復活するよていです!
こんにちは
新規にーサーバー作りましたが順調に動いてますよ。
>時代の流れ
もうめんどくさくてしかたないです。
同じ設定するのにapache2.2,2.4
そしてnginxと3通りのやり方を検証しないといけないから大変です。
早くどっちかに移行してくれと本気で思いますね。
今年の11月はphp7がでるみたいです
php5.6の1.7倍はやいらしいですし(nginxのキャッシュ機能ならいみないですが・・。)、
nginxはhttp/2を本年度中に実装するといってますからね。
もうおなかいっぱいです。