cloudfoundry — экземпляр веб-сайта Cloud Foundry PHP падает с пользовательской конфигурацией MIME

Я пытаюсь развернуть базовую страницу php с расширением html на Cloud Foundry, точнее на Swisscom Application Cloud.

Это мой единственный исходный файл, расположенный на ${APP_ROOT}/www/index.html

<html>
<?php
phpinfo();
?>
</html>

Мои файлы конфигурации следующие.

В .bp-config/options.json:

{
"WEBDIR": "www",
"PHP_VERSION": "{PHP_56_LATEST}",
"WEB_SERVER": "httpd"}

В .bp-config/httpd/httpd.conf:

ServerRoot "${HOME}/httpd"Listen ${PORT}
ServerAdmin "${HTTPD_SERVER_ADMIN}"ServerName sample-app.scapp.io
DocumentRoot "${HOME}/#{WEBDIR}"Include conf/extra/httpd-modules.conf
Include conf/extra/httpd-mime.conf

Имя сервера, которое я беру из настройки в Swisscom App Cloud:
введите описание изображения здесь

В .bp-config/httpd/extra/httpd-modules.conf:

LoadModule mpm_event_module modules/mod_mpm_event.so

Это, кажется, требуется согласно журналам ошибок, если не включено.

В .bp-config/httpd/extra/httpd-mime.conf:

<IfModule mime_module>
AddType application/x-httpd-php .php .htm .html
</IfModule>

Для удобства доступ к исходному коду выше это GitHub репо.

Экземпляр не может быть запущен, но я не могу найти никакого описательного сообщения об ошибке. Это журналы от облака приложений Swisscom:

2017-05-19 12:56:26 [API/1] OUT Created app with guid 383e1568-29e9-4ef5-9825-3e1248a85b8e
2017-05-19 12:56:28 [API/3] OUT Updated app with guid 383e1568-29e9-4ef5-9825-3e1248a85b8e ({"route"=>"025e8337-7fd2-42c8-a325-d535af3db460", :verb=>"add", :relation=>"routes", :related_guid=>"025e8337-7fd2-42c8-a325-d535af3db460"})
2017-05-19 12:56:38 [API/1] OUT Updated app with guid 383e1568-29e9-4ef5-9825-3e1248a85b8e ({"state"=>"STARTED"})
2017-05-19 12:56:38 [STG/0] OUT Downloading dotnet_core_buildpack...
2017-05-19 12:56:38 [STG/0] OUT Downloading nodejs_buildpack...
2017-05-19 12:56:38 [STG/0] OUT Downloading python_buildpack...
2017-05-19 12:56:38 [STG/0] OUT Downloading binary_buildpack...
2017-05-19 12:56:38 [STG/0] OUT Downloading go_buildpack...
2017-05-19 12:56:39 [STG/0] OUT Downloaded nodejs_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloading php_buildpack...
2017-05-19 12:56:39 [STG/0] OUT Downloaded dotnet_core_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloading java_buildpack...
2017-05-19 12:56:39 [STG/0] OUT Downloaded binary_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloading staticfile_buildpack...
2017-05-19 12:56:39 [STG/0] OUT Downloaded python_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloading ruby_buildpack...
2017-05-19 12:56:39 [STG/0] OUT Downloaded go_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloaded java_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloaded php_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloaded staticfile_buildpack
2017-05-19 12:56:39 [STG/0] OUT Downloaded ruby_buildpack
2017-05-19 12:56:39 [STG/0] OUT Creating container
2017-05-19 12:56:39 [STG/0] OUT Successfully created container
2017-05-19 12:56:39 [STG/0] OUT Downloading app package...
2017-05-19 12:56:39 [STG/0] OUT Downloaded app package (1.5K)
2017-05-19 12:56:39 [STG/0] OUT Staging...
2017-05-19 12:56:41 [STG/0] OUT -------> Buildpack version 4.3.31
2017-05-19 12:56:41 [STG/0] OUT Installing HTTPD
2017-05-19 12:56:41 [STG/0] OUT HTTPD 2.4.25
2017-05-19 12:56:42 [STG/0] OUT Downloaded [file:///tmp/buildpacks/d16e91f150d8c31f69507a615bf75f08/dependencies/https___buildpacks.cloudfoundry.org_dependencies_httpd_httpd-2.4.25-linux-x64-bf8851c4.tgz] to [/tmp]
2017-05-19 12:56:42 [STG/0] OUT Installing PHP
2017-05-19 12:56:42 [STG/0] OUT PHP 5.6.30
2017-05-19 12:56:42 [STG/0] OUT Downloaded [file:///tmp/buildpacks/d16e91f150d8c31f69507a615bf75f08/dependencies/https___buildpacks.cloudfoundry.org_dependencies_php_php-5.6.30-linux-x64-13625eaa.tgz] to [/tmp]
2017-05-19 12:56:44 [STG/0] OUT Finished: [2017-05-19 10:56:44.679464]
2017-05-19 12:56:53 [STG/0] OUT Exit status 0
2017-05-19 12:56:53 [STG/0] OUT Staging complete
2017-05-19 12:56:53 [STG/0] OUT Uploading droplet, build artifacts cache...
2017-05-19 12:56:53 [STG/0] OUT Uploading droplet...
2017-05-19 12:56:53 [STG/0] OUT Uploading build artifacts cache...
2017-05-19 12:56:53 [STG/0] OUT Uploaded build artifacts cache (198B)
2017-05-19 12:57:01 [STG/0] OUT Uploaded droplet (55.3M)
2017-05-19 12:57:01 [STG/0] OUT Uploading complete
2017-05-19 12:57:01 [STG/0] OUT Destroying container
2017-05-19 12:57:02 [CELL/0] OUT Creating container
2017-05-19 12:57:02 [CELL/0] OUT Successfully created container
2017-05-19 12:57:04 [STG/0] OUT Successfully destroyed container
2017-05-19 12:57:06 [CELL/0] OUT Starting health monitoring of container
2017-05-19 12:57:07 [APP/PROC/WEB/0] OUT 10:57:07 php-fpm | [19-May-2017 10:57:07] NOTICE: fpm is running, pid 40
2017-05-19 12:57:07 [APP/PROC/WEB/0] OUT 10:57:07 php-fpm | [19-May-2017 10:57:07] NOTICE: ready to handle connections
2017-05-19 12:57:07 [APP/PROC/WEB/0] OUT Exit status 1
2017-05-19 12:57:07 [CELL/0] OUT Exit status 0
2017-05-19 12:57:07 [CELL/0] OUT Destroying container
2017-05-19 12:57:07 [API/3] OUT Process has crashed with type: "web"2017-05-19 12:57:07 [API/3] OUT App instance exited with guid 383e1568-29e9-4ef5-9825-3e1248a85b8e payload: {"instance"=>"", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* 2 error(s) occurred:\n\n* Exited with status 1\n* cancelled\n* cancelled", "crash_count"=>1, "crash_timestamp"=>1495191427514377386, "version"=>"ede7276b-e0a6-467c-a86a-5c60f1c36021"}

Я предполагаю, что должны быть другие журналы с дополнительной информацией о сбое, но я не знаю, где их найти.

Что является причиной сбоя и как я могу это исправить?

0

Решение

Я не уверен, почему ваше приложение не работает. Я предполагаю, что HTTPD не нравится конфигурация и она завершается. В журнале нет вывода HTTPD, и вы должны увидеть, как он запускается, вот так.

Пример:

2017-05-20T08:26:18.76-0400 [APP/PROC/WEB/0] OUT 12:26:18 httpd   | [Sat May 20 12:26:18.741822 2017] [mpm_event:notice] [pid 103:tid 140440543442816] AH00489: Apache/2.4.25 (Unix) configured -- resuming normal operations
2017-05-20T08:26:18.77-0400 [APP/PROC/WEB/0] OUT 12:26:18 httpd   | [Sat May 20 12:26:18.741947 2017] [mpm_event:info] [pid 103:tid 140440543442816] AH00490: Server built: Dec 20 2016 22:27:46
2017-05-20T08:26:18.77-0400 [APP/PROC/WEB/0] OUT 12:26:18 httpd   | [Sat May 20 12:26:18.741961 2017] [core:notice] [pid 103:tid 140440543442816] AH00094: Command line: '/app/httpd/bin/httpd -f /home/vcap/app/httpd/conf/httpd.conf -D FOREGROUND'

Если вы хотите, чтобы PHP-FPM обрабатывал ваши HTML-файлы, вам нужно внести пару изменений.

1.) В .bp-config/httpd/extra/httpd-php.confВам нужно либо изменить, либо добавить <Directory "${HOME}/#{WEBDIR}"> блок такой, что отправляет .html файлы в PHP-FPM. Если вы этого не сделаете, HTTPD просто обслужит их или вернет 404.

Пример: который отправляет оба .php & .html

<Directory "${HOME}/#{WEBDIR}">
<Files *.php>
<If "-f %{REQUEST_FILENAME}"> # make sure the file exists so that if not, Apache will show its 404 page and not FPM
SetHandler proxy:fcgi://#{PHP_FPM_LISTEN}
</If>
</Files>
<Files *.html>
<If "-f %{REQUEST_FILENAME}"> # make sure the file exists so that if not, Apache will show its 404 page and not FPM
SetHandler proxy:fcgi://#{PHP_FPM_LISTEN}
</If>
</Files>
</Directory>

2.) Вам нужно дать команду PHP-FPM обрабатывать файлы с .html расширение. По умолчанию это не так, потому что он пытается предотвратить злоупотребление из-за неправильной конфигурации (то есть не позволяет злоумышленнику оценить файл с неожиданным расширением).

Для этого нужно добавить файл .bp-config/php/fpm.d/php-process-html.conf ( php-process-html часть не имеет значения, но имя должно заканчиваться на .conf). Внутри него нужно поместить следующее:

[www]
security.limit_extensions = .php .html

Это говорит PHP-FPM обрабатывать оба .php а также .html файлы.

Примечание: для этого требуется по крайней мере v4.3.32 пакета сборки PHP, что довольно ново для меня, когда я писал это. Если вы используете старую версию пакета сборки, это все еще возможно, но вам нужно предоставить полный файл конфигурации php-fpm.conf, а не просто переопределять это свойство, и этот файл будет .bp-config/php/php-fpm.conf, Возьми один из php-fpm.conf файлы из Вот и использовать его как основу для начала работы, если вы застряли в старом пакете сборки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]