phpMyAdmin یک ابزار مدیریت رایگان و منبع باز (Open Source) برای MySQL و MariaDB است. phpMyAdmin به عنوان یک برنامه وب قابل حمل به زبان PHP نوشته شده است و به یکی از محبوبترین ابزارهای مدیریتی MySQL مخصوصاً در سطح خدمات میزبانی وب تبدیل شده است.
در این آموزش، مراحل نصب phpMyAdmin در Nginx و مراحل ایمنسازی آن را در CentOS 7 شرح داده خواهد شد.
sudo
به سرور وارد شدهاید.phpMyAdmin در مخزن یا Repository پیشفرض در CentOS 7 موجود نیست، پس میبایست از مخازن EPEL استفاده کنیم. برای افزودن مخزن EPEL از دستور زیر استفاده میکنیم.
yum install epel-release
سپس با دستور زیر نصب میکنیم.
yum install phpmyadmin
در وب سرور Nginx با اجرای دستور زیر یک لینک از فایلهای نصب شده phpMyAdmin را به شاخه root وب سرور Nginx خود اضافه میکنیم تا فایلهای phpMyAdmin را بصورت صحیح پیدا و به آنها سرویس دهیم.
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html
و در نهایت سرویسهای Nginx و PHP-FPM را ریستارت میکنیم.
systemctl restart nginx systemctl restart php-fpm
هم اکنون نصب phpMyAdmin به اتمام رسیده است و با استفاده از آدرس زیر در دسترس میباشد.
http://server_domain_or_IP/phpMyAdmin
در مرحله قبل یک لینک از فایلهای نصبی phpMyAdmin به شاخه root وب سرور Nginx خود ایجاد کردیم.
برای تغییر آدرس دسترسی به رابط phpMyAdmin (محیط وب)، دستورات زیر را اجرا میکنیم.
– توجه: در این آموزش از آدرس /my
استفاده میکنیم.
cd /usr/share/nginx/html mv phpMyAdmin my
اگر به آدرس قبلی نصب مراجعه کنیم با خطای 404 مواجه میشویم.
http://server_domain_or_IP/phpMyAdmin
با این حال، رابط phpMyAdmin در مکان جدیدی که برای آن تعیین کردهایم در دسترس میباشد.
http://server_domain_or_IP/my
برای ایجاد یک لایه امنیتی بیشتر، میتوانیم تایید اعتبار یا احراز هویت (Authentication) در Nginx تنظیم کنیم.
برای شروع، یک فایل جهت ذخیره رمز عبور برای تایید اعتبار ایجاد میکنیم.
فایل .htpasswd
را برای این کار ایجاد میکنیم و همچنین نام کاربری (Username) مورد نیاز دلخواه را در دستور زیر وارد میکنیم.
htpasswd -c /etc/nginx/.htpasswd mahancloud
نمونه خروجی:
# htpasswd -c /etc/nginx/.htpasswd mahancloud New password: Re-type new password: Adding password for user mahancloud
الان میبایست یک فایل .htpasswd
شامل نام کاربری و رمز عبور رمزگذاری شده داشته باشیم. بدین ترتیب میتوانیم با دستور زیر بررسی نماییم:
cat /etc/nginx/.htpasswd
نمونه خروجی:
mahancloud:$apr1$vXURQ.rv$f6S86nCX.fKfjbYNTUPzV.
در حال حاضر میبایست کانفیگ Nginx را اصلاح کنیم. برای شروع فایل کانفیگ زیر را با یک ویرایشگر متن باز (مانند nano و vi) میکنیم.
vi /etc/nginx/conf.d/default.conf
در این فایل باید یک بخش location ایجاد کنیم. این موقعیت مکانی که برای رابط phpMyAdmin انتخاب کردهایم را مشخص میکند.
این بخش را در بلاک server و خارج از دیگر بلاکها اضافه میکنیم. ما میتوانیم این بخش را در پایین بخش /
قرار دهیم.
در این بخش، میبایست یک مقداری به نام auth_basic
جهت نمایش پیام تایید اعتبار تعریف نماییم.
سپس باید یه مقدار به نام auth_basic_user_file
جهت معرفی فایلی که برای احراز هویت ایجاد کردهایم نعریف نماییم. با باز شدن رابط phpMyAdmin، وب سرور Nginx از کاربر درخواست ورود جزییات جهت احراز هویت مینماید و پس از بررسی، در صورت صحیح بودن اطلاعات ورودی با مشخصات احراز هویتی رابط وب phpMyAdmin را به کاربر نمایش میدهد.
تغییرات میبایست بصورت زیر باشد.
server { ... location /my { auth_basic "Admin Login"; auth_basic_user_file /etc/nginx/.htpassword; } ... }
فایل را ذخیره و خارج شوید.
جهت اعمال این تغییرات، میبایست وبسرور را ریستارت کنیم.
systemctl restart nginx
در حال حاضر، اگر رابط وب phpMyAdmin را باز کنیم، از شما درخواست نام کاربری و رمز عبوری که به فایل .htpasswd
اضافه کردهایم را میخواهد.
http://server_domain_or_IP/my
پس از ورود موفقیت آمیز و احراز هویت، به صفحه ورود phpMyAdmin وارد خواهید شد.