התקנת LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM ו-PhpMyAdmin) ב-Gentoo Linux

גֶ'נְטוּ היא אחת מההפצות המהירות ביותר של Linux בזכות המיוחדות שלה לבניית המקורות והיכולת שלה לספק על ידי תוכנה הניהול – פורטייג' – כלים מסוימים הנחוצים לבניית פלטפורמת מפתח רשת שלמה שעובדת במהירות רבה ומציעה רמה גבוהה של התאמה אישית.

Install Nginx in Gentoo Linux

נושא זה ייקח אתכם בתהליך התקנה של של מערכת פלטפורמת סביבת רשת שלמה עם LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin), ועם העזרה ב- דגלי השימוש המסופקים על ידי ניהול החבילות של Portage, אשר מציעים קבוצת פונקציות חבילה בתהליך הההרכבה – מודולים או הגדרות הנחוצות לפלטפורמת רשת, יעצבו באופן מוחלט את ההגדרות של השרת.

דרישות

  1. התקנת גנטו עם פרופיל מוגן לשרת המול ברשת – מדריך התקנת גנטו.
  2. רשת מוגדרת עם כתובת IP סטטית.

שלב 1: התקנת שרת האינטרנט Nginx

1. לפני שתנסו להמשיך עם ההתקנה של Nginx, וודאו שה-NIC שלכם הוגדר עם כתובת IP סטטית וודאו שמקורות Portage והמערכת שלכם עדכניים.

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

2. לאחר שנגמר תהליך העדכון, המשיכו בהתקנת Nginx באמצעות בחירת ההגדרות והמודולים המועדפים על ידי פרסום דגלי השימוש של Nginx לקובץ make.conf של Portage. רשמו ראשית את מודולי ההתקנה המוגדרים כברירת מחדל של Nginx על-ידי הרצת הפקודה הבאה.

# emerge -pv nginx

למידע מפורט על מודולים (דגלי שימוש לחבילות) השתמש בפקודת 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. לאחר ש-Portage סיים את תהליך ההתקנה של Nginx, הפעל את שרת ה-HTTP ווודא כי הוא פועל על ידי הפניית הדפדפן שלך לכתובת http://localhost.

Verify Nginx Web Server

שלב 2: התקן את PHP

4. כדי להשתמש בשפת התכנות הדינמית PHP עם שרת ה- Nginx, התקן PHP-FastCGI Process Manager (FPM) על ידי הוספת fpm ותוספות חשובות נוספות של PHP בדגלי השימוש של 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 בסוקט ללוקלהוסט בלבד. כדי לשנות את ההתנהגות הזו ולאפשר מארחים וירטואליים, עליך לפתוח את קובץ התצורה nginx.conf הנמצא בנתיב /etc/nginx/ ולערוך את התצורות הבאות.

# nano /etc/nginx/nginx.conf

מצא את הבלוק הראשון של שרת שמתאים ללוקלהוסט ומאזין לכתובת ה־IP 127.0.0.1 ולהשאיר את כל ההצהרות שלו בפקודת ההערה כפי שמוצג בתמונת המסך למטה.

Disable Basic HTTP Configuration

אל תסגור את הקובץ עדיין ונדוד לתחתית הקובץ והוסף את ההצהרה הבאה לפני הקווים הסופיים לסגירה “ } “.

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

8. לאחר מכן צרו ספריות Nginx וקבצי תצורה (sites-enabled ו־sites-available>) עבור מארחים וירטואליים לא בשימוש עבור לוקלהוסט בפרוטוקולי HTTP ו־HTTPS.

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

צור את קובץ התצורה הבא ללוקלהוסט.

# 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

ללוקלהוסט עם 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, שימחק Virtual Hosts פעילים מספוציפיים מנתינגקס בנתיב 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. לאחר השלמת עריכת תסריטי ה-Bash, הוסיפו להם הרשאות ביצוע והפעילו Virtual Hosts מקומיים – השתמשו בשם קובץ תצורת Virtual Hosts בלי סיומת .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 בנתיב השורש המוגדר כברירת מחדל לקבצי אינטרנט (/var/www/localhost/htdocs) והפנו את הדפדפן שלכם ל- https://localhost/info.php או http://localhost/info.php.

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

על ידי שימוש בקבצי תצורת Virtual Hosts מקומיים וב- n2enmod של Nginx ו- n2dismod תוכלו כעת להוסיף כמה אתרים שתרצו, אך ורק תוודאו שיש לכם עצמאות DNS תקפים לשרת אינטרנטי לעיל או השתמשו ברשומות בקובץ המארחים של המערכת מקומית.

שלב 4: התקנת MySQL/MariaDB + PhpMyAdmin

כדי להתקין מסד נתונים MySQL וממשק אינטרנטי של PhpMyAdmin עבור MySQL, השתמשו באותה הליכות המצוגות ב- התקנת LAMP על Gentoo.

13. במקרה שברצונכם להשתמש ב-MariaDB, חלופת MySQL, השתמשו בפקודות הבאות כדי לקבל USE flags ולהתקין אותו.

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

במקרה שתקבלו התנגשות חבילות עם MySQL הוסיפו את השורות הבאות לקובץ package.accept.keywords של Portage.

# 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

14. לאחר התקנת מסד נתונים של MySQL הפעל את השירות ואבטח אותו באמצעות mysql_secure_installation (שינוי סיסמת root, השבתת כניסת root מחוץ ל-localhost, הסרת משתמש אנונימי/בסיס נתונים שניסיון).

# service mysql start
# mysql_secure_installation

15. היכנס למסד נתונים של MySQL באמצעות הפקודה mysql -u root -p כדי לבדוק את פונקציונאליות הוא וצא עם פקודת exit.

# mysql -u root -p

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

16. אם אינך מתקן איתה מסד נתונים של MySQL, התקן את פני האינטרנט של PhpMyAdmin על ידי ביצוע הפקודות הבאות.

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

17. לאחר סיום ההתקנה של PhpMyAdmin, צור קובץ תצורה על סמך קובץ תצורה דוגמתי, שנה את ה-blowfish_secret passphrase עם מחרוזת אקראית, ואז צור קישור סמלי מ-/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

18. כדי לגשת למסד נתונים של MySQL דרך ממשק האינטרנט של PhpMyAdmin, פתח דפדפן והשתמש בכתובת ה-URL הבאה https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. השלב הסופי הוא להפעיל שירותים ברחבי המערכת, כדי להפעיל אוטומטית לאחר האתחול.

# 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/