logo


פרק 12: הכרות עם mod_perl

תצורה ראשונית

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

אנו רוצים לומר ל Apache להריץ סקריפטים של Perl דרך המודול Apache::registry, שהיא סביבה מדומה של mod_perl. זה מאפשר לנו להריץ סקריפטים של Perl שנכתבו עבור סביבת CGI (כמו שנשתמש במודול CGI.pm) תחת mod_perl, שהוא טכנית לא שייך ל CGI.

קובץ ברירת המחדל httpd.conf שמותקן עם Apache לא מוגדר לשימוש ב mod_perl, לחלופין, הוא מוגדר להריץ סקריפטים באמצעות CGI. יש להניח שתמצאו בקובץ httpd.conf שלכם את הנחית התצורה (configuration directive) שנראית משהו כזה:

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

הנחיה זו אומרת ל Apache שכל קבצים הנמצאים בנתיב היחסי /cgi-bin/ אמורים להחשב כסקריפטים, ולהיות מורצים בהתאם. אתם צריכים לקחת בחשבון האם כל הסקריפטים באתרכם יהיו מסוג Perl ויטופלו ע"י mod_perl, או שיש כמה סקריפטים שתצטרכו להפעיל דרך CGI. הגישה הבטוחה ביותר היא לשמור לפחות תת-ספריה אחת לסקריפטים בסגנון CGI ותת-ספריה אחת עבור הסקריפטים של Perl שנתמכים ע"י mod_perl . ההנחיה למעלה ScriptAlias אמורה להצביע רק לנתיב בו נמצאים הסקריפטים של CGI, ולא לנתיב שממנו אתם רוצה להריץ את הסקריפטים של Perl. בואו נניח, לכן, שיצרתם נתיב חדש בשם: /usr/local/apache/cgi-perl/ עבור הסקריפטים הנתמכים ע"י mod_perl.

כמובן, שאם אתם מריצים אך ורק סקריפטים של mod_perl , ניתן לסמן כהערה את ההנחיה ScriptAlias ע"י הסימן # ולהשתמש בנתיב cgi-bin/ לסקריפי ה Perl שלכם.

אנו מוכנים כעת להוסיף הנחיה מוגדרת עבור mod_perl. אם תעברו על הקובץ httpd.con, תמצאו פסקה שמכילה את הערת הכותרת הבאה: " ...Aliases: Add here as many aliases as you need" . בסוף הפסקה, ממש לפני שהיא נסגרת ע"י התג <IfModule/>, הוסיפו את הכינוי (alias) החדש שלנו.

Alias /cgi-perl/ "/usr/local/apache/cgi-perl/" 

<Location /cgi-perl> 
SetHandler perl-script 
PerlHandler Apache::Registry 
Options ExecCGI 
PerlSendHeader On 
</Location>

כאן, אנו מגדירים כינוי, שמקשר את /cgi-perl/ עם נתיב המערכת /usr/local/apache/cgi-perl/. ההערת ההנחיה <Location> מתייחסת לכינוי הזה ומגדירה מספר תכונות עבורו. ראשית, אנו אומרים ל Apache לאפשר ל mod_perl לטפל בקבצים אלה דרך ההנחיה SetHandler, ואנו אומרים ל mod_perl לטפל בהם תוך שימוש במודול Apache::Registry. מודול ה Registry הוא השחקן הראשי, כיוון שהוא זה שמחקה את סביבת ה CGI ומהדר/מטמין (compiling/caching) את קוד ה Perl. אנו אומרים ל Apache לטפל בקבצים אלו כניתנים להרצה דרך הפרמטר ExecCGI, אחרת הדפדפן ינסה לשלוח את הסקריפט למשתמש כקובץ טקסט. לבסוף, אנו אומרים ל Apache לשלוח את הכותרת (header HTTP) לדפדפן בשעת הרצת הסקריפט. אם סקריפט ה Perl שלכם תוכנת כראוי, למשל בעזרת המתודה ()CGI->header של מודול ה CGI.pm, הוא ישלח כותרת זו לבד.

ואו, איזה גודל
תוכן עניינים
נתחיל לכתוב את הקוד

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl
סיפורו של ה fork  
השגת הסחורה  
ואו, איזה גודל!  
תצורה ראשונית  
נתחיל לכתוב את הקוד  
יעילות