חובה להתקין כל רכיב בנפרד ובסדר מסוים. במדריך זה נעבור על כל שלבי התקנת LAMP Stack ב-Debian 10.
לצורך המדריך, אנו מניחים שיש לכם שרת מותקן ומוגדר עם:
- גישה לSSH בתור root
- דביאן 10 או 11
- גישה לטרמינל/שורת פקודה
התקנת שרת אפאצ’י - Apache server
שרת Apache הוא שרת אינטרנט פופולרי בקוד פתוח, שניתן להשתמש בו יחד עם PHP. יש לאפאצ'י תיעוד מעולה באינטרנט, והוא היה בין הראשונים במשך רוב ההיסטוריה של האינטרנט. שרתי אפאצ'י נמצאים בשימוש נרחב בכל סוגי האחסון. על מנת להתחיל, ודאו שמטמון ה-apt שלך מעודכן ב:sudo apt update
sudo apt install apache2
http://<your_server_ip>
מציאת כתובת ה-IP הפומבית של השרת שלכם:ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
נזין את הכתובת בדפדפן, ונראה את דף האינטרנט של Apache המוגדר כברירת מחדל, שנמצא שם למטרות מידע ובדיקה. זה אמור להיראות בערך כך:
אם מופיע דף זה, שרת האינטרנט שלכם מותקן כעת כהלכה ונגיש לאינטרנט.
התקנת MySQL MariaDB
לאחר שהפעלתם את שרת האינטרנט, הגיע הזמן להתקין את MariaDB - שרת מסד נתונים. שרת זה יארגן ויספק גישה למאגרי מידע שבהם האתר שלך יכול לאחסן מידע. על מנת להתקין את MariaDB' נשתמש שוב ב- apt על מנת להתקין את השרת:sudo apt install mariadb-server
גם פקודה זו תציג רשימה של החבילות שיותקנו, יחד עם כמות שטח הדיסק שהן יתפסו. הקלידו Y ולאחר מכן ENTER כדי לאשר ולהמשיך.
בסיום ההתקנה יש להפעיל סקריפט אבטחה שמגיע ביחד עם MySQL, שיסיר כמה ברירות מחדל מסוכנות וינעל את הגישה למערכת מסד הנתונים. הפעילו את הסקריפט דרך הקונסול ופעלו לפי ההוראות על המסך:
sudo mysql_secure_installation
sudo mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.3.15-MariaDB-1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
שימו לב שלא היה צורך לספק סיסמה בכדי להתחבר כמשתמש root. זה עובד מכיוון ששיטת האימות המוגדרת כברירת מחדל עבור המשתמש root של MariaDB היא דרך unix_socket במקום סיסמה. למרות שזה עשוי להיראות כמו בעיית אבטחה בהתחלה, זה הופך את שרת מסד הנתונים למאובטח יותר, מכיוון שהמשתמשים היחידים המורשים להתחבר כמשתמש הבסיס של MariaDB הם משתמשי המערכת עם הרשאות sudo, שמתחברים מהמסוף או דרך אפליקציה הפועלת עם אותן הרשאות.
תפקיד משתמש root הינו ניהולי בלבד, ולכן לא תוכלו לחבר את אפליקציית ה-PHP שלכם.
על מנת להגביר את האבטחה, נגדיר חשבונות משתמש ייעודיים עם הרשאות מתאימות עבור כל מסד נתונים. כדי להדגים הגדרה כזו, ניצור מסד נתונים בשם example_database ומשתמש בשם example_user, ניתן להחליף את השמות הללו בכל שם שתחפצו.
כדי ליצור מסד נתונים חדש, הפעילו את הפקודה הבאה ממסוף MariaDB:
CREATE DATABASE example_database;
כעת ניצור משתמש חדש ונעניק לו הרשאות מלאות במסד הנתונים שיצרנו. הפקודה הבאה מגדירה את הסיסמה של משתמש זה כ-PASSWORD, אך צריך להחליף ערך זה בסיסמה מאובטחת וחזקה:
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
הפקודה תעניק למשתמש example_user הרשאות מלאות על מסד הנתונים example_database, תוך שהיא מונעת ממשתמש זה ליצור או לשנות מסדי נתונים אחרים בשרת.
ניתן לבדוק את ההרשאות כדי להבטיח שהן נשמרות וזמינות ללא צורך בהפעלה מחדש:
FLUSH PRIVILEGES;
לאחר מכן אפשר לצאת מ-MariaDB:
exit
אפשר לבדוק אם למשתמש החדש יש את ההרשאות המתאימות על ידי כניסה נוספת למסוף MariaDB, עם שם המשתמש והסיסמה שהזנו מקודם:
mariadb -u example_user -p
שימו לב: השימוש ב -p בפקודה הזו יבקש מכם את הסיסמה שבחרתם בעת יצירת המשתמש example_user. לאחר הכניסה למסוף MariaDB, אשרו שיש לך גישה למסד הנתונים example_database:
SHOW DATABASES;
יתקבל הפלט הבא:
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
בכדי לצאת מ-MariaDB יש להקיש:
exit
בשלב זה, מערכת מסד הנתונים מוגדרת ואפשר לעבור להתקנת PHP, הרכיב הסופי של שרת LAMP.
התקנת PHP ב-LAMP
PHP היא שפת תכנות להצגת אתרים דינמיים. ביכולתה להריץ סקריפטים, להתחבר לבסיסי הנתונים של MariaDB כדי לקבל ולשלוח מידע משרת האינטרנט ובחזרה ולהציג אותו למשתמש. נשתמש שוב ב-apt על מנת להתקין את PHP, ועוד כמה חבילות שיבטיחו שקוד PHP יוכל לרוץ תחת שרת Apache ולדבר עם מסד הנתונים של MariaDB:sudo apt install php libapache2-mod-php php-mysql
זה אמור להתקין PHP ללא בעיות, אך מיד נוודא שהכל תקין.
ברוב המקרים כדאי לשנות את הגדרות Apache על מנת להנגיש את קובץ index.php תחילה, ולא את index.html. נכון לעכשיו, אם משתמש מבקש ספרייה מהשרת, Apache יחפש תחילה קובץ בשם index.html. אנחנו רוצים להגיד לשרת האינטרנט להעדיף קבצי PHP על פני אחרים, אז יש להגדיר באפאצ'י לחפש קובץ index.php.
כדי לעשות זאת, הקלידו את הפקודה הבאה שתפתח את קובץ dir.conf בעורך טקסט עם הרשאות שורש:
sudo nano /etc/apache2/mods-enabled/dir.conf
הקובץ ייראה כך:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
העבירו את קובץ index.php (מודגש למעלה) למיקום הראשון אחרי DirectoryIndex, כך:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
לסיום יש לשמור את הקובץ. אם אתם משתמשים בננו, אתה יכול לעשות זאת על ידי לחיצה על CTRL + X ולאחר מכן על Y ו-ENTER כדי לאשר.
כעת יש לטעון מחדש את Apache עם:
sudo systemctl reload apache2
ניתן לבדוק את המצב של apache2:
sudo systemctl status apache2
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-07-08 12:58:31 UTC; 8s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 11948 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 11954 (apache2)
Tasks: 6 (limit: 4719)
Memory: 11.5M
CGroup: /system.slice/apache2.service
├─11954 /usr/sbin/apache2 -k start
├─11955 /usr/sbin/apache2 -k start
├─11956 /usr/sbin/apache2 -k start
├─11957 /usr/sbin/apache2 -k start
├─11958 /usr/sbin/apache2 -k start
└─11959 /usr/sbin/apache2 -k start
בשלב זה שרת ה LAMP שלכם מוגדר. כעת ניתן לטפל בשאר ההגדרות, כמו vhosts.