web-dev-qa-db-ja.com

毎回暗黙的にアクセス許可を変更せずにphp5-fpmがユーザーファイルを実行できるようにする方法

最近Ubuntuに切り替えました。私が頻繁に使用したツールの1つはXAMPPでした。 UbuntuにLAMPスタックをインストールしたとき、パフォーマンスが大幅に向上していることに気付きました。しかし、文字通り何日も費やし、何十ものハウツー記事を読んだ後、私はそれを正しく設定できませんでした。

Apache2 + php5-fpmをインストールすることになりました。これは、ユーザーの許可でファイルを実行できるためです。

しかし、それでもまだうまくいきませんでした。たとえば、人気のあるCMSのアーカイブをダウンロードし、Apache htmlディレクトリに抽出しました。これらのファイルに対するアクセス許可は、フォルダーの0664および0700です。

Apacheディレクトリルール:

<Directory "/home/myuser/www/">
    AllowOverride All
    Require all granted
    Allow from all    
</Directory>

AllowOverride Allの場合:

[Fri Dec 12 21:16:01.037580 2014] [core:crit] [pid 23745:tid 140466931369728] 
(13)Permission denied: [client 127.0.0.1:54670] AH00529:  
/home/myuser/www/mycms/install/.htaccess pcfg_openfile: unable to check htaccess 
file, ensure it is readable and that '/home/myuser/www/mycms/install/' is executable

AllowOverride Noneの場合、Apache2はindex.phpを実行します。これはルートディレクトリにありますが、/config/index.phpは実行しません

[Fri Dec 12 21:02:41.552369 2014] [core:error] [pid 22530:tid 140517706823424]
(13)Permission denied: [client 127.0.0.1:54465] AH00035: access to 
/install/index.php denied (filesystem path 
'/home/myuser/www/mycms/install/index.php') because search 
permissions are missing on a component of the path

私はまだApacheディレクトリのルールに精通していません、多分そこに何らかのエラーがあるでしょう。 index.phpファイルは読み取り可能にする必要がありますか? php5-fpmサービスはユーザーとして実行されます。

/etc/php5/fpm/pool.d

Line 22: user = myuser
Line 23: group = myuser

chmod -R 0755 www/を設定すると、ファイルが実行されます。ただし、ファイルを追加するたびに、またはphpで作成されたときに、このコマンドを実行し続けることはできません。常にアクセス許可を改ざんせずに作業する方法はありませんか?同僚に尋ねると、彼は「rootユーザーをphp5-fpmサービスに設定する」と言っただけです。ただし、これはより多くの仮設エスケープソリューションです。また、いくつかのglob/*関数を実行し、削除するつもりがなかったファイルを削除することも恐れています(過去に私にあったことがあります)。

すべてのファイルを自動的に実行できるようにLAMPスタックを設定するにはどうすればよいですか?

Suphpまたは他のmodで設定する方法についての良いガイドがあれば、私はそれを喜んで見ます。しかし、すべての方法で動作する必要があります。

編集

 ps aux | egrep '(Apache|httpd)'
root     18763  0.0  0.1  84256  4720 ?        Ss   21:35   0:00 /usr/sbin/Apache2 -k start
www-data 18767  0.0  0.1 373432  6256 ?        Sl   21:35   0:00 /usr/sbin/Apache2 -k start
www-data 18768  0.0  0.1 373432  6256 ?        Sl   21:35   0:00 /usr/sbin/Apache2 -k start
gskema   20515  0.0  0.0  14884  2364 pts/6    S+   21:37   0:00 grep -E --color=auto (Apache|httpd)

ps aux | egrep '(php)'
gskema    8312  0.0  0.0   4448   492 ?        S    16:32   0:00 /bin/sh /opt/phpstorm/bin/phpstorm.sh
gskema    8361  8.7 31.0 4630304 1245684 ?     Sl   16:32  26:52 /usr/lib/jvm/Java-8-Oracle/bin/Java -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=225m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djsse.enableSNIExtension=false -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -Dawt.useSystemAAFontSettings=lcd -Djb.vmOptionsFile=/opt/phpstorm/bin/phpstorm64.vmoptions -XX:ErrorFile=/home/gskema/Java_error_in_WEBIDE_%p.log -Xbootclasspath/a:/opt/phpstorm/bin/../lib/boot.jar -Didea.paths.selector=WebIde80 -Didea.platform.prefix=PhpStorm -Didea.no.jre.check=true -Djb.restart.code=88 com.intellij.idea.Main
gskema    8396  0.0  0.0   4936   904 ?        S    16:32   0:00 /opt/phpstorm/bin/fsnotifier64
root     18950  0.0  0.6 348744 24312 ?        Ss   21:35   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 18953  0.0  0.1 348744  7836 ?        S    21:35   0:00 php-fpm: pool www                                                       
www-data 18954  0.0  0.1 348744  7836 ?        S    21:35   0:00 php-fpm: pool www                                                       
gskema   20649  0.0  0.0  14888  2364 pts/6    R+   21:40   0:00 grep -E --color=auto (php)

コマンドを実行しましたが、複数あることがわかりましたか?実行中のプロセス。誰かがこれらについてコメントできますか?

3
gskema

UbuntuでのApache2 + php-fpmのセットアップに関する多くのガイドがあります。しかし、はい、彼らはディレクトリの許可については話しませんし、私の組織の人々が時々それと苦労しているのを見てきました。以下に、一般的なセットアップを示します。

Apacheはwww-dataユーザーとして実行する必要があります

Php-fpmはwww-dataユーザーとして実行する必要があります。

www-data  1591  0.0  0.4 417116 34008 ?        S    Dec19   0:00 php-fpm: pool

Apacheルートディレクトリには、ユーザーを所有者として、www-dataをグループとして含める必要があります。

drwxr-xr-x 44 anirudh www-data 4096 Dec 20 10:27 www

次に、www-dataグループをユーザーに追加します。

Sudo usermod -a -G www-data <your-user>

それでもユーザーとしてphp-fpmを実行したい場合は、Apacheも同じユーザーとして実行していることを確認してください。

3
anirudh