M1 MacにUTMを使ってウェブ開発(LAMP)環境を構築する 【5】(MariaDB11.4・phpMyAdmin5.2)
MariaDB11.4のインストール
このあたりを参考に。
【公式】Installing MariaDB with yum/dnf
MariaDB 11.4 をインストールした
この後のphpMyAdminのセットアップをスムーズに行うために、なるべく以下の通りにした方がいいかな。
- rootパスワードは空で。
- Switch to unix_socket authentication [Y/n] これは"n"で。
phpMyAdmin5.2のインストール
まずはインストールして設定ファイルをごにょごにょ
phpMyAdminはこのページ
How to Install and use phpMyAdmin on Rocky Linux
とりあえずインストールして、virtualhost設定してhosts記入してなど済ませて、設定ファイルをいじる。
# blowfish用に32桁の乱数を作っておく
# ローカルのみでセキュリティー関係なしなら何でもいいから32桁
# セキュアでランダムな32桁はこれで
$ tr -dc 'A-Za-z0-9!@#$%^&*()-_=+<>?' < /dev/urandom | head -c 32
# よくある以下の関数だと32桁以上の文字列が出来ちゃうから文字数を削る必要あるよ
$ openssl rand -base64 32
T9WycDvhuwOWKnhmrTBqeGYnm4YOdyKaVLNi4qAAl/s= # ほら45文字も!!削って32文字にしたら大丈夫!
# とりあえず設定ファイルをコピー&リネームして
$ sudo cp confit.sample.inc.php config.inc.php
# 編集するYO
$ sudo vim config.inc.php
編集する行は
/* blowfish */
$cfg['blowfish_secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ // xxxのところに32文字の文字列
/* ルートユーザーのパスワード無しログイン許可 */
$cfg['Servers'][$i]['AllowNoPassword'] = false; // trueに書き換える
/* ディレクトリ設定 */
/**
* Directories for saving/loading files from server
*/
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['TmpDir'] = '/tmp/'; // ← この行を加える
/* 言語設定 */
// $cfg['DefaultLang'] = 'en'; ←アンコメントして 'ja' に書き換え
これぐらいでいいと思われ。
そしてブラウザからアクセスすると・・・真っ白画面・・・ソースも真っ白・・・
phpインストール時に入れ忘れてたパッケージを入れる
そういえば、phpインストールする時に本体のことしか考えてなかった・・・
足りてないパッケージをインストールしていくぅっ!
多分、以下があれば大丈夫だと思う。
- php-mbstring
- php-xml
- php-xmlrpc
- php-gd
- php-pecl-mcrypt
- php-pecl-mysql
- php-mysqlnd
- php-opcache ← 追加!!
まずは、PHPのバージョン(今回は8.4)と合ったものが入ることを確認
$ sudo dnf info php-mbstring php-xml php-xmlrpc php-gd php-pecl-mcrypt php-pecl-mysql php-mysqlnd
Rocky Linux 9 - BaseOS 2.6 kB/s | 4.1 kB 00:01
Rocky Linux 9 - AppStream 5.9 kB/s | 4.5 kB 00:00
Rocky Linux 9 - CRB 5.0 kB/s | 4.5 kB 00:00
Rocky Linux 9 - Extras 2.6 kB/s | 2.9 kB 00:01
Installed Packages
Name : php-gd
Version : 8.4.2
Release : 1.el9.remi
Architecture : aarch64
Size : 197 k
Source : php-8.4.2-1.el9.remi.src.rpm
Repository : @System
From repo : remi-modular
Summary : A module for PHP applications for using the gd graphics library
URL : http://www.php.net/
License : PHP-3.01
Description : The php-gd package contains a dynamic shared object that will add
: support for using the gd graphics library to PHP.
Name : php-mbstring
Version : 8.4.2
Release : 1.el9.remi
Architecture : aarch64
Size : 1.2 M
Source : php-8.4.2-1.el9.remi.src.rpm
Repository : @System
From repo : remi-modular
Summary : A module for PHP applications which need multi-byte string handling
URL : http://www.php.net/
License : PHP-3.01 AND LGPL-2.1-only AND OLDAP-2.8
Description : The php-mbstring package contains a dynamic shared object that will add
: support for multi-byte string handling to PHP.
Name : php-mysqlnd
Version : 8.4.2
Release : 1.el9.remi
Architecture : aarch64
Size : 532 k
Source : php-8.4.2-1.el9.remi.src.rpm
Repository : @System
From repo : remi-modular
Summary : A module for PHP applications that use MySQL databases
URL : http://www.php.net/
License : PHP-3.01
Description : The php-mysqlnd package contains a dynamic shared object that will add
: MySQL database support to PHP. MySQL is an object-relational database
: management system. PHP is an HTML-embeddable scripting language. If
: you need MySQL support for PHP applications, you will need to install
: this package and the php package.
:
: This package use the MySQL Native Driver
Name : php-pecl-mcrypt
Version : 1.0.7
Release : 2.el9.remi.8.4
Architecture : aarch64
Size : 78 k
Source : php-pecl-mcrypt-1.0.7-2.el9.remi.8.4.src.rpm
Repository : @System
From repo : remi-modular
Summary : Bindings for the libmcrypt library
URL : https://pecl.php.net/package/mcrypt
License : PHP-3.01
Description : Provides bindings for the unmaintained libmcrypt.
:
: Package built for PHP 8.4.
Name : php-pecl-mysql
Version : 1.0.0
Release : 0.26.20210423.ca514c4.el9.remi.8.4
Architecture : aarch64
Size : 83 k
Source : php-pecl-mysql-1.0.0-0.26.20210423.ca514c4.el9.remi.8.4.src.rpm
Repository : @System
From repo : remi-modular
Summary : MySQL database access functions
URL : https://pecl.php.net/package/mysql
License : PHP
Description : This extension provides the mysql family of functions that were provided
: with PHP 3 to 5. These functions have been superseded by MySQLi and PDO_MySQL,
: which continue to be bundled with PHP 7 and newer.
:
: Although it should be possible to use this extension with PHP 7 or 8, you are
: strongly encouraged to port your code to use either MySQLi or PDO_MySQL,
: as this extension is not maintained and is available for historical reasons only.
:
: Package built for PHP 8.4.
Name : php-xml
Version : 8.4.2
Release : 1.el9.remi
Architecture : aarch64
Size : 3.8 M
Source : php-8.4.2-1.el9.remi.src.rpm
Repository : @System
From repo : remi-modular
Summary : A module for PHP applications which use XML
URL : http://www.php.net/
License : PHP-3.01
Description : The php-xml package contains dynamic shared objects which add support
: to PHP for manipulating XML documents using the DOM tree,
: and performing XSL transformations on XML documents.
remiリポジトリを有効化してない場合は有効化して
$ sudo dnf info --enablerepo=remi php-mbstring・・(以下ry
で。
全て8.4用のパッケージになってるので、いざ実行!
$ sudo dnf -y install php-mbstring php-xml php-xmlrpc php-gd php-pecl-mcrypt php-pecl-mysql php-mysqlnd
一応、MariaDBとApacheを再起動して
sudo systemctl restart mariadb
sudo systemctl restart httpd
再度ブラウザからphpMyAdminにアクセスすると・・・出た!
rootでのパスワードなしログインができない!?
phpMyAdminの設定ファイル config.inc.php で
$cfg['Servers'][$i]['AllowNoPassword'] = true;
にしてあるのにrootユーザーでパスワードなしログインが出来ない場合、以下のように進める。
まずはサーバー側でMariaDBにログインして
$ sudo mariadb -u root
MariaDBのrootユーザーの認証方式を確認
> SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
結果のpluginが mysql_native_password になってたらOK。
+------+-----------+-------------+
| user | host | plugin |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+
pluginがunix_socketまたはauth_socketになっている場合、MariaDBはrootのログインをOSユーザーrootに限定しているため、認証方式を変更してやる。
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
認証方式をパスワードにしたら、rootユーザーのパスワードを空に設定して権限をflushする。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
FLUSH PRIVILEGES;
これでOK! rootのパスワードなしログインが可能になる。
一応、MariaDBとApacheを再起動しておく。
sudo systemctl restart mariadb
sudo systemctl restart httpd
ブラウザ側からphpMyAdminにパスワード無しrootでログインして確認。
あといろんな設定などは後でやるとして、あとはユーザー作ってrootのパスワード無しログインをfalseにしたりとちょこちょことやることある。後回し。
後で落ち着いたら現在の開発環境のデータベースをまるっと持ってくる予定。
その他のアプリケーション
Gitのインストール
バージョン確認
$ dnf info git
Last metadata expiration check: 0:31:38 ago on Wed Jan 1 20:51:39 2025.
Available Packages
Name : git
Version : 2.43.5
Release : 2.el9_5
Architecture : aarch64
Size : 50 k
Source : git-2.43.5-2.el9_5.src.rpm
Repository : appstream
Summary : Fast Version Control System
URL : https://git-scm.com/
License : GPLv2
Description : Git is a fast, scalable, distributed revision control system with an
: unusually rich command set that provides both high-level operations
: and full access to internals.
:
: The git rpm installs common set of tools which are usually using with
: small amount of dependencies. To install all git packages, including
: tools for integrating with other SCMs, install the git-all meta-package.
最新が2.47.0。ま、いっか。
前回CentOSでyumでインストールした時はソースコードからmakeしなきゃいけなかったのでdnfエラい。
$ sudo dnf -y install git
$ git -v
git version 2.43.5
完了!
chronyのインストール
なぜか前回はntpにこだわったらしい私。謎。
$ sudo dnf install -y chrony
Last metadata expiration check: 0:39:06 ago on Wed Jan 1 20:51:39 2025.
Package chrony-4.5-3.el9.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
#状態の確認
$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 202.182.111.234.vultruse> 2 8 377 62 +113us[ +55us] +/- 15ms
^- time.cloudflare.com 3 8 377 148 -293us[ -357us] +/- 79ms
^+ v4.cloud.ntp.admtan.jp 2 8 377 131 -3694us[-3756us] +/- 27ms
^- sv1.localdomain1.com 2 8 377 260 +697us[ +625us] +/- 36ms
一番上の * が付いているサーバーが現在採用されているようなんだけど、上記4つのサーバーのうちどれがいいのかChatGPTに聞いてみた。
この`chronyc sources`コマンドの出力から、ChronyがNTPサーバーとどのように同期しているかを評価できます。
### 各列の意味
- **MS**: サーバーの状態を示します。`^` はサーバーとして使用中、`*` は現在の基準サーバーを表します。
- **Name/IP address**: サーバーの名前またはIPアドレス。
- **Stratum**: NTPサーバーの階層を示します。低いほど基準時計に近いです(1が最高)。
- **Poll**: ポーリング間隔(2の累乗秒)。
- **Reach**: 接続成功のビットフィールド(8回の試行結果を示します)。377は成功している状態。
- **LastRx**: 最後に応答があった秒数。
- **Last sample**: サーバーとの時刻差と統計情報。`[ ]`内がフィルタ後の補正値、`+/-`は信頼範囲。
---
### 評価
1. **基準サーバー**
- `^* 202.182.111.234.vultruse>`が現在の基準サーバーです。
- 補正量が`+113us`(マイクロ秒)と小さいため、正確な時刻を提供していることが分かります。
- 信頼範囲(`+/- 15ms`)も狭く、信頼性が高いと評価できます。
2. **他のサーバーの状態**
- `^- time.cloudflare.com`
- 信頼度が基準サーバーより低い(`^-`)ですが、時刻差`-293us`と大きなズレはありません。
- 信頼範囲(`+/- 79ms`)はやや広いです。
- `^+ v4.cloud.ntp.admtan.jp`
- 補助的なサーバー(`^+`)として同期されています。
- 時刻差`-3694us`はやや大きいですが、補正可能な範囲です。
- 信頼範囲(`+/- 27ms`)は適切です。
- `^- sv1.localdomain1.com`
- 信頼性が低く、時刻差`+697us`で補正可能。
- 信頼範囲(`+/- 36ms`)は平均的。
3. **全体の評価**
- Chronyは現在、正確な基準サーバー(202.182.111.234.vultruse>)を選択し、適切に同期しています。
- 他のサーバーも補助的な役割を果たしており、ネットワーク全体の信頼性を高めています。
- 全体的に状態は良好です。
---
### 改善案(必要なら)
- サーバーのリストを確認し、信頼性が低いサーバーを削除して信頼性の高いサーバーを追加するとさらに良い状態になります。
- 必要に応じて、ポーリング間隔を調整して負荷を軽減できます。
ChatGPTマジエラいwww
ということで、ひとまずこれで最低限必要なアプリケーションは揃ったかな。(Nginxどこいったww)
次は苦手なオレオレ証明書関係をやんなきゃね。久しぶりの作業なので知識が薄れちまってる。また勉強し直し・・・頑張ろうw
ディスカッション
コメント一覧
まだ、コメントがありません