Перейти к содержанию

TheBB

Модераторы
  • Постов

    2 501
  • Зарегистрирован

  • Посещение

  • Победитель дней

    54

Сообщения, опубликованные TheBB

  1. ... может я файл не там и не тот создал??? "Создаем файл с выводом информации о РНР" если можно, уточните где его создать?

    в примере: /opt/share/www/phpinfo.php со следующим содержанием <?php phpinfo(); ?>

    смотрите лог /opt/var/log/nginx/error.log

  2. torrentmonitor

    nginx

    Устанавливаем минимальный набор пакетов (чтоб запустить)

    Сервер для Entware-Keenetic/Entware-3x

    opkg install nginx

    MySQL(MariaDB) PHP7

    Общий список пакетов для обеих систем

    opkg install php7-cli php7-fastcgi php7-mod-curl php7-mod-iconv \
    php7-mod-json php7-mod-mbstring php7-mod-pdo php7-mod-pdo-mysql \
    php7-mod-session php7-mod-simplexml php7-mod-xml php7-mod-zip

    Правим 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 {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  /opt/var/log/nginx/access.log main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       88;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  /opt/var/log/nginx/host.access.log;
    
            location / {
                root   /opt/share/www;
                index  index.php index.html index.htm;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /opt/share/www/html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
                root           /opt/share/www;
                fastcgi_pass   unix:/opt/var/run/php-fcgi.sock;
                fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    

     

    Также правим fastcgi_params (добавим пару строк)

    Скрытый текст
    
    
    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  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;
    

     

    Создаем скрипт запуска S79php-fcgi

    #!/bin/sh
    
    export PHP_FCGI_CHILDREN=''
    
    ENABLED=yes
    PROCS=php-fcgi
    ARGS="-b /opt/var/run/php-fcgi.sock &"
    PREARGS=""
    DESC=$PROCS
    PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    . /opt/etc/init.d/rc.func

    И делаем его исполняемым chmod +x /opt/etc/init.d/S79php-fcgi

    Редактируем php.ini

    Скрытый текст

     

    
    [PHP]
    zend.ze1_compatibility_mode = Off
    
    ; Language Options
    
    engine = On
    ;short_open_tag = Off
    precision    =  12
    y2k_compliance = On
    output_buffering = Off
    ;output_handler =
    zlib.output_compression = Off
    ;zlib.output_compression_level = -1
    ;zlib.output_handler =
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 100
    
    ;open_basedir =
    disable_functions =
    disable_classes =
    
    ; Colors for Syntax Highlighting mode.  Anything that's acceptable in
    ; <span style="color: ???????"> would work.
    ;highlight.string  = #DD0000
    ;highlight.comment = #FF9900
    ;highlight.keyword = #007700
    ;highlight.bg      = #FFFFFF
    ;highlight.default = #0000BB
    ;highlight.html    = #000000
    
    ;ignore_user_abort = On
    ;realpath_cache_size = 16k
    ;realpath_cache_ttl = 120
    
    ; Miscellaneous
    
    expose_php = On
    
    ; Resource Limits
    
    max_execution_time = 30	; Maximum execution time of each script, in seconds.
    max_input_time = 60	; Maximum amount of time each script may spend parsing request data.
    ;max_input_nesting_level = 64
    memory_limit = 8M	; Maximum amount of memory a script may consume.
    
    ; Error handling and logging
    
    ; Error Level Constants:
    ; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
    ; E_ERROR           - fatal run-time errors
    ; E_RECOVERABLE_ERROR  - almost fatal run-time errors
    ; E_WARNING         - run-time warnings (non-fatal errors)
    ; E_PARSE           - compile-time parse errors
    ; E_NOTICE          - run-time notices (these are warnings which often result
    ;                     from a bug in your code, but it's possible that it was
    ;                     intentional (e.g., using an uninitialized variable and
    ;                     relying on the fact it's automatically initialized to an
    ;                     empty string)
    ; E_STRICT			- run-time notices, enable to have PHP suggest changes
    ;                     to your code which will ensure the best interoperability
    ;                     and forward compatibility of your code
    ; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
    ;                     initial startup
    ; E_COMPILE_ERROR   - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR      - user-generated error message
    ; E_USER_WARNING    - user-generated warning message
    ; E_USER_NOTICE     - user-generated notice message
    ; E_DEPRECATED      - warn about code that will not work in future versions
    ;                     of PHP
    ; E_USER_DEPRECATED - user-generated deprecation warnings
    ;
    ; Common Values:
    ;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
    ;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
    ;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
    ;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)
    ; Default Value: E_ALL & ~E_NOTICE
    error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT
    
    display_errors = On
    display_startup_errors = Off
    log_errors = Off
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    report_memleaks = On
    ;report_zend_debug = 0
    track_errors = Off
    ;html_errors = Off
    ;docref_root = "/phpmanual/"
    ;docref_ext = .html
    ;error_prepend_string = "<font color=#ff0000>"
    ;error_append_string = "</font>"
    ; Log errors to specified file.
    ;error_log = /opt/var/log/php_errors.log
    ; Log errors to syslog.
    ;error_log = syslog
    
    ; Data Handling
    
    ;arg_separator.output = "&amp;"
    ;arg_separator.input = ";&"
    variables_order = "EGPCS"
    request_order = "GP"
    register_globals = Off
    register_long_arrays = Off
    register_argc_argv = On
    auto_globals_jit = On
    post_max_size = 8M
    ;magic_quotes_gpc = Off
    magic_quotes_runtime = Off
    magic_quotes_sybase = Off
    auto_prepend_file =
    auto_append_file =
    default_mimetype = "text/html"
    ;default_charset = "iso-8859-1"
    ;always_populate_raw_post_data = On
    
    ; Paths and Directories
    
    ; UNIX: "/path1:/path2"
    ;include_path = ".:/php/includes"
    doc_root = "/opt/share/www"
    user_dir =
    extension_dir = "/opt/lib/php"
    enable_dl = On
    ;cgi.force_redirect = 1
    ;cgi.nph = 1
    ;cgi.redirect_status_env = ;
    cgi.fix_pathinfo=1
    ;fastcgi.impersonate = 1;
    ;fastcgi.logging = 0
    ;cgi.rfc2616_headers = 0
    
    ; File Uploads
    
    file_uploads = On
    upload_tmp_dir = "/opt/tmp"
    upload_max_filesize = 2M
    max_file_uploads = 20
    
    ; Fopen wrappers
    
    allow_url_fopen = On
    allow_url_include = Off
    ;from="john@doe.com"
    ;user_agent="PHP"
    default_socket_timeout = 60
    ;auto_detect_line_endings = Off
    

     

    Проверяем корректность конфига nginx, если ошибок нет, то видим следующее

    nginx -t
    nginx: the configuration file /opt/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /opt/etc/nginx/nginx.conf test is successful

    Если есть ошибки, то сообщит с указанием строки

    Создаем каталог для файлов сервера и файл, с выводом информации о РНР

    mkdir /opt/share/www
    echo "<?php phpinfo(); ?>" >> /opt/share/www/phpinfo.php

    Стартуем сервисы

    /opt/etc/init.d/S79php-fcgi start
    /opt/etc/init.d/S80nginx start

    Идем по ip.add.re.ss:88/phpinfo.php и смотрим на вывод (если ничего нет - проверяем, что сделали не так)

    Cкачать и распаковать архив с torrentmonitor`ом любым удобным способом (в примере ниже - будет использоваться путь: /opt/share/www/tm)

    Ставим "Машку"

    opkg install mariadb-server mariadb-client-extra

    Создаём базу данных (БД)

    mysql_install_db

    Запускаем сервис

    /opt/etc/init.d/S70mariadbd start

    Задаем пароль для доступа к БД (в примере ниже - Passw0rd)

    mysqladmin -u root password "Passw0rd"

    Подключаемся к БД с созданным паролем

    mysql -u root -p

    Создаем БД для Torrentmonitor

    create database tm;

    Меняем БД для работы с ней

    \u tm

    Импортируем таблицы

    source /opt/share/www/tm/db_schema/mysql.sql

    Выход из MariaDB

     \q

    Перезапустим сервис, чтоб подхватилась созданная БД

    /opt/etc/init.d/S70mariadbd restart

    Переименовываем файл /opt/share/www/tm/config.php.example в config.php и редактируем:

    ...
    #Для MySQL:
    Config::write('db.host', 'localhost');
    Config::write('db.type', 'mysql');
    Config::write('db.charset', 'utf8');
    Config::write('db.port', '3306');
    Config::write('db.basename', 'tm'); # имя БД
    Config::write('db.user', 'root'); # имя пользователя для доступа к БД
    Config::write('db.password', 'Passw0rd'); # пароль к БД
    
    #Для PostgreSQL:...

    Переходим в браузере на ip.add.re.ss:88/tm , появится страница входа (пароль на вход - torrentmonitor).

    screen_025.png

     

    SQLite PHP7

    ставим пакеты:

    opkg install php7-cli php7-fastcgi php7-mod-curl php7-mod-iconv \
    php7-mod-json php7-mod-mbstring php7-mod-pdo php7-mod-pdo-sqlite \
    php7-mod-session php7-mod-simplexml php7-mod-xml php7-mod-zip

    создаём скрипт запуска php `mcedit /opt/etc/init.d/S79php-fcgi` и делаем его исполняемым `chmod +x /opt/etc/init.d/S79php-fcgi`

    #!/bin/sh
    
    export PHP_FCGI_CHILDREN=''
    
    ENABLED=yes
    PROCS=php-fcgi
    ARGS="-b /opt/var/run/php-fcgi.sock &"
    PREARGS=""
    DESC=$PROCS
    PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    . /opt/etc/init.d/rc.func
    

    правим конфиг nginx `mcedit /opt/etc/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 {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  /opt/var/log/nginx/access.log main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       88;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  /opt/var/log/nginx/host.access.log;
    
            location / {
                root   /opt/share/www;
                index  index.php index.html index.htm;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /opt/share/www/html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
                root           /opt/share/www;
                fastcgi_pass   unix:/opt/var/run/php-fcgi.sock;
                fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    

     

    и `mcedit /opt/etc/nginx/fastcgi_params`

    Скрытый текст

     

    
    
    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  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;
    

     

    и для php - `mcedit /opt/etc/php.ini`

    Скрытый текст

     

    
    [PHP]
    zend.ze1_compatibility_mode = Off
    
    ; Language Options
    
    engine = On
    ;short_open_tag = Off
    precision    =  12
    y2k_compliance = On
    output_buffering = Off
    ;output_handler =
    zlib.output_compression = Off
    ;zlib.output_compression_level = -1
    ;zlib.output_handler =
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 100
    
    ;open_basedir =
    disable_functions =
    disable_classes =
    
    ; Colors for Syntax Highlighting mode.  Anything that's acceptable in
    ; <span style="color: ???????"> would work.
    ;highlight.string  = #DD0000
    ;highlight.comment = #FF9900
    ;highlight.keyword = #007700
    ;highlight.bg      = #FFFFFF
    ;highlight.default = #0000BB
    ;highlight.html    = #000000
    
    ;ignore_user_abort = On
    ;realpath_cache_size = 16k
    ;realpath_cache_ttl = 120
    
    ; Miscellaneous
    
    expose_php = On
    
    ; Resource Limits
    
    max_execution_time = 300	; Maximum execution time of each script, in seconds.
    max_input_time = 60	; Maximum amount of time each script may spend parsing request data.
    ;max_input_nesting_level = 64
    memory_limit = 8M	; Maximum amount of memory a script may consume.
    
    ; Error handling and logging
    
    ; Error Level Constants:
    ; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
    ; E_ERROR           - fatal run-time errors
    ; E_RECOVERABLE_ERROR  - almost fatal run-time errors
    ; E_WARNING         - run-time warnings (non-fatal errors)
    ; E_PARSE           - compile-time parse errors
    ; E_NOTICE          - run-time notices (these are warnings which often result
    ;                     from a bug in your code, but it's possible that it was
    ;                     intentional (e.g., using an uninitialized variable and
    ;                     relying on the fact it's automatically initialized to an
    ;                     empty string)
    ; E_STRICT			- run-time notices, enable to have PHP suggest changes
    ;                     to your code which will ensure the best interoperability
    ;                     and forward compatibility of your code
    ; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
    ;                     initial startup
    ; E_COMPILE_ERROR   - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR      - user-generated error message
    ; E_USER_WARNING    - user-generated warning message
    ; E_USER_NOTICE     - user-generated notice message
    ; E_DEPRECATED      - warn about code that will not work in future versions
    ;                     of PHP
    ; E_USER_DEPRECATED - user-generated deprecation warnings
    ;
    ; Common Values:
    ;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
    ;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
    ;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
    ;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)
    ; Default Value: E_ALL & ~E_NOTICE
    error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT
    
    display_errors = On
    display_startup_errors = Off
    log_errors = On
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    report_memleaks = On
    ;report_zend_debug = 0
    track_errors = Off
    ;html_errors = Off
    ;docref_root = "/phpmanual/"
    ;docref_ext = .html
    ;error_prepend_string = "<font color=#ff0000>"
    ;error_append_string = "</font>"
    ; Log errors to specified file.
    error_log = /opt/var/log/php_errors.log
    ; Log errors to syslog.
    ;error_log = syslog
    
    ; Data Handling
    
    ;arg_separator.output = "&amp;"
    ;arg_separator.input = ";&"
    variables_order = "EGPCS"
    request_order = "GP"
    register_globals = Off
    register_long_arrays = Off
    register_argc_argv = On
    auto_globals_jit = On
    post_max_size = 8M
    ;magic_quotes_gpc = Off
    magic_quotes_runtime = Off
    magic_quotes_sybase = Off
    auto_prepend_file =
    auto_append_file =
    default_mimetype = "text/html"
    ;default_charset = "iso-8859-1"
    ;always_populate_raw_post_data = On
    
    ; Paths and Directories
    
    ; UNIX: "/path1:/path2"
    ;include_path = ".:/php/includes"
    doc_root = "/opt/share/www"
    user_dir =
    extension_dir = "/opt/lib/php"
    enable_dl = On
    ;cgi.force_redirect = 1
    ;cgi.nph = 1
    ;cgi.redirect_status_env = ;
    cgi.fix_pathinfo=1
    ;fastcgi.impersonate = 1;
    ;fastcgi.logging = 0
    ;cgi.rfc2616_headers = 0
    
    ; File Uploads
    
    file_uploads = On
    upload_tmp_dir = "/opt/tmp"
    upload_max_filesize = 2M
    max_file_uploads = 20
    
    ; Fopen wrappers
    
    allow_url_fopen = On
    allow_url_include = Off
    ;from="john@doe.com"
    ;user_agent="PHP"
    default_socket_timeout = 60
    ;auto_detect_line_endings = Off
    

     

    если в конфиг nginx вносили свои изменения, проверяем синтаксис на корректность `nginx -t` (для копи-пасты - не надо, проверено :) )

    если не создан, создаём каталог для файлов сервера `mkdir /opt/share/www`

    "пара штрихов к портрету" `echo "<?php phpinfo(); ?>" >> /opt/share/www/phpinfo.php` и `ln -s /opt/share/nginx/html/ /opt/share/www/html`

    стартуем сервисы `/opt/etc/init.d/S79php-fcgi start` и `/opt/etc/init.d/S80nginx start`

    идём на адрес:88/html/ и смотрим приветственную страницу nginx, по адресу:88/phpinfo.php - сводную информацию о php (если нет - снова перечитываем и проходим все шаги ещё раз :) )

    Качаем архив `wget http://korphome.ru/torrent_monitor/tm-latest.zip` , ставим пакет `opkg install unzip` и распаковываем `unzip tm-latest.zip -x -d /opt/share/www/`

    не нравиться имя папки? меняем (напр., tm) `mv /opt/share/www/TorrentMonitor-master/ /opt/share/www/tm` и переходим в неё `cd /opt/share/www/tm/`

    Готовим конфиг `cp config.php.example config.php` `mcedit config.php`

    Скрытый текст

     

    
    <?php
    class Config
    {
        static $confArray;
    
        public static function read($name)
        {
            return self::$confArray[$name];
        }
    
        public static function write($name, $value)
        {
            self::$confArray[$name] = $value;
        }
    }
    
    #Для MySQL:
    #Config::write('db.host', 'localhost');
    #Config::write('db.type', 'mysql');
    #Config::write('db.charset', 'utf8');
    #Config::write('db.port', '3306');
    #Config::write('db.basename', 'torrentmonitor');
    #Config::write('db.user', 'torrentmonitor');
    #Config::write('db.password', 'torrentmonitor');
    
    #Для PostgreSQL:
    #Config::write('db.host', 'localhost');
    #Config::write('db.type', 'pgsql');
    #Config::write('db.port', '5432');
    #Config::write('db.basename', 'torrentmonitor');
    #Config::write('db.user', 'torrentmonitor');
    #Config::write('db.password', 'torrentmonitor');
    
    #Для SQLite:
    Config::write('db.type', 'sqlite');
    Config::write('db.basename', '/opt/var/torrentmonitor.sqlite'); #Указывайте _абсолютный_ путь до файла БД (расширение рекомендуется использовать .sqlite)
    ?>

     

    ставим пакет `opkg install sqlite3-cli` и импортируем таблицы БД `cat db_schema/sqlite.sql | sqlite3 /opt/var/torrentmonitor.sqlite`, до кучи - задаём права доступа `chmod 666 /opt/var/torrentmonitor.sqlite`

    Всё! Можно отправляться по известному адресу и настраивать на работу...

    screen_158.png

    Не забываем добавить в cron задание

    */30 * * * * php-cli /opt/share/www/tm/engine.php >> /opt/var/log/torrent_monitor_error.log 2>&1

     

    • Спасибо 2
  3. tt-rss

    nginx

     

    Скрытый текст

     

    устарело...

    Устанавливаем минимальный набор пакетов (чтоб запустить)

    
    opkg install nginx php7-fastcgi php7-mod-curl php7-mod-dom php7-mod-hash php7-mod-iconv \
    php7-mod-json php7-mod-mbstring php7-mod-mysqli php7-mod-session mariadb-server \
    mariadb-client mariadb-client-extra

    Правим nginx.conf примерно до следующего вида:

    
    user  nobody;
    worker_processes  1;
    
    events {
       worker_connections  64;
    }
    
    http {
       include       mime.types;
       default_type  application/octet-stream;
    
       sendfile        on;
    
       keepalive_timeout  65;
    
       server {
           listen       88;
           server_name  localhost;
    
           location / {
               root   /opt/share/www;
               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           /opt/share/www;
               fastcgi_pass   unix:/opt/var/run/php-fcgi.sock;
               fastcgi_index  index.php;
               include        fastcgi_params;
           }
       }
    }
    

    Также правим fastcgi_params (добавим пару строк)

    
    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; 

    Создаем скрипт запуска S79php-fcgi

    
    #!/bin/sh
    
    export PHP_FCGI_CHILDREN=''
    
    ENABLED=yes
    PROCS=php-fcgi
    ARGS="-b /opt/var/run/php-fcgi.sock &"
    PREARGS=""
    DESC=$PROCS
    PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    . /opt/etc/init.d/rc.func

    Редактируем php.ini (минимум - прописать таймзону)

    
    [Date]
    date.timezone = Europe/Moscow

    В файле /opt/etc/php5/mysqli.ini прописать путь до сокета

    
    extension=mysqli.so
    mysqli.default_socket = /opt/var/run/mysqld.sock

    Проверяем корректность конфига nginx, если ошибок нет, то видим следующее

    
    nginx -t
    nginx: the configuration file /opt/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /opt/etc/nginx/nginx.conf test is successful

    Если есть ошибки, то сообщит с указанием строки (в конфиге выше - закоментировал строку #location)

    
    nginx -t
    nginx: [emerg] "fastcgi_pass" directive is not allowed here in /opt/etc/nginx/nginx.conf:34
    nginx: configuration file /opt/etc/nginx/nginx.conf test failed

    Создаем файл с выводом информации о РНР

    
    echo "<?php phpinfo(); ?>" >> /opt/share/www/phpinfo.php

    Стартуем сервисы

    
     /opt/etc/init.d/S79php-fcgi start
    /opt/etc/init.d/S80nginx start

    Идем по ip.add.re.ss:88/phpinfo.php и смотрим на вывод (если ничего нет - проверяем, что сделали не так)

    Cкачать и распаковать архив с tt-rss любым удобным способом (в примере ниже - будет использоваться путь: /opt/share/www/tt-rss)

    Создаём базу данных (БД)

    
    mysql_install_db --datadir=/opt/var --basedir=/opt --force

    Запускаем сервис

    
    /opt/etc/init.d/S70mariadbd start

    Задаем пароль для доступа к БД (в примере ниже - Passw0rd)

    
    mysqladmin -u root password "Passw0rd"
    Подключаемся к БД с созданным паролем
    
    mysql -u root -p

    Создаем БД для Tiny Tiny RSS

    
    create database ttrss;

    Меняем БД для работы с ней

    
    \u ttrss

    Импортируем таблицы

    
    source /opt/share/www/tt-rss/schema/ttrss_schema_mysql.sql

    Выход из MySQL

    
     \q

    Перезапустим сервис, чтоб подхватилась созданная БД

    
    /opt/etc/init.d/S70mariadbd restart

     

    Переходим в браузере на ip.add.re.ss:88/tt-rss/install , появится страница настройки доступа к БД.

    выбираем - MySQL и вписываем:

    Username: root - имя пользователя для работы с БД

    Password: Passw0rd - пароль доступа к БД

    Database name: ttrss - имя БД для Tiny Tiny RSS

    Host name: localhost

    Port: 3306

    Если всё хорошо, то вы увидите следующее:

    ttrss_002.png

    Нажимаем кнопку «Test configuration».

    Нажимаем кнопку «Initialize database». Инсталлятор сгенерирует файл config.php и положит на сервер.

    ttrss_003.png

    Для сохранения конфигурации нажимаем кнопку «Save configuration»

    ttrss_004.png

    Внизу находится ссылка с текстом «loading tt-rss now»

    ttrss_005.png

    Нажимаем и... Ругается что нельзя запускать от рута
    Редактируем /opt/share/www/tt-rss/include/sanity_check.php. Ищем строку  if (function_exists('posix_getuid') && posix_getuid() == 0 { и меняем 0  на -1 см. пост ниже
    Обновляем страничку в браузере вводим логин admin, пароль password
    ttrss_006.png
    Для обновления фидов добавляем в cron задание, напр., запрос новостей каждые 30 мин.

    */30  * * * * /opt/bin/php-cgi /opt/share/www/tt-rss/update.php --feeds --quiet

     

  4. Внимание! Если у Вас прошивка 2.07 или новее, рекомендуем установить Entware. Установка полностью аналогична описанной ниже. Краткая инструкция по установке Entware тут - 

    https://forum.keenetic.net/topic/4299-entware/

     

    При содействии и помощи компании ZyXEL (с 2017 г. - Keenetic) и разработчиков Entware создан новый проект Entware-Keenetic для Keenetic`ов с прошивкой NDMSv2*

    В отличии от стандартной версии Entware-ng - при сборке используется ядро кинетика, что улучшает совместимость бинарников с прошивкой.

    Некоторые пакеты из стандартного Entware могли не работать или работать криво (напр., nginx)

    Все бинарники находятся в одной репе, раньше использовался стандартный репозиторий Entware и дополнительный репозиторий для Кинетиков.

    !!! Бинарная совместимость репозиториев не проверялась, систему нужно поставить с нуля !!! (относится к Entware-ng)

    Внимание! Официальная техническая поддержка компанией ZyXEL (с 2017 г. - Keenetic) не оказывает консультации по настройке и установке внешних пакетов.

    Поддержка интернет-центров с установленными пакетами осуществляется только на этом форуме или на forums.zyxmon.org.

    Актуальную версию инструкции и её обсуждение можно найти здесь.

    Ниже перечислен минимальный набор действий для использования Entware-Keenetic.

    Требования:

    - (ZyXEL) Keenetic с USB-портом. Любой c NDMSv2*, кроме моделей 4GII/III.

    - Прошивка с компонентом OPKG.

    - USB носитель с разделом ext2/ext3 и заданной меткой (метка произвольная, любая, в примере ниже метка keendev-dsl).

    прим. 1 установка на носитель с ФС NTFS возможна, но корректная работа - не гарантирована, на ваш страх и риск

    прим. 2 не возможна установка на носитель с ФС ext4 для устройств с прошивкой 2.07 и новее

    прим. 3 для устройств с прошивкой 2.07 и новее (см. выше) - рекомендуется использовать Entware или Debian stable

    Инструкция по установке:

    1. Подключите USB-носитель к кинетику;

    2. Зайдите на носитель по ftp или cifs;

    3. Cоздайте на разделе с заданной меткой USB-носителя папку install;

    4. Скопируйте в папку install архив:

    - для Keenetic DSL, LTE, VOX с NDMS v2.05 - mips;

    - для Keenetic II, Giga II, Ultra с NDMS v2.06 - mipsel;

    5. Зайдите в веб-интерфейс кинетика и на странице «Приложения > OPKG» поставьте галку «Включить». Затем выберите из списка нужный USB-носитель, в поле "Сценарий initrc:" вписать /opt/etc/init.d/rc.unslung и нажать кнопку «Применить».

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

    Скрытый текст

    screen_056.png

     

    Если все сделали правильно, то в системном журнале через некоторое время появится строчка "...Установка Entware-Keenetic завершена!"

    Пример сообщений системного журнала

    Скрытый текст

     

    
    Apr 17 19:57:40 syslog: Syslog: the system log has been cleared.
    Apr 17 19:57:42 syslog: Syslog: all servers removed.
    Apr 17 19:57:42 syslog: Core::ConfigurationSaver: saving configuration...
    Apr 17 19:57:46 syslog: Core::ConfigurationSaver: configuration saved.
    Apr 17 19:58:07 syslog: Opkg::Manager: disk is set to: 825bb5c1-fcc3-49c9-ba68-4d90d0b90697:
    Apr 17 19:58:07 syslog: Opkg::Manager: /tmp/mnt/keendev-dsl/ mounted to /tmp/mnt/keendev-dsl/.
    Apr 17 19:58:07 syslog: Opkg::Manager: /tmp/mnt/keendev-dsl/ mounted to /opt/.
    Apr 17 16:58:07 npkg: inflating "installer-keenbe.tar.gz".
    Apr 17 19:58:07 syslog: Opkg::Manager: /tmp/mnt/keendev-dsl/ initialized.
    Apr 17 19:58:07 syslog: Opkg::Manager: init script reset to default: /opt/etc/initrc.
    Apr 17 19:58:07 syslog: Core::ConfigurationSaver: saving configuration...
    [E] Apr 17 19:58:07 syslog: Opkg::Manager: invalid initrc "/opt/etc/initrc": no such file or directory, trying /opt/etc/init.d/.
    Apr 17 19:58:07 0: Info: Раздел пригоден для установки.
    Apr 17 19:58:07 0: [1/5] Начало развёртывания системы Entware-Keenetic...
    Apr 17 19:58:07 0: Info: Создание папок...
    Apr 17 19:58:07 0: [2/5] Загрузка и установка базовых пакетов...
    Apr 17 19:58:08 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/Packages.gz.
    Apr 17 19:58:08 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Updated list of available packages in /opt/var/opkg-lists/keenle.
    Apr 17 19:58:09 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing opt-ndmsv2 (1.0-1) to root...
    Apr 17 19:58:09 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/opt-ndmsv2_1.0-1_keenbe.ipk.
    Apr 17 19:58:13 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libc (1.0.13-3) to root...
    Apr 17 19:58:13 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libc_1.0.13-3_keenbe.ipk.
    Apr 17 19:58:14 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libgcc (5.3.0-3) to root...
    Apr 17 19:58:14 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libgcc_5.3.0-3_keenbe.ipk.
    Apr 17 19:58:14 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libssp (5.3.0-3) to root...
    Apr 17 19:58:14 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libssp_5.3.0-3_keenbe.ipk.
    Apr 17 19:58:15 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libstdcpp (5.3.0-3) to root...
    Apr 17 19:58:15 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libstdcpp_5.3.0-3_keenbe.ipk.
    Apr 17 19:58:17 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libpthread (1.0.13-3) to root...
    Apr 17 19:58:17 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libpthread_1.0.13-3_keenbe.ipk.
    Apr 17 19:58:17 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing librt (1.0.13-3) to root...
    Apr 17 19:58:17 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/librt_1.0.13-3_keenbe.ipk.
    Apr 17 19:58:18 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing ldconfig (1.0.13-3) to root...
    Apr 17 19:58:18 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/ldconfig_1.0.13-3_keenbe.ipk.
    Apr 17 19:58:18 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing findutils (4.6.0-1) to root...
    Apr 17 19:58:18 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/findutils_4.6.0-1_keenbe.ipk.
    Apr 17 19:58:19 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing terminfo (6.0-1) to root...
    Apr 17 19:58:19 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/terminfo_6.0-1_keenbe.ipk.
    Apr 17 19:58:20 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing dropbear (2015.71-2) to root...
    Apr 17 19:58:20 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/dropbear_2015.71-2_keenbe.ipk.
    Apr 17 19:58:20 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing ndmq (1.0.2-1) to root...
    Apr 17 19:58:20 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/ndmq_1.0.2-1_keenbe.ipk.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Installing libndm (1.0.22-1) to root...
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Downloading http://ndm.zyxmon.org/binaries/keenbe/libndm_1.0.22-1_keenbe.ipk.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Updating /opt/etc/ld.so.cache... done.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libgcc.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libc.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libssp.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring terminfo.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring ldconfig.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libpthread.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring librt.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libndm.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring ndmq.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring dropbear.
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Configuring libstdcpp.
    Apr 17 19:58:21 root: Info: Установка пакетов прошла успешно! Продолжаем...
    Apr 17 19:58:21 root: [3/5] Настройка сценария запуска для прошивки NDMS...
    Apr 17 19:58:21 syslog: Core::Server: started Session 127.0.0.1:0.
    Apr 17 19:58:21 syslog: Opkg::Manager: configured init script: "/opt/etc/init.d/rc.unslung".
    Apr 17 19:58:21 syslog: Core::Session: client disconnected.
    Apr 17 19:58:21 syslog: Core::Server: started Session 127.0.0.1:0.
    Apr 17 19:58:21 syslog: Core::ConfigurationSaver: saving configuration...
    Apr 17 19:58:21 syslog: Core::Session: client disconnected.
    Apr 17 19:58:21 root: [4/5] Генерация SSH-ключей...
    Apr 17 19:58:21 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: Generating key, this may take a while...
    Apr 17 19:58:26 syslog: Core::ConfigurationSaver: configuration saved.
    Apr 17 19:58:38 root: Info: ключ rsa создан
    Apr 17 19:58:38 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: ........Generating key, this may take a while...
    Apr 17 19:58:40 root: Info: ключ ecdsa создан
    Apr 17 19:58:40 root: [5/5] Установка Entware-Keenetic завершена! Запуск dropbear...
    Apr 17 19:58:40 dropbear[10983]: Running in background
    Apr 17 19:58:40 root: Готово!!!
    Apr 17 19:58:40 root: Можно открыть SSH-сессию для соединения с устройством (логин:пароль -> root:zyxel).
    Apr 17 19:58:40 syslog: Opkg::Manager: /opt/etc/init.d/doinstall: .

     

    Всё! Можно зайти на кинетик по ssh, логин root, пароль zyxel.

    Пароль entware никак не связан с паролем кинетика. Меняется он, если необходимо, стандартной командой passwd:

    ~ # passwd
    Changing password for root
    New password:
    Bad password: too weak
    Retype password:
    Password for root changed by root

    Обновите список пакетов

    opkg update

    и устанавливайте нужные, например:

    opkg install mc
    • Спасибо 3
  5. ...Это утилиты стаятся на...

    ... Keenetic, на нем же и запускаются, после можно отключаться от сессии, работа будет продолжена в фоне (пример практического применения в free4NAS). поступайте по аналогии...

  6. ну-у-у, как-то так... на 16

    ~ # uname -a
    Linux KDSL 2.6.22.15 #1 SMP Fri Mar 4 17:35:52 UTC 2016 mips GNU/Linux
    ~ # cat /proc/version 
    Linux version 2.6.22.15 (developers@ndmsystems.com) (gcc version 4.3.4 (embtoolkit-00083-g38691cf) ) #1 SMP Fri Mar 4 17:35:52 UTC 2016

    на 8 (за-то работает Entware-ng...)

    ~ # uname -a
    Linux KDSL 2.6.36 #1 SMP Thu Dec 31 11:37:01 UTC 2015 mips GNU/Linux
    ~ # cat /proc/version 
    Linux version 2.6.36 (developers@ndmsystems.com) (gcc version 4.8.4 20140522 (prerelease) (embtoolkit-00067-gda0f8e6) ) #1 SMP Thu Dec 31 11:37:01 UTC 2015

    ну, а пока, жедем-с утверждения ядра и тулчейна от команды...

×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.