Menu

Запускаем osTicket под nginx

На момент написания статьи, запуск системы работы службы техподдержки возможен только под веб-сервером Apache, запуск под nginx не документирован. В интернете даже распространено мнение, что запуск под nginx не возможен вовсе. А давайте попробуем?

Не скрою, мне не удалось установить osTicket из-под nginx (ставить пришлось на домашнем ноутбуке, пользуясь OpenServer), но затем вполне получилось клонировать сайт, после чего он был развёрнут на реальном хостинге, работающем под nginx и php-fpm.

Рассмотрим сразу конфигурационные файлы.

Настройка виртуального сервера для nginx

 upstream backend-helpdesk {server unix:/var/run/fpm-helpdesk.sock;}

#user  apache;
#worker_processes 1;

#events {     worker_connections  1024; }

http {
    include         mime.types;
    default_type    application/octet-stream;
    sendfile        on;
    charset         utf-8;
    gzip            on;
    gzip_types      text/plain application/xml text/javascript;
    gzip_min_length 1000;

    index index.php index.html index.htm;

    # Перенаправим все запросы HTTP на HTTPS
    server {
        listen 80;
        server_name helpdesk.drach.pro;
        rewrite ^ https://helpdesk.drach.pro permanent;
    }

    server {
        listen 443;
        server_name helpdesk.drach.pro;
        ssl on;
        ssl_certificate /etc/nginx/certs/cert.pem;
        ssl_certificate_key /etc/nginx/certs/cert.key;

        keepalive_timeout 70;

        root /var/www/html/helpdesk.drach.pro;

        set $path_info "";

        location ~ /include {
            deny all;
            return 403;
        }

        if ($request_uri ~ "^/api(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/api/(?:tickets|tasks).*$ {
        try_files $uri $uri/ /api/http.php?$query_string;
    }

    if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/scp/ajax.php/.*$ {
        try_files $uri $uri/ /scp/ajax.php?$query_string;
    }

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

        location ~ \.php$ {
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            fastcgi_param  PATH_INFO        $path_info;
            fastcgi_pass   backend-helpdesk;
        }
    }
}

А вот конфигурация php-fpm

[helpdesk.drach.pro]
listen = /var/run/fpm-helpdesk.sock
listen.allowed_clients = 127.0.0.1
listen.owner = apache
listen.group = apache
user = apache
group = apache
# как будут создаваться новые рабочие процессы
pm = dynamic
# максимальное количество рабочих процессов
pm.max_children = 6
# число запущенных процессов при старте сервера
pm.start_servers = 2
# минимальное и максимальное количество процессов в простое
pm.min_spare_servers = 2
pm.max_spare_servers = 4
# сколько запросов может обработать один процесс?
pm.max_requests = 9000
slowlog = /var/log/php-fpm/helpdesk-slow.log
php_admin_value[error_log] = /var/log/php-fpm/helpdesk-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

 

В этом примере мы намекаем на использование SSL. Уверен, у читателя это не вызывает недоумения.

Если вдруг AJAX откажется работать при такой конфигурации, можно добавить всего одну строку в секцию соответствующую location.

3 комментарии

Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top