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