Exment 構築

Exment という Web データベースを構築してみようと思います。 また、ログイン認証を DC でできるように設定も行おうと思います。

参考にする手順は下記。

インストール-概要 (exment.net)
Linuxによる環境構築 (exment.net)

OS 準備

動作 OS は CentOS 8 だと手順でエラーになるようなので、CentOS 7 で構築します。

項目
ホスト名 exment.lab.local
IPアドレス 192.168.200.20

SELinux 無効化

# vi /etc/selinux/config
# grep -v -e '^\s*#' -e '^\s*$' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
# reboot

パッケージインストール

# yum install -y epel-release
# yum install -y wget unzip redis
# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install -y http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# yum install -y --enablerepo=remi-php72 httpd openssl mod_ssl mysql php72 php72-php php-mbstring php-mysqli php-dom php-gd.x86_64 php-zip php-ldap
# yum install -y mysql-community-server

redis 設定

# vi /etc/redis.conf
# grep -v -e '^\s*#' -e '^\s*$' /etc/redis.conf
bind 0.0.0.0                                  ★変更
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
~(省略)~
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
# systemctl enable redis
# systemctl start redis.service

Firewall 設定

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --permanent --new-zone=from_webserver
# firewall-cmd --reload
# firewall-cmd --permanent --zone=from_webserver --add-source="192.168.200.0/24"
# firewall-cmd --permanent --zone=from_webserver --add-port=3306/tcp
# firewall-cmd --zone=from_webserver --add-service=mysql
# firewall-cmd --reload
# firewall-cmd --permanent --zone=from_webserver --add-port=6379/tcp
# firewall-cmd --zone=from_webserver --add-service=redis
# firewall-cmd --reload

PHP 準備

PHP のパス設定

# ln -s /usr/bin/php72 /usr/bin/php
# php --version
PHP 7.2.34 (cli) (built: Jan  4 2021 14:34:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

利用モジュールのインストール

# cd ~/
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer
# vi /etc/opt/remi/php72/php.ini
# grep -v -e '^\s*;' -e '^\s*$' /etc/opt/remi/php72/php.ini
[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
~(省略)~
[curl]
[openssl]
extension=mbstring.so                     ★追加
extension=dom.so                          ★追加
extension=xml.so                          ★追加
extension=gd.so                           ★追加
extension=simplexml.so                    ★追加
extension=xmlreader.so                    ★追加
extension=xmlwriter.so                    ★追加
extension=zip.so                          ★追加
extension=mysqlnd.so                      ★追加
extension=mysqli.so                       ★追加
extension=pdo.so                          ★追加
extension=pdo_mysql.so                    ★追加
extension_dir=/usr/lib64/php/modules/     ★追加
extension=ldap.so                         ★追加

HTTP 設定

# vi /etc/httpd/conf/httpd.conf
# grep -v -e '^\s*#' -e '^\s*$' /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
~(省略)~
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
<VirtualHost *:80>                      ★追加
  DocumentRoot /var/www/exment/public   ★追加
  <Directory /var/www/exment/public>    ★追加
    Allow from all                      ★追加
    AllowOverride All                   ★追加
    Require all granted                 ★追加
  </Directory>                          ★追加
</VirtualHost>                          ★追加
# systemctl enable httpd.service
# systemctl start httpd.service

Exment インストール

# cd /var/www
# wget https://exment.net/downloads/ja/exment.zip
# unzip exment.zip
# rm exment.zip -f
# cd exment
# chown apache:apache -R /var/www/exment
# chmod 775 -R /var/www/exment/storage
# chmod 775 -R /var/www/exment/bootstrap/cache

MySQL

MySQL 設定

# systemctl enable mysqld.service
# systemctl start mysqld.service
# cat /var/log/mysqld.log | grep password
2016-09-01T13:09:03.337119Z 1 [Note] A temporary password is generated for root@localhost: uhsd!XXXXXX

root@localhost: 以降がパスワードをメモする。

# vi /etc/my.cnf
# grep -v -e '^\s*#' -e '^\s*$' /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
validate-password=OFF                 ★追加
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# systemctl restart mysqld.service

DB 初期化

# mysql_secure_installation

Enter password for user root: (先ほど残したパスワードを入力)

New password: (新しいパスワードを入力)
Re-enter new password: (新しいパスワードを入力)

Change the password for root? : y

Remove anonymous users? : y #匿名ユーザーアカウントを削除
Disallow root login remotely? : y # ローカルホスト以外からアクセス可能な root アカウントを削除
Remove test database and access to it? : y # test データベースの削除
Reload privilege tables now? : y #privilegeテーブルを再読込

DB 構築

# mysql -u root -p
Enter password: (パスワード)

mysql> CREATE DATABASE exment_database;
mysql> CREATE USER 'exment_user'@'192.168.200.%' IDENTIFIED BY '(exment_user用のパスワード)';
mysql> GRANT ALL ON exment_database.* TO exment_user identified by '(exment_user用のパスワード)';
mysql> FLUSH PRIVILEGES;
mysql> quit

LDAP 関連インストール

# COMPOSER_MEMORY_LIMIT=-1 composer require predis/predis
# COMPOSER_MEMORY_LIMIT=-1 composer require adldap2/adldap2-laravel

.env

# vi .env
# cat .env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:XXXXXXXXXXXXXXXXXXXX
APP_DEBUG=true
APP_URL=http://192.168.200.20          ★変更
APP_LOCALE=ja                         ★追加
APP_TIMEZONE=Asia/Tokyo               ★追加

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=exment_database           ★変更
DB_USERNAME=exment_user               ★変更
DB_PASSWORD=<設定したパスワード>        ★変更

~(省略)~

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

EXMENT_INITIALIZE=1                  ★追加

証明書チェック無効

# vi /etc/openldap/ldap.conf
# grep -v -e '^\s*#' -e '^\s*$' /etc/openldap/ldap.conf
TLS_CACERTDIR   /etc/openldap/certs
SASL_NOCANON    on
TLS_REQCERT     never                ★追加
# systemctl restart httpd

Exment 設定

初期設定

ブラウザで、 http://192.168.200.20/admin にアクセスする。 画面に従って完了させる