ZABBIX4.0構築(事前準備)

#ZABBIX4.0構築手順
ZABBIX4.0LTSを構築する際の自分用忘備録。
間違えているところあるかも。

cent7.5

#事前準備
#**1.DNSサーバの設定**

手動で設定するため、DHCPでのDNSサーバ設定を無効に。

```
nmcli con mod enp0s3 ipv4.ignore-auto-dns yes
```

DNSサーバを設定し、NetworkManager を再起動

```
nmcli con mod enp0s3 ipv4.dns 8.8.8.8
systemctl restart NetworkManager
```

DNSサーバが設定されていることを確認

`cat /etc/resolv.conf`

```
# Generated by NetworkManager
   nameserver 8.8.8.8'
```


**★名前解決確認**
FQDNへping　or nslookupを実施し、DNSサーバへ正常に設定されているか確認


#**2.ホスト名の設定**

ホスト名「XXX-SV」を設定し、hostnamed を再起動

```
nmcli general hostname `XXX-SV`
systemctl restart systemd-hostnamed
```

★hostsファイルの確認
`cat /etc/hosts`

#**3.基本パッケージのインストール**

yum アップデート
`yum -y update`

#**4.不要サービスの停止**

```
systemctl disable abrt-ccpp
systemctl disable abrt-oops
systemctl disable abrt-vmcore
systemctl disable abrt-xorg
systemctl disable abrtd
systemctl disable avahi-daemon
systemctl disable mdmonitor
systemctl disable dmraid-activation
```

#**5.SELinux無効設定**

`vim /etc/sysconfig/selinux`

```
SELINUX=enforcing
↓
SELINUX=disabled
```
OSを再起動
`shutdown -r now`


#**6.firewalld設定**

初期設定では publicゾーンに ssh のみ許可
`firewall-cmd --list-all`

```
public (default, active)
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
```

下記を許可する。

```
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --add-port=161/tcp --permanent
firewall-cmd --add-port=162/tcp --permanent
```

設定の読み込み
`firewall-cmd --reload`

★設定を確認

`firewall-cmd --list-ports --zone=public`

-----(以下のような表示があればOK)-----
443/tcp 80/tcp etc..

#**7.Chrony設定 (NTP)**

初回は手動で時間合わせ
`ntpdate ntp.nict.jp`

コンフィグをバックアップ
`mv -i /etc/chrony.conf /etc/chrony.conf.org`

コンフィグを作成
`vim /etc/chrony.conf`

```
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
```

起動
`systemctl restart chronyd`

自動起動設定
`systemctl enable chronyd`
`systemctl status`

動確
chronyc sources -v

★確認 
date
現在時刻が表示されてば問題なし。


#8.yum リポジトリの追加
MySQL
`rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm`

EPEL(リポジトリ拡張用)
`yum -y install epel-release`
`yum -y update`

Remi(php7.2用)
`rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm`
`rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi`

★確認　下記コマンドでリポジトリ追加されていれば問題なし
`yum repolist all`


#9.各種ミドルウェアインストール

Apache httpd（2.4.6-80）

```
yum -y install httpd-devel
yum -y install mod_ssl
```

PHP（7.2.5-1）

```
yum -y install php
yum -y install php-devel
yum -y install php-pdo
yum -y install php-mysqlnd
yum -y install php-mbstring
yum -y install php-gd
yum -y install php-pear
yum -y install php-pecl-apc-devel
yum -y install zlib-devel
```
MySQL（8.0.11-1）

```
yum -y install mysql-community-devel
yum -y install mysql-community-server
```

#10.Apache httpd の設定
不要なコンフィグの削除

```
mv -i /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.conf.org
mv -i /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/userdir.conf.org
mv -i /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
```

コンフィグバックアップ

`mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org`

コンフィグ作成

`vim /etc/httpd/conf/httpd.conf`

httpdの起動
`systemctl start httpd`

自動起動設定
`systemctl enable httpd`

★確認　httpdが起動しているか
`service httpd status`
or
`systemctl status httpd`

#11.証明書作成(HTTPS)
一旦なしの方向で

#12.Apache HTTPS（SSL/TLS）の設定
一旦なしの方向で

#13.PHPの設定

エラーログの出力先を作成

```
mkdir /var/log/php
chown apache /var/log/php
chmod 755 /var/log/php
```

PHPの設定
`vim /etc/php.ini`

```
expose_php = On
↓
expose_php = Off

;date.timezone =
↓
date.timezone = 'Asia/Tokyo'

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
↓
error_reporting = E_ALL & ~E_NOTICE

;error_log = php_errors.log
↓
error_log = "/var/log/php/php_errors.log"
```

★確認方法
プロンプトで
`php -v`

#14.MySQL 8.0 の設定

ログの出力先を作成

```
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
```

コンフィグバックアップ

`mv -i /etc/my.cnf /etc/my.cnf.org`

コンフィグを作成
`vim /etc/my.cnf`

```
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1.0

log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

log_timestamps=SYSTEM
skip-character-set-client-handshake
character-set-server=utf8mb4
explicit_defaults_for_timestamp=ON
```

起動
`systemctl start mysqld`

自動起動設定
`systemctl enable mysqld`

★確認方法
mysqlログイン
プロセス確認

#15.ログローテーション設定
設定ファイルのバックアップ用ディレクトリを作成
`mkdir /etc/logrotate.off`

Apacheログのローテーション設定
設定ファイルをバックアップ
`mv -i /etc/logrotate.d/httpd /etc/logrotate.off/`

設定ファイルを作成
`vim /etc/logrotate.d/httpd`

```
"/var/log/httpd/*log /var/log/php/*log {
daily
missingok
dateext
rotate 60
create 644 apache apache
sharedscripts
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}"
```

★確認方法
プロセスチェック

`logrotate -dv /etc/logrotate.d/httpd`

```
reading config file /etc/logrotate.d/httpd

Handling 1 logs

rotating pattern: /var/log/httpd/*log /var/log/php/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
```

#16.MySQLログのローテーション設定

設定ファイルをバックアップ
`mv -i /etc/logrotate.d/mysql /etc/logrotate.off/`

設定ファイルを作成
`vim /etc/logrotate.d/mysql`

```
/var/log/mysql/*log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf ping &>/dev/null
then
/usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs
fi
endscript
}
```
MySQL の root ユーザのパスワードファイルを作成
`vim /root/.my.cnf`

```
[mysqladmin]
user=root
password="＜パスワード＞"
```

パスワードを書いているのでパーミッションを変更

```
chown root:root /root/.my.cnf
chmod 600 /root/.my.cnf
```

★確認
`logrotate -dv /etc/logrotate.d/mysql`


```
"reading config file /etc/logrotate.d/mysql
 
Handling 1 logs
 
rotating pattern: /var/log/mysql/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
```
プロセスチェック

#17.自動起動の設定確認

`systemctl list-unit-files | grep -e httpd -e mysqld -e memcached -e chronyd`

```
chronyd.service enabled
httpd.service enabled
memcached.service enabled
memcached@.service disabled
mysqld.service enabled
mysqld@.service disabled
```

OSを再起動して、各種サービスが起動している事を確認
`shutdown -r now`
`ps aux | grep -e httpd -e mysqld -e memcached -e chronyd`


以上！