centos8への導入手順

前提条件

  • CentOS 8.2 minimal インストール
  • selinux無効
  • ファイアウォールで80/TCPのアクセスが有効

MySQLのインストール

# dnf install -y mysql-server mysql-devel

設定ファイルの編集

# echo 'character-set-server=utf8mb4' >> /etc/my.cnf.d/mysql-server.cnf
# sed -ie 's/\[client\]/\[client\]\ndefault-character-set = utf8mb4/' /etc/my.cnf.d/client.cnf

起動と自動起動の設定

# systemctl enable --now mysqld.service

ユーザ/データベースの作成

# mysql -u root
> CREATE USER deco@'localhost' IDENTIFIED BY '*****';
> GRANT ALL PRIVILEGES ON deco_production.* TO deco@'localhost';
> create database deco_production;

必要なパッケージのインストール

# dnf install -y zlib-devel openssl-devel curl-devel make gcc-c++ wget libyaml

必要なリポジトリの追加

# dnf install -y epel-release

ClamAVのインストール

# dnf install -y clamav clamav-scanner-systemd clamav-update clamav-devel

設定ファイルの編集

# sed -ie 's/\#LogFile \/var\/log\/clamd.scan/LogFile \/var\/log\/clamd.scan/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#LogFileMaxSize 2M/LogFileMaxSize 2M/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#LogTime yes/LogTime yes/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#LogRotate yes/LogRotate yes/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#LocalSocket \/run\/clamd.scan\/clamd.sock/LocalSocket \/run\/clamd.scan\/clamd.sock/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#FixStaleSocket yes/FixStaleSocket yes/' /etc/clamd.d/scan.conf
# sed -ie 's/^User clamscan/\#User clamscan/' /etc/clamd.d/scan.conf
# sed -ie 's/^\#UpdateLogFile/UpdateLogFile/' /etc/freshclam.conf
# sed -ie 's/^\#LogFileMaxSize/LogFileMaxSize/' /etc/freshclam.conf
# sed -ie 's/^\#LogRotate/LogRotate/' /etc/freshclam.conf

起動と自動起動の設定

# sed -ie 's/scanner (%i) daemon/scanner daemon/g' /usr/lib/systemd/system/clamd@.service
# sed -ie 's/\/etc\/clamd.d\/%i.conf/\/etc\/clamd.d\/scan.conf/g' /usr/lib/systemd/system/clamd@.service
# touch /var/log/freshclam.log
# chown clamupdate:clamupdate /var/log/freshclam.log
# freshclam
# systemctl enable --now clamd@scan.service

Rubyのインストール

# cd /usr/local/src
# wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.gz
# tar xzvf ruby-2.6.6.tar.gz
# cd ruby-2.6.6/
# ./configure
# make
# make install

DECOに必要なRubyライブラリのインストールと事前設定

decoのソースファイルを配置して作業

# cd /usr/local
# tar xzvf deco-2.0.X.tar.gz
# cd deco/
# gem install bundler
# bundle

secret_key_baseおよびデータベースのパスワードを設定

# bundle exec rake secret

# cat - << EOF >> /etc/bashrc
SECRET_KEY_BASE=(生成したsecret key)
export SECRET_KEY_BASE
DECO_DATABASE_PASSWORD=(データベースに登録したDECOユーザのパスワード)
export DECO_DATABASE_PASSWORD
EOF

# source /etc/bashrc

ApacheとPassengerのインストール

# dnf install -y httpd httpd-devel redhat-rpm-config
# gem install passenger
# passenger-install-apache2-module

設定ファイルの編集

# cat - << EOF > /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.6/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
        PassengerRoot /usr/local/lib/ruby/gems/2.6.0/gems/passenger-6.0.6
        PassengerDefaultRuby /usr/local/bin/ruby
    </IfModule>
EOF

cat - << EOF > /etc/httpd/conf.d/deco.conf
<VirtualHost *:80>
  ServerName deco
  DocumentRoot /usr/local/deco/public
  RailsEnv production
  SetEnv SECRET_KEY_BASE (生成したsecret key)
  SetEnv DECO_DATABASE_PASSWORD (データベースに登録したDECOユーザのパスワード)
  <Directory /usr/local/deco/public>  
    Require all granted
    Options -MultiViews
  </Directory>  
</VirtualHost>
EOF

xsendfileのインストール

# cd /usr/local/src
# wget --no-check-certificate https://tn123.org/mod_xsendfile/mod_xsendfile.c
# apxs -cia mod_xsendfile.c

# cat - << EOF > /etc/httpd/conf.d/xsendfile.conf
<IfModule mod_xsendfile.c>
    XsendFile on
    XsendFilePath /var/deco/files
</IfModule>
EOF

apacheユーザをclamAVのグループに追加

# usermod -G virusgroup apache

DECOのインストール

# cd /usr/local/deco
# cp config/database.yml.sample config/database.yml
# bundle exec rake db:migrate RAILS_ENV=production
# bundle exec rake db:seed RAILS_ENV=production
# cp config/environments/production.rb.sample config/environments/production.rb
# sed -ie 's/^end/  ActionMailer::Base.smtp_settings\[:enable_starttls_auto\] = false\nend/' config/environments/production.rb
# 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

Webサーバの起動と自動起動設定

systemctl enable --now httpd.service

DECO管理画面へのアクセスと設定

(DECOサーバのURL)/sys_top

DECOの表示

(DECOサーバのURL)/

MTAが稼働していない場合のPostfixのインストール

# dnf install -y postfix

起動と自動起動設定

# systemctl enable --now postfix.service