[Entware] nginx + php

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 20 янв 2016, 14:19

Краткая инструкция по настройке nginx с php в Entware

1. Установим nginx и php5-fastcgi

Код: Выделить всё

opkg update
opkg install nginx php5-fastcgi

2. Отредактируем конфиги nginx
2.1 Редактируем /opt/etc/nginx/nginx.conf
  • находим строку listen 80; и меняем 80 на порт, на котором будет работать nginx
  • находим строку root html; и прописываем полный путь до корня сервера - root /opt/share/nginx/html;
  • находим "закомментированную" секцию после
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000,
    удаляем комментарии и прописываем root как в предыдущем пункте.

    Код: Выделить всё

            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
                root           /opt/share/nginx/html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
    
2.2 Редактируем файл /opt/etc/nginx/fastcgi_params
  • Ставим комментарий у строки и добавляем новую
    #fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
3. Создаем файл /opt/share/nginx/html/info.php

Код: Выделить всё

<?php phpinfo(); ?>

4. Запускаем fcgi руками

Код: Выделить всё

php-fcgi -b 9000&

и nginx

Код: Выделить всё

/opt/etc/init.d/S80nginx start

5. Заходим браузером на ip нашего устройства порт из п. 2.1 - должны увидеть стартовую страницу nginx
указываем в конце: /info.php - должны увидеть информацию по php
6. Если все работает, создадим файл автозапуска fcgi /opt/etc/init.d/S79fcgi:

Код: Выделить всё

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=9000
BIN=/opt/bin/php-fcgi

start() {
        $BIN -b $PORT &
}

stop() {
        killall php-fcgi
}

case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
                stop
                start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        ;;
esac

Не забываем, что файл должен иметь атрибут исполнения `chmod + x /opt/etc/init.d/S79fcgi`

Дополнения и исправления приветствуются.

Yrzorg
Сообщения: 82
Зарегистрирован: 05 окт 2015, 13:23

Сообщение Yrzorg » 02 мар 2016, 15:41

Если виртуальных хостов несколько, и прописаны они так
 

Код: Выделить всё

server {
        listen       8081;
        server_name  mysite.net www.mysite.net;

        #charset koi8-r;

        #access_log  /opt/var/log/nginx/host.access.log;

        location / {
            root   /opt/share/nginx/mysite.net/html;
            index  index.html index.htm;
            autoindex on;
        }
Свернуть

то в этой секции
 

Код: Выделить всё

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /opt/share/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
Свернуть

надо что-то менять или нет?

UPD
В-общем, изменил конфиг, чтобы location был одинаковый
 

Код: Выделить всё

 
 location / {
            root   /opt/share/nginx/mysite.net/html;
            index  index.html index.htm;
            autoindex on;
        }
...............
 location ~ \.php$ {
            root           /opt/share/nginx/mysite.net/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
Свернуть

и при открытии mysite.net/info.php получаю "No input file specified."
Конфиги перепроверял, права вроде правильные везде (755 на папки, 644 на файлы), гуглил ... не взлетает, короче

неким чудесным образом всё заработало, возможно виноват был нечищенный кеш браузера
Keenetic Ultra II+Entware
NDMS 3.7

Yrzorg
Сообщения: 82
Зарегистрирован: 05 окт 2015, 13:23

Сообщение Yrzorg » 02 мар 2016, 22:29

продолжаем изыскания ...
хотел поставить roundcube, но столкнулся с отсутствием необходимых дополнений в php
 
Изображение
Свернуть

покопался в файле /opt/etc/php.ini, раскомментировал необходимые строки в секции Dynamic Extensions и при рестарте S79fcgi получил это

Код: Выделить всё

~ # /opt/etc/init.d/S79fcgi restart
~ # PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/dom.so' - File not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/iconv.so' - File not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/json.so' - File not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/pdo.so' - File not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/session.so' - File not found in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/lib/php/xml.so' - File not found in Unknown on line 0

самих расширений то нет ... на этом всё застопорилось
и всё время надо дописывать index.php в адресной строке, иначе идёт отказ "Forbidden 403"
Последний раз редактировалось Yrzorg 02 мар 2016, 22:39, всего редактировалось 1 раз.
Keenetic Ultra II+Entware
NDMS 3.7

Barmer
Сообщения: 6
Зарегистрирован: 11 авг 2016, 23:32

Сообщение Barmer » 11 авг 2016, 23:35

Установил вроде все как положено. Возникает ошибка: No input file specified.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 12 авг 2016, 00:52

Barmer писал(а):Источник цитаты вроде все как положено.

Нужно не вроде... Забыли что-нибудь. Например строку с root поменять....

Barmer
Сообщения: 6
Зарегистрирован: 11 авг 2016, 23:32

Сообщение Barmer » 12 авг 2016, 08:24

Мой nginx.conf

Код: Выделить всё

user root;
 worker_processes 1; 
 events {
   worker_connections 64;
}
http {
   include mime.types;
   default_type application/octet-stream;
   sendfile on;
   keepalive_timeout 65;
   server {
       listen 81;
       server_name ch.ru;
       location / {
           root /var/mnt/1234567890/share/htdocs/www.ch.ru/web;
           index index.php index.html index.htm;
       }
       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
           root /opt/share/nginx/html;
       }
       location ~ \.php$ {
           root /var/mnt/1234567890/share/htdocs/www.ch.ru/web;
           fastcgi_pass 127.0.0.1:9000;
#unix:/opt/var/run/php-fcgi.sock;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
       }
   }
}
Свернуть


И ещё fastcgi_parsms:
 

Код: Выделить всё

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  PATH_INFO          $fastcgi_path_info;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
Свернуть

Что не так?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 12 авг 2016, 08:44

Barmer писал(а):Источник цитаты Что не так?

Ничего похожего на результат выполнения инструкции. Даже в fastcgi_params!

PS Специально вчера повторил инструкцию (правда в Entware-3x), т.к. с момента написания могли быть изменения в пакете nginx - инструкция рабочая!

Barmer
Сообщения: 6
Зарегистрирован: 11 авг 2016, 23:32

Сообщение Barmer » 12 авг 2016, 09:24

Кстати устанавливал я opkg install nginx-zyx из темы http://forum.keenetic.net/topic/145-%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D0%BD%D0%B0-%D0%BA%D0%B8%D0%BD%D0%B5%D1%82%D0%B8%D0%BA%D0%B5/
а затем уже перешёл по ссылке в эту тему.

Не совсем понимаю разницу между nginx-zyx и просто nginx. Это разные вещи или нет?
Может у меня в этом косяк?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 12 авг 2016, 09:35

У Вас косяк с выполнением инструкции. Просто nginx (без -zyx) на кинетках с прошивками 2.06 и 2.05 не работает, грузит проц на 100%. Если же у Вас 2.07 - переходите на Entware-3x.

Barmer
Сообщения: 6
Зарегистрирован: 11 авг 2016, 23:32

Сообщение Barmer » 14 авг 2016, 22:35

Спасибо за наставления на путь истинный.

Переустановил и nginx-zyx и php как по инструкции. Phpinfo работает.
Теперь хочется из папки пользователю отдать файлы а в ответ "403 Forbidden".
Если указать конкретный файл то отдает а список не выводит.
Что делать сейчас.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 7 посетителей :: 0 зарегистрированных, 0 скрытых и 7 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей