כיצד להתקין שרת אינטרנט עם 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: אלטרנטיבה מעניינת לאפאצ'ישם אנו אומרים לך שמדובר בשרת אינטרנט כמו אפאצ'י, LightHttpd או צ'ירוקי, אך בהשוואה לאפאצ'י הוא בולט בביצועים ובצריכת חומרה נמוכה, בדיוק מסיבה זו אתרים גדולים רבים כמו פייסבוק, MyOpera.com, DropBox או אפילו WordPress .com להשתמש ב- Nginx במקום ב- Apache. בעולם של לינוקס היות ולינוקס היא לא היחידה שמשתמשת ב- 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 (הבלוג, ספינת הדגל שלנו) עובדת עם WordPress, 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% תואמת הכל, אבל זה ... כמו שאמרתי, בתיאוריה. ברגע שהתחלתי להעביר שירותי FromLinux מ- VPS אחד למשנהו הייתי צריך להשאיר את אפאצ'י מאחור ולהשתמש ב- Nginx, זה מרמז על קבצי תצורה שונים, דרכים שונות להכריז על VHosts, התקנה ותצורה מאפס של השרת ושירותיו, לא יכולתי באותה תקופה להוסיף משימה נוספת לרשימה, וגם אם להיות כנה, שיניתי את אפאצ'י ל- Nginx מכיוון שאפאצ'י לא סיפק את צרכיי, עם זאת, MySQL עד כה עונה על הצרכים שלי ב 100%, אני לא רואה סיבות ל- באותו הרגע הגדלתי את עומס העבודה שלי על ידי שינוי משהו שכבר עבד בשבילי מבחינה טכנית.

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

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

APC:

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

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

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

סיכום:

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

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

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

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

לגבי


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

27 תגובות, השאר את שלך

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

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

*

*

  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, בין השאר, נדמים שלא יכולתי למצוא מידע שנאמר לעיל שנאמר לעיל.