המדריך השלם להתקנת LAMP על Ubuntu 16.04

LAMP - TechBlog - תומר קליין

התקנת 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

והכנס את הסיסמה החדשה שהגדרנו בסעיף הקודם. התוצאה אמורה להיות דומה למה שמוצג בתמונה הבאה:

Techblog - MariaDB Login

 

2. התקנת שרת Apache 2.4


Apache 2  נכלל במאגר ההתקנות של Ubuntu ולכן על מנת להתקינו נריץ את הפקודה הבאה:

apt-get -y install apache2

כעת נפתח את הדפדפן ונקליד את כתובת השרת, לדוגמא: http://192.168.0.1 ואנחנו אמורים לקבל מסך שנראה כך:

Apache Ubuntu Welcome Page

 

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

כעת נפתח את הקובץ דרך הדפדפן ואנחנו אמורים לקבל מסך שנראה כך:

Lamp - Php Info Page

כפי שתוכלו לראות, גרסאת ה 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 ואם ההתקנה הצליחה נראה את המסך הבא:

LAMP - Invalid Certificate

הודעה זו תאשר כי האתר מאובטח אך תציג הזהרה היות ותעודת האבטחה בה נעשה שימוש איננה מזוהה כזו שנוצרה על ידי גורם מוסמך. בסעיף הבא נראה כיצד להנפיק ולהתקין תעודת  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

כעת יחל תהליך הבקשה כפי שתוכלו לראות בחלון הבא:

Techblog - Tomer Klein - Request new Certificate

בשלב ראשון המערכת תשלח בקשה לשרתי Let's Encrypt וזו מצדה תנסה לאמת כי השרת ממנו יצאה הבקשה הוא אכן השרת שלכם ושאינכם מנסים לרמות או לזייף את המערכת. לאחר שתהליך האישור יושלם תתבקשו לבחור האם חובה שאתר יוצג תמיד בצורה מאובטחת או שניתן לגשת גם בפרוטוקול HTTP לא מאובטח. במידה ותבחרו באופציה השניה – Secure יתווספו מספר שורות לקובץ ההגדרה של האתר לצורך הגדרת ההפניה.

במסך הבא תוכלו לראות דוגמה לסיום מוצלח של ההתקנה וכן קישור לבדיקת ההגדרות על שרתי Let's Encrypt.

Lets Encript Request Completed

ועל מנת לוודא שהתעודה אכן תקינה, יש לפתוח את הדפדפן ולהקיש את הכתובת של השרת. לדוגמא: 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

 

phpmyadmin - control panel
phpmyadmin – control panel
phpmyadmin - login page
phpmyadmin – login page

5 Trackbacks / Pingbacks

  1. Lychee - מערכת ניהול תמונות - Tech Blog
  2. Ampache - For the love of music - Stream your media
  3. Paste - Self Hosted PasteBin Like Service - Tech Blog
  4. Install Sonerezh Music Streaming Server on Ubuntu - Tech Blog
  5. Install MediaWiki on Ubuntu 16.04/17.04 - Tech Blog

Leave a Reply

כתובת האימייל שלך לא תפורסם


*