droplet php mysql sederhana

Hallo gaess,

Kemaren saya sudah nyinggung dikit masalah FTP, sekarang ane mau ngebahas server seutuhnya nih. Server buat web php-mysql aja. Klo bicara server, cakupannya luas. Untuk aplikasi besar harus bikin cluster dengan seting macem2. Belum lagi soal securitynya.

Tapi kali ini ane cukup mbahas server yg simple simple aja. Lumayan buat nampung project2 pribadi. Atau munkin yg baru belajar. Klo cuma PHP-Mysql kurang, kadang ada masalah, tapi klo kebanyakan seting juga ribet. Jadi kita ambil yg penting2 aja. Setidaknya running smoothly.

Di tutorial ini saya akan menjelaskan seting server/droplet php mysql yg ada di DigitalOcean.

NB: teks warna merah harus kamu ganti dengan parametermu sendiri.

1. Create Droplet
Di Digital Ocean langsung aja bikin dropplet baru. Skip pilihan OS yg mau diinstal, tapi langsung aja pilih LAMP-Stack biar gak perlu install php-mysql & komponen lainnya. Buat yg belum tau, LAMP-Stack itu isinya OS Ubuntu ditambah server apache, php & mysql. Waktu praktek ini yg tersedia LAMP-Stack Ubuntu 14.04.

2. Cek Email
Setelah droplet jadi cek email. DigitalOcean ngirim IP, username & password untuk akses ke droplet tadi. Simpen.

3. Login SSH
Servernya gak ada tampilan grafis. Klo mau login via command prompt pake SSH (linux) atau Putty (windows).

ssh root@192.168.0.1

ntar klo minta password pake yg ada di email tadi. Setelah masuk langkah pertama langsung diminta ganti password root.

NB: untuk password usahakan pake karakter yg bener2 acak. klo cuma mengganti huruf dgn angka saja tidak aman. Masih bisa diretas.

Waktu login itu perhatikan juga pesan teks yg muncul. Disitu tertera info akun login mysql. Silahkan klo mau diganti.

4. Update System
Lalu update ubuntunya untuk memastikan keamanan server. Sekalian restart. Nanti login lagi via SSH.

apt-get update
apt-get dist-upgrade -y
reboot

5. Install Aplikasi
Yang paling penting disini install antivirus buat cek file (clamav), ftp buat transfer file trus admin database.

apt-get install clamav phpmyadmin vsftpd

6. Aktivasi Modul
ada 2 modul. Satu modul rewrite di apache, biar htaccess-nya aktif & ngilangin index.php di url. kedua modul mcrypt di php, phpmyadmin yg pake.

a2enmod rewrite
php5enmod mcrypt

7. Pindah Port SSH
Port default buat SSH itu 22. Klo tidak diganti biasanya banyak yg coba ngehack trus dijadiin zombie atau virus. Pernah ngalami nih. Langsung dimatiin sama DigitalOcean & diwarning pula 🙁

vi /etc/ssh/sshd_config

Buat yg belum tau, vi itu notepad di command prompt ubuntu. Buat ngedit teks & konfigurasi macem2.

Di file tadi cari baris Port. Harusnya ada di baris2 awal. Nah disitu diisikan nomor port bebas deh, 5 digit. Jadi ntar klo ada yg nyoba akses/hack port 22 langsung diabaikan. Trus nanti klo konek via SSH harus nyebutin nomor port-nya. Misal nomor portnya 22222 perintah koneknya jadi begini:

ssh root@192.168.0.1 -p 22222

8. Seting Webroot
Sekarang seting untuk mengaktifkan htaccess misal mau ngilangin index.php dr URL.

vi /etc/apache2/apache2.conf

Cari baris berikut

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Default seting direktori web di dalam “/var/www/”. Perhatikan pada baris AllowOverride, disitu harus diisi All supaya file htaccess-nya jalan.

9. Seting Folder Webroot
Klo sebelumnya seting buat aktifin htaccess. Sekarang seting lokasi naroh file PHPnya.

vi /etc/apache2/sites-available/000-default.conf

Perhatikan baris ini

DocumentRoot /var/www/html

Disitulah root folder untuk webnya. Klo mau ganti saja.

Untuk memastikan htaccess-nya jalan di root folder, blok seting nomor 8 sebelumnya bisa ditulis dibawah baris ini.

10. Seting Sub-proses Apache
jarang dibahas nih. Tapi secara default apache membuat banyak sub-proses untuk mengolah request dr client. Repotnya klo jaringan kurang stabil, walau cuma sebagian client saja. Apache bakal membuat proses ganda untuk client macam ini. Karna dia sering konek-diskonek. Lama-lama bikin apache kacau & melambat. Kadang sampe hang, not responding. Di-Ping servernya respon lancar tapi webnya gak jalan. Ampun deh… :'(

vi /etc/apache2/mods-available/mpm_prefork.conf

Kemudian cari baris ini

MaxConnectionsPerChild 0

Disitu angka 0 (nol) diganti 1000 atau dibawahnya. Klo 0 (nol) defaultnya apache bakal bikin sub-process sampe 10.000. Kalau dibuat dikit, maka proses client yg hang bakal sering dibersihkan. Hasilnya apache lebih stabil.

11. Seting Filesize Upload
Buat yg suka upload, penting nih. Atur ukuran file yg diupload biar sesuai dgn kebutuhan.

vi /etc/php5/apache2/php.ini

Cari baris-baris ini


post_max_size = 8M

upload_max_filesize = 2M

Post berarti total ukuran data form yg bisa di-submit, termasuk total semua file-nya. Upload-filesize berarti ukuran tiap filenya. Ganti deh itu sesuka kalian.

12. Seting FTP
Waktunya seting FTP biar bisa upload file PHP nya. Kurang lebih sama seperti tutorial sebelumnya.

vi /etc/vsftpd.conf

Lalu cari baris berikut. Pastikan tanda pagar di depannya hilang.


write_enable = YES

local_umask = 002

13. Buat User khusus programer
Agak riskan klo selalu menggunakan user root. Akun root cukup buat mengatus sistem saja. jadi kita buat user khusus saja. Misal usernamenya “devel” & passwordnya “Af#245$”.

useradd devel –password Af#245$
usermod -a -G www-data devel
usermod -g www-data devel

Diatas juga termasuk seting group user. Www-data adalah user yg digunakan apache. Jadi user devel harus masuk grup tersebut.

14. Seting Permission
permission adalah hak akses file di linux. Klo salah webnya bisa error karena gak bisa akses script atau folder tertentu. Yg perlu diatur disini yaitu permission untuk root folder webnya. Pemilik folder di set ke user programmer. Grup permission disamakan dgn user apache. User programmer & apache diberi full akses (read/write). Sedang lainnya (publik) dibuat read-only.

chown -R devel:www-data /var/www/html
chmod -R 775 /var/www/html

Udah itu aja saya rasa cukup. Tinggal upload sourcecode webmu ke root folder.

Klo seting server dedicated atau intranet juga sama. Tambahannya seting network & server SSH biar bisa di remote.

Semoga bermanfaat 🙂