Nginxを使用したサーバーへのOTRS 5のインストール


ヘルプデスクOTRSをインストールするときに、作業がApache HTTP Serverでのみ公式にサポートされているという事実に出会いました。Nginxが必要でした。 判明したように、インターネットでNginxを実行しているWebサーバーにOTRSをインストールするための詳細なガイドはありません。修正してみましょう。 この記事では、OTRSバージョン5.0.13のインストールについてのみ説明し、その構成は別のトピックです。 サーバーがデプロイされるOSはCentOS 7です。

Nginx


リポジトリーEpelとNginxを接続します。

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

Nginxをインストールします。

 yum update && yum install wget bzip2 nginx 


Nginx構成ファイルのを作成します。 この記事は基礎として取り上げました。

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

非表示のテキスト
 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; } 


ホスト構成を作成し、 HOSTをドメイン名に置き換えます。

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

非表示のテキスト
 #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; } } 


ファイアウォール


NetworkManagerを停止してマスクします。

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

ファイアウォールを設定します。外部インターフェースはenp5s0と呼ばれると考えます。

 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 

ファイアウォールを再起動し、何が起こったかを確認します。

 systemctl restart firewalld.service firewall-cmd --reload 

Fastcgi


OTRSとNginxの相互作用には、FCGIラッパーが必要です。 ここでの選択は特に優れているわけではありません-Denis S. Filimonovの PerlスクリプトまたはGrzegorz NosekのFastCGIラッパーを使用してください。 例として両方のオプションを示しますが、後者を使用します。

fastcgi-wrapper.pl


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

Unixソケットを使用するには、 サブメインセクションに挿入します

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

とコメント。

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

また、Nginx構成に適切な変更を加えます。

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

彼の仕事のために、Systemdサービスを書きました。

 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


fcgiwrapパッケージをダウンロードしてインストールするだけです

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

そしてそれを実行します:

 systemctl enable fcgiwrap.socket systemctl start fcgiwrap.socket 

誰かがパラノイアの攻撃を受けた場合、ここではsrpmで、自分で組み立てることができます。

MySQL


MariaDBリポジトリを接続します。

 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 

MariaDBサーバーをインストールします。

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

サービスを開始します。

 systemctl start mysql 

初期セットアップを実行します。

 /usr/bin/mysql_secure_installation 

データベースを作成します。

 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; 

サービスを停止します。

 systemctl stop mysql 

OTRSの正常な動作のために、server.cnfを少し調整してください。

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

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

innodb_log_file_sizeパラメーターを変更した後にMySQLを起動するには、古いログファイルの名前を変更するか削除する必要があります。

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

サービスを開始し、スタートアップに追加します。

 systemctl start mysql systemctl enable mysql 

OTRS


依存関係をインストールします。

 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 

SELINUXを無効にします。

 vi /etc/selinux/config 

 SELINUX=permissive 

再起動せずに切断するコマンドを実行します。

 setenforce 0 

OTRSアーカイブをダウンロードして解凍します。

 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 

サーバーにotrsユーザーを作成します。

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

otrs.CheckModules.plユーティリティを使用して、必要なPerlモジュールの可用性をチェックし、すべてが正常に機能している場合は続行します。

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

「デフォルト構成ファイル」をアクティブにします。

 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 

必要なモジュールがすべてインストールされていることを確認してください。

 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 

OTRSファイルへのアクセス権を設定します。

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

構成を更新し、キャッシュを削除します。

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

systemd OTRSサービスを作成します。

 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 

サービスを開始します

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

Webインターフェースに移動してセットアップを完了します。

[転送]ボタンをクリックします。


ユーザー契約に同意します。


データベースのタイプを選択します。私の場合はMySQLです。


資格情報を入力します:IPアドレスとデータベース名。


接続を確認し、すべてがうまくいけば先に進みます。


この手順では、チケットの番号付けを選択し、サーバーのFQDN名と、レターの送信先のメールボックスのアカウントを指定します。


ここでは、メールを送受信するためのメールサーバーの設定を指定します。


指定したアドレスに移動し、WEBインターフェースにログインします。



暗号化しましょう


Let's Encrypt証明書を取得するには、CertBotをインストールする必要があります。

 yum install certbot 

ここでは、証明書を受け取るメールとドメイン名を示します。

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

CertBotのsystemdサービスを作成して、証明書を自動的に更新します。

 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" 

タイマーを作成する

 vi /etc/systemd/system/certbot.timer 

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

そしてアクティブにします。

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

次のコマンドでスケジュールされたタスクを確認できます

 systemctl list-timers 

DHE暗号のパラメーターを含むファイルを作成します。

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

次に、ホスト構成の行のコメントを解除する必要があります

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

セクションでsslを使用してコメントします。

 listen 80; 

次に、Nginxを再起動します。

 systemctl reloadt nginx.service 

他に何ができますか?


チケットへの手紙の自動読み込み


デフォルトでは、メールサーバーは10分ごとにポーリングされ、このパラメーターを変更します。

OTRS:管理→システム管理→システム構成

[アクション]フィールドにDaemon :: SchedulerCronTaskManager :: Taskを挿入し、[検索]をクリックします。
MailAccountFetchパラメーターを見つけて、値を10分から5に変更します。

Webインターフェースを介したユーザー登録の無効化


WEBインターフェースを介してユーザーを登録する必要がない場合は、無効にする必要があります。

[システム]→[システム構成]、[アクション]フィールドにFrontend :: Customerを挿入し、[検索]をクリックします。 CustomerPanelCreateAccountを見つけて、[いいえ]を選択します。

Source: https://habr.com/ru/post/J311714/


All Articles