Nginx + MySQL + PHP5 + APC + Spawn_FastCGI ile bir web sunucusu nasıl kurulur [1. Bölüm: Sunum]

Çok uzun zaman önce bundan bahsetmiştik şimdi DesdeLinux (tüm hizmetleri) çalışıyor GNUTransfer.com sunucuları. Blog, sahip olduğumuz zaman bile hız, akışkanlık açısından çok gelişti (UsemosLinux birleşmesinden sonra) her gün 30.000'den fazla ziyaret (aynı anda yaklaşık 200 kullanıcı bağlanıyor). Bu trafik hacminde bile iyi sunucu performansı nasıl elde edilir?

Şu anda Justice (blog ve diğer bazı hizmetlerin bulunduğu VPS) 3GB RAM'e sahiptir, ancak 500MB'den daha az tüketilmektedir, bu, kullanılacak doğru yazılım seçimi ve bunların uygun bir şekilde yapılandırılmasıyla mümkündür. Örneğin, Apache şüphesiz dünyada bir harika, barındırma söz konusu olduğunda 1 numara, ancak tam da bu nedenle Apache her zaman en iyi seçenek değil. Trafik yüksek olduğunda ve sunucu donanımı gerçekten büyük olmadığında (Örn: 8 veya 16 GB RAM) Apache çok fazla RAM tüketebilir, bu da sunucunun belirli zamanlarda yanıt vermesinin çok uzun sürmesine veya daha kötüsü sitemizin çevrimdışı olduğu için eksik kaynak. Bu yüzden çoğumuz Apache yerine Nginx'i seçiyoruz.

nginx:

Makalede daha önce size Nginx'ten bahsetmiştik Nginx: Apache'ye ilginç bir alternatif, orada size bunun Apache, LightHttpd veya Cherokee gibi bir web sunucusu olduğunu söylemiştik, ancak Apache ile karşılaştırıldığında performansı ve düşük donanım tüketimi ile öne çıkıyor, tam olarak Facebook, MyOpera.com, DropBox ve hatta WordPress gibi birçok büyük sitenin nedeni de bu. .com Apache yerine Nginx kullanıyor. Linux dünyasında DesdeLinux Nginx kullanan sadece o değil, bildiğim kadarıyla emsLinux ve MuyLinux da kullanıyor :)

Nginx ile olan kişisel deneyimim, zorunluluktan dolayı Apache'ye hafif alternatifler aramaya başladığım birkaç yıl öncesine dayanıyor. O zamanlar Nginx 0.6 sürümüne gidiyordu ve PHP'de yapılan yüksek talep gören sitelerle uyumluluğu en uygun değildi, ancak bugün 0.9 sürümünden itibaren (v1.2.1 Debian Stable'da mevcuttur, v1.4.2 ArchLinux'da mevcuttur), Nginx + PHP'nin uygun bir konfigürasyonu ve birliği ile her şeyin bir cazibe gibi çalışacağı noktaya kadar çok gelişti.

Bu eğitim dizisinde Nginx 1.2.1-2.2 sürümünü kullanacağım, Debian Stable depolarında (Wheezy) mevcuttur.

PHP5:

Bugün birçok sitenin (ve CMS'nin) birlikte çalıştığı programlama dili olan PHP, bana göre ailenin kara koyunu. Başka bir deyişle, kişisel deneyimime göre, büyük siteler, çok sayıda ziyaret içeren, birçok seçenek, işlev vb. İle böyle bir site PHP'de yapılırsa benzer bir siteden daha fazla kaynak tüketecektir, örneğin, RoR içinde. Deneyimlerime göre, PHP çok büyük bir kaynak ejderhasıdır, PHP + Apache, gerçek bir ihtiyaç duymadan yüzlerce ve yüzlerce MB RAM'i yutmak için yeterlidir.

RoR, Django veya başka bir şeyi kullanmamanın nedeni basitçe şudur: DesdeLinux (blog, amiral gemimiz) WordPress ile çalışıyor, PHP ile geliştirilen ve bize o kadar çok konfor sunan bir CMS ki, onu kısa veya orta vadede değiştirmeyi planlamıyoruz, dürüst olmak gerekirse, mükemmel olmasa bile WordPress, ihtiyacımız olana ve belki de daha fazlasına hizmet ediyor.

PHP ile ilgili olarak, bu eğitimlerde kullanacağım PHP 5.4.4-14 sürümü Debian Wheezy'de mevcut (Stable)

Spawn_FastCGI:

Bu, Nginx'i PHP'ye bağlayan şeyin bu olduğu söylenebilir, yani, PHP5 paketi kurulu olsa bile, PHP'de bir site açtıklarında Spawn_FastCGI kurulu değilse ve çalıştırıldıysa tarayıcı dosyayı indirmez, indirmez onlara .php'nin programlandığı herhangi bir şeyi gösterin çünkü sunucu .php dosyalarını nasıl işleyeceğini bilmiyor, bu yüzden Spawn_FastCGI'yi kurmak ve yapılandırmak çok önemlidir.

Apache kullansaydık, libapache2-mod-php5 paketini kurmak kadar basit bir şey olurdu, ancak Nginx kullandığımız için bunun yerine spawn-fcgi paketini kurmamız gerekecek. Ayrıca, öğreticide, daha rahat kontrol edebilmeniz için /etc/init.d/ içinde bunun için bir başlangıç ​​betiğinin nasıl oluşturulacağını açıklayacağım.

MySQL:

Bu büyük soru işareti veya belki bazıları için uyumsuz not olabilir. Tanıdığım birçok kişi bana şu soruyu soracak: Neden MariaDB değil de MySQL kullanmalı?

Sorun şu ki, şu anda MySQL'den MariaDB'ye geçiş yapmaya ayıracak yeterli zamanım yok; teoride herkes için şeffaf olması gereken, her şeyle %100 uyumlu olması gereken bir geçiş, ama bu... Teorik olarak dedim. Taşıma hizmetlerine başladığım dönemde DesdeLinux bir VPS'den diğerine Apache'yi geride bırakmak ve Nginx kullanmak zorunda kaldım, bu farklı yapılandırma dosyalarını, VHost'ları bildirmenin farklı yollarını, sunucunun ve hizmetlerinin sıfırdan kurulum ve yapılandırmasını içeriyordu, o zamanlar başka bir görev ekleyemiyordum. listede ayrıca dürüst olmak gerekirse Apache ihtiyaçlarımı karşılamadığı için Apache'yi Nginx olarak değiştirdim, ancak MySQL şu ana kadar ihtiyaçlarımı %100 karşılıyor, zaten çalışan bir şeyi değiştirerek iş yükümü arttırmam için bir neden göremiyorum teknik olarak benim için iyi.

MariaDB'yi neden kurmadığımı bir kez açıkladıktan sonra, web sitelerinin büyük çoğunluğunun çalışması için bir veritabanına ihtiyaç duyduğunu, çünkü birçok bilginin (veya neredeyse tamamının) depolanacağı yer olduğunu açıklayın. Postgre veya bir başkasından hoşlananlar var, bu eğitim dizisinde nasıl olduğunu açıklayacağım MySQL'i kurun ve her site için ayrı kullanıcılar yapılandırın.

La Kullanacağım MySQL sürümü v5.5.31

APC'ler:

APC, PHP için bir optimize edicidir (çok basit bir şekilde açıklanmıştır). PHP işlemenin daha iyi çalışması ve sunucudan gelen yanıtların daha hızlı olması için doğru şekilde yapılandırılmamızı sağlar.

Memcache gibi alternatifler var ancak hep APC kullandım ve çok olumlu sonuçlar aldım. Bu makaleyi İngilizce okumanızı tavsiye ederim: APC ve Memcache'yi yerel içerik önbelleği olarak karşılaştırma

Öğreticide şu sürümünü kullanacağım php-apc v3.1.13-1 Debian Stable depolarında da mevcuttur.

Özetle:

Bir web sunucusu yapılandırmasının bu şekilde kurulması en uygun yöntem değildir, ondan çok uzaktır, örneğin birçok kişi Varnish'i önerecektir; bu, okuduğum şeyden gerçek mucizeler yaratır çünkü her şey veya hemen hemen her şey önbelleğe alınır, ancak bizim durumumuzda yapmıyoruz bu aşırıya gitmeyi istemediğimiz veya buna ihtiyaç duymadığımız için sitenin% 100'ünün her zaman önbelleğe alınmasına ihtiyacımız var. Ancak yukarıda da söylediğim gibi açıklığa kavuşturuyorum: "okuduğum kadarıyla" şahsen bugüne kadar Vernik kullanmadım, bu yüzden size% 100 objektif bir fikir veremem.

Bu, size şu anda barındırılana benzer bir web sunucusunun nasıl kurulacağını göstereceğim bir dizi eğitim olacak. DesdeLinux (blog, forum, yapıştırma vb.) Blog her gün 30.000 kez ziyaret ediliyor, neredeyse 200 kullanıcı aynı anda erişiyor ve yine de RAM tüketimi 500 MB'ı geçmiyor, bazıları için bu aşırı tüketim olabilir ama... hey, 3 GB RAM'imiz var, 500 MB'tan az (buna dahil) FTP hizmeti, SSH vb.) gerçekten iyi değil mi? 🙂

Tüm 'sihir' sadece Nginx + Spawn_FastCGI + APC tarafından yapılmıyor, blog önbellek sistemimiz gerçekten iyi yapılandırılmış ve Nginx için kurallar kesindir, bu da blogu çok fazla trafik işlemi aldığında bile çok daha az PHP yapar. zaten önbelleğe alınmış çok şey olduğu için her zaman Yüksek talep gören bir siteniz varsa ve kaynak sorunlarınız varsa, hangi önbellek sisteminin sizin için en uygun olduğunu, hangisinin ihtiyaçlarınıza en uygun olduğunu görmek için çalışmanızı şiddetle tavsiye ederim.

Umarım bu eğitimleri ilginç bulursunuz, her birinde her şeyi kapsamlı, ayrıntılı ve olabildiğince basit bir şekilde açıklamaya çalışacağım.

selamlar


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Bruno cascio dijo

    Çok iyi ve net! Seni kutlarım!

    1.    KZKG ^ Gaara dijo

      teşekkürler

  2.   Christopher castro dijo

    Çok iyi öğretici.

    Beni şüphe uyandıran şey, e-posta sunucusunu nasıl yapılandırdıklarıdır.

    1.    KZKG ^ Gaara dijo

      MailServer ayrı bir şeydir, yani bildiğiniz gibi web sunucusuyla hiçbir ilgisi yoktur 🙂

      Ancak, uzun zaman önce MailServer ile kendimi karmaşıklaştırmamaya karar verdim, iRedMail'i (MySQL, LDAP ve Postgre desteği) kullanmayı seçtim ve yapılandırma dosyalarına eklediğim uygun ayarlar ve ayrıntılarla her şey yolunda gidiyor.

  3.   çürük87 dijo

    Yazıyı beğendim, yazı dizisini bekliyorum

    1.    KZKG ^ Gaara dijo

      Teşekkürler, bir sonrakini Pazartesi veya Salı günü getirmeyi umuyorum, Nginx kurulumu ve yapılandırması ile ilgilenecek.

  4.   aca dijo

    Çok iyi, doğru konfigürasyon, onu bulmak zor, faktörler arasındaki uzlaşma bazen neredeyse çözülemez, ben de bir süre önce nginx'e ve sonra mariadb'a gittim (son zamanlarda, sanırım bir yıl önce).

    // Bahsettiğim gibi, chroot olasılığını artırıp, proxy_cache_path kullansanız iyi olur ki bu da yararlıdır. Ayrıca soketin (mümkün olduğu durumlarda) bağlantı noktasıyla karşılaştırılması. ve çocuk / koç sayısını iyi tanımlayın.

    selamlar

    1.    KZKG ^ Gaara dijo

      Yorumunuz için teşekkürler 🙂
      Evet elbette, Nginx'i sistemin geri kalanından ayrı tutmak için kafese koymak çok güzel olurdu, bu eğitimlerde bu olasılığı düşünmemiştim, ne yapabileceğime bakacağım. Proxy_cache_path hakkında hiç kullanmadım, nasıl gittiğini görmek için biraz okuyacağım.

      İş parçacığı sayısı (min & max) ile ilgili olarak, Nginx konfigürasyonunda açıkça tanımlanmıştır, Nginx gönderisinde .conf dosyası hakkında çok konuşacağım 😉

      Yorumunuz için tekrar teşekkür ederim.

  5.   msx dijo

    Bu tür bir HowTos, web'i bilgisayar bilimcileri için gerçekten güçlü kılan şeydir, çünkü sonunda uygun seçeneğe karar verene kadar bize tonlarca saat araştırma ve testten tasarruf ettirir, çok teşekkürler!

    Bir soru, bu Debian'da çalışıyor mu? İşletim sisteminin hangi sürümü ve paketler?

    Selamlar!

    1.    KZKG ^ Gaara dijo

      Teşekkür ederim.
      Nitekim, haber yapan, haberleri tekrarlayan ve tekrar eden siteler zaten çok fazla ... ihtiyaç duyulan şey öğretici videolar koyan siteler, web'in ihtiyacı olan bu!

      Evet, Debian Wheezy (şu anki Kararlı), paketlerin sürümleri yazının içinde 😉

  6.   eliotime3000 dijo

    Harika yorum. Bakalım ZPanel X ile bir tür Errata yapsam ve tesadüfen Debian Wheezy'de kurulumu manuel olarak yapsam.

  7.   Federico Antonio Valdes Toujague dijo

    Devam edin KZKG ^ Gaara !!!, En İyi Gerçeğin Kriteri Pratiktir ve yazdıklarınızla ilgili deneyime sahipsiniz. Profesyonel ve çalışan bir web sitesi. Major League Baseball, Ahbap.

    1.    eliotime3000 dijo

      Bu doğru. Ayrıca, Windows'a kurduğum web sunucuları ile oynamaya başladığımda, gerçek şu ki, eğer WordPress kullanıyorsanız Apache, kaynak tüketimi açısından ateş ediyor (Drupal'da kaynakların yarısını tüketiyordu).

  8.   taşıma dijo

    Nginx bölümü için bu eğitimin kullanışlı olacağını düşünüyorum. Şimdi Nginx, php, Varnish ve MariaDB ile bir sunucu kurmak istiyorum. Ama elbette, başlamalısınız ve tembellik sunucularla savaşmaya gelince çok şey yapabilir ve şu anda xDD'ye sahip olduğum tipik lamba ve bellek önbelleğinden memnunum.

    Bir tebrik.

  9.   auroszx dijo

    Harika, bunlardan sadece biri işe yarardı 🙂 Bir diğeri dört gözle bekliyor.

  10.   Ivan Gabriel Sosa dijo

    Seni takip ediyoruz Şu anda web sunucuları dünyasına başlıyoruz. Hostinger'dan iki tane satın aldık ve bir arkadaşımız onu sıfırdan yapılandırmamıza yardımcı oldu (PHP, MySQL, Apache). Ocak ayından beri kullandığım bir platform olan Linux'ta kullanılan tek kombinasyon.
    Ama bu konuyla çok ilgilendim. Saygılarımızla!

  11.   Jose Manuel dijo

    Hiç bir web sunucusu kurmadım ama eğer yapmak istersem, bir soru, öğreticileri anlamak ve kurulumu yapmak için gerekli seviye yüksek olacak mı yoksa temel bilgilerle deneyebilir miyim? Şimdiden teşekkürler.

    1.    eliotime3000 dijo

      Gerçek şu ki, bir veritabanı sunucusunu işleyebilmek için çok fazla bilgi gerektirmez. Bu deneyimi zaten denemiş biri size söyler.

  12.   Mauricio dijo

    Merhaba, bu yazı dizisi ile yapacaklarınız çok güzel.

    Yakın zamanda Nginx + Php Fastcgi + Mariadb'ı kurdum. Nginx.

    Bütün bunları Archlinux'da yaptım, çünkü bu dağıtım benim bakış açıma göre diğerlerinden daha fazla güzellik getirmeyen tek dağıtım. Onu kafesli bir ortama koydum ve mükemmel çalışması bana çok fazla rahatsızlık verdi.

    Şimdi mükemmel çalışıyor. Çocukların ve babaların süreçleri hakkındaki görüşlerinizi öğrenmekle ilgilenmeme rağmen, bana ne kadar çok ipucu verirlerse o kadar iyidir.

    Bütün bunlar sadece pratik için.
    Ekipman, 4GB DDR2 ram ve 2Ghz Core 2.4duo işlemciye sahiptir.

    Selamlar ve bu dizinin gelecek gönderilerini dört gözle bekliyorum.

  13.   kaş dijo

    Aynı anda 200 kullanıcı mı bağlı?
    Sadece günün belirli saatlerinde değil mi? Çünkü aksi takdirde günlük 30.000 ziyareti aşacaktı.

    1.    KZKG ^ Gaara dijo

      Evet, elbette her zaman çevrimiçi 200 kişi yok, şu anda neredeyse 40 kişi var çünkü hala erken, birkaç saat içinde 100'ü aşacaklar.

  14.   dhunter dijo

    Sırf eğlence olsun diye iş istasyonumda lighty'den nginx'e geçtim (şu anda Symfony2), conf'i buradan [1] aldım, çok basit.

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

  15.   Apr4xas dijo

    Bunun devamını bekliyorum 😀

    1.    KZKG ^ Gaara dijo

      Bu hafta yayınlamalıyım, bizi okuduğunuz için teşekkürler 🙂

      1.    salud dijo

        Y? çok mu eksik?

  16.   Dekan dijo

    İyi yazı…

  17.   NOEL İVAN dijo

    İYİ AKŞAMLAR.
    BİR OKUL PROJESİNİN ÖZELLİKLERİ NEDENİYLE, NGINX'i OPENBSD 5.4'E ORACLE MV SANAL KUTUSUNDA KURMAMA İZİN VERİYORLAR, YUKARIDAKİ BİLGİLERİ BULAMADIĞIM YUKARIDAKİ BİLGİLERİ BULAMADIĞIM, PHP, MYSQL, DİĞERLERİ ARASINDA KULLANABİLECEK NADAMALAR, BUNLARA İNANIYORLAR YUKARIDA SORUN OLMUŞTUR.