Cara menggunakan php-fpm virtual host

Hal paling normal di dunia saat Anda memiliki server, adalah memikirkan tentang keamanan dan lebih banyak keamanan, Anda tidak akan pernah cukup paranoid

Praktik yang agak umum dan TIDAK ADA yang direkomendasikan, adalah menggunakan pengguna yang sama untuk semua database, lebih buruk lagi jika root digunakan, yang luar biasa kelihatannya, ada yang (karena gelandangan atau ketidaktahuan) melakukan ini, saya sudah berbicara tentang mengapa Anda TIDAK boleh bertindak seperti ini di posting lainSekarang saatnya menjelaskan bagaimana dan mengapa lebih baik memisahkan pemrosesan server web di pengguna yang berbeda, kali ini akan menggunakan Nginx.

Cara menggunakan php-fpm virtual host

Indeks

Apa itu pengguna dan server web?

Untuk menjelaskannya secara singkat dan sederhana, server web (apache, nginx, apa pun) perlu membuka proses di sistem, proses yang akan menjadi orang yang mengambil file dari HDD (gambar, dll.) Dan membuatnya tersedia untuk browser klien. Server web tidak bisa begitu saja mengambil file dan memanipulasinya menjadi bukan siapa-siapa, artinya, ia membutuhkan pengguna yang akan menjadi orang yang akan melakukan semua ini pada akhirnya, dan pengguna itu adalah yang saya bicarakan, apakah Anda mengerti?

Apa artinya memisahkan dalam beberapa pengguna?

Misalkan di server kami, kami memiliki 2 situs web, milik kami yang merupakan proyek pribadi, dan satu lagi (mari kita bayangkan itu pacar atau saudara laki-laki kita). Bahkan ketika kami menggunakan database terpisah dan pengguna yang berbeda untuk mengaksesnya, pada akhirnya file dari kedua situs web tersebut dimanipulasi oleh pengguna yang sama, pemrosesan PHP dikelola oleh pengguna yang sama untuk semua situs (biasanya www-data). Ini bukan praktik yang disarankan, lebih baik semuanya dipisahkan dengan baik, seperti kata pepatah lama, lebih baik aman daripada menyesal.

Ok saya mengerti, bagaimana cara melakukannya dengan Nginx

Cara menggunakan php-fpm virtual host

Hal pertama yang perlu diperhatikan adalah Nginx tidak memiliki modul sendiri yang menangani pemrosesan PHP seperti Apache, untuk Nginx kita perlu menggunakan PHP-CGI atau PHP-FPM, yang berfungsi sama baiknya (atau lebih baik) daripada Apache. Jadi untuk memisahkan pemrosesan PHP antar pengguna yang berbeda, kita perlu mengubah baris dalam file konfigurasi PHP (CGI atau FPM), bukan Nginx itu sendiri.

Misalkan Anda menggunakan PHP-FPM, kami akan membuat file konfigurasi kolam Untuk situs tertentu, yaitu pool adalah cara untuk memisahkan pemrosesan PHP dari PHP-FPM, tetapi kami membahas beberapa bagian.

1. Pertama kita harus tahu pengguna mana dari sistem yang akan kita gunakan, saya anggap kita masih belum membuat dan yah, mari kita buat:

Semua perintah berikut HARUS dijalankan dengan hak akses administratif, baik dengan root langsung atau menggunakan sudo

adduser blog

Kami akan memulai proses normal membuat pengguna, memasukkan kata sandi, dll.

Saya blog pengguna hanya untuk mengikuti contoh, bahwa situs pertama yang akan kita host adalah blog, nah itu ... untuk mengetahui setiap pengguna dengan situs mana yang terkait

1. Pertama-tama, buka /etc/php5/fpm/pool.d/:

cd /etc/php5/fpm/pool.d/

2. Sekarang, kita akan membuat file bernama blog.conf:

touch blog.conf

3. Sekarang kita akan meletakkan konfigurasi pool yang akan kita gunakan untuk blog VHost:

Edit file blog.conf dengan nano ... misalnya: sudo nanoblog.conf

[blog] pengguna = blog
grup = blog
dengarkan = / var / run / php5-fpm-blog.sock listening.owner = blog
Listen.group = blog
pm = sesuai permintaan pm.max_children = 96 chdir = /

Catatan: Apa yang saya tandai dengan warna merah adalah apa yang harus mereka modifikasi tergantung pada pengguna yang mereka buat sebelumnya. Misalnya, jika mereka membuat VHost lain dengan pengguna lain (forum misalnya) maka alih-alih blog cukup letakkan forum di setiap baris, apakah dipahami?

4. Setelah konfigurasi kumpulan baru (file blog.conf yang baru saja kita buat dan edit), giliran untuk memberi tahu Nginx VHost agar menggunakan kaus kaki yang berbeda untuk VHost tersebut, untuk situs ini. Kaus kaki yang akan digunakan adalah yang sebelumnya kita nyatakan (/var/run/php5-fpm-blog.sock). Mari edit Nginx VHost dan di bagian pemrosesan PHP, kami menunjukkan untuk menggunakan kaus kaki itu. Sebagai contoh:

lokasi ~ \ .php $ {if (! -f $ request_filename) {return 404; }
fastcgi_pass unix: / var / run / php5-fpm-blog.kaus kaki;
termasuk fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Seperti yang Anda lihat, saya menunjukkan bahwa pemrosesan PHP dari VHost itu (baris tersebut misalnya di dalam / etc / nginx / sites-enabled / vhost-blog) lakukan dengan kaus kaki yang ditemukan di /var/run/php5-fpm-blog.sock ... yang merupakan yang sebelumnya kita buat saat mengedit /etc/php5/fpm/pool.d/blog.conf ... adalah itu tidak mengerti?

5. Setelah ini selesai, kami memulai ulang kedua layanan (php5-fpm dan nginx) dan voila, kami akan melihat bahwa pemrosesan situs itu (vhost) TIDAK dilakukan oleh www-data atau root atau siapa pun yang serupa, tetapi oleh pengguna yang kami didefinisikan sebelumnya.

Di sini saya tunjukkan output dari a ps aux | grep fpm di salah satu server node saya:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook ebook kolam renang 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook pool www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: pool www www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm: pool www tv611 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: pool tv3 tv615 0.0 0.0 349360 1204 30? 0 Mar 00:3 php-fpm: majalah pool tv1818 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: majalah majalah pool 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: majalah biliar murid 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: majalah murid kolam 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: majalah pool gutl 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: pool gutl cgr 0.0 1.0 365168 22696 28? S 0 Apr 16:7900 php-fpm: pool cgr murid 0.3 2.5 457052 52444 25? S Apr20 23:11021 php-fpm: pool pupil pupil 0.4 2.5 458316 52864 28? S Apr5 57:11254 php-fpm: pool pupil cgr 0.0 1.0 363152 21708 28? S 0 Apr 12:13184 php-fpm: pool cgr cgr 0.0 1.0 362872 21360 28? S 0 Apr 08:XNUMX php-fpm: pool cgr

Seperti yang Anda lihat ... memisahkan pemrosesan PHP dengan pengguna menggunakan Nginx + PHP-FPM sangat mudah, di sana Anda melihat ada beberapa pool, karena ada beberapa pengguna.

Kesimpulan

Ketika datang ke server, Anda tidak pernah cukup paranoid ... keamanan bukanlah sesuatu untuk dimainkan, semakin kami selalu berusaha untuk meningkatkan keamanan server kami dan layanan mereka, semakin kecil kemungkinan kami akan takut dengan (berhasil) upaya hack atau yang serupa 😉