Cara Install Nginx, MariaDB dan PHP (FEMP) Stack di FreeBSD


Tutorial ini akan memandu Anda tentang cara menginstal dan mengkonfigurasi FBEMP di rilis terbaru FreeBSD 11.x. FBEMP adalah akronim yang menjelaskan kumpulan perangkat lunak berikut:

FreeBSD 11.1 Distribusi mirip Unix, server web Nginx, sistem manajemen basis data relasional MariaDB (cabang komunitas MySQL) dan bahasa pemrograman dinamis PHP yang berjalan di sisi server.

Persyaratan

  1. Instalasi FreeBSD 11.x
  2. 10 Hal yang Harus Dilakukan Setelah Instalasi FreeBSD

Langkah 1: Instal Server Web Nginx di FreeBSD

1. Layanan pertama yang akan kita pasang untuk tumpukan FBEMP di FreeBSD adalah server web, yang diwakili oleh Nginx perangkat lunak.

Server web Nginx memiliki lebih banyak paket yang telah memenuhi syarat yang tersedia di FreeBSD 11.x PORTS. Untuk mendapatkan daftar biner Nginx dari repositori Ports, jalankan perintah berikut di terminal server Anda.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. Dalam konfigurasi khusus ini, kita akan menginstal versi paket utama Nginx dengan mengeluarkan perintah di bawah ini. Manajemen paket pkg akan menanyakan apakah Anda ingin melanjutkan instalasi paket nginx. Jawab dengan ya (y di baris perintah) untuk memulai proses instalasi.

pkg install nginx

3. Setelah paket server web Nginx diinstal di sistem Anda, jalankan perintah berikut untuk mengaktifkan daemon seluruh sistem dan memulai layanan di sistem Anda.

sysrc nginx_enable="yes"
service nginx start

4. Selanjutnya, dengan menggunakan perintah sockstat, verifikasi soket jaringan layanan Nginx, apakah soket tersebut terikat pada port 80/TCP, dengan mengeluarkan perintah di bawah ini memerintah. Output dari perintah sockstat akan disalurkan melalui utilitas grep untuk mengurangi hasil yang dikembalikan hanya ke string nginx.

sockstat -4 | grep nginx

5. Terakhir, buka browser di komputer desktop di jaringan Anda dan kunjungi halaman web default Nginx melalui protokol HTTP. Tulis FQDN mesin Anda atau nama domain Anda atau alamat IP server Anda di URL browser yang diajukan untuk meminta halaman web default server web Nginx. Pesan “Selamat datang di nginx! ” akan ditampilkan di browser Anda, seperti yang diilustrasikan pada gambar di bawah.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. Direktori weboot default untuk konten web Nginx terletak di jalur sistem absolut /usr/local/www/nginx/. Di lokasi ini Anda harus membuat, menyalin atau menginstal file konten web, seperti file .html atau .php, untuk situs web Anda.

Untuk mengubah lokasi ini, edit file konfigurasi utama nginx dan ubah arahan root untuk mencerminkan jalur webroot baru Anda.

nano /usr/local/etc/nginx/nginx.conf

Di sini, cari dan perbarui baris berikut untuk mencerminkan jalur webroot baru Anda:

root	/path/to/new/webroot;

Langkah 2: Instal PHP di FreeBSD

7. Tidak seperti server Apache HTTP, Nginx tidak memiliki kemampuan untuk memproses kode PHP secara asli. Sebagai imbalannya, server web Nginx meneruskan permintaan PHP ke penerjemah PHP, seperti daemon php-fpm FastCGI, yang memeriksa dan mengeksekusi kode. Kode yang dihasilkan kemudian dikembalikan ke Nginx, yang merakit kembali kode tersebut kembali ke format html yang diminta dan mengirimkan kode lebih lanjut ke browser web pengunjung.

FreeBSD 11.x Repositori port menawarkan beberapa versi biner untuk bahasa pemrograman PHP, seperti PHP 5.6, PHP 7.0 dan PHP 7.1< rilis. Untuk menampilkan semua versi PHP pra-kompilasi yang tersedia di FreeBSD 11.x, jalankan perintah di bawah ini.

pkg search -o php
ls /usr/ports/lang/ | grep php

8. Anda dapat memilih untuk menginstal versi PHP apa pun yang menurut Anda paling cocok untuk aplikasi web yang Anda jalankan di sistem Anda. Namun, dalam panduan ini kami akan menginstal PHP versi terbaru.

Untuk menginstal rilis PHP 7.1 dan beberapa modul penting PHP yang diperlukan untuk beragam aplikasi web, jalankan perintah berikut.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. Setelah Anda menginstal paket PHP di sistem Anda, buka file konfigurasi PHP-FPM untuk Nginx dan sesuaikan nilai pengguna dan grup agar sesuai dengan nilai pada runtime Nginx pengguna, yaitu www. Pertama, buat cadangan file dengan perintah di bawah ini.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

Kemudian, buka file dan perbarui baris berikut seperti yang disajikan pada contoh di bawah ini.

user = www
group = www

10. Juga, buat file konfigurasi PHP yang digunakan untuk produksi dengan mengeluarkan perintah di bawah ini. Pada file ini Anda dapat membuat perubahan khusus yang akan diterapkan pada juru bahasa PHP saat runtime.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Misalnya, ubah pengaturan date.timezone untuk penerjemah PHP untuk memperbarui lokasi fisik mesin Anda seperti yang ditunjukkan pada contoh di bawah. Daftar zona waktu PHP dapat ditemukan di sini: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Tambahkan zona waktu berikut (atur zona waktu sesuai negara Anda).

date.timezone = Europe/London

Anda juga dapat menyesuaikan variabel PHP lainnya, seperti ukuran file maksimum dari file yang diunggah, yang dapat ditingkatkan dengan mengubah nilai di bawah ini:

upload_max_filesize = 10M
post_max_size = 10M

11. Setelah itu, Anda telah membuat pengaturan khusus untuk PHP, aktifkan dan mulai daemon PHP-FPM untuk menerapkan konfigurasi baru dengan mengeluarkan perintah di bawah ini.

sysrc php_fpm_enable=yes
service php-fpm start

12. Secara default, daemon PHP-FPM di FreeBSD terikat pada soket jaringan lokal pada port 9000/TCP. Untuk menampilkan soket jaringan PHP-FPM jalankan perintah berikut.

sockstat -4 -6| grep php-fpm

13. Agar server web Nginx meneruskan skrip PHP ke server gateway FastCGI, yang mendengarkan pada soket 127.0.0.1:9000, buka file konfigurasi utama Nginx dan tambahkan blok kode berikut seperti yang diilustrasikan dalam contoh di bawah ini.

vi /usr/local/etc/nginx/nginx.conf

Blok kode FastCGI untuk nginx:

 location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
        include        fastcgi_params;
        	}

14. Untuk melihat informasi PHP terkini untuk server Anda, buat file info.php di jalur weboot Nginx dengan mengeluarkan perintah berikut.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. Kemudian, uji dan mulai ulang daemon Nginx untuk menerapkan pengaturan PHP FastCGI dan kunjungi halaman info.php di browser.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

Ganti alamat IP atau nama domain di tautan di bawah ini. Halaman info PHP akan menampilkan informasi seperti yang diilustrasikan pada gambar di bawah.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Langkah 3: Instal MariaDB di FreeBSD

16. Komponen terakhir hilang dari tumpukan FEMP Anda di database. MariaDB/MySQL adalah salah satu perangkat lunak RDBMS sumber terbuka yang paling banyak dikaitkan dengan server web Nginx yang digunakan untuk menerapkan situs web dinamis.

Sebenarnya, MariaDB/MySQL adalah salah satu database relasional yang paling banyak digunakan di dunia. Dengan menelusuri Port FreeBSD, Anda dapat menemukan beberapa rilis MariaDB/MySQL.

Dalam panduan ini kita akan menginstal database MariaDB, yang merupakan cabang komunitas dari database MySQL. Untuk mencari versi MariaDB yang tersedia, jalankan perintah berikut di terminal.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

17. Untuk menginstal versi terbaru server database MariaDB, jalankan perintah berikut. Anda juga harus menginstal modul driver database relasional PHP yang digunakan oleh skrip PHP untuk menghubungkan ke MySQL.

pkg install mariadb102-server php71-mysqli

18. Setelah database diinstal, aktifkan daemon MySQL dan mulai layanan database dengan menjalankan perintah berikut.

sysrc mysql_enable="YES" 
service mysql-server start

19. Selain itu, pastikan Anda me-restart daemon PHP-FPM untuk memuat ekstensi driver MySQL.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. Untuk menguji koneksi database MariaDB dari konsol, jalankan perintah di bawah ini.

mysql -u root -p -e "show status like ‘Connections’"

22. Untuk lebih mengamankan MariaDB, yang secara default mendengarkan koneksi jaringan masuk pada soket 0.0.0.0:3306/TCP, jalankan perintah di bawah ini untuk memaksa layanan untuk mengikat antarmuka loopback dan sepenuhnya melarang akses jarak jauh. Setelah itu, restart layanan MySQL untuk menerapkan konfigurasi baru.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

Verifikasi apakah pengikatan localhost berhasil diterapkan dengan menjalankan perintah netstat seperti yang ditunjukkan pada contoh di bawah.

netstat -an -p tcp

Itu saja! Anda telah berhasil menginstal server web Nginx, database relasional MariaDB, dan bahasa pemrograman sisi server PHP di FreeBSD. Anda sekarang dapat mulai membuat halaman web dinamis untuk menyajikan konten web kepada pengunjung Anda.