Pelayan web pada CentOS 8 dengan php7, node.js dan redis

Perutusan

Sudah 2 hari sejak keluaran versi baharu sistem pengendalian CentOS, iaitu CentOS 8. Dan setakat ini terdapat beberapa artikel di Internet tentang bagaimana perkara dilakukan di dalamnya, jadi saya memutuskan untuk mengisi jurang ini. Lebih-lebih lagi, saya akan memberitahu anda bukan sahaja tentang cara memasang pasangan program ini, tetapi juga tentang cara saya secara amnya melihat memasang Linux dalam persekitaran maya di dunia moden untuk tugas biasa, termasuk membahagikan cakera dan sebagainya.

Tetapi pada mulanya, saya ingin bercakap secara ringkas tentang mengapa ia patut beralih kepada versi ini dari semua yang sebelumnya, dan terdapat dua sebab untuk ini:

  1. php7! Dalam versi CentOS sebelumnya, php5.4 "Ortodoks" telah dipasang...

    Okay, untuk menjadi lebih serius, banyak pakej melompat melalui beberapa versi secara beramai-ramai. Kami (peminat OS seperti redhat) akhirnya memasuki, jika tidak ke masa depan, sekurang-kurangnya ke masa kini. Dan penyokong Ubuntu tidak lagi akan mentertawakan kami dan menuding jari kepada kami, baik... sekurang-kurangnya untuk seketika ;).

  2. Peralihan daripada yum kepada dnf. Perbezaan utama ialah kini ia disokong secara rasmi untuk berfungsi dengan beberapa versi pakej sekaligus. Betul-betul dalam lapan, saya tidak pernah mendapati ini berguna, tetapi ia kelihatan menjanjikan.

Buat mesin maya

Terdapat hipervisor yang berbeza dan saya tidak mempunyai matlamat untuk menyesuaikan pembaca kepada yang khusus, saya akan memberitahu anda tentang prinsip umum.

memori

Pertama... Untuk memasang sistem CentOS bermula dari 7 pasti, dan pada pendapat saya ini juga berlaku dalam 6 ("tetapi ini tidak pasti"), anda perlu minimum 2 GB RAM. Oleh itu, saya nasihatkan anda untuk mengeluarkan sebanyak itu dahulu.

Tetapi jika ada, selepas pemasangan saiz memori boleh dikurangkan. Pada 1 GB sistem kosong berfungsi dengan baik, saya menyemak.

Диск

Untuk pemasangan biasa, anda harus mencipta cakera maya dengan kapasiti 20-30 GB. Ini sudah cukup untuk sistem. Dan cakera kedua untuk data. Ia boleh ditambah pada peringkat mencipta mesin maya dan selepas itu. Saya biasanya menambahnya kemudian.

Pemproses

Pada satu teras, sistem kosong tidak menjadi perlahan. Dan oleh kerana sumber boleh berskala secara bebas, saya tidak nampak apa-apa guna memberi lebih banyak pada peringkat pemasangan (melainkan anda mengetahui keperluan dengan sempurna dan terlalu malas untuk pergi ke configurator sekali lagi)

Selebihnya biasanya boleh dibiarkan sebagai lalai.

Pemasangan sebenar

Jadi... Mari kita lancarkan pemasang... Secara peribadi, saya telah memasang perkhidmatan sedemikian hanya dalam bentuk mesin maya untuk masa yang lama, jadi saya tidak akan menerangkan semua jenis rekod pengedaran pada pemacu kilat - saya hanya memasang ISO sebagai CD dalam hypervisor kegemaran saya, muat turun dan pergi.

Pemasangan asas agak tipikal, saya hanya akan memikirkan beberapa perkara.

Pemilihan sumber

Sejak keluaran versi kelapan, cermin dari Yandex telah tergeletak selama beberapa hari. Nah, iaitu, ia meningkat secara berkala, dan kemudian sekali lagi mula menunjukkan ralat. Saya pasti ia disebabkan oleh beban yang berlebihan pada perkhidmatan. Oleh itu, untuk menunjukkan sumber, saya secara peribadi terpaksa, bukannya memasukkan alamat biasa, pergi di sini, pilih cermin yang saya suka di sana dan masukkan alamat secara manual dalam tetingkap pemasang. Adalah penting untuk diingat di sini bahawa anda perlu menentukan laluan ke folder di mana direktori terletak repodata. Contohnya mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Pembahagian cakera

Soalan ini agak agama pada pendapat saya. Setiap admin mempunyai pendirian tersendiri dalam hal ini. Tetapi saya tetap akan berkongsi pandangan saya mengenai isu tersebut.

Ya, pada dasarnya, anda boleh memperuntukkan seluruh ruang ke akar dan ia akan berfungsi, selalunya walaupun agak baik. Mengapa kemudian memagar taman dengan bahagian yang berbeza? β€” Pada pendapat saya, terdapat dua sebab utama untuk ini: kuota dan mudah alih.

Sebagai contoh, jika berlaku kesilapan dan ralat berlaku pada partition data utama, anda mahu masih boleh but sistem dan menjalankan langkah resusitasi. Oleh itu, saya secara peribadi memperuntukkan partition berasingan untuk /boot. Terdapat kernel dan pemuat but. Biasanya 500 megabait sudah mencukupi, tetapi dalam kes yang jarang berlaku, lebih banyak lagi mungkin diperlukan, dan memandangkan kita sudah biasa mengukur ruang dalam terabait, saya memperuntukkan 2GB untuk bahagian ini. Dan yang penting di sini ialah ia tidak boleh dilakukan lvm.

Seterusnya datang akar sistem. Untuk pemasangan biasa, saya tidak pernah memerlukan lebih daripada 4 GB setiap sistem, tetapi semasa acara yang dijadualkan, saya sering menggunakan direktori /tmp untuk membongkar pengedaran, dan saya tidak nampak apa-apa gunanya mendedikasikannya kepada partition berasingan - dalam sistem moden ia dibersihkan secara automatik, jadi ia tidak diisi . Jadi saya memperuntukkan 8GB untuk root.

Tukar... Pada umumnya, terdapat sedikit kegunaan praktikal daripadanya. Jika anda mula menggunakan swap pada pelayan anda, hari ini di dunia nyata ini hanya bermakna pelayan perlu menambah lebih banyak RAM. Jika tidak, masalah dengan prestasi dijamin (atau beberapa program "kebocoran" memori). Oleh itu, bahagian ini diperlukan untuk tujuan diagnostik sahaja. Oleh itu, 2 GB adalah nombor yang sangat baik. Ya, tidak kira berapa banyak memori yang terdapat pada pelayan. Ya, saya membaca semua artikel yang ditulis mengenai nisbah volum memori kepada volum swap... IMHO, ia sudah lapuk. Dalam 10 tahun berlatih saya tidak pernah memerlukan ini. 15 tahun lalu saya menggunakannya, ya.

IMHO, semua orang boleh memutuskan sendiri sama ada untuk memperuntukkan /home ke dalam partition yang berasingan. Jika seseorang di pelayan akan menggunakan direktori ini secara aktif, lebih baik untuk memperuntukkannya. Jika tiada sesiapa, tidak perlu.

Seterusnya, /var. Pada pendapat saya, ia pasti perlu diketengahkan. Sebagai permulaan, anda boleh mengehadkan diri anda kepada 4 GB, dan lihat bagaimana ia berlaku. Dan ya, dengan "bagaimana ia berlaku" saya maksudkan itu

  1. Pertama, anda sentiasa boleh memasang cakera lain dalam subdirektori /var (yang akan saya tunjukkan kemudian dengan contoh)
  2. Kedua, kami mempunyai lvm - anda sentiasa boleh menambahnya. Dan anda biasanya perlu menambahnya apabila terlalu banyak balak mula mencurah ke sana. Tetapi saya tidak pernah dapat meramalkan angka ini lebih awal, jadi saya mulakan dengan 2 GB dan kemudian menonton.

Ruang yang tidak diperuntukkan akan kekal kosong dalam kumpulan volum dan boleh digunakan kemudian.

LVM

semua Adalah masuk akal untuk membuat partition selain daripada /boot dalam LVM. Ya, termasuk pertukaran. Ya, mengikut semua nasihat, swap hendaklah pada permulaan cakera, tetapi dalam kes LVM lokasinya tidak dapat ditentukan secara prinsip. Tetapi seperti yang saya tulis di atas, sistem anda tidak boleh gunakan swap sama sekali. Oleh itu, tidak kira di mana dia berada. Nah, kami tidak hidup di '95, secara jujur!

Selanjutnya, dalam LVM terdapat beberapa entiti asas yang anda perlukan untuk dapat hidup dengan:

  • isipadu fizikal
  • kumpulan volum
  • isipadu logik

Jilid fizikal digabungkan ke dalam kumpulan, dan setiap volum fizikal boleh berada dalam satu kumpulan sahaja, dan kumpulan boleh terletak pada beberapa jilid fizikal sekaligus.
Dan volum logik setiap satu dalam satu kumpulan.

Tetapi... Alamak, ia adalah abad ke-21 sekali lagi. Dan pelayan adalah maya. Tidak masuk akal untuk memohon kepada mereka mekanisme yang sama yang digunakan pada mekanisme fizikal. Dan untuk yang maya adalah penting untuk mempunyai data secara berasingan daripada sistem! Ini sangat penting, khususnya untuk keupayaan untuk menukar data dengan cepat ke mesin maya lain (contohnya, apabila menukar kepada OS baharu) dan secara amnya untuk semua jenis barang berguna (sandaran berasingan mengikut partition menggunakan alat hypervisor, contohnya) . Oleh itu, satu kumpulan volum digunakan untuk sistem dan semestinya satu lagi digunakan untuk data! Pembahagian logik ini banyak membantu dalam kehidupan!

Jika anda mencipta hanya satu cakera keras maya semasa mencipta mesin maya, di sinilah konfigurasi berakhir. Dan jika ada dua, maka jangan tandakan yang kedua lagi.

Mari mulakan pemasangan.

Selepas pemasangan

Jadi, sistem yang baru dipasang akhirnya boot. Perkara pertama yang perlu anda semak ialah Internet.

ping ya.ru

Adakah terdapat jawapan? - Bagus, tekan Ctrl-C.
Jika tidak, pergi sediakan rangkaian, tiada kehidupan tanpa ini, tetapi bukan itu maksud artikel saya.

Sekarang jika kita belum berada di bawah akar, pergi ke bawah akar, kerana menaip seperti itu bilangan arahan dengan sudo secara peribadi mematahkan saya (dan semoga pentadbir paranoid memaafkan saya):

sudo -i

Sekarang perkara pertama yang kita lakukan ialah menaip

dnf -y update

Dan jika anda membaca artikel ini pada tahun 2019, kemungkinan besar tiada apa yang akan berlaku, tetapi ia patut dicuba.

Sekarang mari kita konfigurasikan cakera yang tinggal

Katakan partition dengan sistem ialah xvda, maka cakera data akan menjadi xvdb. OKEY.

Kebanyakan nasihat akan bermula dengan "Jalankan fdisk dan buat partition..."

Jadi ini tidak betul!

Saya akan mengatakannya sekali lagi kerana ia sangat penting! Dalam kes ini, untuk bekerja dengan LVM, yang menduduki satu keseluruhan cakera maya, mencipta partition padanya adalah berbahaya! Setiap perkataan dalam frasa ini adalah penting. Jika kita bekerja tanpa LVM, kita perlu. Jika kami mempunyai sistem dan data pada cakera, kami memerlukannya. Jika atas sebab tertentu kita perlu membiarkan separuh daripada cakera kosong, kita juga harus. Tetapi biasanya semua andaian ini adalah teori semata-mata. Kerana jika kita memutuskan untuk menambah ruang pada partition sedia ada, maka cara paling mudah untuk melakukannya adalah dengan konfigurasi ini. Dan kemudahan pentadbiran sangat mengatasi banyak perkara lain yang kami sengaja bergerak ke arah konfigurasi ini.

Dan kemudahannya ialah jika anda ingin mengembangkan partition data, anda hanya menambah ruang pada partition maya, kemudian mengembangkan kumpulan menggunakan vgextend dan itu sahaja! Dalam kes yang jarang berlaku, sesuatu yang lain mungkin diperlukan, tetapi sekurang-kurangnya anda tidak perlu mengembangkan volum logik pada mulanya, yang sudah bagus. Jika tidak, untuk mengembangkan volum ini, mereka mengesyorkan memadamkan yang sedia ada dahulu, dan kemudian mencipta yang baharu di atas... Yang kelihatan tidak begitu bagus dan tidak boleh dilakukan secara langsung, tetapi pengembangan mengikut senario yang saya nyatakan boleh dijalankan "dengan cepat" tanpa menyahlekap partition.

Jadi, kami mencipta volum fizikal, kemudian kumpulan volum yang menyertakannya, dan kemudian partition untuk pelayan kami:

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

Di sini, bukannya huruf besar "L" (dan saiz dalam GB), anda boleh menentukan yang kecil, dan kemudian bukannya saiz mutlak, nyatakan yang relatif, sebagai contoh, untuk menggunakan separuh daripada ruang kosong pada masa ini. kumpulan volum, anda perlu menentukan "-l +50%PERCUMA"

Dan arahan terakhir memformat partition dalam sistem fail ext4 (yang setakat ini, dalam pengalaman saya, menunjukkan kestabilan yang paling besar sekiranya semuanya rosak, jadi saya lebih suka).

Sekarang kami memasang partition di tempat yang betul. Untuk melakukan ini, tambahkan baris yang betul ke /etc/fstab:

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

Dan kami mendail

mount /var/www

Jika ralat berlaku, bunyikan penggera! Kerana ini bermakna kita mempunyai ralat dalam /etc/fstab. Dan pada but semula seterusnya kita akan menghadapi masalah yang sangat besar. Sistem mungkin tidak boot sama sekali, yang selalunya sangat menyedihkan untuk perkhidmatan awan. Oleh itu, adalah perlu untuk membetulkan baris terakhir yang ditambahkan dengan segera atau memadamnya sama sekali! Itulah sebabnya kami tidak menulis arahan pemasangan secara manual - maka kami tidak akan mempunyai peluang yang sangat baik untuk menyemak konfigurasi dengan segera.

Sekarang kami sebenarnya memasang semua yang kami mahu 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 anda mahu, anda juga boleh meletakkan pangkalan data di sini, tetapi secara peribadi saya cuba memisahkannya daripada pelayan web. Walaupun menjaga dia lebih cepat, ya. Kelajuan penyesuai rangkaian maya biasanya sekitar gigabit, dan apabila bekerja pada mesin yang sama, panggilan berlaku hampir serta-merta. Tetapi ia kurang selamat. Apa yang lebih penting kepada siapa?

Sekarang kami menambah parameter pada fail konfigurasi (kami membuat yang baru, ideologi moden CentOS adalah seperti ini)

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

Kami but semula pelayan.
Dalam komen, saya dimarahi kerana menasihati saya untuk mematikan SeLinux, jadi saya akan membetulkan diri saya dan menulis tentang fakta bahawa selepas ini anda perlu ingat untuk mengkonfigurasi SeLinux.
Sebenarnya, untung! πŸ™‚

Sumber: www.habr.com

Tambah komen