GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 18.04 LTSにNginx(LEMP)を使用してphpMyAdminをインストールする方法

このチュートリアルでは、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をインストールするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて。


Ubuntu
  1. Ubuntu18.04にNginxを使用してphpMyAdminをインストールする方法

  2. Ubuntu20.04LTSにNginxを使用してSeafileをインストールする方法

  3. Ubuntu20.04LTSでNginxを使用してModsecurityをデプロイする方法

  1. Ubuntu18.04LTSにNginxを使用してSeafileをインストールする方法

  2. Ubuntu18.04LTSにNginxを使用してGitBucketをインストールする方法

  3. Ubuntu18.04LTSにNginxでosTicketをインストールする方法

  1. Ubuntu20.04LTSにNginxを使用してGitBucketをインストールする方法

  2. Ubuntu16.04にNginx(LEMP)でTYPO38.1をインストールする方法

  3. Ubuntu20.04LTSにLEMPスタックを使用してphpMyAdminをインストールする