この記事では、UbuntuのNginxにphpMyAdminをインストールする方法をご紹介します。
以前、Ubuntu上でWordPressを動かす記事を書きました。
phpMyAdminは、こういったWordPressなどのWebアプリケーションのデータベースを、Webブラウザ上から操作することができるアプリケーションです。
MySQLのコマンドが苦手でも直感的に操作することが可能です。
インストール
phpMyAdminと関連するパッケージをインストールします。
$ sudo apt install phpmyadmin php-curl php-gd php-json php-mbstring php-zip
Webサーバーのタイプを選択します。今回はNginxを使用するのでチェックはせずに『Ok』を選択します。
『Yes』を選択して先に進みます。
phpmyadminユーザーのパスワードを設定します。
確認のパスワードを入力します。
データベースのrootパスワードを入力します。
インストールが終わったら以下のコマンドでphpmyadminがインストールされたことを確認します。
$ whereis phpmyadmin phpmyadmin: /etc/phpmyadmin /usr/share/phpmyadmin
セットアップ
phpMyAdminの本体の所有者をNginxからアクセス可能なユーザーとグループに変更します。
$ chown -R www-data:www-data /usr/share/phpmyadmin
ドキュメントルートにシンボリックリンクを設置します。
$ sudo ln -s /usr/share/phpmyadmin /var/www/html/
Nginxのデフォルト設定を変更します。
$ sudo vi /etc/nginx/sites-available/default
設定を開くと以下のような設定の記載された箇所があります。『index.php』とPHPに関する記述を追記します。
# Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ { fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.4-fpm.sock; include fastcgi_params; }
サービスをリロードします。
$ sudo systemctl reload nginx
$ sudo systemctl reload php7.4-fpm
<your IP address or domain>の部分を自分の環境に置き換えてブラウザでアクセスします。phpMyAdminのログインページが表示されればOKです。
独自ドメインでHTTPSに対応させる
ここからは少し応用編です。現在のままでも使用できますが、phpMyAdminもディレクトリ区切りではなく、独自ドメインでアクセス可能にすることができます。
Nginxの設定ファイルを新規作成します。
$ vi /etc/nginx/sites-available/<config name>
<your ~>の部分は自分の環境に置き換えてください。
server { listen 80; server_name <your domain>; root <your document root>; access_log /var/log/nginx/<your domain>-access.log; error_log /var/log/nginx/<your domain>-error.log; location / { index index.html index.htm; } }
シンボリックリンクを貼って設定を有効化します。
$ sudo ln -s /etc/nginx/sites-available/<config name>e /etc/nginx/sites -enabled/
Nginxを再起動して一度設定を反映します。
$ sudo systemctl reload nginx
$ sudo systemctl reload php7.4-fpm
次にSSL証明書を作成します。SSL証明書の基本的な作成手順は以下の記事をご確認ください。
証明書を作成するコマンドを実行します。
$ sudo /usr/local/bin/lego --accept-tos \ --path "/etc/lego" \ --http \ --http.webroot "<your document root>" \ --domains "<your domain>" \ --email "<your email address>" \ run
作成したSSL署名書があるか確認します。
$ sudo ls /etc/lego/certificates
問題なく終わったら、以下のコマンドで先程作成した設定ファイルを開きます。
$ sudo vi /etc/nginx/sites-available/<config name>
server { listen 80; server_name <your domain>; root <your document root>; index index.html; access_log /var/log/nginx/<your domain>-access.log; error_log /var/log/nginx/<your domain>-error.log; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name <your domain>; root <your document root>; access_log /var/log/nginx/<your domain>-access.log; error_log /var/log/nginx/<your domain>e-error.log; location / { index index.php index.html index.htm; } location ~ \.(png|jpg|gif|ico|css|js)$ { index index.html; break; } location ~ \.php$ { fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.4-fpm.sock; include fastcgi_params; } ssl_certificate /etc/lego/certificates/<your domain>.crt; ssl_certificate_key /etc/lego/certificates/<your domain>.key; }
設定ファイルに間違いがないか確認します。
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
問題なければサービスをリロードして反映します。
$ sudo systemctl reload nginx
$ sudo systemctl reload php7.4-fpm
これで作業は完了です。自分で設定したドメインにブラウザでアクセスし、phpMyAdminが表示されるか確認しましょう。
初期のユーザーは『phpmyadmin』で、インストール時に設定したパスワードです。