[Настройка] Конфиг для nginx для majordomo

Описание настройки чего либо

Модераторы: immortal, newz20

vilka
Сообщения: 5
Зарегистрирован: Вт апр 21, 2015 4:00 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение vilka » Ср апр 22, 2015 8:11 am

zlayaptichka, спасибо большое за nginx конфиг. Пытаюсь разобраться в нём - не подскажете зачем пустые location блоки?
zlayaptichka
Сообщения: 33
Зарегистрирован: Вт апр 01, 2014 2:38 am
Благодарил (а): 1 раз
Поблагодарили: 6 раз
Контактная информация:

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение zlayaptichka » Ср апр 22, 2015 11:15 am

vilka писал(а):zlayaptichka, спасибо большое за nginx конфиг. Пытаюсь разобраться в нём - не подскажете зачем пустые location блоки?
Они там не нужны, можете их удалить.
Akorolev
Сообщения: 119
Зарегистрирован: Вт ноя 08, 2016 4:27 pm
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение Akorolev » Чт ноя 10, 2016 8:29 am

Не смог я пройти мимо вывода блока о системе, убрал чуток лишней информации, по итогу вышло так:
Изображение

Собственно и сам код:

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

$uptime = shell_exec("cut -d. -f1 /proc/uptime");
$days = floor($uptime/60/60/24);
$hours = $uptime/60/60%24;
$mins = $uptime/60%60;
$secs = $uptime%60;
if ($days == "0" && $hours <= "12") {
$uptime_mjd = "<span style='color: red;'><b>".$days."д. ".$hours."ч. ".$mins."м. ".$secs."с.</b></span>";
} else {
$uptime_mjd = "<span style='color: green;'><b>".$days."д. ".$hours."ч. ".$mins."м. ".$secs."с.</b></span>";
}
setGlobal("ThisComputer.uptime",$uptime_mjd);
Для удобства вывел подсветку, если система в аптайме была менее 12 часов, то надпись красная, если более то зеленая.
За это сообщение автора Akorolev поблагодарил:
viktor6 (Вс авг 20, 2017 1:48 am)
Рейтинг: 1.16%
positron
Сообщения: 1
Зарегистрирован: Чт май 04, 2017 11:26 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение positron » Чт май 04, 2017 11:46 pm

На всякий случай опишу камни, с которыми столкнулся в настройке php-fpm + nginx на OrangePi PC (Armbian Debian server).

При установке параметра cgi.fix_pathinfo = 0 в /etc/php5/fpm/php.ini не определяется константа PHP_SELF в массиве $_SERVER, на которой, как я понял, основана работа движка.
При этом на сайте творилась полнейшая вакханалия, вместо /menu.php подключалась главная страница, которая содержала подключение menu.php и далее рекурсивно до бесконечности.

Итак, отличия в конфигах:
1. /etc/php5/fpm/php.ini - cgi.fix_pathinfo = 1 (не меняем на 0, оставляем по умолчанию)
2. настройка конфига nginx основана на этой доке: https://www.nginx.com/resources/wiki/st ... s/phpfcgi/, приведу весь конфиг полностью, если кто захочет скопипастить:
/etc/nginx/sites-available/majordomo:

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

server {
    listen   80; ## listen for ipv4; this line is default and implied

    root /var/www;
    index index.html index.htm index.php default.html;

    # Make site accessible from OPi IP and http://localhost/
    server_name 192.168.1.19 0.0.0.0;

    charset utf-8;

    location / {
        rewrite pda$ /popup/pda.html redirect;
        rewrite ^api/ /api.php;

        if (!-e $request_filename){
            rewrite ^(.*)$ /nf.php;
        }
    }

    location /config.php {
        deny all;
    }

    location /debmes.txt {
        deny all;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        set $path_info $fastcgi_path_info;
        fastcgi_param PATH_INFO $path_info;

        fastcgi_index index.php;

        fastcgi_pass unix:/var/run/php5-fpm.sock;

        include fastcgi_params;
    }

    # Запрет доступа к .htaccess и .htpasswd файлам
    location ~* "/\.(htaccess|htpasswd)$"
    {
        deny all;               # запретить все для всех
        return 404;             # вернуть код ошибки
    }
} 
/etc/nginx/fastcgi_params (добавлены определения SCRIPT_FILENAME, PATH_INFO, PATH_TRANSLATED, остальное по умолчанию):

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

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  PATH_TRANSLATED    $document_root$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  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;

fastcgi_param  REDIRECT_STATUS    200;
 
С такими параметрами все заработало корректно, по крайней мере визуально.
За это сообщение автора positron поблагодарили (всего 4):
skysilver (Пт май 05, 2017 12:37 pm) • llirik (Вт авг 29, 2017 12:05 pm) • Yarra (Пн дек 18, 2017 12:17 am) • Strangeman (Вс сен 09, 2018 1:12 pm)
Рейтинг: 4.65%
viktor6
Сообщения: 273
Зарегистрирован: Вс авг 20, 2017 1:46 am
Благодарил (а): 142 раза
Поблагодарили: 13 раз

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение viktor6 » Вс авг 20, 2017 1:50 am

Akorolev писал(а):Не смог я пройти мимо вывода блока о системе, убрал чуток лишней информации, по итогу вышло так:
Изображение

Собственно и сам код:

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

$uptime = shell_exec("cut -d. -f1 /proc/uptime");
$days = floor($uptime/60/60/24);
$hours = $uptime/60/60%24;
$mins = $uptime/60%60;
$secs = $uptime%60;
if ($days == "0" && $hours <= "12") {
$uptime_mjd = "<span style='color: red;'><b>".$days."д. ".$hours."ч. ".$mins."м. ".$secs."с.</b></span>";
} else {
$uptime_mjd = "<span style='color: green;'><b>".$days."д. ".$hours."ч. ".$mins."м. ".$secs."с.</b></span>";
}
setGlobal("ThisComputer.uptime",$uptime_mjd);
Для удобства вывел подсветку, если система в аптайме была менее 12 часов, то надпись красная, если более то зеленая.
Извините а можно поподробней как установить это.
Не серчайте сильно я только присоединился и начал изучать что и как тут.

positron поставил ваш конфиг и при обновлении модулей виси постоянно надпись
Загружаются данные... Нажмите здесь, если процесс загрузки занимает слишком много времени.
Raspberry Pi3, с образа от Сергея 3.34
wmlex
Сообщения: 1
Зарегистрирован: Ср авг 29, 2018 10:16 am
Благодарил (а): 0
Поблагодарили: 0

Re: Не подскажете конфиг для nginx для majordomo?

Сообщение wmlex » Ср авг 29, 2018 10:23 am

Установка majordomo + nginx на CentOS7
MariaDB

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

tee /etc/yum.repos.d/MariaDB.repo <<-'EOF'
# MariaDB 10.3 CentOS repository list - created 2018-08-27 13:51 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

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

yum install MariaDB-server MariaDB-client

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

systemctl start mariadb && systemctl start mariadb

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

mysql_secure_installation

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

mysql -u root -p
CREATE DATABASE `db_terminal` character set utf8;
CREATE USER `majordomo_admin`@`localhost` identified by 'PASS';
GRANT ALL PRIVILEGES ON `db_terminal`.* TO `majordomo_admin`@`localhost`;
USE db_terminal;
SOURCE /root/majordomo-master/db_terminal.sql

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

tee /etc/my.cnf.d/disable_strict_mode.cnf <<-'EOF'
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
EOF
PHP-FPM

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

yum install https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php72w-fpm php72w-cli php72w-gd php72w-mbstring php72w-mysql php72w-xml php72w-pear php72w-common

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

vim /etc/php-fpm.d/www.conf

security.limit_extensions = .php .php3 .php4 .php5 .php7
listen = /var/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
user = nginx
group = nginx
pm = dynamic
pm.max_children = 10 
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500

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

systemctl enable php-fpm && systemctl start php-fpm
NGINX

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

tee /etc/yum.repos.d/nginx.repo <<-'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
EOF

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

yum install nginx

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

tee etc/nginx/nginx.conf <<-'EOF'
user                    nginx;
worker_processes        4;
worker_rlimit_nofile    8192;
error_log               /var/log/nginx/error.log debug;
pid                     /var/run/nginx.pid;

events {
  worker_connections    1024;
}

http {
  include               /etc/nginx/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    /var/log/nginx/access.log main;

  client_body_temp_path /var/spool/nginx_client_body_temp;

  sendfile      on;
  tcp_nopush    on;
  tcp_nodelay   on;
  server_tokens off;
  server_names_hash_bucket_size 128;

server {
    server_name     localhost;
    root            /var/www;
    listen           80;
    index           index.html index.htm index.php default.html;
    access_log      off;

    location / {
          rewrite pda$ /popup/pda.html redirect;
          rewrite ^api/ /api.php;

              if (!-e $request_filename){
              rewrite ^(.*)$ /nf.php;
              }
    }

    location /config.php {
          deny all;
    }

    location ~* "/\.(htaccess|htpasswd)$" {
          deny all;
          return 404;
    }

    location ~ \.php$ {
          fastcgi_index index.php;
          fastcgi_pass unix:/var/run/php-fpm/www.sock;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          set $path_info $fastcgi_path_info;
          fastcgi_param PATH_INFO $path_info;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
          include /etc/nginx/fastcgi_params;
          fastcgi_param PHP_VALUE "short_open_tag=on";
          fastcgi_param PHP_VALUE "error_reporting=E_ALL & ~E_NOTICE";
          fastcgi_param PHP_VALUE "max_execution_time=90";
          fastcgi_param PHP_VALUE "max_input_time=180";
          fastcgi_param PHP_VALUE "post_max_size=200M";
          fastcgi_param PHP_VALUE "upload_max_filesize=50M";
          fastcgi_param PHP_VALUE "max_file_uploads=150";
   }
  }
}
EOF

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

systemctl enable nginx && systemctl start nginx
MajorDoMo

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

wget https://github.com/sergejey/majordomo/archive/master.tar.gz
tar xvf /root/master.tar.gz
mkdir /var/www && cd /var/www
mv /root/majordomo-master/* /var/www
mv /root/majordomo-master/.htaccess /var/www

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

find /var/www/ -type f -exec chmod 0644 {} \;
find /var/www/ -type d -exec chmod 0755 {} \;
chown -R nginx:nginx /var/www
usermod -a -G audio nginx

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

cp /var/www/config.php.sample /var/www/config.php

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

vim /var/www/config.php

Define('DB_USER', 'majordomo_admin');
Define('DB_PASSWORD', 'PASS');

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

tee /etc/systemd/system/majordomo.service <<-'EOF'
[Unit]
Description=MajorDoMo

[Service]
Requires=mariadb.service
Requires=mginx.service
Type=simple
WorkingDirectory=/var/www
ExecStart=/usr/bin/php /var/www/cycle.php
Restart=always

[Install]
WantedBy=multi-user.target
EOF

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

systemctl enable majordomo && systemctl start majordomo
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

Re: [Настройка] Конфиг для nginx для majordomo

Сообщение immortal » Пт янв 18, 2019 9:00 pm

вариант конфига в виде bash скрипта, создайте файл, вставте туда содержимое, сохрание, сделайте исполняемым и запустите, если php-fpm не 7.2 то измените в скрипте строку : fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; на правильный путь.

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

#!/bin/bash
	rm /etc/nginx/sites-available/default
	tee /etc/nginx/nginx.conf << EOF
user                    www-data;
worker_processes        4;
worker_rlimit_nofile    8192;
error_log               /var/log/nginx/error.log debug;
pid                     /var/run/nginx.pid;
events {
  worker_connections    1024;
}
http {
  include               /etc/nginx/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    /var/log/nginx/access.log main;
  client_body_temp_path /var/spool/nginx_client_body_temp;
  sendfile      on;
  tcp_nopush    on;
  tcp_nodelay   on;
  server_tokens off;
  server_names_hash_bucket_size 128;
  
server {
    server_name     localhost md.lan;
    root            /var/www;
    listen           80;
    index           index.html index.htm index.php default.html;
    access_log      off;
    # настройки тюнинга
    # Максимальный размер буфера для хранения тела запроса клиента
    client_body_buffer_size 1K;
    # Максимальный размер буфера для хранения заголовков запроса клиента
    client_header_buffer_size 1k;
    # Максимальный размер тела запроса клиента, прописанный в поле Content-Length заголовка. Если сервер должен поддерживать загрузку файлов, это значение необходимо увеличить
    client_max_body_size 1k;
    # Количество и размер буферов для чтения большого заголовка запроса клиента
    large_client_header_buffers 2 1k;
    # Таймаут при чтении тела запроса клиента
    client_body_timeout 10;
    # Таймаут при чтении заголовка запроса клиента
    client_header_timeout 10;
    # Таймаут, по истечению которого keep-alive соединение с клиентом не будет закрыто со стороны сервера
    keepalive_timeout 5 5;
    # Таймаут при передаче ответа клиенту
    send_timeout 10;
    # обрабатывать только запросы GET HEAD POST
    if (\$request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
    }
    #########
    location / {
          rewrite pda$ /popup/pda.html redirect;
          rewrite ^api/ /api.php;

              if (!-e \$request_filename){
              rewrite ^(.*)$ /nf.php;
              }
         # настройки тюнинга
         # обращение только по DNS имени
         if (\$host !~ ^(md.lan|www.md.lan)$ ) {
         return 444;
         }
         ##########
    }
    location /config.php {
          deny all;
    }
    location ~* "/\.(htaccess|htpasswd)$" {
          deny all;
          return 404;
    }
    location ~ \.php$ {
          fastcgi_index index.php;
          fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          set \$path_info \$fastcgi_path_info;
          fastcgi_param PATH_INFO \$path_info;
          fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
          fastcgi_param PATH_TRANSLATED \$document_root\$fastcgi_path_info;
          include /etc/nginx/fastcgi_params;
          fastcgi_param PHP_VALUE "short_open_tag=on";
          fastcgi_param PHP_VALUE "error_reporting=E_ALL & ~E_NOTICE";
          fastcgi_param PHP_VALUE "max_execution_time=90";
          fastcgi_param PHP_VALUE "max_input_time=180";
          fastcgi_param PHP_VALUE "post_max_size=200M";
          fastcgi_param PHP_VALUE "upload_max_filesize=50M";
          fastcgi_param PHP_VALUE "max_file_uploads=150";
   }
  }
}
EOF
sudo tee /etc/nginx/fastcgi_params << EOF
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  PATH_TRANSLATED    \$document_root\$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  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;
fastcgi_param  REDIRECT_STATUS    200;
EOF


За это сообщение автора immortal поблагодарили (всего 2):
viktor6 (Пт янв 18, 2019 11:54 pm) • Alexum (Чт сен 12, 2019 10:04 pm)
Рейтинг: 2.33%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
Ответить