تثبيت PHPMyAdmin على خادم Nginx

يعتبر PHPMyAdmin وحد من أهم برامج إدارة قواعد البيانات من نوع MySQL فهو رائد في مجاله منذ أن صدر عام 1998! هذا المقال يشرح تثبيت النسخ الأخيرة منه على خادم Nginx.

هذا المقال هو الجزء الثامن من مشروع شرح تثبيت خادم Nginx وتشغيل موقع عليه. للعودة إلى الفهرس، يمكن الضغط هنا.

برنامج PHPMyAdmin مهم جدا لكن من يتعامل مع قواعد البيانات على الخادم مباشرة. هذا البرنامج موجود منذ زمن طويل وهو واحد من أفضل البرامج التي يمكنك أن تستخدمها من أجل التعامل مع قواعد البيانات في الخادم.

للعلم، مستخدم root لا يمكنه تسجيل الدخول عبر PHPMyAdmin وذلك لأسباب أمنية بحته ولن نقوم بتوفير شرح تفعيل دخول root في هذا المقال أو في أي مقال لاحق. يجب عليك دائما رفض وصول root بهذا الشكل حيث انه هذا المستخدم له صلاحيات غير محدودة مما يتسبب في وجود خرق أمني دائم طالما يمكن الوصول له بشكل قانوني أو غير قانوني من خلال إختراق الواجهة على سبيل المثال.

تثبيت البرنامج سهل وبسيط وهو مثل تثبيت أي موقع أو برنامج آخر على الخادم. يمكنك ضبطه ليكون على نطاق خاص به، أو نطاق فرعي أو حتى أن يكون مسار فرعي في موقع ما. في هذا المقال سوف نشرح طريقة تثبيته ليكون في مسار فرعي وسوف نقوم بحمايته من خلال منح الوصول لعناوين IP محددة فقط.

تنزيل PHPMyAdmin

قبل تنزيل الملف، نقوم بإنشاء المسار الذي سوف نقوم بتشغيل البرنامج من خلاله. من ناحيتي سأقوم بتثبيت البرنامج في عنوان الخادم نفسه. حسب إعدادات الخادم في مقال سابق من هذه السلسلة، قمنا بضبط مسار ملفات الخادم إلى التالي:

/usr/share/nginx/html

والآن سوف نقوم بعمل مجلد جديد في هذا المسار ونعطيه أي اسم نريد. من الأفضل عدم استخدام الإسم phpmyadmin خصوصا عندما نقرر عدم منع الوصول لهذا المسار. من ناحيتي سوف استخدم اسم عشوائي:

mkdir /usr/share/nginx/html/ZbpPo8YCZwjB65

يمكن تنزيل البرنامج من موقعه الرسمي:

https://www.phpmyadmin.net

نقوم بالضغط بالزر الأيمن على زر التنزيل Download 5.2.1 ومن ثم نسخ الرابط. لاحظ أن الرقم 5.2.1 يتغير عند إصدار نسخة أحدث.

بعد نسخ الرابط، نقوم بدخول مسار البرنامج ونقوم بتنزيل الملف:

cd /usr/share/nginx/html/ZbpPo8YCZwjB65
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip

بعد ذلك نقوم بإستخراج الملفات ونقلهم إلى المكان الصحيح:

unzip phpMyAdmin-5.2.1-all-languages.zip
rm -rf phpMyAdmin-5.2.1-all-languages.zip
mv phpMyAdmin-5.2.1-all-languages/* .
mv phpMyAdmin-5.2.1-all-languages/.rtlcssrc.json .
rm -rf rm -rf phpMyAdmin-5.2.1-all-languages

ضبط ملف إعدادات الموقع

من المفضل جدا في هذه المرحلة أن نقوم بعمل شهادة ssl للخادم كما فعلنا في الجزء السابع من هذه السلسلة. هذا سوف يمنحنا وصول آمن للبرنامج فيما بعد. للقيام بذلك يمكنك تنفيذ ما شرحناه في المقال السابق وهذه هي الخطوات بشكل مختصر:

certbot certonly --webroot -d linuxarabia-nginx.linuxarabia.co

ومن ثم نقوم بضبط ملف إعدادات الخادم ونحذف الحزء الخاص بالخادم وهو كالتالي:

server {
listen 80;
server_name linuxarabia-nginx.linuxarabia.co;
root /usr/share/nginx/html;
index index.html;
}

ومن ثم نستبدله بالتالي:

server {
listen 80;
server_name linuxarabia-nginx.linuxarabia.co;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name linuxarabia-nginx.linuxarabia.co;

ssl_certificate /etc/letsencrypt/live/linuxarabia-nginx.linuxarabia.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxarabia-nginx.linuxarabia.co/privkey.pem;
ssl_protocols TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

root /usr/share/nginx/html;
index index.php index.html;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php {
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

للمعرفة، المتغير “/run/php/php8.2-fpm.sock” جاء من ملف إعدادات php الإفتراضي باسم www الموجود على المسار /etc/php/8.2/fpm/pool.d/.

يمكن الآن إعادة تشغيل Nginx من أجل تحميل الإعدادات الجديدة.

للتأكد من أن كل شيء يعمل بشكل صحيح، نقوم بزيارة الرابط الذي قمنا بإنشاءه:

https://linuxarabia-nginx.linuxarabia.co/ZbpPo8YCZwjB65

النتيجة يجب أن تكون كالتالي:

تأمين مسار PHPMyAdmin

من أبسط الطرق التي أستخدمها هي توفير وصول من عنوان IP ثابت فقط. هذا يتم من خلال تعديل ملف إعدادات الخادم:

vi /etc/nginx/sites-enables/default

ومن ثم اضافة التالي:

    location ^~ /ZbpPo8YCZwjB65 {
allow 1.2.3.4;
deny all;
location ~ \.php {
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

تذكر أن تقوم بتعديل 1.2.3.4 إلى عنوان IP الخاص بك.

النتيجة يجب أن تكون مشابهة للتالي:

بهذا نكون قد أنهينا تثبيت PHPMyAdmin وقمنا بتأمينه بشكل جيد.