Server web di CentOS 8 dengan php7, node.js dan redis

kata pengantar

Sudah 2 hari sejak dirilisnya versi baru dari sistem operasi CentOS, yaitu CentOS 8. Dan sejauh ini ada cukup banyak artikel di Internet tentang bagaimana segala sesuatunya dilakukan di dalamnya, jadi saya memutuskan untuk mengisi celah tersebut. Selain itu, saya akan memberi tahu Anda tidak hanya tentang cara menginstal pasangan program ini, tetapi juga tentang bagaimana saya biasanya melihat instalasi Linux di lingkungan virtual di dunia modern untuk tugas-tugas umum, termasuk mempartisi disk dan sebagainya.

Namun pertama-tama, saya ingin berbicara secara singkat tentang mengapa perlu beralih ke versi ini dari semua versi sebelumnya, dan ada dua alasan untuk ini:

  1. php7! Di CentOS versi sebelumnya, php5.4 "Ortodoks" telah diinstal...

    Oke, untuk lebih seriusnya, banyak paket yang melompati beberapa versi secara massal. Kami (penggemar OS mirip redhat) akhirnya memasuki, jika bukan ke masa depan, setidaknya ke masa kini. Dan pendukung Ubuntu tidak akan lagi menertawakan kami dan menuding kami, yah... setidaknya untuk sementara ;).

  2. Transisi dari yum ke dnf. Perbedaan utamanya adalah sekarang secara resmi didukung untuk bekerja dengan beberapa versi paket sekaligus. Tepat di usia delapan tahun, saya belum pernah merasakan manfaatnya, tetapi kedengarannya menjanjikan.

Buat mesin virtual

Ada hypervisor yang berbeda dan saya tidak memiliki tujuan untuk menyesuaikan pembaca dengan hypervisor tertentu, saya akan memberi tahu Anda tentang prinsip umum.

ingatan

Pertama... Untuk menginstal sistem CentOS mulai dari 7 pastinya, dan menurut saya hal ini juga terjadi di 6 (“tapi ini belum pasti”), Anda perlu minimum RAM 2 GB. Oleh karena itu, saya menyarankan Anda untuk memberikan sebanyak itu terlebih dahulu.

Namun jika ada, setelah instalasi ukuran memori dapat dikurangi. Pada 1 GB sistem telanjang bekerja cukup baik, saya memeriksanya.

cakram

Untuk instalasi normal, sebaiknya buat disk virtual dengan kapasitas 20-30 GB. Ini cukup untuk sistem. Dan disk kedua untuk data. Itu dapat ditambahkan baik pada tahap pembuatan mesin virtual, dan setelahnya. Saya biasanya menambahkannya nanti.

prosesor

Pada satu inti, sistem telanjang tidak melambat. Dan karena sumber daya dapat diskalakan secara bebas, saya tidak melihat ada gunanya memberi lebih banyak pada tahap instalasi (kecuali Anda mengetahui persyaratannya dengan sempurna dan terlalu malas untuk masuk ke konfigurator lagi)

Sisanya biasanya dapat dibiarkan sebagai default.

Instalasi sebenarnya

Jadi... Mari kita luncurkan penginstalnya... Secara pribadi, saya telah menginstal layanan seperti itu hanya dalam bentuk mesin virtual untuk waktu yang lama, jadi saya tidak akan menjelaskan segala macam catatan distribusi pada flash drive - saya hanya memasang ISO sebagai CD di hypervisor favorit saya, unduh dan buka.

Instalasi dasarnya cukup khas, saya hanya akan membahas beberapa poin.

Pemilihan sumber

Sejak rilis versi kedelapan, mirror dari Yandex telah beredar selama berhari-hari. Artinya, ia naik secara berkala, dan kemudian mulai menunjukkan kesalahan lagi. Saya yakin ini karena beban layanan yang berlebihan. Oleh karena itu, untuk menunjukkan sumbernya, saya pribadi harus pergi, alih-alih memasukkan alamat biasa di sini, pilih mirror yang saya suka di sana dan masukkan alamat secara manual di jendela penginstal. Penting untuk diingat di sini bahwa Anda perlu menentukan jalur ke folder tempat direktori tersebut berada data ulang. Misalnya, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partisi disk

Pertanyaan ini menurut saya agak religius. Setiap admin mempunyai pendirian masing-masing mengenai hal ini. Namun saya tetap akan membagikan sudut pandang saya tentang masalah ini.

Ya, pada prinsipnya, Anda dapat mengalokasikan seluruh ruang ke root dan itu akan berfungsi, bahkan seringkali cukup baik. Lalu mengapa memagari taman dengan bagian yang berbeda? — Menurut saya, ada dua alasan utama hal ini: kuota dan portabilitas.

Misalnya, jika terjadi kesalahan dan terjadi kesalahan pada partisi data utama, Anda ingin tetap dapat mem-boot sistem dan melakukan tindakan resusitasi. Oleh karena itu, saya pribadi mengalokasikan partisi terpisah untuk/boot. Ada kernel dan bootloader. Biasanya 500 megabyte sudah cukup, tetapi dalam kasus yang jarang terjadi mungkin diperlukan lebih banyak, dan mengingat kita sudah terbiasa mengukur ruang dalam terabyte, saya mengalokasikan 2GB untuk bagian ini. Dan yang penting disini tidak bisa dilakukan lvm.

Berikutnya adalah root sistem. Untuk instalasi normal, saya tidak pernah membutuhkan lebih dari 4 GB per sistem, tetapi selama acara terjadwal saya sering menggunakan direktori /tmp untuk membongkar distribusi, dan saya tidak melihat ada gunanya mendedikasikannya ke partisi terpisah - dalam sistem modern itu dibersihkan secara otomatis, jadi tidak terisi. Jadi saya mengalokasikan 8GB untuk root.

Menukar... Pada umumnya, hanya ada sedikit kegunaan praktis darinya. Jika Anda mulai menggunakan swap di server Anda, saat ini di dunia nyata ini hanya berarti server perlu menambahkan lebih banyak RAM. Jika tidak, masalah kinerja dijamin (atau beberapa program “kebocoran” memori). Oleh karena itu, bagian ini diperlukan untuk tujuan diagnostik saja. Oleh karena itu, 2 GB adalah angka yang bagus. Ya, tidak peduli berapa banyak memori yang ada di server. Ya, saya membaca semua artikel yang menulis tentang rasio volume memori terhadap volume swap... IMHO, itu sudah ketinggalan zaman. Dalam 10 tahun latihan saya tidak pernah membutuhkan ini. 15 tahun yang lalu saya menggunakannya, ya.

IMHO, setiap orang dapat memutuskan sendiri apakah akan mengalokasikan /home ke partisi terpisah. Jika seseorang di server akan secara aktif menggunakan direktori ini, lebih baik untuk mengalokasikannya. Jika tidak ada, tidak perlu.

Selanjutnya, /var. Menurut saya, hal ini patut ditonjolkan. Untuk memulainya, Anda dapat membatasi diri hingga 4 GB, dan lihat bagaimana kelanjutannya. Dan ya, yang saya maksud dengan “bagaimana kelanjutannya”.

  1. Pertama, Anda selalu dapat memasang disk lain di subdirektori /var (yang akan saya tunjukkan nanti dengan sebuah contoh)
  2. Kedua, kami memiliki lvm - Anda selalu dapat menambahkannya. Dan Anda biasanya harus menambahkannya ketika terlalu banyak kayu gelondongan yang masuk ke sana. Tapi saya tidak pernah bisa memprediksi angka ini sebelumnya, jadi saya mulai dengan 2 GB lalu menontonnya.

Ruang yang tidak terisi akan tetap kosong di grup volume dan selalu dapat digunakan nanti.

LVM

semua Masuk akal untuk membuat partisi selain/boot di LVM. Ya, termasuk pertukaran. Ya, menurut semua saran, swap harus berada di awal disk, tetapi dalam kasus LVM, lokasinya pada prinsipnya tidak dapat ditentukan. Tapi seperti yang saya tulis di atas, sistem Anda seharusnya tidak gunakan swap sama sekali. Oleh karena itu, tidak masalah dimana dia berada. Sejujurnya, kita tidak hidup di tahun '95!

Selanjutnya, di LVM ada beberapa entitas dasar yang harus Anda jalani:

  • volume fisik
  • kelompok volume
  • volume logis

Volume fisik digabungkan menjadi beberapa kelompok, dan setiap volume fisik hanya dapat berada dalam satu kelompok, dan satu kelompok dapat ditempatkan pada beberapa volume fisik sekaligus.
Dan volume logis masing-masing berada dalam satu kelompok.

Tapi... Sial, ini abad ke-21 lagi. Dan servernya virtual. Tidak masuk akal untuk menerapkan mekanisme yang sama seperti yang diterapkan pada mekanisme fisik. Dan untuk virtual, penting untuk memiliki data secara terpisah dari sistem! Hal ini sangat penting, khususnya untuk kemampuan untuk dengan cepat mengalihkan data ke mesin virtual lain (misalnya, saat beralih ke OS baru) dan secara umum untuk semua jenis barang yang berguna (memisahkan cadangan berdasarkan partisi menggunakan alat hypervisor, misalnya) . Oleh karena itu, satu grup volume digunakan untuk sistem dan grup volume lainnya digunakan untuk data! Pembagian logis ini sangat membantu dalam hidup!

Jika Anda hanya membuat satu hard disk virtual saat membuat mesin virtual, di sinilah konfigurasi berakhir. Dan jika ada dua, jangan tandai yang kedua dulu.

Mari kita mulai instalasinya.

Pasca instalasi

Jadi, sistem yang baru diinstal akhirnya bisa boot. Hal pertama yang perlu Anda periksa adalah Internet.

ping ya.ru

Apakah ada jawabannya? - Bagus, tekan Ctrl-C.
Jika tidak, siapkan jaringan, tidak ada kehidupan tanpa ini, tapi artikel saya bukan tentang itu.

Nah kalau kita belum di root, masuklah ke dalam root, karena sedang mengetik seperti itu jumlah perintah dengan sudo secara pribadi membuat saya kesal (dan semoga admin paranoid memaafkan saya):

sudo -i

Sekarang hal pertama yang kita lakukan adalah mengetik

dnf -y update

Dan jika Anda membaca artikel ini pada tahun 2019, kemungkinan besar tidak akan terjadi apa-apa, tetapi patut dicoba.

Sekarang mari kita konfigurasikan disk yang tersisa

Katakanlah partisi dengan sistem adalah xvda, maka disk datanya adalah xvdb. OKE.

Kebanyakan saran akan dimulai dengan “Jalankan fdisk dan buat partisi…”

Jadi ini tidak benar!

Saya akan mengatakannya lagi karena ini sangat penting! Dalam hal ini, untuk bekerja dengan LVM, yang menempati satu disk virtual penuh, membuat partisi di dalamnya berbahaya! Setiap kata dalam frasa ini penting. Jika kita bekerja tanpa LVM, kita perlu melakukannya. Jika kita memiliki sistem dan data di disk, kita memerlukannya. Jika karena alasan tertentu kita perlu membiarkan setengah dari disk kosong, kita juga harus melakukannya. Namun biasanya semua asumsi ini murni teoretis. Karena jika kita memutuskan untuk menambah space pada partisi yang sudah ada, maka cara termudah untuk melakukannya adalah dengan konfigurasi ini. Dan kemudahan administrasi melebihi banyak hal lainnya sehingga kami sengaja bergerak menuju konfigurasi ini.

Dan kemudahannya adalah jika Anda ingin memperluas partisi data, Anda cukup menambahkan spasi ke partisi virtual, lalu memperluas grup menggunakan vgextend dan selesai! Dalam kasus yang jarang terjadi, sesuatu yang lain mungkin diperlukan, tetapi setidaknya Anda tidak perlu memperluas volume logis di awal, dan itu sudah bagus. Jika tidak, untuk memperluas volume ini, mereka merekomendasikan terlebih dahulu menghapus yang sudah ada, dan kemudian membuat yang baru di atas... Yang tidak terlihat bagus dan tidak dapat dilakukan secara langsung, tetapi perluasan sesuai dengan skenario yang saya tunjukkan dapat dilakukan dilakukan "dengan cepat" bahkan tanpa melepas partisi.

Jadi, kita membuat volume fisik, lalu grup volume yang menyertakannya, dan kemudian partisi untuk server kita:

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

Di sini, alih-alih huruf kapital "L" (dan ukurannya dalam GB), Anda dapat menentukan yang kecil, lalu alih-alih ukuran absolut, tentukan yang relatif, misalnya, untuk menggunakan setengah dari ruang kosong saat ini di grup volume, Anda perlu menentukan “-l +50%GRATIS”

Dan perintah terakhir memformat partisi dalam sistem file ext4 (yang sejauh ini, menurut pengalaman saya, menunjukkan stabilitas terbesar jika semuanya rusak, jadi saya lebih menyukainya).

Sekarang kita memasang partisi di tempat yang tepat. Untuk melakukan ini, tambahkan baris yang benar ke /etc/fstab:

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

Dan kami menelepon

mount /var/www

Jika terjadi kesalahan, bunyikan alarm! Karena ini berarti kita mengalami error pada /etc/fstab. Dan pada reboot berikutnya kita akan mengalami masalah yang sangat besar. Sistem mungkin tidak bisa boot sama sekali, yang seringkali sangat menyedihkan bagi layanan cloud. Oleh karena itu, baris terakhir yang ditambahkan harus segera diperbaiki, atau dihapus sama sekali! Itu sebabnya kami tidak menulis perintah mount secara manual - maka kami tidak akan memiliki kesempatan bagus untuk segera memeriksa konfigurasi.

Sekarang kami menginstal semua yang kami inginkan dan membuka port untuk web:

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

Jika mau, Anda juga dapat meletakkan database di sini, tetapi secara pribadi saya mencoba memisahkannya dari server web. Meski menjaganya tetap dekat lebih cepat, ya. Kecepatan adaptor jaringan virtual biasanya sekitar gigabit, dan saat bekerja pada mesin yang sama, panggilan terjadi hampir seketika. Tapi itu kurang aman. Apa yang lebih penting bagi siapa?

Sekarang kita tambahkan parameter ke file konfigurasi (kita buat yang baru, ideologi modern CentOS seperti ini)

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

Nyalakan ulang servernya.
Di komentar, saya dimarahi karena menasihati saya untuk mematikan SeLinux, jadi saya akan mengoreksi diri sendiri dan menulis tentang fakta bahwa setelah ini Anda harus ingat untuk mengkonfigurasi SeLinux.
Sebenarnya, untung! 🙂

Sumber: www.habr.com

Tambah komentar