はじめに
2019/09/24 にCentOS8が公開されました。
どのくらい違ってるか、雑にでもインストールして、WebからDB接続まで試してみたときのメモです。
前提
Windows10 Pro 上のHyper-VにCentOS8をインストールします。
CentOS8のISOイメージは取得済みとします。
ソフトウェアの選択は「サーバー」を選択します。
Hyper-Vではまった点
CentOSのisoイメージを指定してVMを起動するも、ブートできない。。
⇒仮想マシンの設定で「セキュアブート」を無効にしたら起動しました。
SELinuxの無効化
/etc/selinux/config の編集
# SELINUX=enforcing
SELINUX=disabled
SELINUXの項目をdisabledにします。
firewalldの無効化
今回は雑な検証のため、firewalldは無効にしておきます。
systemctl stop firewalld`
ロケールを日本に
localectl set-locale LANG=ja_JP.utf8
現在のロケール確認コマンドは
localectl
直接設定ファイルを書きたい場合は
vim /etc/locale.conf
時刻合わせ
CentOS8からntpに代わりchronyが採用されました。
標準パッケージに含まれるので、自分でインストールすることは不要かと思います。
タイムゾーンを東京に
timedatectl set-timezone Asia/Tokyo
現在の日時、タイムゾーンの確認コマンド
[root@localhost ~]# timedatectl
Local time: 木 2019-09-26 12:56:27 JST
Universal time: 木 2019-09-26 03:56:27 UTC
RTC time: 木 2019-09-26 03:56:25
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
chronyの設定ファイルに時刻サーバを追加
# pool 2.centos.pool.ntp.org iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
chornyを再起動して、ソース状況確認
systemctl restart chronyd
[root@localhost ~]# chronyc sourcestats
210 Number of sources = 3
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
ntp1.jst.mfeed.ad.jp 7 7 200 +0.206 5.716 -51us 175us
ntp2.jst.mfeed.ad.jp 7 6 200 +1.069 4.589 +352us 117us
ntp3.jst.mfeed.ad.jp 7 5 200 -0.195 6.270 -90us 175us
パッケージのアップデート
CentOS8からdnfが採用され、今後はdnfになるようなので、慣れる意味でdnfを使います。
※yum XX とうってもdnfに転送されて今まで通り実行は可能です
dnf update
一応EPELリポジトリを追加
dnf install epel-release
phpとmysqlをインストール
dnf install php mysql-server
rootでのSSHログイン禁止
/etc/ssh/sshd_configの編集
# PermitRootLogin yes
PermitRootLogin no
yesの行を無効にし、noを設定します。
sshdの再起動
systemctl restart sshd
SSH接続を鍵認証で行う
sshクライアント側で公開鍵を作成(TeraTerm)
・Teratermのメニュー 設定-SSH鍵生成 を開き、「鍵の種類」はRSAにして「生成」する。
・パスフレーズは今回はなしにします。
・「公開鍵の保存」と「秘密鍵の保存」両方を適当な場所にファイルを保存する
公開鍵をサーバ側に保存
鍵を利用するLinuxユーザでサーバ側にいったんログインします。
ホームディレクトリに.sshディレクトリを作成、パーミッションを700に
mkdir ~/.ssh
chmod 700 ~/.ssh
.ssh内に公開鍵を「authorized_keys」というファイル名で保存します。
そして、こちらのファイルも自分ユーザのみアクセスできる権限にします。
chmod 700 ~/.ssh/authorized_keys
あとはTeratermでログインするときにローカルにだけある秘密鍵ファイルを指定するのみ
パスワード認証の禁止
・/etc/ssh/sshd_configの編集
# PasswordAuthentication yes
PasswordAuthentication no
PasswordAuthenticationをnoに設定し、再起動
systemctl restart sshd
MySQL8の初期設定とphpmyadmin
まず起動します。
systemctl start mysqld
初期化が走るため、少しまたされると大見ます。その後、MySQLのログにrootパスワードが記録されていると思うので確認・・
[root@localhost mysql]# grep 'password' /var/log/mysql/mysqld.log
2019-09-26T04:03:35.656371Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
が、MySQL8では単純な起動だとパスワードなしみたいです。
mysql_secure_installation でパスワード設定
[root@localhost mysql]# mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Yes
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Apacheの起動
systemctl start httpd
phpmyadminの導入
最低限のphp関連モジュールをインストール
dnf install php-pdo php-json php-xml php-mysqlnd php-gd php-mbstring
ドキュメントルートに移動し、phpmyadminのソースを取得
cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
unzip phpMyAdmin-4.9.1-all-languages.zip
mv phpMyAdmin-4.9.1-all-languages myadmin
動作確認
ブラウザで
http://VMのIPアドレス/myadmin
でphpmyadminへログインできるか確認します。