DECO 導入手順書

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

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

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

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

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

+character-set-server=utf8mb4
+collation-server=utf8mb4_unicode_ci

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

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

+default-character-set=utf8mb4

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

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

+default-character-set=utf8mb4
--------------------------------------------------------------------------------

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

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 '********';

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

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

nodejsのバージョンが18以上必要なため、nodejsの有効になっている Node.jsのバージョンを確認してインストールします。
# dnf module list nodejs
# dnf module -y install nodejs:22/common

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

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

clamav 本体とデーモン、アップデートツール等をインストールします。
# dnf -y install clamav clamd clamav-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
※(ログ記録時に時刻を記録)

#LogSyslog yes
+LogSyslog no
※「/var/log/freshclam.log」に書き出すためsyslogは無効とします

-#LogRotate yes
+LogRotate yes

-#DatabaseOwner clamupdate
+DatabaseOwner clamupdate

# Number of database checks per day.
# Default: 12 (every two hours)
#Checks 24
Checks 12

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

clamdの設定ファイルを編集します。
# 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

-LogSyslog yes
+LogSyslog no
※「/var/log/clamd.scan」に書き出すためsyslogを無効とします

-#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

freshclamを一度起動し停止します。(起動時に「/var/log/freshclam.log」が作成されます。)
# systemctl start clamav-freshclam #freshclam起動
# systemctl stop clamav-freshclam #freshclam停止

ウィルス定義ファイルを更新します。(freshclam起動時は手動更新できないためfreshclamを停止させてから実行します。)
(「/var/log/freshclam.log」が無い場合エラーメッセージが表示されます。)
# freshclam

freshclam起動を設定します。
# systemctl enable clamav-freshclam --now #freshclam起動・自動起動設定
# systemctl status clamav-freshclam #freshclam稼働状況確認

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

# systemctl enable clamd@scan --now #clamd起動・自動起動設定
# systemctl status clamd@scan #clamd稼働状況確認

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

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

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

※AlmaLinux8の場合
# dnf -y install --enablerepo=powertools libyaml-devel

※AlmaLinux9の場合
# dnf -y install --enablerepo=crb libyaml-devel

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

# cd /usr/local/src
# wget --no-check-certificate https://ftp.ruby-lang.org/pub/ruby/3.3/ruby-3.3.8.tar.gz
# tar zxvf ruby-3.3.8.tar.gz
# cd ruby-3.3.8
# ./configure -disable-install-doc --disable-install-rdoc
# make
# make install

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

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

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

※ 環境変数に設定するパラメータは検証確認中です

# EDITOR="vi" rails credentials:edit --environment production

コマンド実行後、「config/credentials」以下に「production.key」「production.yml.enc」が作成されます。
「production.yml.enc」は環境パラメータ情報を暗号化したファイルで、「production.key」は「production.yml.enc」を
復号化する場合に必要なキーが記載されています。
上記コマンドは「production.yml.enc」の情報を確認する際に実行するコマンドで、
実行時に「production.key」「production.yml.enc」が存在しない場合は
新しいパラメータおよびキーで作成されます。
※キーが異なる場合は「production.yml.enc」を復号化できません。

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

再起動後も環境変数に反映する場合は、以下のファイルに追記してください。
# vi /etc/bashrc
--------------------------------------------------------------------------------
・・・
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.3.0/gems/passenger-6.0.27/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/3.3.0/gems/passenger-6.0.27
  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 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
--------------------------------------------------------------------------------
XsendFile on
XsendFilePath /var/deco/files
--------------------------------------------------------------------------------

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'
--------------------------------------------------------------------------------

ディレクトリを作成します。
# mkdir -p /var/deco/files

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

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

ディレクトリ所有者を設定します。
# chown -R apache:apache /usr/local/deco
# chown -R apache:apache /var/deco/files

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

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

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

(DECOサーバのURL)/sys_top

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

(DECOサーバのURL)/
