GNU/Linux >> Belajar Linux >  >> Debian

Setup Nginx + php-FPM + apc + MariaDB di Debian 7 – Server LEMP yang sempurna

Server web Debian

Debian adalah pilihan tepat untuk menyiapkan server web linux. Menurut statistik saat ini, ini adalah OS server paling populer diikuti oleh centos.

Saya penggemar berat perintah apt/dpkg/gdebi, yang membuatnya sangat mudah untuk menginstal dan memperbarui paket pada sistem.

Untuk menyiapkan server web php fungsional lengkap, Anda perlu menginstal beberapa hal tambahan yang mencakup server web dan database. Dalam posting ini kita akan menyiapkan nginx, php, php-fpm, apc dan MariaDB.

Nginx adalah server web modern, yang telah dirancang untuk menangani lalu lintas dalam jumlah besar menggunakan sumber daya paling sedikit dalam hal RAM dan CPU.

Sebelum nginx, server web tradisional yang digunakan di seluruh internet adalah apache. Namun seiring dengan semakin padatnya internet, kebutuhan akan server web yang lebih cepat dan efisien semakin meningkat.

Nginx vs Apache

Apache dengan desain sangat besar dan memiliki banyak fitur, yang sebagian besar tidak diperlukan untuk situs web biasa. Itu mungkin dirancang untuk memenuhi kebutuhan semua orang, tetapi ini akhirnya menjadikannya server web yang besar dan berat dengan sebagian besar fitur yang tidak digunakan.

Nginx di sisi lain adalah server web yang sangat ramping dan cepat yang sepenuhnya berfokus pada kecepatan, skalabilitas, dan efisiensi.

Teknis bagaimana melakukannya besar dan di luar cakupan posting ini. Mungkin kita bisa melihat nanti. Sekadar informasi, situs web ini berjalan di nginx.

Sekarang tanpa diskusi lebih lanjut mari kita mulai bekerja.

1. Instal Nginx di Debian

Paket nginx ada di repositori debian sehingga Anda tidak perlu mencari di tempat lain. Jalankan apt-get dan instal.

# apt-get install nginx

Sekarang luncurkan server nginx.

# service nginx start
Starting nginx: nginx.

Sekarang akses server nginx dari browser dengan membuka url

http://localhost/

dan Anda akan mendapatkan pesan selamat datang

Welcome to nginx!

Catatan penting

Ada beberapa hal yang harus Anda hafal untuk mengelola server nginx Anda dengan lebih baik. File konfigurasi nginx ditemukan di lokasi berikut

/etc/nginx/
[email protected]:/etc/nginx# ls
conf.d		koi-win		  naxsi.rules	scgi_params	 uwsgi_params
fastcgi_params	mime.types	  nginx.conf	sites-available  win-utf
koi-utf		naxsi_core.rules  proxy_params	sites-enabled

Kami tidak akan mengubah file nginx.conf secara langsung. Sebagai gantinya, kami membuat file konfigurasi terpisah untuk setiap vhost/situs dan menyimpannya di direktori berikut.

/etc/nginx/sites-available
/etc/nginx/sites-enabled

Ini mirip dengan apache. Direktori yang diaktifkan situs berisi konfigurasi untuk vhost yang akan diaktifkan. Ini berisi symlink ke file konfigurasi yang sesuai di direktori yang tersedia di situs.

Siapkan virtualhost

Sekarang kita telah menginstal nginx, saatnya untuk menyiapkan virtual host. Inilah yang akan Anda lakukan di server web nyata untuk menyiapkan situs Anda.

Di dalam /etc/nginx/sites-available Anda akan melihat file bernama default. Ini adalah file template untuk membuat file konfigurasi Anda sendiri. Cukup salin dan beri nama ke situs Anda.

# cp default binarytides.com
[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default

Kami memilih untuk memberi nama file konfigurasi dengan nama situs, sehingga lebih mudah untuk diingat dan dipelihara.
Sekarang buka binarytides.com dan edit sesuai kebutuhan Anda.
Anda akan melihat server blokir seperti ini

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

Hal pertama yang harus dikonfigurasi di sini adalah nama_server. Beri nama ke situs Anda. Misalnya

server_name binarytides.com
or
server_name binarytides.com www.binarytides.com

Ketika seseorang membuka binarytides.com di browsernya, header http berisi nama host ini yang akan diambil oleh nginx dan mencari blok server yang cocok. Ketika blok server yang cocok ditemukan, itu akan menggunakan konfigurasi dari blok server tertentu.

Hal lain yang perlu dikonfigurasi adalah direktori root web untuk situs/vhost ini. Perhatikan bahwa ini secara default /usr/share/nginx/www yang mungkin ingin Anda ubah menjadi sesuatu yang lain.

Konvensi umum adalah memiliki direktori terpisah untuk setiap vhost. Misalnya

/usr/share/nginx/www/binarytides.com/
/usr/share/nginx/www/google.com/

Jadi buat direktori yang sesuai dan arahkan pengaturan root di file konfigurasi ke direktori.

...
root /usr/share/nginx/www/binarytides.com;
...

Setelah melakukan perubahan ini, simpan file konfigurasi dan buat symlink direktori /etc/nginx/sites-enabled.

[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-available# cd ..
[email protected]:/etc/nginx# cd sites-enabled/
[email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com
[email protected]:/etc/nginx/sites-enabled# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-enabled#

Sekarang uji konfigurasi baru Anda

# nginx -t
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Baris terakhir dari output harus mengatakan berhasil, atau beberapa kesalahan akan ditampilkan. Ini mungkin menunjukkan beberapa peringatan yang dapat diperbaiki nanti.

Terakhir restart nginx agar konfigurasi baru diterapkan

# service nginx restart
Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx.
[email protected]:/etc/nginx/sites-enabled#

Jadi konfigurasi baru telah berlaku. Sekarang buat file index.html baru di root web baru dari host virtual ini dan buka dari browser dan itu akan berfungsi.

2. Instal php dan php-fpm

Hal berikutnya yang harus diinstal adalah php interpreter dan php-fpm. Php-FPM adalah pengelola proses fastcgi khusus untuk php yang dapat berinteraksi atau terhubung dengan server web apa pun yang kompatibel dan mengelola proses php untuk memproses permintaan php.

Nginx <== communicates ==> Php-FPM <== manages ==> php child process

Instal paket yang diperlukan terlebih dahulu.

# apt-get install php5 php5-fpm

Ini akan secara otomatis menginstal dependensi yang diperlukan. Anda juga dapat menginstal paket php5-cli jika Anda memerlukan perintah php untuk menjalankan skrip php.

Php-fpm runs as a separate server and nginx communicates with it over a socket. Hence the php execution is totally outside the server. Also since fpm keeps php process persistent, it fully supports APC.

Sekarang cari file konfigurasi php fpm. File di terletak di

/etc/php5/fpm/

Kumpulan adalah sekelompok proses php yang berjalan dengan pengguna/grup yang sama. Jadi jika Anda ingin file php dari setiap situs dijalankan dengan izin pengguna yang terpisah, maka Anda perlu membuat kumpulan fpm yang terpisah. Demi kesederhanaan, kami hanya menampilkan satu kumpulan di sini.

File konfigurasi pool berada di dalam direktori pool.d. Navigasi di

[email protected]:/etc/php5/fpm/pool.d# ls
www.conf

Buka file www.conf yang lagi-lagi merupakan template untuk Anda gunakan dan buat file konfigurasi terpisah untuk setiap kumpulan.
Tampak seperti ini

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128

Hal di atas sebagian besar terdiri dari komentar dan 4 baris yang paling penting adalah

1. [www] 
this is the pool name

2. user = www-data 
this is the user with whose permissions the php script would be run

3. group = www-data
this is the group

4. listen = /var/run/php5-fpm.sock
this is the socket for communicating with this pool. This socket must be given to nginx for nginx to be able to talk to fpm

Hubungkan fpm dengan nginx

Kami tidak akan banyak berubah di sini. Catat saja jalur soketnya. Kita harus memasukkan ini ke dalam file konfigurasi nginx. Kembali ke konfigurasi nginx Anda dan buka lagi.

Ini berisi bagian untuk konfigurasi php fpm yang terlihat seperti ini

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
#	# With php5-fpm:
#	fastcgi_pass unix:/var/run/php5-fpm.sock;
#	fastcgi_index index.php;
#	include fastcgi_params;
#}

Batalkan komentar dan buat seperti ini

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
	# With php5-fpm:
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	include fastcgi_params;
}

Uji PHP

Sekarang siapkan file di root web dengan panggilan phpinfo.

&lt;?php

phpinfo();

Dan kemudian buka file di browser dan blok informasi php akan muncul, mengatakan bahwa php sudah diatur dan berfungsi dengan benar.

Hal lain yang dapat Anda lakukan adalah menambahkan index.php ke daftar file indeks. Sehingga ketika mengakses direktori, jika tidak ada file yang ditentukan, maka index.php akan dipanggil.

root /usr/share/nginx/www/binarytides.com;
index index.html index.htm index.php;

Setup apc - cache php alternatif

APC adalah cara yang bagus untuk mempercepat eksekusi skrip php. APC mengkompilasi kode php dan menyimpan opcode dalam memori dan menggunakannya lain kali tanpa mengkompilasi kode php yang sama lagi dari file. Ini secara drastis mempercepat eksekusi. Selain cache opcode, apc juga menawarkan cache pengguna untuk menyimpan data mentah untuk aplikasi php di memori.

Php pada versi 5.5 memiliki fitur baru yang disebut OPcache yang melakukan hal yang sama seperti cache opcode apc sehingga apc tidak digunakan lagi.

Menyiapkan apc sangat sederhana dan cepat. Cukup instal paket apc untuk php

# apt-get install php-apc

Kemudian restart php fpm

# service php5-fpm restart

Sekarang periksa halaman phpinfo lagi dan seharusnya ada detail apc juga. File konfigurasi apc terletak di

/etc/php5/fpm/conf.d/20-apc.ini

Konfigurasi dapat diubah sedikit untuk kinerja optimal untuk kebutuhan Anda. Berikut adalah jenis konfigurasi yang saya gunakan

extension=apc.so
 
apc.enabled=1
apc.shm_size=128M
apc.ttl=3600
apc.user_ttl=7200
apc.gc_ttl=3600
apc.max_file_size=1M

Periksa daftar parameter konfigurasi apc untuk informasi lebih lanjut.

3. Instal MariaDB di Debian

Sekarang tibalah komponen terakhir dan terakhir dari tumpukan LEMP. Itu adalah database MariaDB dan bukan mysql. Nah sekarang Anda harus tahu bahwa mysql ada di tangan oracle dan bukan lagi milik komunitas. Jadi korps utama sudah mulai beralih ke mariadb. Hal yang baik adalah bahwa mariadb adalah biner yang kompatibel dengan mysql dengan banyak fitur tambahan. Jadi jika Anda sudah menggunakan mysql untuk aplikasi php Anda, maka beralih ke mariadb akan sangat mudah.

MariaDB tidak ada di debian repositori. Untuk mendapatkan repositori kunjungi halaman berikut

https://downloads.mariadb.org/mariadb/repositories/

Pilih Debian sebagai distro, Wheezy sebagai rilis dan versi 10.0 dari mariadb. Kemudian pilih cermin di sisi kanan. Sekarang gulir ke bawah ke bagian bawah halaman untuk menemukan detail repositori.

Berikut adalah perintah yang saya dapatkan

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'

Sekarang perbarui cache apt dan instal paket mariadb

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Saat instalasi mariadb akan meminta kata sandi root pengguna. Masukkan kata sandi dan pastikan untuk tidak lupa.

Setelah instalasi selesai, periksa versi mariadb Anda

# mysql -V
mysql  Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1

Perhatikan bahwa nama perintahnya sama dengan mysql. Tapi nama mariadb ada di informasi versi.

Server web sudah siap

Jadi sekarang web server LEMP sudah siap digunakan. Anda mungkin ingin menginstal beberapa barang tambahan seperti phpmyadmin untuk mengelola database Anda dengan lebih baik. Phpmyadmin ada di repositori debian jadi instal langsung dari sana.

Ada pertanyaan ? Jangan ragu untuk berkomentar di bawah.


Debian
  1. Perbarui ISPConfig Perfect Server dari Debian 10 ke Debian 11

  2. Cara install LEMP (Linux, Nginx, MySQL &PHP-FPM) di VPS Debian 8

  3. Cara Memasang Jejaring Sosial Elgg di Debian 9

  1. Cara Mengatur Server LEMP di Debian 10 Buster

  2. Pengaturan Sempurna - Debian Sarge (3.1)

  3. Pengaturan Sempurna - Debian Woody (3.0)

  1. Menginstal Nginx dengan PHP (sebagai PHP-FPM) dan MariaDB (LEMP) di Debian 8

  2. Server Sempurna - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)

  3. Server Sempurna - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)