Проблемы с настройкой простого сайта hhvm (пример hack-site) с ngnix на ubuntu14.04

Я следовал инструкциям здесь по адресу https://github.com/hhvm/hack-example-site и как-то заблудился при настройке хак-сайта hhvm на ngnix поверх ubunut 14.04. Обратите внимание, что я использовал соответствующий репозиторий apt-get для версии 14.04.

Однако после настройки и попытки доступа к 127.0.0.1:9000 я вижу ошибку в /var/log/hhvm/error.log

FastCGI protocol: received an invalid record

Мой /etc/ngnix/sites-enabled выглядит следующим образом

-rw-r--r-- 1 root root  0 Aug 30 22:01 default
lrwxrwxrwx 1 root root 44 Aug 30 22:21 hack-example-site -> /etc/nginx/sites-available/hack-example-site

Содержимое /etc/ngnix/sites-available/hack-example-site выглядит следующим образом:

server {
  root ~/hack-example-site/hack-example-site;
  index index.php;
  location ~ \.php$ {
    # If fastcgi backend is on another server disable this.
    # Read issue #6 about this
    try_files $uri =404;

    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME ~/hack-example-site/hack-example-site/index.php
    fastcgi_param ~/hack-example-site/hack-example-site        $document_root$fastcgi_script_name;
    include fastcgi_params;
  } 
}

Может ли кто-нибудь помочь мне с этим сайтом hhvm, работающим на моем локальном хосте? Спасибо.

О, и обратите внимание, что ngnix установлен правильно, и сервер отвечает на localhost.

Файл конфигурации /etc/nginx/sites-available/hack-example-site ниже:

server {
  root /root/hack-example-site;
  index index.php;
  server_name localhost;
  location ~ \.php$ {
# If fastcgi backend is on another server disable this.
# Read issue #6 about this
try_files $uri =404;

fastcgi_pass  127.0.0.1:9000;

fastcgi_index index.php;

#fastcgi_param SCRIPT_FILENAME ~/hack-example-site/hack-example-

сайт/index.php

fastcgi_param /root/hack-example-site 

$document_root$fastcgi_script_name;

include fastcgi_params;

} } ~


person Anand    schedule 31.08.2014    source источник
comment
Дерп спасибо. Когда я говорю localhost, я не получаю index.php на настроенном сайте hhvm. Я не понимаю, почему? Просто добавьте, запуск «hhvm index.php» выводит желаемый результат, поэтому я предполагаю, что hhvm установлен и настроен правильно.   -  person Anand    schedule 31.08.2014
comment
Что ПРОИСХОДИТ, когда вы обращаетесь к порту nginx (80 или 8080 или где бы он ни работал)? У вас появляется ошибка, пустая страница, что-то еще? нгинкс работает? У него проблемы с общением с HHVM? Поскольку HHVM прослушивает 9000 и записывает в журнал, он не выглядит непосредственным виновником.   -  person Josh Watzman    schedule 31.08.2014
comment
@JoshWatzman, я получаю страницу в /usr/share/nginx/html/index.html. Я пробовал что-то другое. Я создал символическую ссылку на /etc/ngnix/sites-enabled/default -> /etc/nginx/sites-avaliable/default. И отредактировал /etc/nginix/sites-available/default со следующими значениями на тестовом хакерском сервере { listen 80 default_server; слушать [::]:80 default_server ipv6only=on; корень /usr/share/nginx/html; #index index.html index.htm; индекс test.php; # # # Сделать сайт доступным с localhost server_name localhost; включить hhvm.conf;   -  person Anand    schedule 31.08.2014
comment
Извините за сумбурность в комментариях. Я опубликую работу как временное решение.   -  person Anand    schedule 31.08.2014


Ответы (1)


Я нашел обходной путь для проверки своих хакерских скриптов, но не очень доволен этим. Я создал символическую ссылку

/etc/ngnix/sites-enabled/default->/etc/ngnix/sites-available/default.

Скопировано test.php с простым приветствием, написанным в хаке, в /usr/share/nginx/html. Отредактируйте файл /etc/nginx/sites-available/default следующим образом:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    #index index.html index.htm;
    index test.php;
    # Make site accessible from http://localhost/
    server_name localhost;
    include hhvm.conf;

Теперь, когда я посетил локальный хост, был выполнен хак-скрипт и был показан Helloworld.

However I would have liked this to work with /etc/nginx/sites-available/hack-site-example instead of default. Not sure what is going there? Can anyone throw some light?
person Anand    schedule 31.08.2014
comment
Что произойдет, если вместо этого обходного пути вы создадите символическую ссылку /etc/nginx/sites-available/hack-site-example на /etc/nginx/sites-enabled/hack-site-example -- или уже сделали это? - person Josh Watzman; 31.08.2014
comment
(В частности, убедитесь, что вы полностью следовали этому разделу инструкций: github.com/hhvm/hack-example-site#set-up-the-nginx-config?) - person Josh Watzman; 31.08.2014
comment
Я удалил символическую ссылку по умолчанию и создал символическую ссылку для hack-site-example. Теперь я вижу отказ в доступе в /var/log/nginx/error.log 2014/08/31 18:08:46 [ошибка] 9652#0: *1 /root/hack-example-site/index.php запрещен (13: Отказано в доступе), клиент: 127.0.0.1, сервер: localhost, запрос: GET / HTTP/1.1, хост: localhost - person Anand; 31.08.2014
comment
@JoshWatzman, я внимательно пересмотрел шаги по ссылке. Также пробовал несколько других вещей, но все еще не мог заставить это работать. Я изменил разрешения, но все равно тот же результат. Я вставил конфигурацию файла nginx в исходное описание проблемы выше для справки. Спасибо за вашу помощь - person Anand; 31.08.2014
comment
Думаю, я собираюсь углубиться в настройку nginx здесь blog.martinfjordvald.com/2010 /07/nginx-праймер - person Anand; 31.08.2014
comment
Я бросил на день. Я не могу сделать эту работу :( - person Anand; 31.08.2014
comment
Наконец, попытался изменить владельца файлов на hacksite на www-data, поскольку hhvm запускается как пользователь www-data. Даже это не сработало. :( - person Anand; 31.08.2014
comment
Если разрешение отклонено в журнале nginx, это может быть неправильная конфигурация nginx, а не HHVM, которая не может прочитать файл? Может ли nginx прочитать файл? Попробуйте sudo -u www-data -s и посмотрите, сможете ли вы также воспроизвести проблему с разрешением. - person Josh Watzman; 02.09.2014
comment
@JoshWatzman, спасибо. Да, я могу воспроизвести отказано в разрешении anand@anand-OptiPlex-980:~$ sudo -u www-data -s bash: /home/anand/.bashrc: Отказано в разрешении www-data@anand-OptiPlex-980:~ $ - person Anand; 07.09.2014
comment
Это просто ошибка от bash, поскольку я, вероятно, немного испортил способ вызова sudo таким образом, я думаю, что это безопасно игнорировать. (Вы видите, как он жалуется на ваш bashrc, который не имеет отношения к www-данным?) Проверьте другие вещи, которые я упомянул выше, которые действительно имеют отношение к веб-серверу. - person Josh Watzman; 07.09.2014