最近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)
コマンドを実行しましたが、複数あることがわかりましたか?実行中のプロセス。誰かがこれらについてコメントできますか?
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も同じユーザーとして実行していることを確認してください。