DECO 導入手順書

1. データベースのインストール・設定

MariaDB(MySQL)をインストールします。

# dnf install -y mariadb mariadb-server mariadb-devel

/etc/my.cnf.d/にあるファイルに以下行を追加します。

# vi /etc/my.cnf.d/mariadb-server.cnf
(「[mysqld]」部分に追記します)
--------------------------------------------------------------------------------
[mysqld]

+character-set-server=utf8
+collation-server=utf8_unicode_ci

+innodb_file_per_table = 1
--------------------------------------------------------------------------------

# vi /etc/my.cnf.d/mysql-clients.cnf
(「[mysql]」部分に追記します)
--------------------------------------------------------------------------------
[mysql]

+default-character-set=utf8

--------------------------------------------------------------------------------

# vi /etc/my.cnf.d/client.cnf
(「[client]」部分に追記します)
--------------------------------------------------------------------------------
[client]

+default-character-set=utf8
--------------------------------------------------------------------------------

MariaDBの起動と自動起動を設定します。
# systemctl start mariadb
# systemctl enable mariadb

MariaDBにDECOで使用するユーザの登録およびデータベースを作成します。
# mysql -u root

> GRANT ALL PRIVILEGES ON deco_production.* TO deco@'127.0.0.0/255.255.255.0' IDENTIFIED BY '********';
> GRANT ALL PRIVILEGES ON deco_production.* TO deco@'localhost' IDENTIFIED BY '********';
> create database deco_production;

2. DECOに必要なパッケージのインストール・設定

必要なパッケージをインストールします。
# dnf -y install zlib-devel openssl-devel curl-devel make gcc-c++ wget
# dnf -y install rpm-build

epelリポジトリをインストールします。
# dnf -y install epel-release

必要なパッケージをインストールします。
# dnf -y install nodejs

# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
# dnf -y install yarn

clamav 本体とデーモン、アップデートツール等をインストールします。
# dnf -y install clamav clamav-scanner-systemd clamav-update clamav-devel

設定ファイルを編集します。
# vi /etc/clamd.d/scan.conf

--------------------------------------------------------------------------------
Exampleをコメントにします。(コメント済みであればそのままです)
-Example
+#Example

# 該当部分のコメントを外して有効化にします。(ログの有効化)
-#LogFile /var/log/clamd.scan
+LogFile /var/log/clamd.scan

-#LogFileMaxSize 2M
+LogFileMaxSize 2M

-#LogTime yes
+LogTime yes

-#LogRotate yes
+LogRotate yes

# ローカルソケット設定のコメントを外して有効化します。
-#LocalSocket /var/run/clamd.scan/clamd.sock
+LocalSocket /var/run/clamd.scan/clamd.sock

-#FixStaleSocket yes
+FixStaleSocket yes

# ユーザーをコメントにして root で動作させるよう設定します。
-User clamscan
+#User clamscan
--------------------------------------------------------------------------------

シンボリックリンクの設定追加します。
# ln -s /etc/clamd.d/scan.conf /etc/clamd.conf

データベース更新用の設定ファイルを編集します。(/etc/freshclam.conf・/etc/sysconfig/freshclam)

# vi /etc/freshclam.conf
--------------------------------------------------------------------------------
#Exampleをコメントにします。(コメント済みであればそのままです)
-Example
+#Example

# 該当部分のコメントを外して有効化にします。(ログの有効化)
-#UpdateLogFile /var/log/freshclam.log
+UpdateLogFile /var/log/freshclam.log

-#LogFileMaxSize 2M
+LogFileMaxSize 2M

-#LogTime yes
+LogTime yes

-#LogRotate yes
+LogRotate yes

#NotifyClamd /path/to/clamd.conf
+NotifyClamd /etc/clamd.d/scan.conf
--------------------------------------------------------------------------------

# vi /etc/sysconfig/freshclam
--------------------------------------------------------------------------------
(「FRESHCLAM_DELAY=disabled-warn # REMOVE ME」がない場合はそのままにしてください。)
-FRESHCLAM_DELAY=disabled-warn # REMOVE ME
+# FRESHCLAM_DELAY=disabled-warn # REMOVE ME
--------------------------------------------------------------------------------

※以下のclamav起動やウィルス定義ファイルを更新の際に「/var/log/freshclam.log」が無い場合、
「ERROR: Can't open /var/log/freshclam.log in append mode (check permissions!).」の
エラーメッセージが表示されるため、「/var/log/freshclam.log」が無い場合以下のコマンドで
「/var/log/freshclam.log」を作成します。

# touch /var/log/freshclam.log
# chown clamupdate:clamupdate /var/log/freshclam.log

clamav起動を設定します。(起動に失敗する場合、ウィルス定義ファイルを更新してから再度実行します。)

# systemctl start clamd@scan #clamd起動
# systemctl status clamd@scan #clamd稼働状況
# systemctl enable clamd@scan #clamd自動起動設定

ウィルス定義ファイルを更新します。
# freshclam

yamlをインストールします。(インストール済みの場合は不要)

以下のコマンドでlibyamlがインストールされているか確認します。
# dnf list | grep yaml

libyamlがインストール済みであればRubyのインストールに進みます。
# dnf -y install libyaml

Rubyをインストールにします。

# cd /usr/local/src
# wget --no-check-certificate https://ftp.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.gz
# tar zxvf ruby-3.1.3.tar.gz
# cd ruby-3.1.3
# ./configure
# make
# make install

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

# cd /usr/local/src
# wget --no-check-certificate https://rubygems.org/rubygems/rubygems-3.4.6.tgz
# tar zxvf rubygems-3.4.6.tgz
# cd rubygems-3.4.6
# ruby setup.rb

DECOに必要なモジュールをインストールします。
(/usr/local)にDECOの圧縮ファイルを置きます。
# cd /usr/local
# tar xzvf (DECOプログラムファイル)
# cd deco
# gem install bundler
# bundle install

環境変数にsecret_key_baseおよびデータベースのパスワードを設定します。

# rake secret
(keyが生成表示されます。)

環境変数に必要なパラメータを設定します。
# export SECRET_KEY_BASE=(生成したkeyをセットします。)
# export DECO_DATABASE_PASSWORD=(データベースに登録したDECOユーザのパスワードをセットします。)

再起動後も環境変数に反映する場合は、以下のファイルに追記してください。
# vi /etc/bashrc
--------------------------------------------------------------------------------
・・・
SECRET_KEY_BASE=(生成したkeyをセットします。)

export SECRET_KEY_BASE

DECO_DATABASE_PASSWORD=(データベースに登録したDECOユーザのパスワードをセットします。)

export DECO_DATABASE_PASSWORD
--------------------------------------------------------------------------------

ApacheとPassengerをインストールします。

# dnf -y install httpd httpd-devel
# gem install passenger
# passenger-install-apache2-module

「/etc/httpd/conf.d/passenger.conf」を作成し以下を記述します。
下記内容は「passenger-install-apache2-module」実行時に表示されるメッセージ内容
ですので、下記と異なる場合は表示されたメッセージの内容を優先してください。
# vi /etc/httpd/conf.d/passenger.conf
--------------------------------------------------------------------------------
LoadModule passenger_module /usr/local/lib/ruby/gems/3.1.0/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/3.1.0/gems/passenger-6.0.17
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
--------------------------------------------------------------------------------

「/etc/httpd/conf.d/deco.conf」に以下を追加します。
# vi /etc/httpd/conf.d/deco.conf
--------------------------------------------------------------------------------
<VirtualHost *:80>
  ServerName deco
  DocumentRoot /usr/local/deco/public
  RailsEnv production
  SetEnv SECRET_KEY_BASE (生成したkeyをセットします。)
  SetEnv DECO_DATABASE_PASSWORD (データベースに登録したDECOユーザのパスワードをセットします。)
  <Directory /usr/local/deco/public>
    Require all granted
    Options -MultiViews
  </Directory>
</VirtualHost>
--------------------------------------------------------------------------------

xsendfileをインストールします。
# dnf -y install mod_xsendfile

「/etc/httpd/conf.d/xsendfile.conf」を作成し以下を追加します。
# vi /etc/httpd/conf.d/xsendfile.conf
--------------------------------------------------------------------------------
<IfModule mod_xsendfile.c>
  XsendFile on
  XsendFilePath /var/deco/files
</IfModule>
--------------------------------------------------------------------------------

3. DECOの設定

DECOの設定を行います。

# cd /usr/local/deco

DECOにデータベースの登録した内容を設定します。
# cp config/database.yml.sample config/database.yml
# vi config/database.yml
--------------------------------------------------------------------------------
※production 項目の設定を実環境に合わせます。(問題無い場合はそのままです。)
・・・
production:
  <<: *default
  database: deco_production
  username: deco
  password: <%= ENV['DECO_DATABASE_PASSWORD'] %>
--------------------------------------------------------------------------------

「config/environments/production.rb」に送信用メールサーバー情報の記述を追加します。
# cp config/environments/production.rb.sample config/environments/production.rb
# vi config/environments/production.rb
--------------------------------------------------------------------------------
  config.action_mailer.smtp_settings = {
    address:              'localhost',
    port:                 25,
    domain:               'example.com',
    authentication:       :plain,
    user_name:            '<ユーザー名>',
    password:             '<パスワード>',
    enable_starttls: true,
    openssl_verify_mode: 'none'
  }
--------------------------------------------------------------------------------

設定項目
--------------------------------------------------------------------------------
address : 接続先アドレスを設定
port : 接続先ポート番号を設定
domain : HELOドメイン名を設定
authentication : 認証方法を設定
(:nil：認証なし , :plain：PLAIN , :login : LOGIN , :cram_md5 : CRAM-MD5)
user_name : 認証ユーザ名を指定 ※認証なしの場合は、先頭に#を付けコメントに変更
password : 認証パスワードを指定 ※認証なしの場合は、先頭に#を付けコメントに変更
enable_starttls : SMTPサーバーへの接続でSTARTTLSを利用する設定(サポートされていない場合失敗する)
openssl_verify_mode : TLSを利用する場合にOpenSSLが認証をチェックする方法を指定
('none'、'peer'、'client_once'、'fail_if_no_peer_cert')
--------------------------------------------------------------------------------

「config/settings.yml」にClamAVの記述を追加します。
# cp config/settings.yml.sample config/settings.yml
# vi config/settings.yml
※利用環境がコンテナを使用する場合は、「tcp_host」「tcp_port」にそれぞれ
ClamAVのサーバ情報・ポート番号を記載してください。
※利用環境がコンテナを使用しない場合は、「socket」にClamAVのソケットファイルの場所を
記載してください。(CenoOS 7, Alma Linux 8の場合、「/var/run/clamd.scan/clamd.sock」です)
--------------------------------------------------------------------------------
clamav:
  # コンテナ等を使用する場合
  tcp_host: 
  tcp_port: 
  # コンテナ等を使用しない場合
  # (※ CenoOS7の場合のソケットの場所)
  socket: '/var/run/clamd.scan/clamd.sock'
--------------------------------------------------------------------------------

テーブルの作成と初期データの挿入を実行します。
# rake db:migrate RAILS_ENV=production
# rake db:seed RAILS_ENV=production

JS, CSS, 画像ファイルのコンパイルを実行します。
# bundle exec rake assets:precompile RAILS_ENV=production

ディレクトリの作成/設定します。
# chown -R apache:apache /usr/local/deco
# mkdir -p /var/deco/files
# chown -R apache:apache /var/deco/files

apacheをclamAVのグループに追加します。
# usermod -G virusgroup apache

Webサーバの起動と自動起動を設定します。
# systemctl start httpd
# systemctl enable httpd

以下のURLにアクセスすると管理画面が表示されますので必要な設定を行います。

(DECOサーバのURL)/sys_top

設定が完了したら以下のURLにアクセスするとDECOの利用ができます。

(DECOサーバのURL)/
