LAMP環境2

LAMP(Linux、Apache、MySQL、PHP)を構築し、CMS(Content Management System)である、WordPressをインストールするための準備をします

事前準備

CentOS8は最小限のインストールを選択しました。そこで、開発ツールなどの基本的なパッケージをインストールしておきます。

OSのバージョンを確認しておきます
OSのバージョン確認方法
# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

開発ツールのインストール

最初は開発ツールなどの基本的なパッケージをインストールします

# yum -y groupinstall base
# yum -y groupinstall development
# yum -y groupinstall network-tools
インストール済みのパッケージを、最新版にアップデートします。
# yum -y update

Firewallの設定

Apacheサービスを利用するために、ファイアウォールの設定をしておきます。
ファイアウォールの状態を確認します
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
Apacheの使うポートを開けておきます。
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-port=80/tcp
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-port=443/tcp
# firewall-cmd --reload
設定内容を再度確認します
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: cockpit dhcpv6-client http https ssh
  ports: 80/tcp 443/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

SELINUXの設定

ドキュメントルートのコンテキストを調べておきます。なお、この作業はApacheをインストール後に行います!Apacheがインストールされていないと、デフォルトの公開フォルダも、出来ていない様です。
# cd /var/www
# ls -Z
system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
    system_u:object_r:httpd_sys_content_t:s0 html
上記になっている場合は、SELINUXでの設定は必要ありません。なっていない場合はドキュメントルートには下記のコンテキストを設定しておきます
# semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
設定を反映するには下記コマンドを実行します
# restorecon -R -v /var/www/html/
次に、SSL証明書の設置場所にもSELINUXの設定を行う必要があります。
以下のコマンドで確かめます
# cd /etc/pki/tls
# ls -Z
system_u:object_r:cert_t:s0 cert.pem
system_u:object_r:cert_t:s0 certs
system_u:object_r:cert_t:s0 ct_log_list.cnf
system_u:object_r:cert_t:s0 misc
system_u:object_r:cert_t:s0 openssl.cnf
system_u:object_r:cert_t:s0 private
コンテキストが、cert_t となっていれば設定が出来ています。

ここからはLAMPの構築です

Apache httpdのインストール

# yum -y install httpd-devel
# yum -y install mod_ssl
Apacheのバージョン確認
# httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Oct  7 2019 21:42:02

PHPのインストール

# yum -y install php php-devel php-pdo php-mysqlnd php-mbstring php-gd php-pear php-pecl-apc-devel zlib-devel php-json
PHPのバージョン確認
# php-fpm -v
PHP 7.2.11 (fpm-fcgi) (built: Oct  9 2018 15:09:36)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

MySQLのインストール

# yum -y install mysql-devel
# yum -y install mysql-server
MySQLのバージョン確認
# mysql --version
mysql  Ver 8.0.17 for Linux on x86_64 (Source distribution)

Apacheの設定

初めに設定ファイルをバックアップします。
# cd /etc/httpd/conf/
# cp httpd.conf httpd.conf.org
# vi httpd.conf
内容変更部
98行目
ServerName east-mikas.com:80
SSLの設定を行います。
# cd /etc/httpd/conf.d/
# vi ssl.conf
44行目
ServerName east-mikas.com:443
59行目
SSLProtocol -all +TLSv1.1 +TLSv1.2 +TLSv1.3
85行目
SSLCertificateFile /etc/pki/tls/certs/server.crt
93行目
SSLCertificateKeyFile /etc/pki/tls/private/server.key
なお、事前に、認証局から、SSL証明書の発行が必要です。必要なのは、server.crt、server.keyを、本サイト用に発行してもらっている必要が有ります。これらのファイルは、上記のディレクトリに配置しておきます。(認証局は、自分が管理しているCentOS7サーバーであれば、そのサーバーを認証局に出来ます:別途参照)
Apacheを起動します。正常起動を確認したら、自動起動の設定を行います
# systemctl start httpd
# systemctl status httpd
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

PHPの設定

# vi /etc/php.ini
374行
expose_php = On
 ↓
expose_php = Off
460行目
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
 ↓
error_reporting = E_ALL & ~E_NOTICE
825行目
upload_max_filesize = 2M
 ↓
upload_max_filesize = 20M
903行目
;date.timezone =
 ↓
date.timezone = 'Asia/Tokyo'

PHP-FPMの起動

CentOS8ではモジュール版のPHPでななく PHP-FPM が使われるようになりましたので、起動するのはPHP-FPMになります。
# systemctl start php-fpm
# systemctl enable php-fpm

MySQLの設定

MySQLの設定
# cd /etc/my.cnf.d/
# vi mysql-server.cnf
末尾に下記を追加します
slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1.0
 
log_timestamps=SYSTEM
skip-character-set-client-handshake

MySQLの起動

MySQLを起動します
# systemctl start mysqld
# systemctl enable mysqld

MySQLのrootのパスワードを設定

インストールした時点ではMySQLのrootのパスワードが設定されていません。以下でパスワードを設定します
# mysql_secure_installation --use-default
 
(略)
Please set the password for root here.
 
New password: <新しいパスワード>
 
Re-enter new password: <新しいパスワード>
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
(不要なユーザーやDBを削除)
All done!
タイトルとURLをコピーしました