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を見つけて、[いいえ]を選択します。



All Articles