このチュートリアルでは、Ubuntu 18.04にNginx、MariaDB、PHP7.2(LEMP)を使用してphpMyAdminをインストールする方法を説明します。 phpMyAdminは、PHPで記述された無料のオープンソースのWebベースのデータベース管理ツールです。これは、ユーザーがMySQLまたはMariaDBデータベースを管理するためのグラフィカルなWebインターフェースを提供します。また、phpMyAdminで2要素認証を有効にする方法についても学習します。
前提条件
このチュートリアルに従うには、Ubuntu18.04OSをローカルコンピューターまたはリモートサーバーで実行する必要があります。 VPS(仮想プライベートサーバー)をお探しの場合は、この特別なリンクをクリックして、DigitalOceanで100ドルの無料クレジットを取得できます。 (新規ユーザーのみ)。すでにDigitalOceanユーザーである場合は、この特別なリンクをクリックして、Vultrで$ 50の無料クレジットを取得できます(新規ユーザーのみ)。
Ubuntu18.04にLEMPスタックがすでにインストールされていることを前提としています。そうでない場合は、次のチュートリアルを確認してください。
- Ubuntu 18.04にLEMPスタック(Nginx、MariaDB、PHP7.2)をインストールする方法
それが邪魔にならないように、phpMyAdminのインストールを始めましょう。
ステップ1:phpMyAdminをダウンロードしてインストールする
phpMyAdminはUbuntu18.04ソフトウェアリポジトリに含まれているため、次のコマンドで簡単にインストールできます。
sudo apt update sudo apt install phpmyadmin
インストール中に、構成するWebサーバーを選択するように求められます。 Nginxはリストにないため、Tabキーを押し、[OK]を押してこの手順をスキップします。
次に、[はい]を選択して新しいデータベースを作成し、dbconfig-common
設定します。
これにより、phpmyadmin
という名前の新しいデータベースユーザーも作成されます 。このユーザーにパスワードを与えます。
完了すると、phpmyadmin
という名前の新しいデータベースが作成されます が作成され、データベースユーザーphpmyadmin
このデータベースを管理するために必要な権限があります。私のように興味があれば、MariaDBにログインして、phpmyadmin
の権限を確認できます。 ユーザーが許可されました。
次のコマンドを使用して、MariaDBサーバーにログインできます。
sudo mysql -u root
次に、権限を確認します。
show grants for [email protected];
出力:
ご覧のとおり、ユーザーphpmyadmin
データベースphpmyadmin
に対するすべての権限を持っています 。これで、次を実行して終了できます:
exit;
ステップ2:Nginxサーバーブロックを作成する
phpMyAdmin Webインターフェイスにアクセスできるようにするには、次のコマンドを実行してNginxサーバーブロックを作成する必要があります。
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
サブドメインを介してphpMyAdminにアクセスできるように構成します。次のテキストをファイルに貼り付けます。 pma.example.com
を置き換えます 実際のサブドメインを使用して、そのAレコードを作成することを忘れないでください。
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/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/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
phpMyAdminファイルは/usr/share/phpmyadmin/
にあります ディレクトリ。ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、
を介してphpMyAdminWebインターフェイスにアクセスできるようになります。pma.example.com
phpMyAdminは最近のバージョンのFirefoxでは機能しないことに注意してください。 Google Chromeを使用して、phpMyAdminWebインターフェイスにアクセスできます。ログインフォームにユーザーの資格情報を入力する前に、HTTPSを有効にしましょう。
ステップ3:TLS証明書のインストール
phpMyadmin Webインターフェースを保護するために、無料のLet’sEncryptTLS証明書をインストールできます。以下のように、Ubuntu 18.04ソフトウェアリポジトリからLet’sEncryptクライアントをインストールします。
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
Certbot用のNginxプラグインです。次のコマンドを実行して、TLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address
説明:
- –nginx :Nginxオーセンティケーターとインストーラーを使用する
- –同意する :Let'sEncryptの利用規約に同意する
- –リダイレクト :301リダイレクトを追加します。
- –hsts :すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。
- –staple-ocsp :OCSPステープリングを有効にします。
- –ステープルで留める必要があります :OCSPMustStaple拡張機能を証明書に追加します。
- -d フラグの後には、コンマで区切られたドメイン名のリストが続きます。最大100個のドメイン名を追加できます。
- –メール :登録と復旧の連絡に使用されるメール。
EFF(Electronic Frontier Foundation)からのメールを受信するかどうかを尋ねられます。 YまたはNを選択すると、TLS証明書が自動的に取得および構成されます。これは、以下のメッセージで示されます。
TLS証明書をテストする
ssllabs.comにアクセスして、TLS証明書と構成をテストします。 A +を取得する必要があります HSTSが有効になっているためです。
ログインエラーのトラブルシューティング
MariaDB rootアカウントでログインすると、次のエラーが表示される場合があります。
#1698 - Access denied for user 'root '@'localhost'
および
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
ユーザーphpmyadmin
でログインした場合 、上記のエラーは表示されません。ただし、ユーザーphpmyadmin
phpmyadmin
の管理にのみ使用できます データベース。エラーの原因は、デフォルトでは、MariDBrootユーザーがmysql_native_password
を使用する代わりに、unix_socketプラグインを介して認証されることです。 プラグイン。この問題を回避するために、別の管理者ユーザーを作成し、新しい管理者ユーザーにすべての権限を付与できます。
コマンドラインからMariaDBサーバーにログインします。
sudo mariadb -u root
パスワード認証を使用して管理者ユーザーを作成します。
create user [email protected] identified by 'your-chosen-password';
すべてのデータベースに対するすべての権限を付与します。
grant all privileges on *.* to [email protected] with grant option;
特権をフラッシュして終了します;
flush privileges; exit;
これで、管理者アカウントを使用してphpMyAminにログインし、すべてのデータベースを管理できます。
別のポートの使用
phpMyAdminを使用していないときにそのポートを閉じてハッキング活動を防止したり、そのポートへのアクセスを許可するIPアドレスを指定したりできるため、デフォルトのポート443の代わりに別のポートを使用すると便利です。設定は非常に簡単です。サーバーブロックファイルを開くだけです。
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
次の2行を見つけます:
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
443を別のポート(たとえば、8443)に変更します。
listen [::]:8443 ssl ipv6only=on; # managed by Certbot listen 8443 ssl; # managed by Certbot
以下のようにhttp2を追加して、HTTP/2プロトコルを有効にすることもできます。
listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot listen 8443 ssl http2; # managed by Certbot
ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、次の方法でphpMyAdminにアクセスできます:
https://pma.example.com:8443
phpMyAdminの最新の安定バージョンをインストールする
Ubuntu 18.04リポジトリには、PHP7.2およびphpMyAdmin4.6.6が付属しています。ブラウザのタイトルバーでphpMyAdminのバージョンを確認できます。
ただし、バージョン4.7.4以降、PHP7.2はphpMyAdminでサポートされています。 PHP7.2でphpMyAdmin4.6.6を使用すると、次の警告メッセージが表示されます。
parameter must be an array or an object that implements countable
互換性の問題を修正するために、この記事の執筆時点で最新の安定バージョンであるphpMyAdmin4.8をインストールできます。 wget
を使用してダウンロードします 。
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip
次にそれを抽出します。
sudo apt install unzip unzip phpMyAdmin-4.8.0.1-all-languages.zip
元のphpMyAdminファイルをバックアップします。
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original
phpMyadmin4.8を/usr/share/phpmyadmin/
に移動します ディレクトリ。
sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin
ベンダー構成ファイルを編集します。
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
次の行を見つけます。
define('CONFIG_DIR', '');
に変更
define('CONFIG_DIR', '/etc/phpmyadmin/');
ファイルを保存して閉じます。次に、tmp
を作成します キャッシュファイルを保存するフォルダ。
sudo mkdir /usr/share/phpmyadmin/tmp
ユーザーの所有権とグループの所有権をwww-data
に変更します 。
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp
これで、Nginxをリロードまたは再起動せずにphpMyAdmin4.8を使用できます。
2要素認証を有効にする
バージョン4.8で追加された機能である2要素認証を有効にすることで、phpMyAdminを強化することもできます。有効にするには、phpMyAdminにログインします。次に、Settings
に移動します ->Two-factor authentication
認証アプリケーション(2FA)を選択します 。
2要素認証の構成をクリックした後 ボタンをクリックすると、QRコードが表示されます。このコードは、スマートフォンの2要素認証アプリでスキャンする必要があります。
Google Authenticatorは人気のある2FAアプリですが、RedHatが開発したオープンソースの2FAアプリであるFreeOTPをお勧めします。 2FAアプリによって生成された認証コードを入力すると、2要素認証が有効になります。ここでログアウトして再度ログインする場合は、ユーザー名とパスワードに加えて認証コードを入力する必要があります。
証明書の自動更新
Let's Encrypt証明書を自動的に更新するには、rootユーザーのcrontabファイルを編集するだけです。
sudo crontab -e
次に、下部に次の行を追加します。
@daily certbot renew --quiet && systemctl reload nginx
--quiet
フラグは標準出力を抑制します。標準エラーを受け取りたい場合は、crontabファイルの先頭に次の行を追加してください。
MAILTO=your-email-address
新しい証明書をクライアントに提示するには、Nginxをリロードする必要があります。
このチュートリアルが、Ubuntu18.04LTSにNginxを使用してphpMyAdminをインストールするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて。