התקנת LAMP (לינוקס, אפאצ'י, MySQL/MariaDB ו-PHP/PhpMyAdmin) ב- Arch Linux

Arch Linux מספק סביבת מערכת גמישה וחדשנית והוא פתרון מתאים ביותר לפיתוח יישומי רשת על מערכות לא קריטיות קטנות, מאחר שהוא מקור פתוח מלא ומספק את הגרסאות העדכניות ביותר של ליבות ותוכנות רשת לשרתים ומסדי נתונים.

Install LAMP in Arch Linux

המטרה העיקרית של מדריך זה היא להדריך אותך צעד אחר צעד בהוראות מלאות שבסופן יובילו להתקנה של אחת מהקומבינציות התוכנה הנמצאות בשימוש הרחב ביותר בפיתוח האינטרנט: LAMP (Linux, Apache, MySQL/MariaDB, ו-PHP/PhpMyAdmin ) והוא יציג לפניך כמה תכונות מעניינות (סקריפטים מהירים ומלוכלכים של Bash) שאינן קיימות במערכת Arch Linux, אך יכולות לקל על העבודה ביצירת מארחים וירטואליים מרובים, ליצור תעודות SSL ו-מפתחות הנדרשים לפעולות HTTS מאובטחות.

דרישות

  1. תהליך התקנה של Arch Linux קודם – דלג על החלק האחרון עם DHCP.
  2. התקנה קודמת של LEMP ב-Arch Linux – רק החלק שבו מוגדרת כתובת IP סטטית וגישה מרחוק באמצעות SSH.

צעד 1: התקן תוכנה בסיסית LAMP

1. לאחר התקנה מינימלית של מערכת עם כתובת IP סטטית וגישה מרחוק למערכת באמצעות SSH, שדרג את תיבת ה-Arch Linux שלך באמצעות הכלי pacman.

$ sudo pacman -Syu

2. כאשר תהליך השדרוג מסתיים, התקן את LAMP מחלקים, התחל בהתקנת שרת האינטרנט Apache והפעל/וודא כי תהליך השרת של כל המערכת עובד.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

3. התקן את PHP – שפת סקריפטים דינמית בצד השרת ואת מודול ה- Apache שלה.

$ sudo pacman -S php php-apache

4. בשלב האחרון, התקן את מסד הנתונים MySQL, בחר בפיצ'ר המשולב 1 (MariaDB) של מסד הנתונים הקהילתי, ואז הפעל ובדוק את מצב תהליך השרת.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld
Install MySQL Database
Start MySQL Database

כעת יש לך את התוכנה הבסיסית LAMP מותקנת ומופעלת עם הגדרות ברירת מחדל עד עכשיו.

שלב 2: שיפור מסד הנתונים של MySQL

5. השלב הבא הוא לאבטח את מסד נתוני MySQL על ידי הגדרת סיסמה עבור חשבון ה-"root", הסרת חשבונות משתמשים אנונימיים, הסרת מסד הנתונים לבדיקה והתירה על כניסה מרחוק עבור המשתמש "root" (לחץ על [Enter] בשביל סיסמת בית של חשבון root, וענה ב כן על כל השאלות הקשורות לאבטחה).

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

6. אמת את התקנת מסד הנתונים של MySQL על ידי הרצת הפקודה הבאה ולאחר מכן צא מהמסד עם quit או ביטוי exit.

$ mysql -u root -p
Verify MySQL Database Connectivity

שלב 3: שינוי קובץ הגדרות העיקרי של ה- Apache

7. ההגדרות הבאות הן ברובן קשורות ל- Apache שרת האינטרנט כדי לספק ממשק דינמי עבור אירוח וירטואלי עם שפת הסקריפטים PHP, מארחים וירטואליים SSL או לא-SSL וניתן לבצע את השינויים על ידי שינויי קובץ השירות httpd.

פתח תחילה את קובץ ההגדרות הראשי של Apache עם עורך טקסט המועדף עליך.

$ sudo nano /etc/httpd/conf/httpd.conf

בתחתית הקובץ, הוסף את השורות הבאות.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

התפקיד של ההצהרות Include כאן הוא להודיע לאפאצ'י שמעכשיו עליו לקרוא הגדרות נוספות מקבצים ששוכנים ב-/etc/httpd/conf/sites-enabled/ (עבור אירוח וירטואלי) ו-/etc/httpd/conf/mods-enabled/ (עבור מודולי שרת מופעל) בנתיבי המערכת שמסתיימים בסיומת .conf.

8. לאחר שאפאצ'י הורה בשני ההוראות אלו, צור את התיקיות המערכת הדרושות באמצעות הפקודות הבאות.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

הנתיב sites-available מכיל את כל קבצי ההגדרות של שרתים וירטואליים שלא הופעלו באפאצ'י, אך הסקריפט הבא ב-Bash ישתמש בתיקיה זו כדי לקשר ולאפשר את אתרי האינטרנט שנמצאים שם.

שלב 4: צור את פקודות האפאצ'י a2ensite ו-a2dissite

9. עכשיו הגיע הזמן ליצור את סקריפטי האפאצ'י a2ensite ו-a2dissite שישמשו כפקודות לאפשר או לבטל קובץ הגדרות שרת וירטואלי. הקלד את הפקודת cd כדי לחזור לנתיב המשתמש הביתי שלך וצור את התסריט ה-Bash שלך a2eniste ו-a2dissite באמצעות העורך האהוב עליך.

$ sudo nano a2ensite

הוסף את התוכן הבא בקובץ זה.

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

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/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 Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi
Create a2eniste Apache Script

כעת צור את קובץ התסריט של a2dissite.

$ sudo nano a2dissite

הוסף את התוכן הבא.

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

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!\nsudo systemctl restart httpd"
exit 0
fi
fi
Create a2dissite Apache Script

10. לאחר שהקבצים נוצרו, הקצה הרשאות ביצור והעתק אותם לתיקיית הרצת קבצים במערכת $PATH כדי להפוך אותם לזמינים ברחבי המערכת.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Set Execute Permissions

שלב 5: צור שרתים וירטואליים באפאצ'י

11. קובץ הקונפיגורציה המוגדר כברירת מחדל עבור שרת הרשת Apache ב-Arch Linux נמצא בתוך קובץ httpd-vhosts.conf שנמצא בנתיב /etc/httpd/conf/extra/, אך אם יש לך מערכת שמשתמשת בהרבה Virtual Hosts, זה יכול להיות מאוד קשה לעקוב אחר מיון האתרים שפעילים או לא. אם ברצונך לנטרל את האתר אתה חייב להעיף הערות או למחוק את כל ההוראות שלו וכך יש לבצע משימה מורכבת אם המערכת שלך סופקת הרבה אתרים והאתר שלך כולל יותר הגדרות הגדרות תצורה.

שימוש בנתיבים sites-available ו־sites-enabled, מספק פשוטות גדולה בעבודת ה־הפעלה או הנטרול של אתרים ומשמר את כל קבצי ההגדרות של האתרים שלך גם אם הם פעילים או לא.

בשלב הבא אנו הולכים לבנות את ה-Virtual Host הראשון שמכוון ל localhost ברירת המחדל עם נתיב DocumentRoot המוגדר עבור שרת קובצי האתרים (/srv/http.

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

הוסף את ההוראות האפאצ'יות הבאות כאן.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create Virtual Hosts in Apache

ההצהרות החשובות ביותר כאן הם ההנחיות Port ו־ServerName המפנים את אפאצ'י לפתוח חיבור רשת בפורט 80 ולהפנות את כל השאילתות עם שם localhost לשרת קבצים הנמצאים בנתיב /srv/http/.

12. לאחר שנוצר קובץ localhost, הפעל אותו ואז הפעל מחדש את קופסת httpd להצגת השינויים.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

13. כעת הפנה את הדפדפן שלך ל־http://localhost, אם אתה מריץ אותו במערכת Arch או ל־http://Arch_IP אם אתה משתמש במערכת מרחוק.

Browse Apache

שלב 6: אפשר SSL עם אירוח Virtual ב־LAMP

SSL (Secure Sockets Layer) הוא פרוטוקול שנועד להצפנת חיבורי HTTP מעל רשתות או אינטרנט, המאפשר למידע להיעבר דרך ערוץ מאובטח באמצעות מפתחות הצפנה סימטריים/אסימטריים וזמינ ב־Arch Linux על ידי החבילה של OpenSSL.

14. בְּשְקִיפוּת, מודול SSL אינו מאופשר בברירת מחדל בַּ-Apache בְּ-Arch Linux וניתן להפעיל אותו על ידי להסיר את הסימון מ־mod_ssl.so מהמודול הראשי של httpd.conf ומ־קובץ Include httpd-ssl.conf שנמצא בנתיב נוסף של httpd.

אך לצורך פשטות, אנו הולכים ליצור קובץ מודול חדש עבור SSL בְּנתיב mods-enabled ונשאיר את קובץ התצורה הראשי של Apache בלתי נגוע. יש ליצור את הקובץ הבא עבור מודול SSL ולהוסיף את התוכן שלמטה.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

להוסיף את התוכן שלמטה.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Enable SSL with Virtual Hosting

15. עתה יש ליצור קובץ Virtual Host המפנה לאותו שם של localhost אך משתמש בהגדרות שרת SSL הפעם, ולשנות מעט את שמו כדי להזכיר לך שזהו מתצוגת localhost עם SSL.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

להוסיף את התוכן הבא לקובץ זה.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create SSL Virtual Host

בנוסף להוראות Port ו־ServerName, ההוראות החשובות הנוספות כאן הן אלה שמצביעות על קובץ התעודה של SSL ועל קובץ המפתח שעדיין לא נוצרו אז אל תפעיל מחדש את שרת האינטרנט של Apache אחרת תקבל שגיאות.

16. ליצירת קובץ תעודת ה־SSL הדרוש ומפתחות ה־SSL התקן את החבילה OpenSSL באמצעות הפקודה הבאה.

$ sudo pacman -S openssl

17. לאחר מכן צור את קובץ ה-Bash הבא שיצר וישמור באופן אוטומטי את כל אישורי ה־Apache והמפתחות שלך בנתיב המערכת /etc/httpd/conf/ssl/.

$ sudo nano apache_gen_ssl

הוסף את תוכן הקובץ הבא ושמור אותו והפוך אותו לנפלא.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

אם ברצונך שהתסריט יהיה זמין בכל המערכת, העתק אותו לנתיב $PATH הניתן להרצה.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. כעת הפק את אישורי ה־שרת וה־מפתחות שלך על ידי הרצת התסריט. ספק את האפשרויות ה־SSL שלך ואל תשכח את שם האישור וה־שם המשותף שצריך להתאים לדומיין הרשמי שלך (FQDN).

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

לאחר שנוצרו האישורים והמפתחות, אל תשכח לשנות את הגדרות ה־SSL Virtual Host להתאמת השם של תעודת ה־SSL הזו.

19. השלב האחרון הוא להפעיל מחדש את ה־SSL Virtual Host החדש ולאתחל מחדש את השרת כדי ליישם את התצורות.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

זהו! כדי לוודא את זה פתח מוזילה והוסף את כתובת ה־IP של ארך בכתובת האתר באמצעות פרוטוקול HTTPS: https://localhost או https://system_IP.

Browse Apache over SSL

שלב 7: הפעלת PHP על Apache

20. בברירת מחדל, Apache מספק רק תוכן של קבצי HTML סטטיים ב־Arch Linux בלי תמיכה בשפות תסריט דינמיות. כדי להפעיל PHP, פתח תחילה את קובץ הגדרת ה־Apache העיקרי ואפשר את השורה הבאה על ידי הסרת ההערה (LoadModule) הבאה והסרת הערה של ה־php-apache (לא עובד עם mod_mpm_event ב־Arch Linux).

$ sudo nano /etc/httpd/conf/httpd.conf

באמצעות \[Ctrl]+[w] חפש והער את הקובץ שבצעה חיפוש ושנה את השורה הבאה להיראות כך.

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

21. לאחר מכן יש ליצור קובץ חדש עבור מודול PHP בנתיב mods-enabled עם התוכן הבא.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

יש להוסיף בדיוק את התוכן הבא (חובה להשתמש ב־mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf
Enable mod_mpm_prefork Module

22. כדי לאמת את ההגדרה, יש ליצור קובץ PHP בשם info.php ב־DocumnetRoot (/srv/http/), לאחר מכן לאתחל את Apache ולכוון את הדפדפן שלך לקובץ info.php: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

זהו! אם הכול נראה כמו בתמונה למעלה, עכשיו יש לך את שפת התסריט הדינמית של PHP מופעלת ב־Apache ועכשיו אתה יכול לפתח אתרים באמצעות CMS מקור פתוח כמו WordPress לדוגמה.

אם ברצונך לאמת הגדרות תחביר של Apache ולראות רשימת מודולים נטענים מבלי לאתחל את פקודת ה־httpd, יש להריץ את הפקודות הבאות.

$ sudo apachectl configtest
$ sudo apachectl -M

שלב 8: התקנה והגדרת PhpMyAdmin

23. אם אינך מתקשר עם שורת פקודות של MySQL ורוצה גישה רחוקה ופשוטה למסד נתונים של MySQL הניתן דרך ממשק אינטרנט, אז יש להתקין את חבילת PhpMyAdmin במערכת Arch שלך.

$ sudo pacman -S phpmyadmin php-mcrypt

24. לאחר שהחבילות הותקנו, יש לאפשר כמה הרחבות של PHP (mysqli.so, mcrypt.so – לאימות פנימי) וניתן גם להפעיל מודולים נוספים הנחוצים עבור פלטפורמות CMS עתידיות כגון openssl.so, imap.so או iconv.so וכו'.

$ sudo nano /etc/php/php.ini

איתור והפעלת ההרחבות הנ"ל.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so
Install and Configuring PhpMyAdmin

גם, בקובץ זה, חפש ואתר את ההצהרה open_basedir והוסף נתיב מערכת PhpMyAdmin (/etc/webapps/ ו /usr/share/webapps/) כדי לוודא ש- PHP יכול לגשת ולקרוא קבצים תחת התיקיות הללו. (אם גם שינית נתיב שורש למאגר המסמכים של Virtual Hosts מ- /srv/http/ למיקום אחר, עליך להוסיף את הנתיב החדש כאן גם).

Enable open_basedir

25. הדבר האחרון שעליך לעשות כדי לגשת לממשק האינטרנט של PhpMyAdmin הוא להוסיף הצהרות Apache של PhpMyAdmin על Virtual Hosts. כאמצעי בטיחות נבדוק שממשק האינטרנט של PhpMyAdmin יהיה נגיש רק מ localhost (או כתובת IP של המערכת) באמצעות פרוטוקול HTTPS ולא ממארחים וירטואליים שונים אחרים. אז, פתח את קובץ ה-Apache שלך בשם localhost-ssl.conf ובתחתית, לפני ההצהרה האחרונה הוסף את התוכן הבא.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>
Create PhpMyAdmin Virtual Host Configuration

26. לאחר מכן הפעל מחדש את הנפתח של Apache ונחפש דפדפן אל הכתובת הבאה ויש לך גישה לממשק האינטרנט של PhpMyAdmin: https://localhost/phpmyadmin או https://system_IP/phpmyadmin.

Access PhpMyAdmin Web Interface

27. אם, לאחר התחברותך ל- PhpMyAdmin, אתה רואה שגיאת תחתית הנוגעת ל- blowfish_secret, פתח וערוך את קובץ התצורה /etc/webapps/phpmyadmin/config.inc.php והכנס מחרוזת רנדומלית דומה לאחת בהצהרת הבאה, ואז רענן את הדף.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;
Fix blowfish_secret Error

שלב 9: אפשר מערכת LAMP בצורה מורחבת

28. אם ברצונך שמערכת ה-LAMP תופעל באופן אוטומטי לאחר התאום מחדש של המערכת, הריץ את הפקודות הבאות.

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

זהן כמה מההגדרות העיקריות ב־LAMP הנדרשות כדי להמיר מערכת Arch Linux לפלטפורמת אינטרנט פשוטה אך חזקה, מהירה וחסכונית עם תוכנה שרת מתקדמת לסביבות קטנות לא-קריטיות, אך אם תתעקשו ותרצו עדיין להשתמש בה בסביבת ייצור גדולה תישקלו בתודעתכם בסבלנות רבה ותתמצאו בנושא של עדכוני חבילות ותבצעו גיבויים שוטפים של מערכת כדי לשחזר את המערכת במהירות במקרה של כשלים במערכת.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/