0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle VM VirtualBoxのCentOS Sream_9にLAMP環境を構築する

Posted at

ポートフォワーディングの設定

ブラウザから閲覧できるかを確認するためポートフォワーディングを設定する。
「設定」→「ネットワーク」→「ポートフォワーディング(P)」をクリック

「ホストポート」、「ゲストポート」をHTTP用に共に80を設定する

一般ユーザーからrootユーザーに切り替え

CentOSにログイン。環境構築のため一般ユーザーからrootユーザーに切り替え作業を行う。

# rootユーザーに切り替え
$ su -

:パスワードを入力

ファイアウォールの無効化

  • ファイアウォールの状態確認
$ systemctl status firewalld

# Active: active (running) と表示されていたら起動中
  • ファイアウォールを無効化
# 無効化
$ systemctl stop firewalld

# 状態を再確認。Active: inactive (dead) と表示されていたら止まっている。
$ systemctl status firewalld
  • ファイアウォールの自動起動設定を確認・無効化
# 設定を確認。enabled と表示されていたら、次回起動時に自動起動するので無効化する。
$ systemctl is-enabled firewalld

# 設定を無効化。再度設定確認コマンドを実行し、disabled と表示されていたら、自動起動設定を無効化できています。
$ systemctl disable firewalld

Apacheのインストール

  • インストール
dnf install -y httpd
  • Apacheの起動
# 起動
$ systemctl start httpd

# 状態の確認。Active: active (running) と表示されていたら起動中。
$ systemctl status httpd
  • Apacheの自動起動設定を有効化
# 有効化
$ systemctl enable httpd

# 設定を確認。enabled と表示されていたら、次回起動時に自動起動します。
$ systemctl is-enabled httpd
  • Apacheにアクセス
    http://localhost/ にブラウザでアクセス
    Apacheのデフォルト画面が表示されます

PHPのインストール

  • EPELリポジトリをインストール
    RHELまたはCentOSの次期バージョン向けのEPELパッケージを提供するリポジトリをインストールします。
# 事前にリポジトリの一覧を表示し確認
$ dnf repolist

# リポジトリの詳細情報を一覧表示する
$ dnf repolist -v

# 有効および無効なリポジトリの両方を一覧表示する
$ dnf repolist all
# EPELリポジトリをインストール
# epel-nextは、将来のバージョンのパッケージをテストまたは利用したい場合に使用されることがあり、
特にCentOS Streamなどのローリングリリース向けに役立ちます。

$ dnf -y install epel-release epel-next-release
  • Remiリポジトリをインストール
$ dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

# Remiリポジトリがインストールされてるか確認
$ dnf repolist | grep remi
  • PHP8.4をインストール
# インストール可能なPHPバージョンを確認する
$ dnf module list php

# 特定バージョンのRemiリポジトリを有効化する
$ dnf module reset php
$ dnf module enable php:remi-8.4

# PHPをインストール
$ dnf install php

# PHPが正しくインストールされたかどうか下記コマンドで確認
$ php -v

# この後追加モジュールをインストール(必要に応じて)
dnf install -y php-json php-mbstring php-zip php-gd php-pdo php-mysqlnd php-mysqli

SELinuxの無効化

ブラウザ上でPHPの動作を確認するためSELinuxを無効化する

  • SELinux設定の確認
$ getenforce
# Enforcing と表示されていたら、SELinuxが有効
  • 無効化の設定
$ vim /etc/selinux/config

# 下記のように設定を変更
SELINUX=enforcing
↓
SELINUX=disabled
  • CentOS Sream_9を再起動
$ systemctl reboot

# 再度下記コマンドで設定を確認し、Disabledと表示されたら成功
$ getenforce

MariaDBのインストール

  • MariaDB公式リポジトリをインストール
$ dnf install -y curl
$ curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
  • MariaDBのインストール
$ dnf install -y MariaDB-server MariaDB-client

# バージョンを確認。エラーなく表示されれば成功
$ mariadb --version

# 起動と自動起動設定を有効化
$ systemctl start mariadb
$ systemctl enable mariadb
  • 初期設定するために、セキュリティスクリプトを実行して、rootパスワードの設定や匿名ユーザーの削除などを行います
mariadb-secure-installation

rootパスワードの設定や匿名ユーザーの削除などを行います。下記サイトを参考にさせていただきました。

MariaDBが正常に動作しているか確認
ステータスが「active」と表示されれば、インストールは正常に完了

$ systemctl status mariadb

MariaDBにログイン

現状rootユーザーしかいないので新しくユーザーを追加します

  • まずrootユーザーでMariaDBにログイン
$ mariadb -u root -p
  • 新しいユーザーを追加
# ユーザー名とパスワードは任意で
# ホストは基本的にlocalhostを指定すればOK
$ CREATE USER '新しいユーザー名'@'ホスト' IDENTIFIED BY 'パスワード';
  • ユーザーに権限を付与
$ GRANT ALL PRIVILEGES ON データベース名.* TO '新しいユーザー名'@'ホスト';

# すべてのデータベースに対して全権限を付与する場合は下記のように設定
$ GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
  • 権限のリロード。権限を有効にするため、以下のコマンドを実行
$ FLUSH PRIVILEGES;
  • テスト用DBの作成とサンプルデータの挿入
# テスト用データベースの作成
$ CREATE DATABASE testdb;

# テーブルの作成とサンプルデータの挿入
USE testdb;
CREATE TABLE test_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50)
);
INSERT INTO test_table (name) VALUES ('sample data');

ブラウザ上でDB接続を確認

index.phpをサーバー(デフォルトでは /var/www/html )にアップロードし、下記URLにアクセスしてサンプルデータが表示されれば成功
http://localhost

<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$username = '【新しく追加したユーザー名】';
$password = '【追加したユーザーのパスワード】';

try {
    // PDOオブジェクトを生成
    $pdo = new PDO($dsn, $username, $password);
    
    // エラーモードを例外に設定
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "接続成功<br>";

    // テーブルの中身を取得して表示
    $sql = "SELECT id, name FROM test_table";
    $stmt = $pdo->query($sql);

    if ($stmt->rowCount() > 0) {
        // 結果を出力
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
        }
    } else {
        echo "0 件のレコード";
    }
} catch (PDOException $e) {
    echo "接続失敗: " . $e->getMessage();
}
?>

phpMyAdminのインストール

ついでにMySQLデータベースの接続クライアントツールであるphpMyAdminをインストール。これがあるといろいろ楽なので

  • 必要なパッケージをインストール
$ dnf install -y php-json php-mbstring php-zip php-gd
  • phpMyAdminのインストール
$ dnf --enablerepo=remi install -y phpMyAdmin
  • phpMyAdminのアクセスを許可するため、Apacheの設定を編集
$ vi /etc/httpd/conf.d/phpMyAdmin.conf

# 下記のように編集
Require local
↓
Require all granted

# Apacheの再起動
$ systemctl restart httpd

http://localhost/phpMyAdmin にアクセスしてログインできれば成功

vsftpdのインストール

ついでにFTP接続できるようにします。CentOS Stream 9でFTPサーバーを有効にするには、vsftpdを使用します。

$ dnf install -y vsftpd

# FTPサーバーの起動と自動起動の設定
$ systemctl start vsftpd
$ systemctl enable vsftpd

初期設定を変更する際は /etc/vsftpd/vsftpd.conf を編集
FTP接続に自分はFileZillaを使用しています(自分的にはこれが一番使いやすい)
接続方法は各々で調べてやってみてください。そんなに難しくないはず。

参考文献

CentOS Stream 9 : MariaDB 10.5 : インストール : Server World
CentOS7にLAMP環境を構築する手順書
macOSでMariaDB

色々と参考にさせていただきました。ありがとうございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?