תמצא כללים בסיסיים כאן (קרא את אחת התגובות המראה גם איך לעשות ספריית FILES נפרדת לכל אתר).
בבלוג של בוריס מאן, מייסד bryght (שירות הוסטינג דרופלי הנמצא בשלב ביתא), מצאתי את ההתייחסות הברורה ביותר לנושא, כולל קונפיגורציה מעניינת . הקונפיגורציה שלו מאפשרת מודולים שונים לכל אתר, כמו גם עדכון אוטומטי מה-CVS.
אם אין צורך במודולים \ FILES נפרדים לכל אתר אז סה"כ זה פשוט לשים את הפרמטרים של ה-DB של כל אתר בתוך הקובץ setting.php בספרייה המתאימה תחת ספריית FILES.
בכל מקרה השרת צריך לתמוך בקישורים סימבוליים ובשינוי htaccess.
חשוב לשים לב שההתקנה (הקלה מאוד) של דרופל מרובה אתרים (multisite drupal) לא מתאימה בכל מצב. כלל האצבע צריך להיות כזה: לשירות אחד שמציע מספר אתרים, טוב לך להתקין מולטיסייט, לשרת אחד שעליו מותקנים מספר אתרים, המולטיסייט רק יפריע.
מולטיסייט אומר שקוד הבסיס זהה למספר אתרים. מעבר להכל זה אומר שהתאימות למודולים המותקנים בכל אתר זהה גם היא. על כן - אם אתה משתמש באותם מודולים בכל האתרים (אופייני לאתרי בלוגים לדוגמה), השימוש במולטיסייט מקל לך את החיים מאוד. לעומת זאת, אם תרצה להתקין על אחד האתרים מודול שקיים רק בגרסה X+1 של דרופל (כשאצלך מותקנת גרסת X), תיאלץ לשדרג את המערכת כולה, מה שעלול ליצור חוסר תאימות עם שאר האתרים. יוצא ששדרוגו של אתר אחד תלוי באחרים ולהיפך. וזה לא משהו.
אז כדאי להשתמש במולטיסייט בתבונה. אם יש לך שני אתרים, שלא קשורים זה לזה, על אותו השרת, התקן לך שני עותקים של דרופל. זה עדיף. על מנת לחסוך במקום תוכל להשתמש באותה ספריית מודולים, אבל בינינו - כמה מקום המודולים כבר תופסים?
יש לי מצב ביניים. רשת של כעשרה - עשרים אתרים עבור לקוח אחד, עם עיצוב כמעט זהה (חוץ משם האתר והלוגו), אבל כל אחד על דומיין שונה ותוכן שונה (ואולי גם פיצ'רים קצת שונים). האתרים מחוברים אחד לשני.
אתגרים \ שאלות:
א: מפתה במצב זה לשים מולטיסייט בגלל שיותר קל להתקין את האתרים (ואני מקווה שגם יותר קל לשדרג אותם). התצורה שלהם יכולה להיות (אני מניח) זהה. זה כאב ראש לא קטן לנהל עשרה אתרים ולזכור מה שמתי איפה מתי איך ולמה. לדעתי עדיין עדיף מולטיסייט למרות שזה לא שירות במובן הקלאסי. אשמח לשמוע את דעתך.
ב: ללקוח לא איכפת שהם ישבו על אותו בסיס הנתונים, אבל כמובן בכל אתר צריך להיות מוצג תוכן שונה, והתוכן צריך להיות מוגש מ-URLS של דומיין נפרד. האם יש אפשרות לסדר זאת?
אם אתה אומר שיש באתרים פיצ'רים שונים, הרי שהם נזקקים למודולים שונים, וזהו המוקש שעליו דיברתי.
אין שום מניעה להשתמש באותו בסיס נתונים לכמה אתרים, כל עוד דואגים לתת תחילית שונה לשמות הטבלאות של כל אתר ואתר. תחילית זו נקבעת בקובץ settings.php, שהוא ייחודי עבור כל אתר ודומיין:
* You can optionally set prefixes for some or all database table names * by using the $db_prefix setting. If a prefix is specified, the table * name will be prepended with its value. Be sure to use valid database * characters only, usually alphanumeric and underscore. If no prefixes * are desired, leave it as an empty string ''. * * To have all database names prefixed, set $db_prefix as a string: * * $db_prefix = 'main_'; *
שיתוף המידע יכול להיעשות בדרכים שונות(לדוגמה - RSS) ולא חייב להיות ישירות מתוך הדטהבייס, מה גם שבאתרים שעשויים להשתמש בגרסאות שונות, השימוש בטבלאות משותפות איננו תמיד רצוי:
* To provide prefixes for specific tables, set $db_prefix as an array. * The array's keys are the table names and the values are the prefixes. * The 'default' element holds the prefix for any tables not specified * elsewhere in the array. Example: * * $db_prefix = array( * 'default' => 'main_', * 'users' => 'shared_', * 'sessions' => 'shared_', * 'role' => 'shared_', * 'authmap' => 'shared_', * 'sequences' => 'shared_', * ); *
פשוט להתקין פיצ'רים שונים לכל אתר במולטיסייט (לפחות בתיאוריה). ראה את הטיפ של בוריס מאן שמספר איך הוא עשה זאת. לפי הטיפ - תחת הספרייה sites יש directory לכל אתר. פתח בתוך הספרייה של האתר תת ספרייה בשם modules, ובתוכה שים את כל המודולים שייחודיים לאותו אתר. לא בדקתי את הטיפ בפועל - אשמח אם מישהו יוודא שזה אכן עובד בקונפיגורציית מולטיסייט קיימת, וישאל את בוריס במידה וזה לא עובד.
הנושא של קידומת שונה לכל DB זהה מבחינתי ל-DB שונה, סתם מסבך את העניינים. כשהתכוונתי ל-DB אחד התכוונתי בלי שינוי שם הטבלאות, שפשוט אתר אחד יציג את node/110 בתור עמוד הבית, ואתר שני יציג את node/111. וכמובן כל הבלוקים יהיו שונים (עיצוב שונה לכל section). מה הייתרון לעשות את זה באותו DB? שלא צריך להגדיר 10 פעמים את האתר. אבל עכשיו כשאני חושב על זה ניתן לעשות את זה בצורה יותר מדוייקת בעזרת פרוצדורות CRON שיעתיקו טבלאות בודדות.
עדיין, אם אתה מתקין מודולים נפרדים לכל אתר בתת הספריה שלו (/sites/site_name/modules)\ כמו שניתן לעשות עם themes, אתה חייב לשמור על תאימות קוד מול קוד הבסיס, ועל כן אין לך כאן יתרון בשדרוג מהבחינה הזו.
אם אתה רוצה תכנים זהים, רק דף בית שונה מאתר לאתר, אתה יכול לעשות את זה ע"י שיתוף כל הטבלאות ומתן תחילית שונה לטבלה variables, אבל אני חייב לציין שהרעיון עצמו נשמע כמו פתח לבעיות.
אם אתה רוצה תכנים זהים, רק דף בית שונה מאתר לאתר, אתה יכול לעשות את זה ע"י שיתוף כל הטבלאות ומתן תחילית שונה לטבלה variables, אבל אני חייב לציין שהרעיון עצמו נשמע כמו פתח לבעיות.
זה פתח ענק לבעיות...
אם אנו מעוניינים להקים מספר אתרים שתוכנם זהה פרט לערכו של משתנה אחד ("דף הבית" מוכל במשתנה site_frontpage) או של כמה משתנים בודדים, ניגש ל-settings.php ונקבע שם, במערך conf$, את ערכו של אותו משתנה. למשתנים המוגדרים בקובץ זה קדימות על פני אלה שבטבלת variables שבבסיס הנתונים.
מה שנראה לי הרעיון שעומד מאחרי זה הוא הנושא של עידכון הבסיסי של הקבצים של דרופל (למשל בגלל נושא אבטחת מידע) ולכן אני לא רואה טעם לשתף בסיס נתונים ולכן לכל אתר יהיה את בסיס הנתונים שלו בתוך מחיצת sites/site_name
מבנה מוצע
Drupal Base - (drupal core files, shared modules and themes)
Sites
Site A, including Setting (db A) , files, private modules & themes
Site B, including Setting (db B) , files, private modules & themes
ואז בעצם אין את החסרון שזהר דיבר עליו בגלל שבסיס הנתונים שונה. ואני תמיד יכול לעשות override למודולים שמסיבה כלשהי אני רוצה שיהיו שונים בין האתרים
מה שאני חוסך זה מקום של הcore ועידכון נפרד לכל אתר
קודם כל - מה שאתה מתאר כאן זו הבדיוק המבנה המוצע לדרופל, כפי שהוא מופיע בקובץ ההתקנה: לכל אתר הגדרות אחרות ומודולים שונים (כמובן - במידת הצורך).
חשוב מאוד לשים לב לעובדה שלמרות הסקסיות של הרעיון של מולטיסייטינג, זהו איננו פתרון שמתאים בכל המקרים. הוא מתאים למקרים מאוד ספציפיים שבהם ישנם מספר אתרים שלא צריכים לחלוק רק את הקוד, אלא גם משהו תוכני או קונספטואלי.
אחרת הכלל צריך להיות - אתר שונה - התקנה שונה.
מה שאתה מתאר נכון מאוד וגם שימושי מאוד, אולם כדאי לדעת שאין צורך למחוק את המודול המקורי.
למודולים שבספריה הפרטית יש קדימות על פני מודולים בספריה הראשית. כך, אם יש לנו את אותו המודול (= עם אותו שם) בספריה הראשית ובספריה הפרטית, המודול הפרטי ייטען ולא המקורי.
אתמול יצא מודול multidomain שאמור לפתור את הבעייה ולאפשר להריץ חלקים שונים של אותו אתר על דומיינים שונים. המודול מתאים לדרופל 5 - ראו גם כתבה של אדריאן מ-Bryght - יוצר המודול.
על בסיס המודול ייבנו מודולים נוספים שמאפשרים subdomain לכל משתמש, ולכל קבוצה אורגנית.
יש לנו באתר מדריכים שונים, הכוללים מדריך להתקנת דרופל על המחשב המקומי או על שרת אירוח באינטרנט, כמו גם מדריכים לעיצוב ופיתוח.
בעזרת המדריכים השונים באתר ובעזרת קבוצות הדיון שלנו, אפשר למצוא את כל המידע הנחוץ להקמה והתאמה אישית של אתרי דרופל. כדאי לבדוק גם את ערוצי התמיכה הנוספים שלנו
RE: התקנת אתרים רבים עם בסיס קוד אחד
תמצא כללים בסיסיים כאן (קרא את אחת התגובות המראה גם איך לעשות ספריית FILES נפרדת לכל אתר).
בבלוג של בוריס מאן, מייסד bryght (שירות הוסטינג דרופלי הנמצא בשלב ביתא), מצאתי את ההתייחסות הברורה ביותר לנושא, כולל קונפיגורציה מעניינת . הקונפיגורציה שלו מאפשרת מודולים שונים לכל אתר, כמו גם עדכון אוטומטי מה-CVS.
השרשור הזה מרכז עשרות התכתבויות נוספות בנושא.
אם אין צורך במודולים \ FILES נפרדים לכל אתר אז סה"כ זה פשוט לשים את הפרמטרים של ה-DB של כל אתר בתוך הקובץ setting.php בספרייה המתאימה תחת ספריית FILES.
בכל מקרה השרת צריך לתמוך בקישורים סימבוליים ובשינוי htaccess.
אמנון לבב - לבבי ייעוץ משולב
הדרכה, אפיון ופיתוח מקצועי של מערכות דרופל מתקדמות
בלוג בניית אתרים, תיק עבודות, המלצות
חשוב לשים לב
חשוב לשים לב שההתקנה (הקלה מאוד) של דרופל מרובה אתרים (multisite drupal) לא מתאימה בכל מצב. כלל האצבע צריך להיות כזה: לשירות אחד שמציע מספר אתרים, טוב לך להתקין מולטיסייט, לשרת אחד שעליו מותקנים מספר אתרים, המולטיסייט רק יפריע.
מולטיסייט אומר שקוד הבסיס זהה למספר אתרים. מעבר להכל זה אומר שהתאימות למודולים המותקנים בכל אתר זהה גם היא. על כן - אם אתה משתמש באותם מודולים בכל האתרים (אופייני לאתרי בלוגים לדוגמה), השימוש במולטיסייט מקל לך את החיים מאוד. לעומת זאת, אם תרצה להתקין על אחד האתרים מודול שקיים רק בגרסה X+1 של דרופל (כשאצלך מותקנת גרסת X), תיאלץ לשדרג את המערכת כולה, מה שעלול ליצור חוסר תאימות עם שאר האתרים. יוצא ששדרוגו של אתר אחד תלוי באחרים ולהיפך. וזה לא משהו.
אז כדאי להשתמש במולטיסייט בתבונה. אם יש לך שני אתרים, שלא קשורים זה לזה, על אותו השרת, התקן לך שני עותקים של דרופל. זה עדיף. על מנת לחסוך במקום תוכל להשתמש באותה ספריית מודולים, אבל בינינו - כמה מקום המודולים כבר תופסים?
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
יש לי מצב ביניים:
שלום זוהר! אשמח אם תרחיב מתוך נסיונך:
יש לי מצב ביניים. רשת של כעשרה - עשרים אתרים עבור לקוח אחד, עם עיצוב כמעט זהה (חוץ משם האתר והלוגו), אבל כל אחד על דומיין שונה ותוכן שונה (ואולי גם פיצ'רים קצת שונים). האתרים מחוברים אחד לשני.
אתגרים \ שאלות:
א: מפתה במצב זה לשים מולטיסייט בגלל שיותר קל להתקין את האתרים (ואני מקווה שגם יותר קל לשדרג אותם). התצורה שלהם יכולה להיות (אני מניח) זהה. זה כאב ראש לא קטן לנהל עשרה אתרים ולזכור מה שמתי איפה מתי איך ולמה. לדעתי עדיין עדיף מולטיסייט למרות שזה לא שירות במובן הקלאסי. אשמח לשמוע את דעתך.
ב: ללקוח לא איכפת שהם ישבו על אותו בסיס הנתונים, אבל כמובן בכל אתר צריך להיות מוצג תוכן שונה, והתוכן צריך להיות מוגש מ-URLS של דומיין נפרד. האם יש אפשרות לסדר זאת?
תודה
אמנון
אמנון לבב - לבבי ייעוץ משולב
הדרכה, אפיון ופיתוח מקצועי של מערכות דרופל מתקדמות
בלוג בניית אתרים, תיק עבודות, המלצות
אם אתה אומר שיש
אם אתה אומר שיש באתרים פיצ'רים שונים, הרי שהם נזקקים למודולים שונים, וזהו המוקש שעליו דיברתי.
אין שום מניעה להשתמש באותו בסיס נתונים לכמה אתרים, כל עוד דואגים לתת תחילית שונה לשמות הטבלאות של כל אתר ואתר. תחילית זו נקבעת בקובץ settings.php, שהוא ייחודי עבור כל אתר ודומיין:
* You can optionally set prefixes for some or all database table names* by using the $db_prefix setting. If a prefix is specified, the table
* name will be prepended with its value. Be sure to use valid database
* characters only, usually alphanumeric and underscore. If no prefixes
* are desired, leave it as an empty string ''.
*
* To have all database names prefixed, set $db_prefix as a string:
*
* $db_prefix = 'main_';
*
שיתוף המידע יכול להיעשות בדרכים שונות(לדוגמה - RSS) ולא חייב להיות ישירות מתוך הדטהבייס, מה גם שבאתרים שעשויים להשתמש בגרסאות שונות, השימוש בטבלאות משותפות איננו תמיד רצוי:
* To provide prefixes for specific tables, set $db_prefix as an array.* The array's keys are the table names and the values are the prefixes.
* The 'default' element holds the prefix for any tables not specified
* elsewhere in the array. Example:
*
* $db_prefix = array(
* 'default' => 'main_',
* 'users' => 'shared_',
* 'sessions' => 'shared_',
* 'role' => 'shared_',
* 'authmap' => 'shared_',
* 'sequences' => 'shared_',
* );
*
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
פשוט להתקין פיצ'רים שונים לכל אתר במולטיסייט
פשוט להתקין פיצ'רים שונים לכל אתר במולטיסייט (לפחות בתיאוריה). ראה את הטיפ של בוריס מאן שמספר איך הוא עשה זאת. לפי הטיפ - תחת הספרייה sites יש directory לכל אתר. פתח בתוך הספרייה של האתר תת ספרייה בשם modules, ובתוכה שים את כל המודולים שייחודיים לאותו אתר. לא בדקתי את הטיפ בפועל - אשמח אם מישהו יוודא שזה אכן עובד בקונפיגורציית מולטיסייט קיימת, וישאל את בוריס במידה וזה לא עובד.
הנושא של קידומת שונה לכל DB זהה מבחינתי ל-DB שונה, סתם מסבך את העניינים. כשהתכוונתי ל-DB אחד התכוונתי בלי שינוי שם הטבלאות, שפשוט אתר אחד יציג את node/110 בתור עמוד הבית, ואתר שני יציג את node/111. וכמובן כל הבלוקים יהיו שונים (עיצוב שונה לכל section). מה הייתרון לעשות את זה באותו DB? שלא צריך להגדיר 10 פעמים את האתר. אבל עכשיו כשאני חושב על זה ניתן לעשות את זה בצורה יותר מדוייקת בעזרת פרוצדורות CRON שיעתיקו טבלאות בודדות.
אמנון לבב - לבבי ייעוץ משולב
הדרכה, אפיון ופיתוח מקצועי של מערכות דרופל מתקדמות
בלוג בניית אתרים, תיק עבודות, המלצות
עדיין, אם אתה
עדיין, אם אתה מתקין מודולים נפרדים לכל אתר בתת הספריה שלו (/sites/site_name/modules)\ כמו שניתן לעשות עם themes, אתה חייב לשמור על תאימות קוד מול קוד הבסיס, ועל כן אין לך כאן יתרון בשדרוג מהבחינה הזו.
אם אתה רוצה תכנים זהים, רק דף בית שונה מאתר לאתר, אתה יכול לעשות את זה ע"י שיתוף כל הטבלאות ומתן תחילית שונה לטבלה variables, אבל אני חייב לציין שהרעיון עצמו נשמע כמו פתח לבעיות.
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
תכן זהה; דף בית שונה
זה פתח ענק לבעיות...
אם אנו מעוניינים להקים מספר אתרים שתוכנם זהה פרט לערכו של משתנה אחד ("דף הבית" מוכל במשתנה site_frontpage) או של כמה משתנים בודדים, ניגש ל-settings.php ונקבע שם, במערך conf$, את ערכו של אותו משתנה. למשתנים המוגדרים בקובץ זה קדימות על פני אלה שבטבלת variables שבבסיס הנתונים.
Multisites - שביל הזהב ??
מה שנראה לי הרעיון שעומד מאחרי זה הוא הנושא של עידכון הבסיסי של הקבצים של דרופל (למשל בגלל נושא אבטחת מידע) ולכן אני לא רואה טעם לשתף בסיס נתונים ולכן לכל אתר יהיה את בסיס הנתונים שלו בתוך מחיצת sites/site_name
מבנה מוצע
Drupal Base - (drupal core files, shared modules and themes)
Sites
Site A, including Setting (db A) , files, private modules & themes
Site B, including Setting (db B) , files, private modules & themes
ואז בעצם אין את החסרון שזהר דיבר עליו בגלל שבסיס הנתונים שונה. ואני תמיד יכול לעשות override למודולים שמסיבה כלשהי אני רוצה שיהיו שונים בין האתרים
מה שאני חוסך זה מקום של הcore ועידכון נפרד לכל אתר
האם אני מפספס משהו ?
אביאור
http://dev-art.net
אביאור
http://dev-art.net
Multisite - לא בכל מחיר
קודם כל - מה שאתה מתאר כאן זו הבדיוק המבנה המוצע לדרופל, כפי שהוא מופיע בקובץ ההתקנה: לכל אתר הגדרות אחרות ומודולים שונים (כמובן - במידת הצורך).
חשוב מאוד לשים לב לעובדה שלמרות הסקסיות של הרעיון של מולטיסייטינג, זהו איננו פתרון שמתאים בכל המקרים. הוא מתאים למקרים מאוד ספציפיים שבהם ישנם מספר אתרים שלא צריכים לחלוק רק את הקוד, אלא גם משהו תוכני או קונספטואלי.
אחרת הכלל צריך להיות - אתר שונה - התקנה שונה.
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
...
טיפ שימושי: אתרים שונים ב-multisite עשוים להחזיק גרסאות שונות של אותו המודול.
דוגמה קונקרטית, העוסקת אפילו במודול core:
הוזכר לאחרונה המודול localizer. הוא מסופק עם גרסה "משופצת" של המודול taxonomy.module.
אם נרצה שבאחד האתרים ייעשה שימוש במודול ה-taxonomy.module ה"משופץ", ואילו בשאר האתרים ייעשה שימוש בגרסה הסטנדרטית של המודול, נעשה זאת כך:
אין צורך למחוק את המודול המקורי
מה שאתה מתאר נכון מאוד וגם שימושי מאוד, אולם כדאי לדעת שאין צורך למחוק את המודול המקורי.
למודולים שבספריה הפרטית יש קדימות על פני מודולים בספריה הראשית. כך, אם יש לנו את אותו המודול (= עם אותו שם) בספריה הראשית ובספריה הפרטית, המודול הפרטי ייטען ולא המקורי.
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
חידשת לי
חידשת לי. לא ידעתי.
ז'תומרת... אף לא אחד מהצעדים שפירטתי נחוץ ;-)
איך אפשר לא לאהוב את דרופל?
re: הרצת הרבה אתרים על בסיס קוד דרופל משותף
אתמול יצא מודול multidomain שאמור לפתור את הבעייה ולאפשר להריץ חלקים שונים של אותו אתר על דומיינים שונים. המודול מתאים לדרופל 5 - ראו גם כתבה של אדריאן מ-Bryght - יוצר המודול.
על בסיס המודול ייבנו מודולים נוספים שמאפשרים subdomain לכל משתמש, ולכל קבוצה אורגנית.
אמנון לבב - לבבי ייעוץ משולב
הדרכה, אפיון ופיתוח מקצועי של מערכות דרופל מתקדמות
בלוג בניית אתרים, תיק עבודות, המלצות
אחסון מסיבי אתרי דרופל - הדיון מתחמם
הדיון בנושא drupal hosting מתחמם. Bryght שחררו את ה-Hostmaster שלהם בקוד פתוח, וגם האנשים ב-Wikia מדברים על Mass drupal hosting (ראו מה שיש ל-dries, המנהיג של פרוייקט דרופל, להגיד על זה).
אמנון לבב - לבבי ייעוץ משולב
הדרכה, אפיון ופיתוח מקצועי של מערכות דרופל מתקדמות
בלוג בניית אתרים, תיק עבודות, המלצות