Для создания сайта непосредственно на роутере, необходимо выполнить следующие требования:

  • роутер с памятью не менее 256Мб c интерфейсом USB для подключения внешнего накопителя;
  • прошивка, подерживающая установку стороннего программного обеспечения прошивки.

Рассмотрим создание web севера для сайта на роутере Asus AC66U с прошивкой dd-wrt. Следует заметить, что прошивка dd-wrt kong поддерживает внутри себя lighttpd сервер, но воспользоваться этим затруднительно, так прошивка заточена под узко специализированный сайт Pydio.

Для создания полноценного сайта необходима связка nginx + php7-fpm, которые есть в репозитарии Entware-3x. Первоначально необходимо форматировать накопитель, очень хорошо это описано здесь. Далее на форматированный накопитель необходимо установить Entware-3x . После того, как базовые модули из Entware-3x установлены необходимо установить следующие модули

opkg install php7 php7-cgi php7-cli php7-fpm php7-mod-ctype php7-mod-curl php7-mod-gd php7-mod-mbstring php7-mod-opcache php7-mod-openssl php7-mod-session php7-mod-xml php7-mod-zip php7-mod-hash php7-mod-dom php7-mod-simplexml nginx

Если Ваш сайт буде работать на двух протоколах на http и на https, то во избежание конфликтов лучше перенести WEB интерфейс самого роутера, скажем на 81 порт, это можно сделать так

             nvram set http_lanport=81
             nvram commit
             reboot

Далее необходимо отредактировать следующие файлы

/opt/etc/php.ini

в нем изменить следующее

#; путь в каталог где находится сайт
           open_basedir ="/opt/share/nginx/html"
#; необходимый размер памяти для php (зависит от устанавливаемого движка сайта)
           memory_limit = 32M
#; путь по которому nginx находит index.php
           doc_root = "/opt/share/nginx/html"
#; временный каталог для сохранения файлов
 session.save_path ="/opt/share/nginx/html/tmp"
#; параметр который трактуется всеми по разному может быть 1 или 0 или по умолчанию
        ;cgi.fix_pathinfo=1

и добавить

#; для корректной работы curl
curl.cainfo = "/opt/etc/nginx/certs/cacert.pem".

Сам файлов сертификатов можно скачать <a href="https://curl.haxx.se/docs/caextract.html" target="_blank“> файл cacert.pem

Конфигурация php-fpm

Так как по умолчания в dd-wrt существует пользователь nobody и группа nobody, (cat /etc/passwd), а добавлять традиционнго пользователя www-data и группу www-datа неудобно, то лучше заменить файл по умолчанию /opt/etc/php7-fpm.d/www.conf
на файл nobody.conf следующего содержания

[nobody]
user = nobody
group = nobody
listen = /opt/var/run/php7-fpm.sock
listen.owner = nobody
listen.group = nobody
listen.mode = 0666
pm = ondemand
pm.max_children = 5

Далее запустим

/opt/etc/init.d/S79php7-fpm start

и проверим корректность работы

ls -la /opt/var/run/php7-fpm.sock

если все нормально то будет что то в этом роде

srw-rw---- 1 nobody nobody 0 May 2 16:36 /opt/var/run/php7-fpm.sock

   Конфигурация nginx

Простые файлы конфигурации выглядят следующим образом

nginx.conf

user  nobody;
worker_processes  1;

error_log  /opt/var/log/nginx/error.log;
error_log  /opt/var/log/nginx/error.log  notice;
error_log  /opt/var/log/nginx/error.log  info;

pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {

sendfile on;
keepalive_timeout 65;
include       mime.types;
default_type  application/octet-stream;

include default;
}

И файл

default

server {

    # имя сервера
    server_name 192.168.1.1;

     # рабочие порты
     listen  80;
     listen  443 ssl;

     # путь в рабочий каталог файлов
     root /opt/share/nginx/html;
     index index.php;

     # директивы для обработки файлов приведены для движка  GRAV </a>

    location / {
      try_files $uri $uri/ /index.php$args;
    }

    location ~* /(.git|cache|bin|logs|backups)/.*$ {.
        return 403;.
    }

    location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ {.
        return 403;.
    }

    location ~* /user/.*\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ {.
        return 403;.
    }

    location ~ /(LICENSE|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess) {.
        return 403;.
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/opt/var/run/php7-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;

    }

}

И запустить # nginx -s reload.

Проверить можно /opt/etc/init.d/S80nginx test.

Далее создать тестовый файл

i.php
<?php
phpinfo();
?>

и поместить его в каталог /opt/share/nginx/html

при обращении http://192.168.1.1:81

должны вывестись параиетры php7.

Если ошибки nginx

Установить права chmod 777 /opt/share/nginx/html и собственника chown -R nobody:nobody /opt/share/nginx/html.

Если ошибка No input file specified. - необходимо проверить все измененные параметры в php.ini.

Если все работает, то можно закачивать выбранный легкий движок в каталог /opt/share/nginx/html и начинать настраивать сайт. Хотя в плане эксперимента я установил Друпал 7, должен сказать что РАБОТАЕТ, НО маленький нюанс загрузка страниц с свопингом на диске длится минутами. А этот сайт на движке GRAV.

Добавить комментарий

Следующая запись Предыдущая запись