😆

centOS Strem9でApache,PHP,MySQLを設定する

2022/01/08に公開

centOS9の設定をしなければならない機会があり、サーバー全く触ったことがない + リリースされたばかりであまり記事などがないcentOS9だったため、かなり苦戦しました。

自分への備忘録としてまとめておきます。

  • Apache 2.4
  • PHP 7.4
  • MySQL 8.0.22

サーバへの接続

  1. ターミナルを開いてsshで接続する
$ ssh root@IPアドレス

The authenticity of host 'IPアドレス (IPアドレス)' can't be established.
ED25519 key fingerprint is 
SHA256:**********************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  1. yesを打つ

  2. パスワードを入力

root@IPアドレス's password:

Apacheインストール

  1. 提供されているApache httpdを確認する
$ yum info httpd

Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 67.el7.centos.6
Size        : 2.7 M
Repo        : base/7/x86_64
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.
	    
  1. Apache httpd 2.4をインストールする
$ yum -y install httpd
  1. バージョン確認
$httpd -version

Server version: Apache/2.4.6 (CentOS)
Server built:   Oct 19 2017 20:39:16

#PHPインストール

  1. centOSバージョン確認
$ cat /etc/redhat-release

CentOS Stream release 9
  1. バージョンに合わせたepelのインストール
    どれをインストールすればいいかは公式サイトに載っています。
    epel公式サイト
    ※下記はcentOS9の場合
$ yum config-manager --set-enabled crb

$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
  1. インストールできたか確認
$ sudo yum repolist all | grep -i epel

epel                    Extra Packages for Enterprise Linux 9 - x86_64  enabled
epel-debuginfo          Extra Packages for Enterprise Linux 9 - x86_64  disabled
epel-source             Extra Packages for Enterprise Linux 9 - x86_64  disabled
epel-testing            Extra Packages for Enterprise Linux 9 - Testing disabled
epel-testing-debuginfo  Extra Packages for Enterprise Linux 9 - Testing disabled
epel-testing-source     Extra Packages for Enterprise Linux 9 - Testing disabled

リポジトリのstatusがenabledの時は使用できるので何もしなくて良い。disabledの時はインストールされているけど、無効なので有効にする必要がある。

有効にする場合

$ sudo yum-config-manager --enable epel
$ sudo yum repolist epel
  1. remiのインストール
    epelと同様にcentOSのバージョンに合わせる必要がある。
    公式サイト
    ※下記は9の場合
$ yum install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

$ yum config-manager --set-enabled remi
  1. インストールできたか確認
$ sudo yum repolist all | grep -i remi

remi                        Remi's RPM repository for Enterprise Linux  enabled
remi-debuginfo              Remi's RPM repository for Enterprise Linux  disabled
remi-modular                Remi's Modular repository for Enterprise Li enabled
remi-modular-debuginfo      Remi's Modular repository for Enterprise Li disabled
remi-modular-test           Remi's Modular testing repository for Enter disabled
remi-modular-test-debuginfo Remi's Modular testing repository for Enter disabled
remi-safe                   Safe Remi's RPM repository for Enterprise L enabled
remi-safe-debuginfo         Remi's RPM repository for Enterprise Linux  disabled
remi-test                   Remi's test RPM repository for Enterprise L disabled
remi-test-debuginfo         Remi's test RPM repository for Enterprise L disabled
  1. phpインストール
    リスト表示
$ yum module list reset php -y

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name      Stream       Profiles                       Summary                   
php       remi-7.4     common [d], devel, minimal     PHP scripting language    
php       remi-8.0     common [d], devel, minimal     PHP scripting language    
php       remi-8.1     common [d], devel, minimal     PHP scripting language
  1. 6にある中から使いたいphpを有効にする(今回はphp7.4)
$yum module enable php:remi-7.4
  1. phpをインストール
$ yum install php

Installed:
  libsodium-1.0.18-8.el9.x86_64                                                 
  nginx-filesystem-1:1.20.1-9.el9.noarch                                        
  oniguruma5php-6.9.7.1-1.el9.remi.x86_64                                       
  php-7.4.27-1.el9.remi.x86_64                                                  
  php-cli-7.4.27-1.el9.remi.x86_64                                              
  php-common-7.4.27-1.el9.remi.x86_64                                           
  php-fpm-7.4.27-1.el9.remi.x86_64                                              
  php-json-7.4.27-1.el9.remi.x86_64                                             
  php-mbstring-7.4.27-1.el9.remi.x86_64                                         
  php-opcache-7.4.27-1.el9.remi.x86_64                                          
  php-pdo-7.4.27-1.el9.remi.x86_64                                              
  php-sodium-7.4.27-1.el9.remi.x86_64                                           
  php-xml-7.4.27-1.el9.remi.x86_64

Complete!

※途中 [Is this ok [y/N]と聞かれるが全部yで答える

  1. インストールできたか確認
$php -v

PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies

MYSQLインストールと設定

  1. インストール
$ yum -y install mysql

$ yum -y install mysql-server
  1. インストールできたか確認
$ mysqld --version

/usr/libexec/mysqld  Ver 8.0.22 for Linux on x86_64 (Source distribution)
  1. mysqlの起動
$ systemctl start mysqld
  1. 起動の確認
$ systemctl status mysqld

● mysqld.service - MySQL 8.0 database server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor p>
     Active: active (running) since Fri 2022-01-07 11:05:55 JST; 11s ago
   ...

※ターミナルの場合一番下に「lines 1-15/15 (END)」が出てきて入力できなくなるが、「q」を押すと消える
Activeの部分が「active(running)」になっていれば起動している

  1. rootユーザーでログイン
$ mysql -u root
  1. パスワードの変更
mysql> set password for 'root'@'localhost' = '*********';

Query OK, 0 rows affected (0.02 sec)

※password関数はMySQL ver5.6.7時点で廃止されているので使えない

// これはエラーになる
mysql> update user set password=password('********') where user = 'root';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('********') where user = 'root'' at line 1
  1. DBの作成
mysql> create database DB名;
  1. ユーザーの作成
mysql> create user 'ユーザー名'@'localhost' identified with mysql_native_password by 'つけたいパスワード';
  1. ユーザーに権限を付与
mysql> grant all on `データベース名`.* to 'ユーザー名'@'localhost' with grant option;
  1. 変更を反映
mysql> flush privillages;

11.mysqlを閉じる

mysql> exit

Bye
  1. サーバーを停止する
$ systemctl stop mysqld

Discussion