私は、UNIXコマンドラインWebサーバー管理/管理の世界では比較的新しいです。
コントロールパネルの管理オプションを備えたホストの多くでは、PHPの実行方法を簡単なオプションで変更できます。
最も一般的なオプションは次のとおりです。
私の質問は、単純に、コマンドラインを使用してこれをどのように変更しますか? Apacheには多くの設定ファイルがあります。
私が見つけた最も近いものは この質問 ですが、ディレクトリ構造は私のOS(Ubuntu 12.04)に一致しないようです。
非常に一般的であるように見えるこのプロセスの詳細を見つけることができる明確なガイドがないように思えるので、私はかなり当惑しています。これが存在する場合、私を許してください...もしそうなら、正しい方向に私を向けてください。
私はついに、これを行うことを目的としたニースのチュートリアルを見つけました。 LAMPスタックが既にインストールされているので、実行した手順の概要を説明しますが、完全なチュートリアルは here にあります。
新しい注意事項:
チュートリアルでは、次のコマンドでrootユーザーに切り替えます。
Sudo su
私の場合、ユーザーを切り替えるのではなく、単にこれらのコマンドの前にSudo
を付けたので、その方法で手順を文書化します。
開始
ステップ1:Apache Worker MPM(マルチプロセスモジュール)をインストールする
Sudo apt-get install Apache2-mpm-worker
これは、Apacheをインストールするときのデフォルトであるインストール済みのプリフォークを置き換えます。
ステップ2:PHP5と必要なモジュールをインストールする
Sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
この時点で、「libapache2-mod-fastcgi」のインストール中にエラーが発生する場合があります。
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libapache2-mod-fastcgi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source
E: Package 'libapache2-mod-fastcgi' has no installation candidate
このパートは上記のチュートリアルにはありません
これを調整するには、multiverse
リポジトリをaptソースに追加する必要があります。
これをする:
Sudo nano /etc/apt/sources.list
次の行を追加しました:
deb http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb http://security.ubuntu.com/ubuntu precise-security multiverse
この場合のprecise
は、私のバージョンのUbuntuを指します " Precise Pangolin "。
そこで、これらの変更を保存してターミナルに戻します。
Sudo apt-get update
そしてまた:
Sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
これで動作するはずです。
次に、これらのApacheモジュールを有効にします。
Sudo a2enmod actions fastcgi alias
apacheを再起動します
Sudo service Apache2 restart
ステップ3:Apacheの構成
ApacheをPHP-FPMで動作させるには、次の設定が必要です。
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -Host 127.0.0.1:9000 -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
#directory statement mult be on multiple lines
</IfModule>
注:
古いバージョンのApache(2.3.x以前)を使用している場合は、この行を省略します
<Directory /usr/lib/cgi-bin> Require all granted </Directory>
次のコマンドでインストール済みバージョンを確認できます
Apache2 -version
/etc/Apache2/conf.d/php5-fpm.conf
(このファイルは存在しないため、作成する必要があります)のように、グローバルApache構成(すべてのvhostに対して有効)に配置するか、必要な各vhostに配置できます。 PHP-FPMを使用します。
私はグローバルルートを選択しました。
Sudo nano /etc/Apache2/conf.d/php5-fpm.conf
上記のコードブロックを貼り付けて保存し、終了します。この新しいファイルは、/etc/Apache2/conf.d/
ディレクトリ内のすべてのファイルをロードするApacheのデフォルト設定によって自動的にロードされます。
apacheを再起動します。
Sudo service Apache2 restart
ここで、ドキュメントルート/var/www
に次のPHPファイルを作成します。
Sudo nano /var/www/info.php
追加:
<?php phpinfo();
保存して終了します。
ブラウザでそのファイルを呼び出します(例:http://your-server-ip/info.php
)
Server APIの下に、FPM/FastCGI
が表示されます。
成功!
デフォルトのTCPポートの代わりにUNIXソケットを使用するようにPHP-FPMを変更する方法や、すべての仮想ホストではなく個々の仮想ホストに対してこれを構成する方法などの詳細については、上部にあるソースチュートリアルを参照してください。
以前の回答に感謝し、彼らは私にほとんどの方法を教えてくれましたが、物事を機能させるには、いくつかの場所からの指示を組み合わせる必要があったため、コマンドの完全なセットを作成すると思いました。
参考までに、私はUbuntu 14.04、Apache 2.4を実行しており、デフォルトでmodphpを実行していましたが、以前の手順ではmodphpを無効にする必要もありませんでした。
また、 http://blog.starcklin.com/2013/08/install-mod-fastcgi-and-php5-fpm-on-ubuntu/ は非常に有益でわかりやすいことがわかりました。
ターミナルで次のコマンドを次々に実行するだけです。
最初に必要なパッケージをインストールします(これは既にインストールされていると想定しているため、php5は省略し、初回インストール時に再度追加します)。また、Apache 2.4以降では、ワーカーの代わりにevent-mpmを使用できることに注意してください http://www.vps.net/blog/2013/04/08/Apache-mpms-prefork-worker-and-event / 。私の例ではワーカーを示していますが、それを使用する場合は、Wordワーカーをイベントに置き換えてください。
Sudo apt-get install Apache2-mpm-worker
Sudo apt-get install libapache2-mod-fastcgi php5-fpm
必要なMODを有効にし、不要なMODを無効にします。
Sudo a2dismod php5 mpm_prefork
Sudo a2enmod actions fastcgi alias mpm_worker
Php5.fcgiファイルを作成し、それを使用するWebサーバーの許可を与えます。
Sudo touch /usr/lib/cgi-bin/php5.fcgi
Sudo chown -R www-data:www-data /usr/lib/cgi-bin
Php5-fpmのグローバル構成を作成します
Sudo nano /etc/Apache2/conf-available/php5-fpm.conf
以下を貼り付けます(IPアドレスの代わりにソケットを使用します)
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Php5-fpm confを有効にします
Sudo a2enconf php5-fpm
Apacheとfpmを再起動します
Sudo service Apache2 restart && Sudo service php5-fpm restart
他の指示に従って、以下をWebサーバー上の新しい参照可能なphpファイルに貼り付けます。
<?php phpinfo();
編集したファイルをWebブラウザーで開きます。サーバーAPIの横に「FPM/FastCGI」と表示されている場合、FastCGIでPHPを提供しています!
Ubuntu 14.04では、受け入れられた回答の手順を実行した後、/ etc/Apache2/conf-available/php5-fpm.confを編集します
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
次に実行する
#Sudo a2enconf php5-fpm
#Sudo Apache2 restart
誰かがUbuntu 16.04でこれを行っており、php 7からphp 5.6(Ondrej)にダウングレードした場合、いくつかの行を置き換える必要があります(JDawggの答えに基づいて):
Sudo apt-get install libapache2-mod-fastcgi php5-fpm to:
Sudo apt-get install libapache2-mod-fastcgi php5.6-fpm
Sudo a2dismod php5 mpm_prefork:
Sudo a2dismod php5.6 mpm_prefork
Sudo nano /etc/Apache2/conf-available/php5-fpm.conf:
Sudo vim /etc/Apache2/conf-available/php5.6-fpm.conf
Php5.6-fpmのインストールプロセスで既にファイルが作成されているため、作成する必要はありません。ただし、mod_php5用であるため、そのファイルの既存のテキストはすべて削除しました。
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
ファイルがそこにあるため、パスを/var/run/php5-fpm.sockから/var/run/php/php5.6-fpm.sockに変更しました。
Sudo a2enconf php5-fpm:
Sudo a2enconf php5.6-fpm
SudoサービスApache2の再起動&& Sudoサービスphp5-fpmの再起動:
Sudo service Apache2 restart && Sudo service php5.6-fpm restart
これが私のような他の初心者に役立つことを願っています:)