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