تثبيت LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM و PhpMyAdmin) في نظام Gentoo Linux

جنتو هو واحد من أسرع توزيعات لينكس بسبب توجهه نحو بناء المصادر والذي يوفر من خلال برنامج إدارة البرامج الخاص به – بورتاج – الأدوات اللازمة لبناء منصة تطوير الويب الكاملة التي تعمل بسرعة كبيرة وتتمتع بدرجة عالية من التخصيص.

Install Nginx in Gentoo Linux

سيأخذك هذا الموضوع خطوة بخطوة خلال عملية التثبيت لبناء بيئة ويب كاملة باستخدام ليمب (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin)، وبمساعدة الأعلام USE المقدمة من خلال إدارة حزم بورتاج، التي توفر مجموعة من وظائف الحزم في عملية التجميع – الوحدات أو الإعدادات اللازمة لمنصة الويب، ستقوم بتعديل إعدادات الخادم بشكل كبير.

المتطلبات

  1. تثبيت جنتو بملف تعريف معزز لخادم متجه نحو الإنترنت – دليل تثبيت جنتو.
  2. تكوين الشبكة بعنوان IP ثابت.

الخطوة 1: تثبيت خادم الويب Nginx

١. قبل المضي في عملية تثبيت Nginx، تأكد من أن NIC قد تم تكوينه بعنوان IP ثابت وتأكد من أن مصادر بورتاج ونظامك محدثان.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

٢. بعد انتهاء عملية التحديث، قم بتثبيت Nginx بتحديد الإعدادات والوحدات المفضلة عن طريق إرسال أعلام الاستخدام الخاصة بـ Nginx إلى ملف make.conf في بورتاج. قم أولاً بسرد وحدات التثبيت الافتراضية لـ Nginx عن طريق تشغيل الأمر التالي.

# emerge -pv nginx

للحصول على معلومات تفصيلية حول الوحدات (علامات USE للحزم) استخدم أمر equery.

# equery uses nginx
List All Flag Modules

ثم قم بتثبيت Nginx باستخدام الأمر التالي.

# emerge --ask nginx
Install Nginx Web Server

إذا كنت بحاجة إلى وحدات إضافية (WebDAV، fancyindex، GeoIP، إلخ) بجانب تلك الافتراضية التي سيتم تضمينها مع Nginx، فقم بإضافتها جميعًا في سطر واحد في ملف Portage make.conf باستخدام التوجيه NGINX_MODULES_HTTP، ثم أعد تركيب Nginx باستخدام الوحدات الجديدة.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. بعد اكتمال تثبيت Nginx من خلال Portage، قم بتشغيل خادم http وتحقق منه عن طريق توجيه متصفحك إلى http://localhost.

Verify Nginx Web Server

الخطوة 2: تثبيت PHP

4. لاستخدام لغة PHP للبرمجة الديناميكية مع خادم Nginx، قم بتثبيت مدير عمليات PHP-FastCGI (FPM) عن طريق إضافة fpm وامتدادات PHP الهامة الأخرى في علامات USE لـ Portage وتأكد من إزالة امتداد Apache.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. قبل بدء PHP-FPM، يجب تطبيق بعض التغييرات على ملف تكوين الخدمة. افتح ملف تكوين php-fpm وقم بإجراء التغييرات التالية.

# nano /etc/php/fpm-php5.5/php-fpm.conf

ابحث عن التوجيهات التالية وألغ تعليقها لتبدو هكذا.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. بعد تحرير ملف تكوين PHP-FPM، قم بتغيير أذونات ملف السجل الخاص بـ PHP-FPM وابدأ الخدمة.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

حتى لو تم بدء تشغيل خدمة PHP-FPM، لا يمكن لـ Nginx التواصل مع بوابة PHP، لذا، هناك بعض التغييرات التي يجب القيام بها على ملفات تكوين Nginx.

الخطوة 3: تعديل تكوينات Nginx

7. يوفر ملف تكوين القالب الافتراضي لـ Nginx واجهة تواصل أساسية للمأخذ HTTP فقط لـ localhost. لتغيير هذا السلوك وتمكين الاستضافات الافتراضية، افتح ملف nginx.conf الموجود في المسار /etc/nginx/ وقم بعمل التكوينات التالية.

# nano /etc/nginx/nginx.conf

ابحث عن الكتلة server الأولى التي تتوافق مع localhost وتستمع على عنوان 127.0.0.1 IP وعلق على جميع تعليماتها حتى تبدو كما في اللقطة أدناه.

Disable Basic HTTP Configuration

لا تقم بإغلاق الملف بعد ذلك، وانتقل إلى الأسفل وأضف التعليمة التالية قبل القوسات المنغلقة الأخيرة “ } “.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. بعد ذلك، قم بإنشاء مجلدات sites-enabled و sites-available (للاستضافات الافتراضية غير المستخدمة) وملفات تكوين Nginx لـ localhost على بروتوكولات HTTP و HTTPS.

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

قم بإنشاء ملف التكوين التالي لـ localhost.

# nano /etc/nginx/sites-available/localhost.conf

أضف محتوى الملف التالي.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

لـ localhost بـ SSL، قم بإنشاء ملف تكوين التالي.

# nano /etc/nginx/sites-available/localhost-ssl.conf

أضف محتوى الملف التالي.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. الآن حان وقت إنشاء نصين على المسار التنفيذي للنظام ($PATH متغير القشر)، وتلك النصوص ستعمل كأوامر لتفعيل أو تعطيل الاستضافات الافتراضية لـ Nginx.

قم بإنشاء النص البرمجي Bash الأول بعنوان n2ensite الذي سيقوم بتمكين ملفات تكوين الاستضافات الافتراضية عن طريق إنشاء رابط رمزي بين الاستضافات المحددة من sites-available و sites-enabled.

# nano /usr/local/bin/n2eniste

أضف محتوى الملف التالي.

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. ثم قم بإنشاء البرنامج النصي الثاني المسمى n2dissite، الذي سيقوم بحذف مضيفات الافتراضية النشطة المحددة من مسار Nginx sites-enabled بالمحتوى التالي.

# nano /usr/local/bin/n2dissite

أضف المحتوى التالي.

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. بعد الانتهاء من تحرير النصوص البرمجية في باش، قم بإضافة أذونات التنفيذ وتنشيط مضيفي الافتراضي المحلي – استخدم اسم ملف تكوين المضيف الافتراضي بدون .conf امتداد، ثم أعد تشغيل خدمات Nginx و PHP-FPM لتطبيق التغييرات.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. لاختبار التكوينات، قم بإنشاء ملف معلومات PHP على المسار الجذري الافتراضي للملفات الويب في localhost (/var/www/localhost/htdocs) وقم بتوجيه متصفحك على https://localhost/info.php أو http://localhost/info.php.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

باستخدام ملفات تكوين مضيف الافتراضي المحلي كقوالب وأوامر n2enmod و n2dismod لـ Nginx يمكنك الآن بسهولة إضافة عدد غير محدود من مواقع الويب، ولكن تأكد من وجود مؤشرات DNS صالحة لخادم الويب المتجه إلى الإنترنت أو استخدم إدخالات محليًا على ملف hosts في النظام.

الخطوة 4: تثبيت MySQL/MariaDB + PhpMyAdmin

لتثبيت قاعدة بيانات MySQL وواجهة ويب PhpMyAdmin لـ MySQL، استخدم نفس الإجراء المقدم في تثبيت LAMP على جنتو.

13. في حال رغبت في استخدام MariaDB، البديل الناجح لـ MySQL، استخدم الأوامر التالية للحصول على العلامات USE وتثبيتها.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

في حال واجهتك تعارضٌ بين الحزمة وMySQL، قم بإضافة الأسطر التالية إلى ملف Portage package.accept.keywords.

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

١٤. بعد تثبيت قاعدة بيانات MySQL، قم بتشغيل الخدمة وتأمينها باستخدام mysql_secure_installation (تغيير كلمة مرور الجذر، تعطيل تسجيل الدخول بصلاحيات الجذر خارج localhost، إزالة مستخدم مجهول/قاعدة بيانات اختبار).

# service mysql start
# mysql_secure_installation

١٥. أدخل إلى قاعدة بيانات MySQL باستخدام الأمر mysql -u root -p لاختبار وظائفها واتركها باستخدام الأمر exit.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

١٦. إذا لم تكن جيدًا جدًا في استخدام سطر أوامر MySQL، قم بتثبيت واجهة PhpMyAdmin عبر الويب عن طريق تنفيذ الأوامر التالية.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

١٧. بعد الانتهاء من تثبيت PhpMyAdmin، قم بإنشاء ملف تكوين استنادًا إلى ملف تكوين العينة، غيِّر كلمة السر blowfish_secret بسلسلة عشوائية، ثم قم بإنشاء رابط رمزي من /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ إلى مسار جذور مستندات Virtual Hosts الذي تريد الوصول إلى واجهة PhpMyAdmin عبر الويب.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

١٨. للوصول إلى قاعدة بيانات MySQL من خلال واجهة PhpMyAdmin عبر الويب، افتح متصفحًا واستخدم عنوان URL التالي https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

١٩. الخطوة النهائية هي تمكين الخدمات على مستوى النظام، ليتم تشغيلها تلقائيًا بعد إعادة التشغيل.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

الآن لدينا بيئة حدية الحدود معدة لاستضافة الويب، وإذا كنت تستخدم فقط HTML وJavaScript وصفحات PHP التي تنشأ ديناميكيًا ولا تحتاج إلى مواقع ويب SSL، يجب أن تكون التهيئة أعلاه مرضية بالنسبة لك.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/