このチュートリアルでは、Nginx、MySQL、および PHP8.1 (LEMP) を使用して Ubuntu 22.04 に phpMyAdmin をインストールする方法を説明します。
phpMyAdmin は、PHP で書かれた無料のオープンソースの Web ベースのデータベース管理ツールです。 ユーザーが MySQL または MariaDB データベースを管理するためのグラフィカル Web インターフェイスを提供します。
Download phpMyAdmin on Ubuntu 22.04 Server
phpMyAdmin は Ubuntu 22.04 ソフトウェア リポジトリに含まれていますが、アップストリーム パッケージを使用して最新バージョンをインストールすることをお勧めします。 次のコマンドを実行してダウンロードします。
$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
zip を解凍します。
$ sudo apt install unzip
$ unzip phpMyAdmin-latest-all-languages.zip
Move phpMyadmin to /var/www/
directory.
$ sudo mv phpMyAdmin-5.2.1-all-languages /var/www/phpmyadmin
次に、Web サーバー ユーザー (www-data) をこのディレクトリの所有者にします。
※ Nginx はデフォルトで www-data というユーザーで動作しています。
$ sudo chown -R www-data:www-data /var/www/phpmyadmin
Create a MySGL Database and User for phpMyAdmin
MySQL コンソールにログインします。
$ sudo mysql -u root
次の SQL コマンドを使用して、phpMyAdmin 用の新しいデータベースを作成します。 このチュートリアルでは、データベースに phpmyadmin という名前を付けますが、データベースには任意の名前を使用できます。
mysql> CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
次の SQL コマンドは、phpmyadmin データベース ユーザーを作成してパスワードを設定し、同時に新しいデータベースのすべての権限を新しいユーザーに付与して、後で phpMyAdmin がデータベースに書き込めるようにします。 your_preferred_password を好みのパスワードに置き換えてください
mysql> CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';
mysql> GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost';
権限テーブルをフラッシュし、MariaDB コンソールを終了します。
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
必須および推奨の PHP モジュールをインストール
次のコマンドを実行して、phpMyAdmin が必要または推奨する PHP モジュールをインストールします。
$ sudo apt install php-imagick php-phpseclib php-php-gettext php8.1-common php8.1-mysql php8.1-gd php8.1-imap php8.1-curl php8.1-zip php8.1-xml php8.1-mbstring php8.1-bz2 php8.1-intl php8.1-gmp
phpMyAdmin 用の Nginx サーバー ブロックを作成する
phpMyAdmin Web インターフェイスにアクセスできるようにするには、次のコマンドを実行して Nginx サーバー ブロックを作成する必要があります。
$ sudo vi /etc/nginx/conf.d/phpmyadmin.conf
サブドメイン経由でphpMyAdminにアクセスできるように設定していきます。 次のテキストをファイルに貼り付けます。 pma.example.com を実際のサブドメインに置き換え、そのための DNS A レコードを作成することを忘れないでください。
server {
listen 80;
listen [::]:80;
server_name pma.example.com;
root /var/www/phpmyadmin/;
index index.php index.html index.htm index.nginx-debian.html;
access_log /var/log/nginx/phpmyadmin_access.log;
error_log /var/log/nginx/phpmyadmin_error.log;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/(doc|sql|setup)/ {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
location ~ /\.ht {
deny all;
}
}
phpMyAdmin ファイルは /var/www/phpmyadmin/ ディレクトリにあります。 ファイルを保存して閉じます。 次に、Nginx 構成をテストします。
Nginxの設定をリロードします。
$ sudo nginx -t
$ sudo service nginx reload
or
$ sudo systemctl reload nginx
これで、phpMyAdmin Web インターフェイスにアクセスできるようになります。
http://pma.example.com
ローカル環境ならば、このままログインして使用しても良いかもしれません。
TLS証明書のインストール
phpMyadmin Web インターフェイスを保護するために、無料の Let’s Encrypt TLS 証明書をインストールできます。 以下のように Ubuntu 22.04 ソフトウェア リポジトリから Let’s Encrypt クライアントをインストールします。
$ sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx は、Certbot 用の Nginx プラグインです。 次のコマンドを実行して、TLS 証明書を取得してインストールします。
$ sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d pma.example.com --email you@example.com
–nginx: Nginx 認証システムとインストーラーを使用します。
–同意する: Let’s Encrypt の利用規約に同意します
–redirect: 301 リダイレクトによって HTTPS を強制します。
–hsts: すべての HTTP 応答に Strict-Transport-Security ヘッダーを追加します。
–staple-ocsp: OCSP ステープリングを有効にします。
–must-staple: OCSP Must Staple 拡張機能を証明書に追加します。
-d フラグの後には、カンマで区切られたドメイン名のリストが続きます。 最大 100 個のドメイン名を追加できます。
–email: 登録および回復連絡に使用される電子メール。
EFF(Electronic Frontier Foundation)からのメールを受信するかどうかを尋ねられます。 Y または N を選択すると、TLS 証明書が自動的に取得され、構成されます。
phpMyAdmin セットアップ ウィザードを実行
ブラウザのアドレスバーに次のように入力します。
http://pma.example.com/setup