כיצד להתקין שרת אינטרנט עם Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [חלק 1: מצגת]

לא מזמן הזכרנו את זה עכשיו DesdeLinux (כל השירותים שלה) עובדים ב שרתי GNUTransfer.com. הבלוג השתפר מאוד מבחינת מהירות, נזילות, גם כשאנחנו עוברים מלהיות (לאחר מיזוג UsemosLinux) יותר מ -30.000 ביקורים מדי יום (כמעט 200 משתמשים מחוברים בו זמנית). איך להשיג ביצועים טובים בשרת גם עם נפח התנועה הזה?

נכון לעכשיו ל- Justice (VPS שבו הבלוג ושירות אחר כלשהו) יש זיכרון RAM של 3 ג'יגה בייט, אולם פחות מ -500 מגה בייט נצרך, זה אפשרי עם בחירה נכונה של תוכנה לשימוש ותצורה נאותה של אותם. לדוגמא, אפאצ'י הוא ללא ספק נהדר בעולם, מספר 1 בכל הנוגע לאירוח, אך בדיוק מסיבה זו אפאצ'י הוא לא תמיד האפשרות הטובה ביותר. כאשר התנועה גבוהה וחומרת השרת אינה ממש גדולה (לדוגמא: 8 או 16 ג'יגה זיכרון RAM) אפאצ'י עשוי לצרוך יותר מדי זיכרון RAM מה שגורם לשרת בזמנים מסוימים לקחת יותר מדי זמן להגיב, או גרוע מכך, שהאתר שלנו לא מקוון משאבים לא מספיקים. זו הסיבה שרבים מאיתנו בוחרים ב- Nginx על פני Apache.

nginx:

כבר סיפרנו לך על Nginx מוקדם יותר במאמר Nginx: אלטרנטיבה מעניינת לאפאצ'י, שם אמרנו לכם שזה שרת אינטרנט כמו Apache, LightHttpd או Cherokee, אבל לעומת Apache הוא בולט בזכות הביצועים שלו וצריכת החומרה הנמוכה, בדיוק בגלל זה אתרים גדולים רבים כמו Facebook, MyOpera.com, DropBox או אפילו WordPress .com השתמש ב-Nginx במקום ב- Apache. בעולם של לינוקס DesdeLinux זה לא היחיד שמשתמש ב-Nginx, עד כמה שידוע לי, גם emsLinux ו-MuyLinux משתמשים בזה :)

הניסיון האישי שלי עם Nginx נמשך מספר שנים, כאשר מתוך כורח התחלתי לחפש אלטרנטיבות קלות לאפאצ'י. באותה תקופה Nginx הייתה בגרסה 0.6 והתאימות שלה לאתרי ביקוש גבוה המיוצרים ב- PHP לא הייתה האופטימלית ביותר, אולם כיום מגרסה 0.9 ואילך (v1.2.1 זמין ב- Debian Stable, v1.4.2 זמין ב- ArchLinux) השתפר מאוד עד כדי כך שעם תצורה נכונה ואיחוד של Nginx + PHP הכל יעבוד כמו קסם.

בסדרת הדרכה זו אשתמש בגרסת Nginx 1.2.1-2.2, זמין במאגרי ה- Debian Stable (Wheezy).

PHP5:

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

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

לגבי PHP, בהדרכות אלה אשתמש ב- גרסת PHP 5.4.4-14 זמין ב- Debian Wheezy (יציב)

Spawn_FastCGI:

ניתן לומר שזה מה שמחבר את Nginx עם PHP, כלומר, גם אם מותקנת בהם חבילת PHP5 אם לא מותקנת ומבוצעת Spawn_FastCGI כאשר הם פותחים אתר ב- PHP, הדפדפן יוריד את הקובץ, זה לא יראה להם שום דבר שהוא .php תוכנת מכיוון שהשרת אינו יודע לעבד קבצי .php, לכן חיוני להתקין ולהגדיר את תצורת Spawn_FastCGI.

אם השתמשנו באפצ'י זה יהיה משהו פשוט כמו התקנת חבילת libapache2-mod-php5, אך מכיוון שאנו משתמשים ב- Nginx נצטרך להתקין את חבילת spawn-fcgi במקום זאת. כמו כן, במדריך אני אסביר כיצד ליצור עבורו סקריפט ראשוני ב- /etc/init.d/ כך שתוכלו לשלוט בו בצורה נוחה יותר.

MySQL:

זה יכול להיות סימן השאלה הגדול או אולי, עבור חלקם, ההערה הסותרת. רבים שאני מכיר ישאלו אותי את השאלה: מדוע להשתמש ב- MySQL ולא ב- MariaDB?

הבעיה היא פשוט שאין לי מספיק זמן להקדיש לביצוע מיגרציה ברגע זה מ-MySQL ל-MariaDB, הגירה שבתיאוריה צריכה להיות שקופה לכולם, 100% תואמת להכל, אבל זה... כמו אמרתי, בתיאוריה. בזמנו התחלתי שירותי הובלות DesdeLinux מ-VPS אחד לאחר נאלצתי להשאיר את Apache מאחור ולהשתמש ב-Nginx, זה כלל קבצי תצורה שונים, דרכים שונות להכריז על VHosts, התקנה ותצורה מאפס של השרת והשירותים שלו, באותו זמן לא יכולתי להוסיף עוד משימה ל-VPS. רשימה, גם ולמען האמת, שיניתי Apache ל-Nginx כי Apache לא סיפק את הצרכים שלי, עם זאת, MySQL עד כה עונה על הצרכים שלי ב-100%, אני לא רואה סיבה שאגדיל את עומס העבודה שלי על ידי שינוי משהו שהוא כבר עבד טוב מבחינה טכנית עבורי.

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

La גרסת MySQL בה אשתמש היא v5.5.31

APCs:

APC הוא אופטימיזציה עבור PHP (מוסבר בפשטות). לאחר התצורה הנכונה זה מאפשר לנו שעיבוד PHP עובד טוב יותר, והתגובות מהשרת מהירות יותר.

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

אשתמש במדריך בגרסת php-apc v3.1.13-1 זמין גם במאגרי היציבות של דביאן.

סיכום:

דרך זו להתקנת תצורה של שרת אינטרנט אינה האופטימלית ביותר והרבה פחות, למשל רבים ימליצו על Varnish, אשר ממה שקראתי מחולל ניסים אמיתיים מכיוון שהכל או כמעט הכל שומרים אותו במטמון, אך במקרה שלנו אנחנו לא צריכים 100% מהאתר תמיד נשמר במטמון מאחר ואנחנו לא רוצים או צריכים ללכת לקצה הזה. עם זאת, אני מבהיר, כפי שאמרתי לעיל: "ככל שקראתי", באופן אישי לא השתמשתי בלכה עד היום, ולכן אני לא יכול לתת לך דעה אובייקטיבית של 100%.

זו תהיה סדרה של מדריכים שבהם אני אראה לך כיצד להתקין שרת אינטרנט כמו זה שמתארח בדקה זו. DesdeLinux (בלוג, פורום, הדבק וכו'). לבלוג יש 30.000 ביקורים מדי יום, כמעט 200 משתמשים ניגשים אליו בו זמנית, ובכל זאת זיכרון ה-RAM אינו עולה על 500MB שנצרך, עבור חלק זה עשוי להיות צריכה מוגזמת אבל... היי, יש לנו 3GB של RAM, פחות מ-500MB (שכוללים שירות FTP, SSH וכו') הוא ממש טוב נכון? 🙂

כל ה"קסם "לא נעשה רק על ידי Nginx + Spawn_FastCGI + APC, מערכת המטמון של הבלוגים שלנו מוגדרת היטב והכללים עבור Nginx מדויקים, זה הופך את הבלוג גם כאשר הוא מקבל הרבה תהליך תעבורה הרבה פחות PHP ממה רגיל מכיוון שהוא כבר הרבה במטמון. אם יש לך אתר מבוקש מאוד ויש לך בעיות משאבים, אני ממליץ ללא ספק שתלמד לבדוק איזו מערכת מטמון תעבוד הכי טוב עבורך, איזו מהן תתאים ביותר לצרכים שלך.

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

לגבי


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   ברונו קסיו דיג'ו

    טוב וברור מאוד! אני מברך אותך!

    1.    KZKG ^ גאארה דיג'ו

      תודה

  2.   כריסטופר קסטרו דיג'ו

    הדרכה טובה מאוד.

    מה שממלא אותי ספק הוא כיצד הם הגדירו את שרת הדוא"ל.

    1.    KZKG ^ גאארה דיג'ו

      שרת MailS הוא משהו נפרד, כלומר, אין שום קשר לשרת האינטרנט כידוע 🙂

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

  3.   87 דיג'ו

    אני אוהב את המאמר, אני מחכה לסדרת המאמרים

    1.    KZKG ^ גאארה דיג'ו

      תודה, אני מקווה להביא את הבא ביום שני או שלישי, הוא יעסוק בהתקנה ותצורה של Nginx.

  4.   aca דיג'ו

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

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

    לגבי

    1.    KZKG ^ גאארה דיג'ו

      תודה על תגובתך 🙂
      כן כמובן, זה יהיה נחמד מאוד לכלוב את Nginx כדי לשמור על הפרדה ככזו משאר המערכת, לא שקלתי אפשרות זו במדריכים אלה, אני אראה מה אני יכול לעשות. לגבי ה- proxy_cache_path, מעולם לא השתמשתי בו, אני אקרא קצת על זה כדי לראות איך זה הולך.

      לגבי מספר האשכולות (min & max), בתצורת Nginx זה כמובן מוגדר, בפוסט Nginx אדבר הרבה על קובץ ה- .conf 😉

      שוב, תודה על תגובתך.

  5.   MSX דיג'ו

    סוג זה של HowTos הוא מה שהופך את הרשת לחזקה באמת עבור מדעני המחשב שכן היא חוסכת לנו המון שעות של מחקר ובדיקות עד שלבסוף נחליט על האפשרות המתאימה, תודה רבה!

    שאלה אחת, האם זה פועל על דביאן? איזו גרסה של מערכת ההפעלה והחבילות?

    ברכות!

    1.    KZKG ^ גאארה דיג'ו

      תודה.
      ואכן, אתרים המדווחים, שחוזרים וחוזרים על החדשות יש כבר יותר מדי ... מה שצריך הם אתרים שמעלים הדרכות, זה מה שהאינטרנט צריך!

      כן, דביאן וויזי (יציב הנוכחי), גרסאות החבילות נמצאות ממש בהודעה 😉

  6.   אליוטיים 3000 דיג'ו

    תגובה מעולה. בואו נראה אם ​​אני עושה סוג של Errata עם ZPanel X, ובדרך אגב, נעשה את ההתקנה באופן ידני ב- Debian Wheezy.

  7.   פדריקו אנטוניו ואלדס טוג'אג דיג'ו

    קדימה KZKG ^ גאארה !!!, הקריטריון הטוב ביותר של האמת הוא תרגול, ויש לך ניסיון לגבי מה שאתה כותב. אתר מקצועי ועובד. בייסבול הליגה הגדולה, אחי.

    1.    אליוטיים 3000 דיג'ו

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

  8.   עֲגָלָה דיג'ו

    אני חושב שמצד Nginx, הדרכה זו תהיה שימושית. עכשיו אני רוצה להתקין שרת עם Nginx, php, Varnish ו- MariaDB. אבל כמובן, אנחנו צריכים להתחיל, ועצלות יכולה לעשות הרבה בשבילי בכל מה שקשור להילחם עם שרתים וכרגע אני מרוצה מהמנורה והממאש טיפוסי שיש לי xDD.

    ברכה.

  9.   auroszx דיג'ו

    נהדר, רק אחד מאלה היה שימושי 🙂 אחר מצפה לזה.

  10.   איוון גבריאל סוסה דיג'ו

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

  11.   חוסה מנואל דיג'ו

    מעולם לא התקנתי שרת אינטרנט, אך אם ברצוני לעשות זאת, שאלה, האם הרמה הדרושה להבנת ההדרכות והאם ההתקנה תהיה גבוהה או עם ידע בסיסי האם אוכל לנסות זאת? תודה מראש.

    1.    אליוטיים 3000 דיג'ו

      האמת היא שזה לא דורש ידע רב כדי להיות מסוגל לטפל בשרת מסדי נתונים. מי שכבר ניסה את החוויה הזו אומר לך.

  12.   מאוריציוס דיג'ו

    שלום, זה טוב מאוד מה אתה הולך לעשות עם סדרת ההודעות הזו.

    לאחרונה התקנתי את Nginx + Php Fastcgi + Mariadb. נגינקס.

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

    עכשיו זה עובד בצורה מושלמת. למרות שאני מעוניין לדעת את דעותיך, לגבי דעותיהם של הילדים והתהליכים של האבא, ככל שהם נותנים לי יותר טיפים, כן ייטב.

    כל זה נועד רק לתרגול.
    לציוד 4GB של זיכרון DDR2 ומעבד Core 2duo של 2.4 GHz.

    ברכות ואני מצפה לפוסטים הקרובים של סדרה זו.

  13.   Kas דיג'ו

    200 משתמשים מחוברים בו זמנית?
    רק בשעות מסוימות ביום, נכון? כי אחרת זה יעלה על אותם 30.000 ביקורים יומיים.

    1.    KZKG ^ גאארה דיג'ו

      כן, כמובן, לא תמיד יש 200 אנשים ברשת, ברגע זה יש כמעט 40 כי זה עדיין מוקדם, בעוד כמה שעות הם יעלו על 100.

  14.   מטלטל דיג'ו

    רק בשביל הכיף פשוט עברתי מ- lighty ל- nginx בתחנת העבודה שלי (Symfony2 כרגע), לקחתי את ה- conf מכאן [1], פשוט מאוד.

    [1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas דיג'ו

    מחכה להמשך זה 😀

    1.    KZKG ^ גאארה דיג'ו

      השבוע עלי לפרסם אותו, תודה על קריאת המס '

      1.    סאלוד דיג'ו

        וגם? הרבה חסר?

  16.   דֵיקָן דיג'ו

    פוסט טוב ...

  17.   נואל איבן דיג'ו

    ערב טוב.
    עקב מפרט פרויקט בית ספר, הם מאפשרים לי להתקין את NGINX באופני 5.4 ב- ORACLE MV VIRTUALBOX כדי להיות מסוגלים להשתמש ב- PHP, MYSQL, בין השאר, נדמים שלא יכולתי למצוא מידע שנאמר לעיל שנאמר לעיל.