CentOS 8 üzerinde php7, node.js ve redis içeren web sunucusu

Önsöz

CentOS işletim sisteminin yeni bir sürümü olan CentOS 2'in piyasaya sürülmesinden bu yana 8 gün geçti. Ve şu ana kadar internette işlerin nasıl yapıldığına dair pek çok makale var, bu yüzden bu boşluğu doldurmaya karar verdim. Dahası, size sadece bu program çiftinin nasıl kurulacağını değil, aynı zamanda diskleri bölümlemek vb. dahil olmak üzere tipik görevler için Linux'u modern dünyada sanal bir ortama kurmayı genel olarak nasıl gördüğümü de anlatacağım.

Ancak başlangıçta neden önceki sürümlerden bu sürüme geçmeye değer olduğundan kısaca bahsetmek istiyorum ve bunun iki nedeni var:

  1. php7! CentOS'un önceki sürümünde “Ortodoks” php5.4 kuruluydu...

    Tamam, biraz daha ciddi olmak gerekirse, pek çok paket toplu halde çeşitli versiyonlardan atladı. Biz (kırmızı şapka benzeri işletim sistemlerinin hayranları) nihayet geleceğe olmasa da en azından şimdiye girdik. Ve Ubuntu destekçileri artık bize gülmeyecek ve bizi parmakla göstermeyecek, yani... en azından bir süreliğine ;).

  2. Yum'dan dnf'ye geçiş. Temel fark, artık paketlerin birkaç sürümüyle aynı anda çalışmanın resmi olarak desteklenmesidir. Tam sekizde, bunu hiçbir zaman yararlı bulmadım, ancak umut verici görünüyor.

Sanal makine oluşturun

Farklı hipervizörler var ve okuyucuyu belirli bir hipervizöre uyarlamak gibi bir amacım yok, size genel prensipleri anlatacağım.

Bellek

Öncelikle… Elbette 7'den başlayarak bir CentOS sistemi kurmak için ki bence 6'da da durum böyleydi (“ama bu kesin değil”), ihtiyacınız var asgari 2GB RAM. Bu nedenle öncelikle bu kadarını vermenizi tavsiye ederim.

Ancak kurulumdan sonra bellek boyutu azaltılabilir. 1 GB'ta çıplak sistem oldukça iyi çalışıyor, kontrol ettim.

disk

Normal bir kurulum için 20-30 GB kapasiteli bir sanal disk oluşturmalısınız. Bu sistem için yeterlidir. Ve veriler için ikinci bir disk. Hem sanal makine oluşturma aşamasında hem de sonrasında eklenebilir. Genellikle daha sonra eklerim.

işlemci

Tek çekirdekte çıplak sistem yavaşlamıyor. Kaynaklar serbestçe ölçeklendirilebildiğinden, kurulum aşamasında daha fazlasını vermenin bir anlamı olduğunu düşünmüyorum (gereksinimleri mükemmel bir şekilde bilmiyorsanız ve yapılandırıcıya tekrar giremeyecek kadar tembel değilseniz)

Geri kalanı genellikle varsayılan olarak bırakılabilir.

Gerçek kurulum

Öyleyse... Yükleyiciyi başlatalım... Kişisel olarak, bu tür hizmetleri uzun süredir yalnızca sanal makineler biçiminde kuruyorum, bu nedenle bir flash sürücüdeki her türlü dağıtım kaydını açıklamayacağım - sadece ISO'yu favori hiper yöneticime CD olarak yerleştir, indir ve gidelim.

Temel kurulum oldukça tipik, sadece birkaç nokta üzerinde duracağım.

Kaynak seçimi

Sekizinci sürümün piyasaya sürülmesinden bu yana, Yandex'in aynası günlerdir ortalıkta duruyor. Yani periyodik olarak yükseliyor ve sonra tekrar hata göstermeye başlıyor. Bunun servisteki aşırı yükten kaynaklandığından eminim. Bu nedenle, kaynağı belirtmek için, her zamanki adresi girmek yerine şahsen gitmek zorunda kaldım. burada, orada beğendiğim aynayı seçin ve adresi kurulum penceresine manuel olarak girin. Burada dizinin bulunduğu klasörün yolunu belirtmeniz gerektiğini unutmamak önemlidir. repodata. Örneğin, Mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Disk bölümleme

Bu soru bana göre oldukça dini. Her yöneticinin bu konuda kendi tutumu vardır. Ancak yine de konuya ilişkin görüşlerimi paylaşacağım.

Evet, prensip olarak, tüm alanı köke ayırabilirsiniz ve işe yarayacaktır, hatta çoğu zaman oldukça iyi. O halde neden farklı bölümleri olan bir bahçeyi çitle çeviresiniz ki? — Bana göre bunun iki temel nedeni var: kotalar ve taşınabilirlik.

Örneğin, bir şeyler ters giderse ve ana veri bölümünde hatalar meydana gelirse, sistemi yine de önyükleyebilmek ve canlandırma önlemlerini uygulayabilmek istersiniz. Bu nedenle /boot için kişisel olarak ayrı bir bölüm ayırıyorum. Bir çekirdek ve bir önyükleyici var. Genellikle 500 megabayt yeterlidir, ancak nadir durumlarda daha fazlasına ihtiyaç duyulabilir ve alanı terabayt cinsinden ölçmeye zaten alışkın olduğumuz göz önüne alındığında, bu bölüme 2 GB ayırıyorum. Ve burada önemli olan lvm'nin yapılamamasıdır.

Daha sonra sistemin kökü gelir. Normal bir kurulum için, hiçbir zaman sistem başına 4 GB'tan fazlasına ihtiyaç duymadım, ancak planlanmış etkinlikler sırasında dağıtımları açmak için sıklıkla /tmp dizinini kullanıyorum ve modern sistemlerde bunu ayrı bir bölüme ayırmanın bir anlamı olduğunu görmüyorum. otomatik olarak temizlendiğinden doldurulmaz. Bu yüzden root için 8GB ayırıyorum.

Takas... Genel olarak, bunun pratik kullanımı çok azdır. Sunucunuzda takas kullanmaya başlarsanız, bugün gerçek dünyada bu yalnızca sunucunun daha fazla RAM eklemesi gerektiği anlamına gelir. Aksi takdirde, performansla ilgili sorunlar garanti edilir (veya bazı programların belleği "sızdırması"). Bu nedenle bu bölüme yalnızca tanı amaçlı ihtiyaç duyulmaktadır. Bu nedenle 2 GB mükemmel bir rakamdır. Evet, sunucuda ne kadar bellek olduğuna bakılmaksızın. Evet, bellek hacminin takas hacmine oranı hakkında yazılan tüm makaleleri okudum... IMHO, bunlar modası geçmiş. 10 yıllık tecrübemde buna hiç ihtiyaç duymadım. 15 yıl önce onları kullanıyordum, evet.

IMHO, herkes /evi ayrı bir bölüme ayırıp ayırmayacağına kendisi karar verebilir. Sunucudaki birisi bu dizini aktif olarak kullanacaksa, onu tahsis etmek daha iyidir. Kimse yoksa gerek yok.

Sonraki, /var. Bana göre mutlaka vurgulanmalıdır. Başlangıç ​​olarak kendinizi 4 GB ile sınırlayabilir ve nasıl gittiğini görebilirsiniz. Ve evet, "nasıl gidiyor" derken şunu kastediyorum

  1. İlk olarak, /var alt dizinine her zaman başka bir disk takabilirsiniz (bunu daha sonra bir örnekle göstereceğim)
  2. İkincisi, lvm'miz var - onu her zaman ekleyebilirsiniz. Ve genellikle oraya çok fazla kütük dökülmeye başladığında bunu eklemeniz gerekir. Ama bu rakamı hiçbir zaman önceden tahmin edemedim o yüzden 2 GB ile başlayıp sonra izliyorum.

Ayrılmamış alan, birim grubunda boş kalacak ve daha sonra her zaman kullanılabilir.

LVM

tüm LVM'de /boot dışında bölümler oluşturmak mantıklıdır. Evet takas dahil. Evet, tüm tavsiyelere göre takas diskin başında olmalıdır, ancak LVM durumunda prensipte konumu belirlenemez. Ancak yukarıda yazdığım gibi sisteminiz olmamalı kesinlikle takas kullanın. Bu nedenle nerede olduğu önemli değil. Dürüst olmak gerekirse 95'te yaşamıyoruz!

Ayrıca LVM'de birlikte yaşayabilmeniz gereken birkaç temel varlık vardır:

  • fiziksel hacim
  • cilt grubu
  • mantıksal hacim

Fiziksel hacimler gruplar halinde birleştirilir ve her fiziksel hacim yalnızca bir grupta olabilir ve bir grup aynı anda birden fazla fiziksel hacimde yer alabilir.
Ve mantıksal hacimlerin her biri bir gruptadır.

Ama... Lanet olsun, yine 21. yüzyıla geldik. Ve sunucular sanaldır. Fiziksel olanlara uygulanan mekanizmaların aynısını onlara da uygulamanın hiçbir anlamı yok. Ve sanal olanlar için verilerin sistemden ayrı olması önemlidir! Bu, özellikle verileri başka bir sanal makineye hızlı bir şekilde geçirme yeteneği (örneğin, yeni bir işletim sistemine geçerken) ve genel olarak her türlü yararlı özellik (örneğin, hipervizör araçlarını kullanarak yedeklemeleri bölümlere göre ayırma) için çok önemlidir. . Bu nedenle, sistem için bir hacim grubu kullanılır ve veriler için mutlaka bir başkası kullanılır! Bu mantıksal bölünmenin hayatta çok faydası olur!

Sanal makine oluştururken yalnızca bir sanal sabit disk oluşturduysanız yapılandırmanın bittiği yer burasıdır. Ve eğer iki tane varsa, o zaman ikinciyi henüz işaretlemeyin.

Kuruluma başlayalım.

Yükleme sonrası

Böylece yeni kurulan sistem nihayet başlatıldı. Kontrol etmeniz gereken ilk şey İnternet.

ping ya.ru

Bir cevap var mı? - Harika, Ctrl-C'ye basın.
Değilse, gidin bir ağ kurun, bu olmadan hayat olmaz ama benim yazımın konusu bu değil.

Şimdi eğer henüz root altında değilsek root altına gidin çünkü yazarak olduğunu sudo ile yazılan komutların sayısı beni kişisel olarak kırdı (ve paranoyak yöneticiler beni affetsin):

sudo -i

Şimdi yapacağımız ilk şey yazmak

dnf -y update

Ve eğer bu makaleyi 2019'da okuyorsanız, büyük olasılıkla hiçbir şey olmayacak, ama denemeye değerdi.

Şimdi kalan diski yapılandıralım

Diyelim ki sistemdeki bölüm xvda, o zaman veri diski xvdb olacak. TAMAM.

Çoğu tavsiye "fdisk'i çalıştır ve bir bölüm oluştur..." ile başlayacak.

Yani bu hatalı olarak!

Tekrar söyleyeceğim çünkü bu çok önemli! Bu durumda, bir sanal diskin tamamını kaplayan LVM ile çalışmak, üzerinde bölümler oluşturmak zararlıdır! Bu cümledeki her kelime önemlidir. Eğer LVM olmadan çalışıyorsak, buna ihtiyacımız var. Diskte bir sistemimiz ve verimiz varsa ona ihtiyacımız var. Herhangi bir nedenle diskin yarısını boş bırakmamız gerekirse, bunu da yapmalıyız. Ancak genellikle tüm bu varsayımlar tamamen teoriktir. Çünkü mevcut bir bölüme alan eklemeye karar verirsek bunu yapmanın en kolay yolu bu yapılandırmayı kullanmaktır. Yönetim kolaylığı diğer pek çok şeye o kadar ağır basıyor ki, bilinçli olarak bu yapılandırmaya doğru ilerliyoruz.

Ve kolaylık şu ki, veri bölümünü genişletmek istiyorsanız, sanal bölüme boşluklar eklemeniz, ardından vgextend'i kullanarak grubu genişletmeniz yeterlidir, işte bu kadar! Nadir durumlarda başka bir şey gerekebilir, ancak en azından başlangıçta mantıksal hacmi genişletmenize gerek kalmayacak ki bu zaten güzel. Aksi takdirde, bu hacmi genişletmek için önce mevcut olanı silmenizi ve ardından üstüne yeni bir tane oluşturmanızı öneriyorlar... Bu pek hoş görünmüyor ve canlı olarak yapılamaz, ancak belirttiğim senaryoya göre genişletme yapılabilir. bölmeyi sökmeden "anında" gerçekleştirilir.

Böylece, fiziksel bir birim, ardından onu içeren bir birim grubu ve ardından sunucumuz için bir bölüm oluştururuz:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

Burada, büyük harf "L" (ve GB cinsinden boyut) yerine küçük bir tane belirtebilir ve ardından mutlak boyut yerine göreceli bir boyut belirtebilirsiniz, örneğin şu anda boş alanın yarısını kullanmak için Bir cilt grubu için “-l +50%FREE” belirtmeniz gerekir

Ve son komut, bölümü ext4 dosya sistemindeki biçimlendirir (şu ana kadar deneyimlerime göre, her şeyin bozulması durumunda en büyük kararlılığı gösterir, bu yüzden bunu tercih ederim).

Şimdi bölümü doğru yere monte ediyoruz. Bunu yapmak için /etc/fstab dosyasına doğru satırı ekleyin:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

Ve biz çeviriyoruz

mount /var/www

Bir hata meydana gelirse alarmı çalın! Çünkü bu, /etc/fstab dosyasında bir hatamız olduğu anlamına geliyor. Ve bir sonraki yeniden başlatmada çok büyük sorunlarımız olacak. Sistem hiç önyükleme yapmayabilir ve bu genellikle bulut hizmetleri için çok üzücüdür. Bu nedenle ya eklenen son satırı acilen düzeltmek ya da tamamen silmek gerekiyor! Bu nedenle mount komutunu manuel olarak yazmadık - o zaman yapılandırmayı hemen kontrol etmek için bu kadar mükemmel bir fırsatımız olmazdı.

Artık aslında istediğimiz her şeyi kuruyoruz ve web için bağlantı noktalarını açıyoruz:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

İsterseniz buraya bir veritabanı da koyabilirsiniz ama ben kişisel olarak onu web sunucusundan ayrı tutmaya çalışıyorum. Her ne kadar onu yakın tutmak daha hızlı olsa da, evet. Sanal ağ bağdaştırıcılarının hızı genellikle gigabit civarındadır ve aynı makine üzerinde çalışırken çağrılar neredeyse anında gerçekleşir. Ancak daha az güvenlidir. Kimin için hangisi daha önemli?

Şimdi parametreyi konfigürasyon dosyasına ekliyoruz (yeni bir tane oluşturuyoruz, CentOS'un modern ideolojisi böyle)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

Sunucuyu yeniden başlatıyoruz.
Yorumlarda SeLinux'u kapatmamı tavsiye ettiğim için azarlandım, bu yüzden kendimi düzelteceğim ve bundan sonra SeLinux'u yapılandırmayı hatırlamanız gerektiğini yazacağım.
Aslında kâr! 🙂

Kaynak: habr.com

Yorum ekle