CentOS8でWebサーバー構築

CentOS8が去年の終わりぐらいに出たみたいなので、試しに入れてみました。

CentOS7以前では、パッケージ管理はyumコマンドが使われていましたが、CentOS8ではdnfというコマンドに変わっています。
ただ、ぱっとみ使い方はyumと同じようで、今後はわかりませんが、現状ではyumコマンドも今まで通り使えるようです。

PHPのインストール

とりあえず、PHPと日本語環境、よく使うモジュール類を入れておきます。


# dnf install -y php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd php-json

-vオプションでバージョン確認をしてみます。

# php -v
PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

PHP.iniの設定

/etc/php.iniの設定ファイルを編集して最低限使えるようにします。
#PHPバージョンを表示しない。外部に公開する場合はしておいた方がいい
expose_php = Off

#POST時のデータ最大サイズ。数値はお好みで
post_max_size = 16M
upload_max_filesize = 8M

#メモリ使用上限 通常は128Mになっているけど、post_max_sizeよりは大きい数にすること
#最低でも memory_limit > post_max_size > upload_max_filesize じゃないとバグりますので気を付けよう
memory_limit = 128M

#日本語環境、マルチバイト関連設定
date.timezone = “Asia/Tokyo”
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8

php-fpmをリスタートして設定を有効にします。

# systemctl restart php-fpm
# systemctl restart httpd

動作テスト
phpinfo()を表示してみます。

/var/www/phpinfo.php

<?php
phpinfo();

ブラウザからlocalhost/phpinfo.php を表示してphpinfo()の情報が表示されればとりあえずOK。

SQLサーバー(mariadb)を入れてみる


#dnf install mariadb mariadb-server

設定ファイル /etc/my.cnf の編集
[mysqld]の中に記述、追記する

[mysqld]
character-set-server=utf8

mariadbを起動するして初期設定を行う

# systemctl start mariadb
# mysql_secure_installation
以下略

mysql_secure_installationは初期設定用のスクリプトで昔と変わらないようです。
rootでログインできることを確認。

#mysql -u root -p

とりあえず何でもできるユーザーの作成をしておくとよいかもしれません。
構文は以下の通り
GRANT ALL ON *.* TO adminuser@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

firewallの設定

とりあえずこれでWebサーバーとして最低限動くためのインストールは行いましたが、デフォルトではfirewallが動いているため外部からアクセスできません。
ということで、ファイヤーウォールを設定して外からHTTPを見れるように設定します。

下記コマンドで何のゾーンを使っているか調べます
#firewall-cmd –get-default-zone

何もしていなければpublicになっていると思います。
ポートの開放は以下のコマンドになります。
firewall-cmd –add-service=サービス名 –zone=ゾーン名 –permanent
ゾーン名publicでhttp/httpsを開放する場合は

#firewall-cmd –add-service=http –zone=public –permanent
#firewall-cmd –add-service=https –zone=public –permanent
#firewall-cmd –reload

因みに、PORT番号で指定する場合は
firewall-cmd –add-port=8080/tcp –zone=public –permanent
こんな感じになります。

とりあえず使えるようになったので、再起動時でも起動するようにサービスを有効化しておきます
systemctl enable httpd
systemctl enable php-fpm
systemctl enable mariadb

一応再起動してみて、各サービスが動いていることを確認したら完了かなと思います。
いろいろ細かいことをする場合はSeLinuxの設定、もしくは解除が必要かもしれませんが、こちらも過去のバージョンと方法は変わりません。
/etc/selinux/configを下記のように編集してリブートを行うだけです。
# vi /etc/selinux/config
SELINUX=enforcing
# reboot

まとめ

とりあえず、設定方法に関してはCentOS7と全く変わらないようです。
サーバー系アプリに関してはデフォルトでインストールされる各アプリのバージョンは上がっていますが、基本的な設定方法に変更はないので、一般的な設定をするだけであれば特に差異を気にする必要はなさそうです。
ただ、GUIに関しては結構変わっていて、特にGUIからの設定変更周りはいろいろなくなってしまったものがあるような感じではありました。
デスクトップが、Windows8みたいな糞な作りになったのがいただけませんね…。

タイトルとURLをコピーしました