GNU/Linux >> Belajar Linux >  >> Debian

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

Tutorial ini akan menunjukkan kepada Anda penginstalan server web Nginx di Debian 8. Nginx (diucapkan "engine x") adalah server HTTP gratis, open-source, dan berkinerja tinggi. Nginx dikenal dengan stabilitasnya, rangkaian fitur yang kaya, konfigurasi sederhana, dan konsumsi sumber daya yang rendah. Tutorial ini menunjukkan bagaimana Anda dapat menginstal Nginx dengan dukungan PHP (melalui PHP-FPM) dan MariaDB sebagai pengganti drop-in MySQL. Pengaturan ini sering disebut sebagai LEMP =L inux + nginx (diucapkan "e ngine x") + M ySQL + P HP) .

Catatan Awal

Dalam tutorial ini, saya menggunakan hostname server1.example.com dengan alamat IP 192.168.1.100. Pengaturan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu. Anda harus memiliki server Debian 8, saya akan menggunakan server minimal Debian sebagai sistem dasar untuk tutorial ini.

Memperbarui Sistem

Disarankan untuk memperbarui daftar paket dan menginstal pembaruan yang tertunda sebelum kita mulai dengan pengaturan Nginx. Jalankan perintah berikut untuk menginstal pembaruan yang tertunda.

apt-get update
apt-get upgrade -y

Saya akan menggunakan editor nano nanti untuk mengedit file konfigurasi. Nano dapat diinstal dengan perintah ini:

apt-get -y install nano 

Menginstal MariaDB (sebagai pengganti drop-in MySQL)

Untuk menginstal MariaDB, kami menjalankan:

apt-get -y install mariadb-server mariadb-client

Anda akan diminta untuk memberikan kata sandi untuk pengguna root MariaDB - kata sandi ini berlaku untuk pengguna [dilindungi email] serta [dilindungi email], jadi kami tidak perlu menentukan kata sandi root MariaDB secara manual nanti:

Kata sandi baru untuk pengguna "root" MariaDB:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MariaDB:<-- yourrootsqlpassword

 

Menginstal Nginx

Nginx tersedia sebagai paket untuk Debian Jessie yang dapat kita instal sebagai berikut:

apt-get -y install nginx

Mulai Nginx sesudahnya:

systemctl start nginx.service

Ketik alamat IP atau nama host server web Anda ke dalam browser (mis. http://192.168.1.100), dan Anda akan melihat halaman berikut:

Akar dokumen nginx default pada Debian 8 adalah /var/www/html.

Menginstal PHP

Kita dapat membuat PHP5 bekerja di nginx melalui PHP-FPM (PHP-FPM (FastCGI Process Manager) adalah implementasi PHP FastCGI alternatif dengan beberapa fitur tambahan yang berguna untuk situs dari berbagai ukuran, terutama situs yang lebih sibuk) yang kami instal sebagai berikut:

apt-get -y install php5-fpm

PHP-FPM adalah proses daemon (dengan file unit systemd php5-fpm.service) yang menjalankan server FastCGI pada soket /var/run/php5-fpm.sock.

Mengonfigurasi nginx

Konfigurasi nginx ada di /etc/nginx/nginx.conf yang kita buka sekarang:

nano /etc/nginx/nginx.conf

Konfigurasinya mudah dipahami (Anda dapat mempelajarinya lebih lanjut di sini:http://wiki.nginx.org/NginxFullExample dan di sini:http://wiki.nginx.org/NginxFullExample2)

Pertama-tama atur keepalive_timeout ke nilai yang wajar seperti 2 detik:

[...]
    keepalive_timeout   2;
[...]

Host virtual didefinisikan dalam kontainer {} server. Vhost default didefinisikan dalam file /etc/nginx/sites-available/default - mari kita ubah sebagai berikut:

nano /etc/nginx/sites-available/default
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

nama server _; menjadikannya vhost catchall default (tentu saja, Anda juga dapat menentukan nama host di sini seperti www.example.com).

Saya telah menambahkan index.php ke baris indeks. root /var/www/html; berarti root dokumen adalah direktori /var/www/html.

Bagian penting untuk PHP adalah lokasi ~ \.php$ {} bait. Batalkan komentar seperti yang ditunjukkan di atas untuk mengaktifkannya.

Sekarang simpan file dan muat ulang Nginx:

systemctl reload nginx.service

Selanjutnya buka /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... dan atur cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

Muat ulang PHP-FPM:

systemctl reload php5-fpm.service

Sekarang buat file PHP berikut di root dokumen /var/www/html/:

nano /var/www/html/info.php
<?php
phpinfo();
?>

Sekarang kita memanggil file itu di browser (mis. http://192.168.1.100/info.php):

Seperti yang Anda lihat, PHP5 bekerja, dan bekerja melalui FPM/FastCGI, seperti yang ditunjukkan pada baris Server API. Jika Anda menggulir lebih jauh ke bawah, Anda akan melihat semua modul yang sudah diaktifkan di PHP5. MySQL tidak terdaftar di sana yang berarti kami belum memiliki dukungan MariaDB / MySQL di PHP.

Mendapatkan Dukungan MySQL / MariaDB di PHP

Untuk mendapatkan dukungan MySQL di PHP, kita dapat menginstal paket php5-mysqlnd. Ini adalah ide yang baik untuk menginstal beberapa modul PHP lain serta Anda mungkin membutuhkannya untuk aplikasi Anda. Anda dapat mencari modul PHP yang tersedia seperti ini:

apt-cache search php5

Pilih yang Anda butuhkan dan instal seperti ini:

apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu adalah cacher opcode PHP gratis dan terbuka untuk menyimpan dan mengoptimalkan kode perantara PHP yang memperluas opcache PHP. Ini menggantikan cache APC. dan mirip dengan cacher opcode PHP lainnya, seperti eAccelerator dan Xcache. Sangat disarankan untuk menginstal salah satu dari ini untuk mempercepat halaman PHP Anda.

APcu dapat diinstal sebagai berikut:

apt-get install php5-apcu

Sekarang muat ulang PHP-FPM:

systemctl reload php5-fpm.service

Sekarang muat ulang http://192.168.1.100/info.php di browser Anda dan gulir ke bawah ke bagian modul lagi. Anda sekarang akan menemukan banyak modul baru di sana, termasuk modul MySQL:

Membuat PHP-FPM menggunakan koneksi TCP (opsional)

Secara default PHP-FPM mendengarkan pada soket /var/run/php5-fpm.sock. Dimungkinkan juga untuk membuat PHP-FPM menggunakan koneksi TCP. Untuk melakukannya, buka /etc/php5/fpm/pool.d/www.conf...

nano /etc/php5/fpm/pool.d/www.conf

... dan buat garis dengar terlihat sebagai berikut:

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

Ini akan membuat PHP-FPM mendengarkan pada port 9000 pada IP 127.0.0.1 (localhost). Pastikan Anda menggunakan port yang tidak digunakan di sistem Anda.

Kemudian muat ulang PHP-FPM:

systemctl reload php5-fpm.service

Selanjutnya buka konfigurasi Nginx Anda dan semua vhost Anda dan ubah baris fastcgi_pass unix:/var/run/php5-fpm.sock; ke fastcgi_pass 127.0.0.1:9000;, mis. seperti ini:

nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]

Terakhir, muat ulang Nginx:

systemctl reload nginx.service

Gambar Mesin Virtual

Tutorial ini tersedia sebagai mesin virtual siap pakai dalam format OVA / OVF untuk pelanggan Howtoforge. Format VM kompatibel dengan VMWare dan Virtualbox dan mungkin beberapa alat lain yang dapat mengimpor format ini. Anda dapat menemukan tautan unduhan di menu kanan di atas. Klik pada nama file untuk memulai pengunduhan.

Detail login VM adalah:

Masuk SSH

Nama pengguna:root
Kata sandi:howtoforge

Masuk MariaDB

Nama pengguna:root
Kata sandi:howtoforge

Harap ubah kata sandi setelah boot pertama.

VM dikonfigurasi untuk IP statis 192.168.1.100, IP dapat diubah di file /etc/network/interfaces.

  • nginx:http://nginx.net/
  • nginx Wiki:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MariaDB: https://mariadb.org/
  • Debian:http://www.debian.org/

Debian
  1. Cara Menginstal Phorum dengan Nginx di Debian 9

  2. Cara Menginstal dan mengatur PHP dan Nginx (LEMP) di Debian 11

  3. Instal Pagekit pada VPS Debian 7 dengan Nginx, PHP-FPM dan MariaDB

  1. Menginstal Nginx dengan PHP dan MariaDB (sebagai pengganti MySQL) - LEMP -di Ubuntu 15.10 (Wiley Werewolf)

  2. Cara Instal Etherpad dengan Nginx dan SSL di Debian 11

  3. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Ubuntu 13.04

  1. Menginstal Lighttpd dengan PHP (mode PHP-FPM) dan MySQL atau MariaDB di Ubuntu 15.04

  2. Menginstal Lighttpd dengan PHP (mode PHP-FPM) dan MySQL atau MariaDB di Ubuntu 15.10

  3. Menginstal Nginx Dengan PHP5 (Dan PHP-FPM) Dan Dukungan MySQL (LEMP) Di Debian Wheezy