התקנת LAMP על גבי שרת Ubuntu 16.04
LAMP הנה קיצור של Linux, Apache, MySQL, PHP. במאמר זה אלמד אתכם כיצד ניתן להתקין את הרכיבים הנ"ל על גבי שרת Ubuntu 16.04 LTS.
בנוסף אדגים איך מתקינים תעודת אבטחה – SSL Certificate מבית Let's Encrypt בצורה קלה ופשוטה וכן PHPMyadmin לניהול שרת MySQL בצורה קלה ונוחה.
התקנת LAMP הנה בסיס מצויין עבור מערכות CMS כגון WordPress, Joomla או Drupal.
1.התקנת MySQL או MariaDB
נכון לעכשיו נעשה שימוש נרחב בשתי מערכות שונות של Database. הראשונה והקלאסית הינה MySQL Server אשר פותחה על ידי חברת Oracle. השניה היא Fork של המערכת המקורית אשר פותחה על ידי המפתח Monty Widenius שהוא המפתח המקורי של MySQL Server, ושמה MariaDB. במאמר זה אלמד להתקין את 2 המערכות הנ"ל. ניתן להתקין כל אחת מהן בנפרד (ראו סעיפים 1.1 ו 1.2 בהתאמה) אך לא להתקין אותן במקביל.
1.1 התקנת MySQL Server:
לצורך ההתקנה יש לבצע את הפקודה הבאה:
apt-get -y install mysql-server mysql-client
פקודה זו תתקין תמיד את הגרסה האחרונה של MySQL מה Repository של ubuntu.
כעת, לאחר ההתקנה ומטעמי אבטחה נבצע "הקשחה" של שרת ה MySQL, אשר במסגרתה נסיר את משתמש ה anonymous ואת מסד הנתונים test ובנוסף נקבע את חוזק הסיסמה הנדרשת עבור ההתחברות למסד הנתונים. ואת זה נעשה על ידי שימוש בפקודה הבאה:
mysql_secure_installation
לאחר ביצוע הפקודה נזדקק לענות על מספר שאלות על מנת לבצע את ה "הקשחה" :
Securing the MySQL server deployment.
Enter password for user root: <– הכנס את סיסמת ה root הנוכחית
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <– בחר בכן על מנת להפעיל את תוסף שבודק רת רמת חוזק הסיסמה
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <– בחר בכן על מנת להסיר את שם המשתמש האנונימי
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : < לחץ כאן על מנת למנוע ממשתמש ה ROOT להתחבר לשרת מרחוק
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <– y
– Dropping test database…
Success.
– Removing privileges on test database…
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <– y
Success.
All done!
1.2 MariaDB 10
לצורך ההתקנה יש לבצע את הפקודה הבאה:
apt-get -y install mariadb-server mariadb-client
כעת נקבע את סיסמת ה root עבור MariaDB על ידי הפקודה הבאה:
mysql_secure_installation
כעת נשאל מספר שאלות כחלק מתהליך קביעת הסיסמה:
Enter current password for root (enter for none): <– press enter
Set root password? [Y/n] <– y
New password: <– הקלד את הסיסמה הרצויה
Re-enter new password: <– הקלד את הסיסמה החדשה לצורך אימות
Remove anonymous users? [Y/n] <– y
Disallow root login remotely? [Y/n] <– y
Reload privilege tables now? [Y/n] <– y
כעת נבדוק את הסיסמה החדשה ונודא שהיא תקינה:
mysql -u root -p
והכנס את הסיסמה החדשה שהגדרנו בסעיף הקודם. התוצאה אמורה להיות דומה למה שמוצג בתמונה הבאה:
2. התקנת שרת Apache 2.4
Apache 2 נכלל במאגר ההתקנות של Ubuntu ולכן על מנת להתקינו נריץ את הפקודה הבאה:
apt-get -y install apache2
כעת נפתח את הדפדפן ונקליד את כתובת השרת, לדוגמא: http://192.168.0.1 ואנחנו אמורים לקבל מסך שנראה כך:
3. התקנת PHP 7:
על מנת להתקין את ה PHP נקליד את הפקודה הבאה:
apt-get -y install php7.0 libapache2-mod-php7.0
וכעת, על מנת שהשינויים יכנסו לתורף יש לאתחל את ה Apache על ידי הפקודה הבאה:
systemctl restart apache2
4. כעת נבדוק את תקינות ה PHP וההגדרות:
הנתיב עבור אתר ברירת המחדל והמסמכים הוא /var/www/html ושם ניצור קובץ php קטן בשם info.php ואז נפנה אליו דרך הדפדפן. דף זה יציג בפנינו מידע רב אודות ה PHP ובין היתר גם את הגרסה שלו.
לצורך יצירת הקובץ הקלידו את הפקודה הבאה:
nano /var/www/html/info.php
והדביקו לתוכו את הטקסט הבא:
<?php phpinfo(); ?>
וניתן לקובץ את ההרשאות המתאימות על מנת שנוכל להריץ אותו:
chown www-data:www-data /var/www/html/info.php
כעת נפתח את הקובץ דרך הדפדפן ואנחנו אמורים לקבל מסך שנראה כך:
כפי שתוכלו לראות, גרסאת ה PHP הנה 7.0.18 ועובדת כראוי דרך שרת ה Apache2 שהתקנו.
בנוסף תוכלו לראות כי MySQL/MariaDB אינם מופיעים ברשימת המודולוים וזאת היות ולא התקנו אותם עדיין.
5. הוספת תמיכה ל MySQL / MariaDB ב PHP:
כדי לקבל תמיכה ב-MySQL ב PHP, יש צורך בהתקנת מודול ה- php7.0-mysql. וכן מומלץ מאוד להתקין מספר מודולי PHP אחרים להם נזדקק עבור יישומים שונים שעתידים לרוץ על השרת. לשם כך נכתוב את הפקודה הבאה:
apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext
ולאחר מכן נריץ את הפקודה הבאה על מנת לאתחל את שרת ה Apache2 ובכדי שהשינויים יכנסו לתוקף:
systemctl restart apache2
6. התקנת Opcache + APCu PHP cache עבור אופטימיזציה ומהירות
כברירת מחדל php 7 מגיע עם opcode cacher עבור ניהול מטמון ואופטימיזציה והוא זמין להתקנה במודול php7.0-opcache. ממולץ מאוד להתקין את המודול עבור שיפור ביצועי השרת.
על מנת להתקין את המודול נכתוב את הפקודה הבאה:
apt-get -y install php7.0-opcache php-apcu
ולאחריה נאתחל את שרת ה Apache על מנת שהשינויים יתבצעו:
systemctl restart apache2
7. הוספת תמיכה ב SLL עבור אתרים מאובטחים
SSL / TLS היא שכבת אבטחה a,pehsv להצפין את החיבור בין דפדפן האינטרנט לשרת. רוב דפדפני האינטרנט מתחילים להציג אתרים כלא מאובטחים כאשר החיבור בין השרת לדפדפן האינטרנט אינו מוצפן באמצעות SSL. בסעיף זה נפעיל את התמיכה ב SLL בשרת שלנו.
לצורך כך נכתוב את הפקודות הבאות:
a2enmod ssl a2ensite default-ssl
ונאתחל את שרת ה Apache על מנת שהשינויים יכנסו לתוקף:
systemctl restart apache2
כעת נפתח את הדפדפן ונקיש את כתובת השרת, לדוגמה: https://192.168.0.1 ואם ההתקנה הצליחה נראה את המסך הבא:
הודעה זו תאשר כי האתר מאובטח אך תציג הזהרה היות ותעודת האבטחה בה נעשה שימוש איננה מזוהה כזו שנוצרה על ידי גורם מוסמך. בסעיף הבא נראה כיצד להנפיק ולהתקין תעודת SLL תקינה.
8. התקנת תעודת אבטחה SSL Certificate חינמית של Let's Encrypt
בשלב זה אלמדכם כיצד ניתן לבקש ולהתקין תעודת אבטחה בחינם של Let's Encrypt. במהלך ההתקנה השרת של Let's Encript ינסה להתחבר אל השרת שלכם על מנת לאמת שאכן השרת והפרטים נכונים. לכן חשוב מאוד שהאתר אותו אתם רוצים לאבטח יהיה מוגדר כראוי וכי הוא יהיה זמין בפורט 80 ובפורט 443 וכן שהדומיין יהיה רשום על שמכם ויצביע לכתובת ה IP הנכונה של השרת.
לצורך ההדגמה אשתמש בהגדרת אתר שלי. כל קבצי ההגדרה יושבים בנתיב /etc/apache2/sites-available כאשר לכל אתר ישנו קובץ קונפיגורציה עם סיומת conf.
זה קובץ האתר שלי:
<VirtualHost *:80> ServerAdmin abcd@*****.***.il ServerName cloud1.klein.org.il ServerAlias cloud1.klein.org.il DocumentRoot /var/www/nextcloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
תוכלו לראות כי כתובת האתר הנה cloud1.klein.org.il.
וכעת, על מנת להתקין את תעודת האבטחה עבור הדומיין הנ"ל יש לרשום את הפקודה הבאה:
letsencrypt --apache -d cloud1.klein.org.il
כעת יחל תהליך הבקשה כפי שתוכלו לראות בחלון הבא:
בשלב ראשון המערכת תשלח בקשה לשרתי Let's Encrypt וזו מצדה תנסה לאמת כי השרת ממנו יצאה הבקשה הוא אכן השרת שלכם ושאינכם מנסים לרמות או לזייף את המערכת. לאחר שתהליך האישור יושלם תתבקשו לבחור האם חובה שאתר יוצג תמיד בצורה מאובטחת או שניתן לגשת גם בפרוטוקול HTTP לא מאובטח. במידה ותבחרו באופציה השניה – Secure יתווספו מספר שורות לקובץ ההגדרה של האתר לצורך הגדרת ההפניה.
במסך הבא תוכלו לראות דוגמה לסיום מוצלח של ההתקנה וכן קישור לבדיקת ההגדרות על שרתי Let's Encrypt.
ועל מנת לוודא שהתעודה אכן תקינה, יש לפתוח את הדפדפן ולהקיש את הכתובת של השרת. לדוגמא: https://cloud1.klein.org.il
בתמונה תוכלו לראות כי האתר מאובטח ותקין.
8.1. הגדרת חידוש אוטומטי עבור תעודת האבטחה של Let's Encrypt
תעודות האבטחה של Let's Encrypt הינן תעודות חינמיות אשר ולידיות (ברות תוקף) לתקופה של 80 יום מרגע הנפקתן. לכן עלינו לחדשן מעת לעת. על מנת לקבוע חידוש אוטומטי אלמדכם להגדיר משימה – ChronJob שירוץ באופן אוטומטי ויחדש אותן.
על מנת להגדיר את ה ChronJob יש לכתוב את הפקודה הבאה:
crontab -e
ואז לפתוח את ה root chrontab בעורך ולהוסיף את השורה הבאה בסוף הקובץ ולשמור אותו:
0 1 * * * /usr/bin/letsencrypt renew &> /dev/null
משימה זו תרוץ בכל יום בשעה 01:00 ותבצע בקשת חידוש. במידה ועל השרת ישנה תעודה שתוקפה מתחת ל-30 ימים היא תחודש באופן אוטומטי.
9. התקנת phpMyAdmin:
phpMyAdmin הנה מערכת מבוססת web המשמשת לניהול ותחזוקה של שרתי MySQL ו MariaDB ועל כן אני ממליץ בחום להתקין אותה.
לצורך ההתקנה נכתוב את הפקודה הבאה:
apt-get -y install phpmyadmin
במהלך ההתקנה נשאל מספר שאלות:
Web server to configure automatically: <– apache2
Configure database for phpmyadmin with dbconfig-common? <– כן
MySQL application password for phpmyadmin: <– apt will create a random password automatically.
9.1 הגדרת גישת root עבור MariaDB
הסעיף הנוכחי הוא בהתייחס לכך שמערכת ה DB המותקנת היא MariaDB. במידה והתקנת MySQL אתה יכול להתעלם משלב זה.
בשלב ראשון יש להתחבר ל MariaDB על ידי הפקודה הבאה:
mysql -u root
כעת ניצור משתמש חדש בשם admin וסיסמה שתבחרו על ידי הפקודה הבאה:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; exit
Leave a Reply