xhtml ssi מפת האתר דף ראשי

«
«
«
«
«
«


ראשי  » אפאצ'י  » הקדמה לאפאצ'י

מאמר 1: הקדמה ל- Apache / קווין קוק

1.1 הקדמה

אי שם בעבר, בתקופה הלא-מפותחת של 1995, אנשים רבים היו חסרי שביעות-רצון ממצב שרתי האינטרנט. השרתים המסחריים כמו Microsoft's IIS ומשפחת שרתי Netscape טרם נולדו והשרתים שהוצאו ע"י סטודנטים - היו די גרועים.

אם כן, מה עשו כותבי הקוד אז? הם יצרו שרת אינטרנט לעצמם וכינו אותו בשם אפאצ'י (משחק מילים על A patch = טלאי, כי הוא נועד להיות טלאי, לתקן את החורים בקוד שלך). קבוצת האקרים קטנה זו החלה פרוייקט אשר, בסופו של דבר, ייצור את תוכנת שרת האינטרנט הפופולרית ביותר בעולם.

גאוניות התוכנית של צוות אפאצ'י לא היתה רק בתכנות המעולה אלא במודל הפיתוח בו השתמשו. היום האופנה מכתיבה לכנות זאת "מקור פתוח" ( open source ).
(הערה - יש סוגים שונים של פיתוח עפ"י מקור פתוח. אפאצ'י מאפשרת לכל מי שרוצה, ליצור מוצר מסחרי המבוסס על הקוד ולא מחייבת אותם לשתף אחרים בתוצאות ).

אם כן . . . חזרנו להווה.
אבל - מדוע שיהיה איכפת לך מכל זאת? יש שתי סיבות:
זה בחינם.
זה עובד יופי.

אם אתה רוצה להקים אתר אינטרנט, יש יתרונות רבים לכך שיהיה בידך קוד המקור.
למשל, כאן אצלנו ב- Wired Digital, שינינו את קוד המקור בצורה נרחבת כדי להתאימו לצרכים שלנו - אנו הוצאנו לעולם הרחב את אחת הגרסאות, בתקווה שמישהו יספר לנו אם ניתן לשפר אותה, וכן בתקווה שהדבר יביא לצבירת קרמה חיובית.

יתרון נוסף לגישת הקוד הפתוח הוא שהאפאצ'י משכה מפתחים רבים מכל העולם.
הם כתבו גושי-קוד הידועים כמודולים. המודולים מבצעים דברים שאתה רוצה - אם אתה לא יכול למצוא מודול כרצונך, תוכל תמיד לכתוב חדש (אתה חייב לכתוב אותם ב- C או להשתמש ב- mod_perl כדי להרחיב את השרת ב- Perl ).

 

1.2 הורדת אפאצ'י


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

אתה גם צריך לדעת על איזו מערכת הפעלה תרצה להריץ את האפאצ'י .
כעת, נניח שאנו נעשה קומפילציה לאפאצ'י באמצעות מהדר C GNU במערכת הפעלה מבוססת יוניקס ( Unix ).

אחד הדברים הנחמדים ביותר בגרסה האחרונה של אפאצ'י (1.3x) הוא תמיכת DSO -
(Dynamic Shared Object - אובייקט דינמי משותף) .
כלומר, אינך חייב לבצע קומפילציה מוקדמת של הכל אל תוך שרת האינטרנט שלך - פשוט הוסף לפי הצורך.
אני מודה שיש לי גישה קצת מיושנת בעניין זה - השימוש ב- DSO עלול להיות פחות יציב מקומפילציה של כל המודולים. ע"כ נעשה רק את האחרון במדריך זה.

הנה דרך מקובלת להתיר את החבילה. בדוגמא זו, אני מוריד קובץ בשם apache_1.3.6.tar.gz
אותו אשים בספריית /tmp :
cooke@mymachine:/tmp%tar zxvf apache_1.3.6.tar.gz

זה יוצר ספריה בשם apache_1.3.6 ובה כל קבצי המקור.

 

1.3 קומפילציית אפאצ'י


לאחר מכן, הקומפילציה עצמה פשוטה להפליא.
למי שאף פעם לא נגע במהדר קודם לכן, נתאר מה המהדר עושה: הוא לוקח את הדברים הכתובים בשפת תכנות (במקרה הזה, C) ויוצר קובץ (או קבוצת קבצים) בינאריים, שהמחשב מבין כ"אפסים" ו"אחדים".

המהדר הפופולרי ביותר עבור אפאצ'י הוא בחינם - GNU cc (או בקיצור - gcc).
אם אתה עובד על מערכת יוניקס ( Unix ), תוכל לגלות אילו מהדרים מותקנים אצלך באמצעות פקודת which השימושית, למשל :
cooke@mymachine:/tmp%which cc
/usr/local/bin/cc 
כדי לגלות איזו גרסת gcc יש לך, הרץ אותה עם v- כך:
cooke@mymachine:/tmp%gcc -v Reading specs from
 /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1/specs
 gcc version 2.8.1 
גרסה זו היא העדכנית והטובה ביותר.
טוב להחזיק בגרסה האחרונה, אך זה לא הכרחי. אם יש לך מהדר אחר (בדר"כ בשם cc), גם הוא יפעל בסדר גמור. בדוק בעצמך.

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

הדרך הטובה ביותר לוודא שהכל בקומפיילר ובסביבת ההפעלה שלך עובדים כמו שצריך הוא לעשות משהו כזה:
cooke@mymachine:/tmp%cd apache_1.3.4 
cooke@mymachine:/tmp/apache_1.3.4%./configure ; make

ואז תראה פלט כזה:
Configuring for Apache, Version 1.3.4
 + Warning: Configuring Apache with default settings.
 + This is probably not what you really want.
 + Please read the README.configure and INSTALL files
 + first or at least run './configure --help' for
 + a compact summary of available options.
 + using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
 + configured for Solaris 260 platform
 + setting C compiler to gcc
 + setting C pre-processor to gcc -E
 + checking for system header files
 + adding selected modules
 + doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/main
Creating Makefile in src/ap
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/modules/standard
===> src
===> src/os/unix
gcc -c -I../../os/unix-I../../include
 -DSOLARIS2=260`../../apaci` os.c
gcc -c -I../../os/unix-I../../include
-DSOLARIS2=260`../../apaci` os-inline.c
rm -f libos.a
ar cr libos.a os.o os-inline.o
ranlib libos.a
<=== src/os/unix
אם הפעולה נכשלת ואתה מקבל שגיאה שאינה נראית טוב, אולי כדאי שתוריד את הקוד הבינארי שכבר עבר קומפילציה. או, אם אתה עובד בלינוקס (Linux), דאג שגרסת RPM תעשה זאת עבורך.

לאחר השלמת הקומפילציה, בדוק את הקוד הבינארי וודא שהוא פועל היטב.
אני בדר"כ עושה משהו כזה:
cooke@mymachine:/tmp/apache_1.3.4%
 cd src cooke@mymachine:/tmp/apache_1.3.4/src% ./httpd -l

ומקבל בחזרה :
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_setenvif.c
httpd -l מציג רשימה של המודולים אשר עברו קומפילציה לתוך האפאצ'י , מבלי להתחיל את התוכנית.

אפאצ'י מניח שאתה רוצה שספריית השורש תהיה /usr/local/apache/ ( מכונה Server Root) ושקובץ הקונפיגורציה שבו תשתמש ע"מ לאתחל את השרת יהיה:
usr/local/apache/conf/httpd.conf/. אם זה מתאים לך, המשך והעתק את קובץ ה- httpd ל- usr/local/apache/bin/ (לאחר שיצרת ספרייה כזו, כמובן).

בואו נראה מה נמצא בקבצי הקונפיגורציה.

 

1.4 קונפיגורציית אפאצ'י


עכשיו כשיש לך קוד בינארי שפועל (תוכל לבדוק זאת אם תשתמש, למשל, ב http/ - l .), הגיע הזמן לבצע קונפיגורציה. לפעמים זה החלק הגדול ביותר של העבודה, והיום קיימות כ"כ הרבה אופציות עד שאולי כדי לקנות ספר, כמו הספר על אפאצ'י מאת O'Reilly.
אבל, אם אתה כמוני, פשוט תתעסק בקונפיגורציה והספר יצבור אבק במדף עד שתיתקל בבעיה שאינך יכול לסדר לבד.

להלן השלבים הבסיסיים:
וודא כי תוסר סיומת ה- dist מכל httpd.conf-dist ומכל קבצי ההפצה מסוג conf. שבתת-הספריה /conf/.
כל פקודות האפאצ'י מופיעות באתר האינטרנט של אפאצ'י - וזהו מקור התיעוד הטוב ביותר. אנשים רבים משתמשים בגרסאות הסטנדרטיות של קבצי ה- conf. ומרוצים.
אם תריץ .http -h/, תראה רשימה שלמה של פקודות שנתמכות ע"י הקוד הבינארי (זה יעזור לך אם תשכח איך קוראים למשהו).

עליך לציין גם את שם המשתמש בו משתמש האפאצ'י ("Nobody" הוא התקן, אבל תוכל להשתמש בכל דבר שתרצה). וודא שלשם המשתמש שבחרת יש הרשאות לבצע פעולות בשרת שלך כגון קריאה, כתיבה והרצת קבצים וספריות. סדר את עניין ההרשאות בשלב מוקדם כדי שלא יפריעו לך לאחר מכן.

תוך זמן קצר, תרצה לעשות דברים, כמו לקבל שליטה על מסמכים או ספריות מסוימים, להתאים קבצי HTML שונים לדפדפנים שונים או לבצע כתיבה מחודשת מסוג server-side של URL.

לאפאצ'י יש תשובה לכל הצרות שלך. לפעמים התשובה פשוטה אך לפעמים קשה.

השימוש באפאצ'י פותח את הדלת לפרוייקטים מגניבים רבים אחרים מסוג קוד פתוח כגון PHP - ממשק scripting מצוין למסדי נתונים, המתחרה ל- ASP; ו- mod_perl, דרך לשבץ תוכניות Perl בתוך הקוד הבינארי שלך כדי להאיץ אותו.

לאחר הקומפילציה והקונפיגורציה, קיימות מספר דרכים שונות להריץ את הכל.
רוב האנשים פשוט מקלידים user/local/apache/src/httpd/ והאפאצ'י מסתדר יפה, בתנאי שביצעת קונפיגורציה כהלכה.
אם לא, עלולה להופיע שגיאה בשורת הפקודות אשר תציג את הוראת הקונפיגורציה שפספסת/טעית, או שגיאה ב- error_log אשר נמצא, לפי ברירת המחדל, ב- user/local/appache/logs/.

בכל מקרה, יש הרבה מקורות של עזרה, והטוב ביותר הוא Usenet
אפאצ'י בסה"כ עושה את העבודה יפה - וזו הסיבה שהוא השרת הכי פופולארי באינטרנט,
מלבד עובדת היותו בחינם.