Installation von OTRS 5 auf einem Server mit Nginx

  • Tutorial

Bei der Installation von Helpdesk OTRS stieß ich auf die Tatsache, dass die Arbeit offiziell nur mit Apache HTTP Server unterstützt wird , und ich benötigte Nginx . Wie sich herausstellte, gibt es keinen detaillierten Leitfaden für die Installation von OTRS auf einem Webserver, auf dem Nginx im Internet ausgeführt wird. Versuchen wir, diesen Fehler zu beheben. In diesem Artikel wird nur die Installation von OTRS Version 5.0.13 beschrieben. Die Konfiguration ist ein separates Thema. Das Betriebssystem, auf dem der Server bereitgestellt wird, ist CentOS 7.

Nginx


Wir verbinden die Repositories Epel und Nginx.

yum install epel-release
yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Installieren Sie Nginx.

yum update && yum install wget bzip2 nginx


Wir erstellen ein Beispiel für eine Nginx-Konfigurationsdatei. Dieser Artikel wurde als Grundlage genommen .

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vi /etc/nginx/nginx.conf

Versteckter Text
user				nginx;
worker_processes        2;
worker_rlimit_nofile    4096;
error_log            /var/log/nginx/error.log warn;
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;
        sendfile     			on;
        tcp_nopush   			on;
	keepalive_timeout  		65;
        server_names_hash_bucket_size 128;
	server_tokens           off;
	gzip on;
        include                 /etc/nginx/conf.d/*.conf;
}


Erstellen Sie ein Konfigurations - Host, das Ersetzen HOST auf Ihren Domainnamen.

vi /etc/nginx/conf.d/default.conf

Versteckter Text
#server {
#    listen 80;
#    server_name otrs.HOST;
#    rewrite ^ https://$http_host$request_uri? permanent;
#}
server {
  listen 80;
  listen 443 ssl;
  server_name otrs.HOST;
  root /opt/otrs/var/httpd/htdocs;
  error_log       /var/log/nginx/otrs-error.log warn;
  ssl_certificate /etc/letsencrypt/live/HOST/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/HOST/privkey.pem;
  ssl_dhparam /etc/ssl/HOST/dhparam.pem;
  ssl_session_cache shared:SSL:1m;
  ssl_session_timeout  1h;
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_trusted_certificate /etc/letsencrypt/live/otrs.HOST/fullchain.pem;
  resolver 77.88.8.88 8.8.8.8 valid=300s;
  resolver_timeout 10s;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!EXP:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
  ssl_prefer_server_ciphers  on;
  add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;
  add_header X-Download-Options noopen;
  add_header X-Permitted-Cross-Domain-Policies none;
  location = / {
    return 301 https://otrs.HOST/otrs/customer.pl;
  }
  location /otrs-web {
    gzip on;
    alias /opt/otrs/var/httpd/htdocs;
  }
  location ~ ^/otrs/(.*.pl)(/.*)?$ {
    fastcgi_pass unix:/var/run/fcgiwrap.sock;
    fastcgi_index index.pl;
    fastcgi_param SCRIPT_FILENAME   /opt/otrs/bin/fcgi-bin/$1;
    include fastcgi_params;
  }
}


Firewalld


Stoppen und maskieren Sie den NetworkManager.

systemctl stop NetworkManager
systemctl mask NetworkManager
systemctl stop NetworkManager-wait-online.service
systemctl mask NetworkManager-wait-online.service

Wir konfigurieren die Firewall und werden berücksichtigen, dass die externe Schnittstelle enp5s0 heißt .

firewall-cmd --permanent --zone=external --change-interface=enp5s0
firewall-cmd --permanent --zone=external --add-icmp-block=echo-reply
firewall-cmd --permanent --zone=external --add-icmp-block=destination-unreachable
firewall-cmd --permanent --zone=external --add-icmp-block=echo-request
firewall-cmd --permanent --zone=external --add-icmp-block=time-exceeded
firewall-cmd --permanent --zone=external --add-icmp-block=parameter-problem
firewall-cmd --permanent --zone=external --add-service=http
firewall-cmd --permanent --zone=external --add-service=https
firewall-cmd --reload

Wir starten die Firewall neu und überprüfen, was passiert ist.

systemctl restart firewalld.service
firewall-cmd --reload

Fastcgi


Für die Interaktion von OTRS und Nginx benötigen wir FCGI-Wrapper. Hier ist die Auswahl nicht besonders groß - verwenden Sie ein Perl-Skript von Denis S. Filimonov oder einen FastCGI-Wrapper von Grzegorz Nosek . Ich gebe beide Optionen als Beispiel an, werde dann aber letztere verwenden.

fastcgi-wrapper.pl


wget http://nginxlibrary.com/downloads/perl-fcgi/fastcgi-wrapper -O /usr/bin/fastcgi-wrapper.pl

Um einen Unix-Socket zu durcharbeiten, fügen Sie ihn in den Unterhauptabschnitt ein

$socket = FCGI::OpenSocket( "/var/run/perl-fcgi/perl-fcgi.sock", 10 );

und kommentieren.

$socket = FCGI::OpenSocket( "127.0.0.1:8999", 10 );

Wir nehmen auch die entsprechenden Änderungen an der Nginx-Konfiguration vor.

fastcgi_pass unix:/var/run/perl-fcgi/perl-fcgi.sock;

Für seine Arbeit schrieb Systemd Service.

vi /etc/systemd/system/perl-fcgi.service

[Unit]
Description=Perl FastCGI service
[Install]
WantedBy=multi-user.target
[Service]
User=otrs
Group=nginx
Type=simple
Restart=always
PermissionsStartOnly=true
ExecStartPre=/usr/bin/mkdir -p /var/run/perl-fcgi
ExecStartPre=/usr/bin/chown otrs.nginx /var/run/perl-fcgi
ExecStart=/usr/local/bin/fastcgi-wrapper.pl
ExecStop=/usr/bin/rm -rf /var/run/perl-fcgi

fcgiwrap


Laden Sie einfach das fcgiwrap- Paket herunter und installieren Sie es

yum localinstall fcgiwrap-1.1.0-3.20150530git99c942c.el7.centos.x86_64.rpm

und führe es aus:

systemctl enable fcgiwrap.socket
systemctl start fcgiwrap.socket

Wenn jemand einen Anfall von Paranoia hat, hier srpm, können Sie es selbst zusammenstellen.

MySQL


Verbinden Sie das MariaDB-Repository.

vi /etc/yum.repos.d/MariaDB.repo

# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Installieren Sie den MariaDB-Server.

yum update && yum install MariaDB-server MariaDB-client

Wir starten den Dienst.

systemctl start mysql

Führen Sie die Ersteinrichtung durch.

/usr/bin/mysql_secure_installation

Erstellen Sie eine Datenbank.

mysql -u root -p
create database `otrs-db` character set utf8;
create user 'USER'@'localhost' identified by 'PASS';
GRANT ALL PRIVILEGES ON `otrs-db`.* to `USER`@`localhost`;
FLUSH PRIVILEGES;
exit;

Wir stoppen den Dienst.

systemctl stop mysql

Nehmen Sie für den normalen Betrieb von OTRS kleine Anpassungen an server.cnf vor.

vi /etc/my.cnf.d/server.cnf 

[mysqld]
max_allowed_packet   = 20M
query_cache_size     = 32M
innodb_log_file_size = 256M

Damit MySQL nach dem Ändern des Parameters innodb_log_file_size gestartet wird, müssen Sie die alten Protokolldateien umbenennen oder löschen.

mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0_1
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1_1

Wir starten den Dienst und fügen ihn dem Start hinzu.

systemctl start mysql
systemctl enable mysql

OTRS


Installieren Sie die Abhängigkeiten.

yum install bash-completion perl perl-Archive-Zip perl-Crypt-SSLeay perl-DBI perl-IO-Socket-SSL perl-LDAP perl-Net-DNS perl-Template-Toolkit perl-TimeDate perl-URI perl-XML-LibXML perl-XML-LibXSLT perl-XML-Parser perl-Digest-SHA perl-LWP-Authen-Negotiate perl-DBD-MySQL perl-YAML-LibYAML perl-Crypt-Eksblowfish perl-Mail-IMAPClient perl-Text-CSV_XS perl-core perl-libwww-perl procmail

Deaktivieren Sie SELINUX.

vi /etc/selinux/config

SELINUX=permissive

Wir führen den Befehl zum Trennen der Verbindung ohne Neustart aus.

setenforce 0

Laden Sie das OTRS-Archiv herunter und entpacken Sie es.

wget http://ftp.otrs.org/pub/otrs/otrs-5.0.13.tar.gz
tar -xvf otrs-5.0.13.tar.gz -C /opt/
mv /opt/otrs-5.0.13 /opt/otrs
cd /opt/otrs

Wir legen den Benutzer otrs auf dem Server an.

useradd -d /opt/otrs/ -g nginx -s /sbin/nologin -c 'OTRS System User' otrs

Mit dem Dienstprogramm otrs.CheckModules.pl prüfen wir die Verfügbarkeit der erforderlichen Perl-Module und fahren fort, wenn alles in Ordnung ist.

su otrs -s /bin/bash -c "/opt/otrs/bin/otrs.CheckModules.pl"

Wir aktivieren "Default Config Files".

cp Kernel/Config.pm.dist Kernel/Config.pm
for foo in var/cron/*.dist; do mv $foo var/cron/`basename $foo .dist`; done
cp .procmailrc.dist .procmailrc
cp .fetchmailrc.dist .fetchmailrc
cp .mailfilter.dist .mailfilter

Überprüfen Sie, ob alle erforderlichen Module installiert sind.

perl -cw /opt/otrs/bin/cgi-bin/index.pl
/opt/otrs/bin/cgi-bin/index.pl syntax OK
perl -cw /opt/otrs/bin/cgi-bin/customer.pl
/opt/otrs/bin/cgi-bin/customer.pl syntax OK
perl -cw /opt/otrs/bin/otrs.Console.pl
/opt/otrs/bin/otrs.Console.pl syntax OK

Konfigurieren Sie die Zugriffsrechte für OTRS-Dateien.

/opt/otrs/bin/otrs.SetPermissions.pl --otrs-user=otrs --web-group=nginx

Wir aktualisieren die Konfiguration und löschen den Cache.

su otrs -s /bin/bash -c "/opt/otrs/bin/otrs.Console.pl Maint::Config::Rebuild";
su otrs -s /bin/bash -c "/opt/otrs/bin/otrs.Console.pl Maint::Cache::Delete";

Erstellen Sie einen systemd OTRS-Dienst.

vi /etc/systemd/system/otrs.service

[Unit]
Description=OTRS Help Desk.
After=network.target
[Service]
Type=forking
User=otrs
Group=nginx
ExecStart=/opt/otrs/bin/otrs.Daemon.pl start
ExecStop=/opt/otrs/bin/otrs.Daemon.pl stop
[Install]
WantedBy=multi-user.target

Wir starten Dienste

systemctl enable nginx.service
systemctl enable otrs.service
systemctl start nginx.service
systemctl start otrs.service

und rufen Sie die Weboberfläche auf, um die Einrichtung abzuschließen.

Klicken Sie auf die Schaltfläche "Weiterleiten".


Wir akzeptieren die Benutzervereinbarung.


Wir wählen den Datenbanktyp, in meinem Fall MySQL.


Geben Sie die Anmeldeinformationen ein: IP-Adresse und Datenbankname.


Wir überprüfen die Verbindung und wenn alles gut geht, fahren Sie fort.


Wählen Sie in diesem Schritt die Ticketnummerierung aus, geben Sie den FQDN-Namen des Servers und das Konto des Postfachs an, an das die Briefe gesendet werden.


Hier legen wir die Einstellungen des Mailservers zum Empfangen und Senden von Mails fest.


Wir gehen zu der von uns angegebenen Adresse und melden uns bei der WEB-Oberfläche an.



Lassen Sie uns verschlüsseln


Um das Let's Encrypt-Zertifikat zu erhalten, müssen Sie CertBot installieren.

yum install certbot

Hier geben wir Ihren Mail- und Domainnamen an, für den wir ein Zertifikat erhalten.

certbot certonly --webroot --email mail@HOST -w /opt/otrs/var/httpd/htdocs -d otrs.HOST

Wir erstellen einen systemd-Dienst für CertBot, um das Zertifikat automatisch zu erneuern.

vi /etc/systemd/system/certbot.service

[Unit]
Description=Renew Certbot certificate (nginx)
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --renew-hook "/usr/bin/systemctl reload nginx.service"

Erstellen Sie einen Timer

vi /etc/systemd/system/certbot.timer

[Unit]
Description=Renew Certbot certificate (nginx)
[Timer]
OnCalendar=daily
RandomizedDelaySec=1day
Persistent=true
[Install]
WantedBy=timers.target

Und aktivieren.

sudo systemctl daemon-reload
systemctl start certbot.timer
systemctl enable certbot.timer

Sie können die geplante Aufgabe mit dem Befehl überprüfen

systemctl list-timers

Wir erstellen eine Datei mit Parametern für DHE-Chiffren.

openssl dhparam -out /etc/ssl/HOST/dhparam.pem 2048

Als nächstes müssen Sie die Zeilen in der Host-Konfiguration auskommentieren

server {
    listen 80;
    server_name otrs.HOST;
    rewrite ^ https://$http_host$request_uri? permanent;
}

und kommentiere im abschnitt mit ssl.

listen 80;

Starten Sie dann Nginx neu.

systemctl reloadt nginx.service

Was kann noch getan werden?


Automatisches Laden von Briefen in Tickets


Standardmäßig wird der Mailserver alle 10 Minuten abgefragt, um diesen Parameter zu ändern.

OTRS: Administration → Systemadministration → Systemkonfiguration Fügen Sie

im Feld "Aktion" Daemon :: SchedulerCronTaskManager :: Task ein und klicken Sie auf "Suchen".
Suchen Sie den Parameter MailAccountFetch, und ändern Sie den Wert von 10 Minuten beispielsweise in 5.

Deaktivierung der Benutzerregistrierung über die Weboberfläche


Wenn Sie keine Benutzer über die WEB-Oberfläche registrieren müssen, müssen Sie diese deaktivieren.

Systeme → Systemkonfiguration und im Feld „Aktion“ Frontend :: Kunde einfügen und auf „Suchen“ klicken. Suchen Sie CustomerPanelCreateAccount und wählen Sie Nein aus.

Jetzt auch beliebt: