Kemarin kita sudah membahas tentang cara pembuatan sertifikat SSL di Localhost. Nah, agar sertifikat tersebut berguna maka kita perlu menerapkannya di server.

Kita terapkan di Apache dulu ya, mengapa? Saya pikir karena Apache ini yang paling banyak dipake buat server.

Kemudian kenapa pakai php-fpm? Karena php-fpm punya sistem managemen untuk user jadi nanti kita tidak perlu repot set permission ketika project php kita berada di /home

Oke langsung saja kita mulai. Sebelum memulai penting untuk diketahui bahwa tulisan ini gak banyak penjalasan ya, kita langsung ke bagian teknis saja.

Pemasangan

$ sudo apt update && \
sudo apt install -y \
apache2 php-fpm mariadb-server \
php-gd php-xml php-mbstring php-mysql \
php-zip php-curl libapache2-mod-fcgid

Pengaturan

Jika sudah dipasang langsung kita atur dulu php-fpmnya. Sebelum di atur pastikan kamu sudah mematikannya.

Pengaturan php-fpm

$ sudo systemctl stop php7.4-fpm.service

Kemudian kamu ke direktori /etc/php/7.4/fpm/pool.d/ lihat isi di sana, jika ada www.conf kalian sunting saja berkas itu.

$ cd /etc/php/7.4/fpm/pool.d/
$ ls

Kalian sunting berkas www.conf

$ sudoedit /etc/php/7.4/fpm/pool.d/www.conf

Cari user lalu ubah dengan user kalian. Dan pastikan kalian mengaktifkan unix socketnya ya.

Contohnya konfigurasinya kaya gini. Nama user dan group ali jadi tinggal ganti saja dari www menjadi ali:

[www]

user = ali
group = ali
listen = /run/php/php7.4-fpm.sock

Buat Sertifikat

Contoh di sini lokasi sertifikat project kamu ada di /home/ali/mysite kita tinggal buat sertifikatnya dengan mkcert pada lokasi tersebut.

$ cd ~/
$ mkdir -p mysite/{ssl,public}
$ cd mysite/ssl
$ mkcert mysite.local

Pengaturan apache

Untuk apache kita tinggal aktifkan saja module-modulenya

$ sudo a2enmod actions fcgid alias proxy_fcgi headers ssl

Lalu buat virtualhostnya contohnya mysite.conf. Cara buatnya

$ sudo touch /etc/apache2/sites-available/mysite.conf
$ sudoedit /etc/apache2/sites-available/mysite.conf

Dan isi virtual sitenya dengan config seperti berikut:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<VirtualHost *:80>
 ServerName mysite.local
 DocumentRoot /home/ali/mysite/public/

 <Directory /home/ali/mysite/public/>
	DirectoryIndex index.php index.html
	Options Indexes FollowSymLinks MultiViews
	AllowOverride All
	Require all granted
</Directory>

<FilesMatch \.php$>
	SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>

 ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
 CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined

</VirtualHost>

<IfModule mod_ssl.c>

 <VirtualHost *:443>
   ServerName mysite.local
   DocumentRoot /home/ali/mysite/public/

   <Directory /home/ali/mysite/public/>
     DirectoryIndex index.php index.html
	 Options Indexes FollowSymLinks MultiViews
	 AllowOverride All
	 Require all granted
   </Directory>

   <FilesMatch \.php$>
	 SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
   </FilesMatch>

   ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
   CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined

   SSLEngine on

   SSLCertificateFile	/home/ali/mysite/ssl/mysite.pem
   SSLCertificateKeyFile /home/ali/mysite/ssl/mysite-key.pem

   <FilesMatch "\.(cgi|shtml|phtml|php)$">
     SSLOptions +StdEnvVars
   </FilesMatch>

   <Directory /usr/lib/cgi-bin>
     SSLOptions +StdEnvVars
   </Directory>

  </VirtualHost>
</IfModule>

Pengaturan Mariadb

Ini sih opsional saja, tapi kalau kamu pingin agar akun root dari mariadb gak dipake kamu bisa buatkan akun superuser lainnya.

Caranya, pertama masuk dulu ke mariab-cli

$ sudo systemctl start mariadb
$ sudo mysql -u root

Lalu kita buat usernya.

> create user ali@localhost identified by 'Password';
> grant all privileges on *.* to ali@localhost;
> flush privileges;

Nah jadi kalau kamu mau bikin aplikasi berdatabase mysql / mariadb tinggal pakai user di atas aja ya.

Aktifkan situsmu

Sekarang tinggal kita aktifkan situs yang kita buat tadi bernama mysite cara aktifinnya gampang tinggal lakukan perintah berikut:

$ sudo a2ensite mysite.conf

Dan pastikan konfigurasimu benar, cek dengan perintah berikut:

$ sudo apachectl configtest

Finish

Selesai deh pemasangan dan pengaturan servermu, langsung selanjutnya tinggal kamu restart servicenya jadi jalankan di system-bootmu.

$ sudo systemctl restart apache2 php7.4-fpm mariadb
$ sudo systemctl enable apache2 php7.4-fpm mariadb