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

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

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


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


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

שלב 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 כאן הוא להודיע לאפאצ'י שמעכשיו עליו לקרוא הגדרות נוספות מקבצים ששוכנים ב-/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

כעת צור את קובץ התסריט של 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

10. לאחר שהקבצים נוצרו, הקצה הרשאות ביצור והעתק אותם לתיקיית הרצת קבצים במערכת $PATH כדי להפוך אותם לזמינים ברחבי המערכת.
$ sudo chmod +x a2ensite a2dissite $ sudo cp a2ensite a2dissite /usr/local/bin/

שלב 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>

ההצהרות החשובות ביותר כאן הם ההנחיות Port ו־ServerName המפנים את אפאצ'י לפתוח חיבור רשת בפורט 80 ולהפנות את כל השאילתות עם שם localhost לשרת קבצים הנמצאים בנתיב /srv/http/.
12. לאחר שנוצר קובץ localhost, הפעל אותו ואז הפעל מחדש את קופסת httpd להצגת השינויים.
$ sudo a2ensite localhost $ sudo systemctl restart httpd

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

שלב 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

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>

בנוסף להוראות 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

$ sudo chmod +x apache_gen_ssl
אם ברצונך שהתסריט יהיה זמין בכל המערכת, העתק אותו לנתיב $PATH הניתן להרצה.
$ sudo cp /apache_gen_ssl /usr/local/bin/
18. כעת הפק את אישורי ה־שרת וה־מפתחות שלך על ידי הרצת התסריט. ספק את האפשרויות ה־SSL שלך ואל תשכח את שם האישור וה־שם המשותף שצריך להתאים לדומיין הרשמי שלך (FQDN).
$ sudo ./apache_gen_ssl


לאחר שנוצרו האישורים והמפתחות, אל תשכח לשנות את הגדרות ה־SSL Virtual Host להתאמת השם של תעודת ה־SSL הזו.
19. השלב האחרון הוא להפעיל מחדש את ה־SSL Virtual Host החדש ולאתחל מחדש את השרת כדי ליישם את התצורות.
$ sudo a2ensite localhost-ssl $ sudo systemctl restart httpd

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

שלב 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

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

22. כדי לאמת את ההגדרה, יש ליצור קובץ PHP בשם info.php ב־DocumnetRoot (/srv/http/), לאחר מכן לאתחל את Apache ולכוון את הדפדפן שלך לקובץ info.php: https://localhost/info.php.
<?php phpinfo(); ?>
$ sudo systemctl restart httpd

זהו! אם הכול נראה כמו בתמונה למעלה, עכשיו יש לך את שפת התסריט הדינמית של 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

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

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>

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

27. אם, לאחר התחברותך ל- PhpMyAdmin, אתה רואה שגיאת תחתית הנוגעת ל- blowfish_secret, פתח וערוך את קובץ התצורה /etc/webapps/phpmyadmin/config.inc.php והכנס מחרוזת רנדומלית דומה לאחת בהצהרת הבאה, ואז רענן את הדף.
$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

שלב 9: אפשר מערכת LAMP בצורה מורחבת
28. אם ברצונך שמערכת ה-LAMP תופעל באופן אוטומטי לאחר התאום מחדש של המערכת, הריץ את הפקודות הבאות.
$ sudo systemctl enable httpd mysqld

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