Nginx dengan cepat menyalip Apache sebagai server web favorit. Untuk aplikasi web yang dibuat dalam bahasa seperti Rails dan Python, ini hampir ada di mana-mana, tetapi sedikit lebih lambat untuk digunakan di dunia PHP. Sebagian alasannya adalah betapa mudahnya PHP dan Apache berjalan bersama. Namun, PHP dan Nginx dapat bekerja sama dengan mudah, dan dengan dirilisnya PHP 7, menggabungkan keduanya dapat menjadi pilihan yang cukup cepat.
Paket
Hal pertama yang pertama. Perbarui Ubuntu dan dapatkan paket Nginx dan PHP.
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
Saat penginstalan selesai, semua paket seharusnya sudah ada di tempatnya, dan benar-benar berjalan. Untuk memastikan bahwa ini masalahnya, Anda dapat memeriksa apakah layanan Nginx dan PHP-FPM berjalan di Systemd.
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Jika Systemd mengonfirmasi bahwa kedua layanan berjalan, server seharusnya benar-benar aktif, dan Anda seharusnya dapat melihat halaman selamat datang Nginx default dengan menavigasi ke localhost
di browser.
Konfigurasi
Tentu saja, itu tidak mendekati siap untuk benar-benar menjadi tuan rumah apa pun. Ada beberapa konfigurasi yang diperlukan untuk mengarahkan Nginx ke beberapa konten aktual dan meningkatkan keamanan. Direktori root untuk file konfigurasi Nginx terletak di /etc/nginx
. Untungnya, sudah ada default dari Ubuntu yang membuat proses konfigurasi lebih mudah.
Nginx.conf
File konfigurasi utama untuk Nginx adalah nginx.conf
. Buka di editor teks pilihan Anda. Ini akan membutuhkan izin root, jadi editor berbasis teks seperti Vim mungkin akan menjadi yang terbaik. Konfigurasi default sebagian besar baik-baik saja. Jelas ada hal-hal yang dapat dilakukan untuk meningkatkan kecepatan dan keamanan sistem, tetapi sebagian besar di luar cakupan tutorial dasar ini. Jika Anda ingin meningkatkan kinerja, opsi Gzip yang dikomentari akan membantu kompresi dan dapat mempercepat. Di sisi keamanan, menambahkan tiga baris berikut akan membantu mencegah aktivitas jahat.
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Konfigurasi Situs
Setelah garis ditambahkan, simpan dan keluar. Ada dua folder di root Nginx, sites-available
dan sites-enabled
. sites-available
menyimpan konfigurasi situs. sites-enabled
berisi symlink ke file konfigurasi di sites-available
. Dengan cara ini, mengaktifkan dan menonaktifkan situs semudah membuat dan menghapus symlink.
Menggunakan editor teks Anda, buat file di /etc/nginx/sites-available/yoursite
. File ini akan berisi konfigurasi khusus situs untuk situs web PHP 7 baru Anda. Contoh berikut berisi perincian dalam komentar tentang apa yang dilakukan setiap baris. Ini adalah konfigurasi yang cukup mendasar, tetapi ini akan menyelesaikan pekerjaan.
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Setelah file tersebut dibuat, simpan dan pindahkan ke sites-enabled
direktori. Dari sana, buat symlink kembali ke file yang baru saja Anda buat.
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
Keamanan PHP.ini
Keamanan adalah target yang bergerak, dan tidak mungkin untuk tetap berada di depan setiap kemungkinan ancaman, tetapi selalu merupakan ide yang baik untuk mengunci instalasi server baru sebanyak mungkin. Ada beberapa tweak sederhana yang dapat dilakukan pada php.ini
file konfigurasi yang akan membantu mengamankan PHP. Dengan editor teks Anda, buka /etc/php/7.0/fpm/php.ini
. Ini adalah file yang sangat besar. Sekali lagi, Vim atau sesuatu dengan fungsi pencarian mungkin yang terbaik.
Pertama temukan disable_functions
dan tambahkan phpinfo,system,mail,exec
ke akhir string fungsi yang sudah ada. Kemudian temukan file_uploads
dan atur ke Off
. Selanjutnya, cari sql.safe_mode
dan aktifkan On
. Terakhir, temukan allow_url_fopen
dan atur ke Off
. Sebelum menutup file, tambahkan satu baris lagi di akhir.
register_globals = Off
Setelah semuanya selesai, simpan dan tutup. Mulai ulang server dan server akan siap digunakan.
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
Ke mana Harus Pergi Selanjutnya
Saat itu, server Ubuntu harus dapat menjalankan sebagian besar situs web PHP. File PHP apa pun yang ditempatkan di /var/www/yoursite
akan dijalankan oleh server. Ini akan mencari index.php
file terlebih dahulu dan situs web dapat bercabang di sana. Tentu saja, masih banyak lagi yang dapat dilakukan untuk mengonfigurasi PHP dan Nginx untuk kecepatan, keamanan, dan hampir semua situasi kasus khusus, tetapi sekarang Anda memiliki titik awal yang kuat.