
Apache를 구성하기 위해 Puppetlabs/Apache를 사용하고 있습니다. 기본 인형 파일에서 이를 호출하고 구성합니다.
class { '::apache': }
class { '::apache::mod::fastcgi': }
apache::vhost { "${::fqdn} non-ssl":
servername => $::fqdn,
port => '2222',
docroot => "/var/www/${root}",
priority => 10,
}
매니페스트 apache::mod::fastcgi
는 원활하게 작동합니다. 한 가지 단점이 있습니다. PHP는 여전히 (cli)
모드에서 실행됩니다.
vagrant@wp:/etc/apache2/mods-enabled$ php -v
PHP 5.5.12-1+deb.sury.org~precise+1 (cli) (built: May 8 2014 21:04:38)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
phpinfo()
이를 확인하기 위해 파일에 호출을 추가 phpinfo.php
하고 확인했는데 php /path/to/phpinfo.php | less
여전히 Service API
에 있습니다 cli
.
을 들여다보면 과 가 /etc/apache2/mods-enabled
보입니다 . 내용을 확인해 보았는데요 .fastcgi.conf
fastcgi.load
sudo nano fastcgi.conf/load
fastcgi.conf.erb
모듈의 템플릿:
# ===> fastcgi.conf
# The Fastcgi Apache module configuration file is being
# managed by Puppet and changes will be overwritten.
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir "/var/lib/apache2/fastcgi"
</IfModule>
# ===> fastcgi.load
adModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
참고:vhosts.erb
주형뿐만 아니라하위 템플릿_fastcgi.erb
이는 vhosts 템플릿에 대한 FastCGI 블록을 구축합니다.
를 사용하여 설정하려고 하면(puppetlabs/apache::mod::fastcgi가 이미 수행했어야 함) sudo a2enmod fastcgi alias
CLI에서 다음과 같은 답변을 얻습니다.
Module fastcgi already enabled
Module alias already enabled
/etc/apache2/sites-enabled
그리고 로 내용을 확인하면 sudo nano 15-default.conf
다음과 같은 내용이 표시됩니다.
<VirtualHost *:80>
# ...
## Script alias directives
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin"
</VirtualHost>
root
그런 다음 /main 사용자 로 전환 하고 파일 sudo su
에서 참조되는 디렉토리를 확인했습니다 . 콘텐츠는 하나만 있습니다. 이름이 빈 폴더입니다 . 빈 FastCGI lib가 문제의 원인일 수 있습니까?fastcgi.conf
/var/lib/apache2/fastcgi
dynamic
FastCGI를 어떻게 활성화하고 실행할 수 있는지 자세히 알 수는 없지만 여전히 이것이 cli
내가 PHP를 실행하는 모드라는 것을 읽고 있습니다.
편집 1
php-fpm
방금 실행 중인지 확인했습니다 .
vagrant@wp:/etc/apache2/conf.d$ ps -ef | grep php-fpm
root 935 1 0 15:58 ? 00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 982 935 0 15:58 ? 00:00:00 php-fpm: pool www
www-data 983 935 0 15:58 ? 00:00:00 php-fpm: pool www
vagrant 2760 2605 0 19:40 pts/2 00:00:00 grep --color=auto php-fpm
다시 시작 php5-fpm
하고 apache2
수동으로 서비스를 제공했지만 결과는 동일했습니다.
sudo service php5-fpm restart
sudo service apache2 restart
php -v
# still: (cli)
무엇이 누락되었는지 알고 싶다면 템플릿을 수동으로 다시 작성하거나 httpd.conf.erb
누락된 부분을 가져와서 기본 puppetlabs/apache 템플릿을 사용할 수 있습니다.이것은 모듈의 옵션입니다. 마찬가지다'/etc/apache2/mods-available'
아니면 그'/etc/apache2/sites-available'
디렉토리
답변1
첫째: 쉘에서 php -v를 실행하면 항상 cli 버전을 얻게 됩니다. 명령줄 인터페이스를 사용하고 있기 때문에...
php-fpm 모듈을 어떻게 설치하셨나요? 어떤 모드를 사용하셨나요? (tcp 또는 sock?) 이미 가상 호스트를 구성했습니까? => 기본 이름이 아닙니다. 사이트가 활성화된 디렉터리를 확인하세요. $fqdn이 있는 파일이 있어야 합니다($fqdn은 example.com과 같은 정규화된 도메인 이름을 의미합니다).
Apache 2.4 및 mod_proxy_fcgi를 사용하면 vhost 구성을 통해 FPM 풀에 .php 요청을 쉽게 전달할 수 있습니다.
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
=> 그러한 지시문이 있는지 가상 호스트를 확인하십시오.