Alur untuk backup otomatis database langsung ke S3 services, salah satunya ke DigitalOcean (DO) Spaces
Integrasi s3cmd
Download sesuai platform dari https://s3tools.org/s3cmd kemudian jalankan comman untuk konfigurasi :
s3cmd --configure
Lengkapi credentials sehingga dapat terhubung dengan S3 service
s3cmd lists
Script untuk Dump and Push
Buat sebuah file dengan nama do.sh berisi perintah berikut (sesuaikan variabel)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sebelumnya saya pernah menulis tentang bagaimana membuat custom local domain untuk apache pada macOS, kali ini saya akan share konfigurasi yang sama namun pada OS berbasis Windows. Secara umum alurnya tidak jauh berbeda, bahkan software-software yang digunakan pun masih tetap sama.
Kembali mengingatkan bahwa dalam konfigurasi ini kita ingin membuat lingkungan pengembangan aplikasi web kita menjadi lebih sederhana dan terstruktur, misalnya dari alamat local yang awalnya
cukup menjadi http://a11.local atau http://sub1.project-a1.local
Contoh domain diatas menggunakan .local, sebetulnya tidak ada keharusan untuk menggunakan domain tersebut karena sifatnya yang memang lokal kita bisa menggunakan domain yang kita inginkan, misalnya .dev, .private, .test, dan lain sebagainya. Bahkan kita bisa menggunakan public domain (TLD) yang sudah ada, misalnya .com, .net, .org, dan lain sebagainya.
Namun menggunakan TLD tidak disarankan, karena nanti dapat menyebabkan conflict dengan public domain yang sesungguhnya.
Project Structures
Saat kita memiliki beberapa project alangkah baiknya kita memiliki satu root folder yang berisi semua project didalamnya, kemudian berjenjang ke sub-folder sebagai representasi sub-aplikasi, dan seterusnya. Contohnya gambar dibawah adalah struktur project yang saat ini saya gunakan.
Saya menempatkan root folder langsung dibawah C:\, dengan begitu begitu saya perlu masuk kedalam folder tersebut melalui mode terminal (CLI) akan lebih mudah dijangkau. Dari struktur folder diatas umumnya saya membentuk domain lokal sesuai project
unram.local –> C:\Sites\unram
e-pay.unram.local –> C:\Sites\unram\e-pay
form.if.unram.local –> C:\Sites\unram\if\form
dan seterusnya
Hal ini juga untuk memudahkan dalam mengingat project ketika sudah di-deploy ke stage production
unram.local –> unram.ac.id
e-pay.unram.local –> e-pay.unram.ac.id
form.if.unram.local –> form.if.unram.ac.id
dan seterusnya
Web Development Tools
XAMPP adalah web development stack yang sudah familiar bagi pengguna Windows, dalam tulisan ini tools yang akan digunakan adalah software tersebut. Dengan menggunakan software ini kebutuhan software lainnya untuk web server dapat terpenuhi, diantaranya Apache, MySQL, dan PHP.
XAMPP Main
Apache Config
Mulai dari Apache, secara default XAMPP mengarahkan root folder untuk aplikasi-aplikasi web yang berjalan dibawah localhost ke C:\xampp\htdocs. Secara teknis kita tetap bisa menggunakan folder ini, namun sedikit lebih panjang ketika kita perlu akses melalui terminal, untuk itu kita perlu arahkan ke root folder yang telah dijelaskan diatas yakni C:\Sites.
Untuk mengarahkan root folder apache ke C:\Sites kita bisa merubah konfigurasi yang ada pada file httpd.conf. Untuk membuka file tersebut dari halaman main XAMPP pada bagian apache klik Config –> Apache (httpd.conf).
Setelah itu mestinya akan terbuka notepad yang berisi file httpd.conf
Yang perlu dilakukan selanjutnya adalah mencari baris yang berisi text
Selanjutnya simpan (ctrl+s) dan tutup Notepad. Untuk memastikan tidak ada yg salah kita perlu stopapache dan start kembali. Jika pada kolom PID(s) dan Port(s) nya muncul angka berarti tidak ada masalah, konfigurasi sudah sesuai.
Apache Virtual Hosts
Dalam tulisan ini misalnya saya ingin membuat vhost untuk domain form.if.unram.local maka sebelumnya saya harus memiliki folder di C:\Sites\unram\if\form. Selanjutnya kita perlu menambahkan host baru pada konfigurasi apache, file yang perlu dibuka adalah C:\xampp\apache\conf\extra\httpd-vhosts.conf.
Konfigurasi diatas adalah untuk satu host yakni form.if.unram.local, jika ingin menambahkan host lainnya tinggal menambahkan konfigurasi yang sama seperti cara diatas, namun path dan name nya perlu disesuaikan. Jangan lupa setiap melakukan perubahan terhadap konfigurasi apache perlu distop dan distart kembali.
OS Hosts
Terakhir adalah melakukan konfigurasi pada internal DNS pada OS yang digunakan. Domain http://localhost akan selalu mengarah ke 127.0.0.1, custom domain http://form.if.unram.local tidak otomatis mendapatkan IP melainkan kita perlu memetakan domain tersebut menjadi domain local, yakni ke 127.0.0.1 juga.
Untuk memudahkan pengelolaan kita bisa menggunakan software Hosts File Editor.
Jika sudah diisi terakhir adalah tinggal mencoba akses domain local tersebut
AWS telah menyediakan SDK untuk memudahkan transaksi terhadap beberapa servicenya secara program, salah satu yang disediakan adalah untuk PHP. Namun terkadang kebutuhan tidak sesuai dengan usaha yang harus dikeluarkan. Untuk sekedar upload file ke S3 milik AWS kita perlu load/download paket lengkap dari SDK nya, rasanya agak berlebihan.
Setelah googling beberapa waktu akhirnya ketemu library dalam bentuk single file, yang dapat digunakan untuk beberapa kegiatan di S3, salah satunya untuk upload file.
Menggunakannya cukup sederhana, hanya perlu menyesuaikan script index.php dan melengkapi credentials untuk akun yang digunakan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Akses SSH bagi user baru di CWP secara default adalah disable dengan alasan keamanan. Kita bisa mengaktifkan akses SSH hanya dengan mencentang enable SSH pada saat membuat atau memperbaiki user di CWP.
SSH Enable CWP
Namun terkadang meskipun SSH nya sudah di-enable, user tetap tidak dapat melakukan login ke server berbasis CWP dengan pesan errorPermission Denied.
SSH Permission Denied
Hal ini terjadi karena password yang kita gunakan merupakan sebagian atau keseluruhan dari username. Untuk dapat menggunakan SSH kita perlu melakukan reset password dengan menentukan password baru adalah selain kata yang mengandung username.
Web developer pastinya tidak asing lagi dengan alamat 127.0.0.1 a.k.a localhost. 127.0.0.1 maupun localhost merujuk pada suatu alamat pada mesin komputer kita, atau biasa disebut dengan host, disanalah si Apache biasanya bersarang.
Untuk project yang sifatnya masih development biasanya akan menggunakan alamat tersebut.
Hanya saja akan ada kendala dimana dalam satu host berisi lebih dari satu project atau aplikasi. Jika demikain tentu kita akan mengakses project tersebut secara nested.
Setiap hendak menyimpan code, setidaknya 4 command diatas yang paling sering kita ketik. Untuk sedikit memudahkan hal tersebut, git telah memberikan fasilitas aliases bagi kita untuk menyingkat perintah git.
Ada dua opsi yang bisa digunakan, menggunakan alias via .profile dan .gitconfig.
Pada opsi .profile, deklarasi dilakukan sejak pertama kali kita melakukan login ke sistem (~/.profile).
alias gs="git status "
alias gaa="git add ."
alias gcm="git commit -m "
alias gpom="git push origin master"
Namun saya tidak merekomendasiakan hal ini, karena scope alias adalah sistem. Kita tidak pernah tahu ada aplikasi lain yang menggunakan callergs, gaa, gcm, dan gpom sehinga justru akan menjadi berbahaya.
Saya lebih prefer untuk menggunakan versi git. Versi git memiliki dua opsi juga, ingin ditentukan secara global atau ingin ditentukan per-project. Saya lebih suka yang per-project, karena saya biasanya menggunakan lebih dari satu code repository (gitlab, github, dan bitbucket). Dengan dideklarasikan per-project saya bisa menentukan alias untuk masing-masing repository.
Untuk per-project bisa dideklarasikan di .git/config yang ada pada masing-masing direktori project.
[alias]
s = status
aa = add .
cm = commit -m
pgm = push gitlab master
pbm = push bitbucket master
Dengan begitu untuk menyimpan code ke repository saya cukup mengetik git s, git cm, dan git pgm (gitlab) saja. Meskipun sedikit lebih panjang dari deklarasi via .profile, namun saya rasa cukup aman karena setiap perinta selalu diawali dengan git ....
Setelah beberapa tahun terakhir aktif menggunakan Webuzo, tiba saatnya move on kepada software lain. Kali ini tempat singgah berikutnya adalah CentOS Web Panel(CWP). CWP merupakan panel control untuk kebutuhan website pada server dengan distro CentOS.
Dengan banyaknya domain yang terdistribusi dalam beberapa serverLRsoft, proses migrasi mungkin akan memakan banyak waktu. Tapi setidaknya proses ini hanya dilakukan sekali untuk jangan waktu yang panjang berikutnya.
Beberapa data yang perlu dimigrasi adalah file system, yakni semua script dan data lainnya yang berkaitan dengan sistem. Berikutnya adalah database, merupakan gudang data inti dari aplikasi atau web. Dan terakhir adalah DNS function, termasuk MX dan CNAME records.
RecordMX untuk menentukan mail server yang digunakan jika layanan tersebut berada di luar server(Google, Yandex, dan lain sebagainya). Kemudian CNAME hanya merupakan alias untuk beberapa fungsionalitas address. Ada beberapa hal yang membuat saya akhirnya menjatuhkan pilihan pada CWP dibandingkan web panel lainnya. Continue reading →
Mengelola server merupakan pekerjaan yang tidak selalu mudah. Sesuatu yang sifatnya open public pastinya memiliki banyak ancaman yang tidak pernah dapat ditebak kapan datangnya. Berapa tahun terakhir saya bertugas untuk mengelola beberapa server yang menaungi cukup banyak website, mulai dari bisnis, personal, iseng, sampai yang tidak penting. Continue reading →
Sejak PHP versi 5.6 autentikasi SSL terhadap akses cURL (CURLOPT_SSL_VERIFYPEER) default menjadi TRUE. Hal ini mengakibatkan ketika menggunakan fungsi file_get_contents() selalu melakukan validasi sertifikat SSL terhadap URL tujuan yang menggunakan protokol SSL. Meskipun URL tujuan telah terinstall sertifikat SSL yang valid, namun cURL tidak dapat membuktikan validitas SSL jika belum memiliki dokumen pembanding sendiri (CA certs list).
Hari ini kebetulan saya juga mengalami masalah yang sama, ketika memasang webuzo di server yang baru. Tidak lama setelah konfigurasi telah selesai dilakukan saya baru sadar kalau beberapa fungsionalitas website tidak bekerja seperti biasanya. Setelah memeriksa berkas log saya mendapati pesan warning sebagai berikut:
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /home/user/public_html/script.php on line 1
PHP Warning: file_get_contents(): Failed to enable crypto in/home/user/public_html/script.php on line 1
PHP Warning: file_get_contents(https://domain.com/index.html): failed to open stream: operation failed in/home/user/public_html/script.php on line 1
Bukan pertama kalinya beberapa server kami mendapatkan serangan dengan teknik yang berbagai macam jenis, bentuk, dan dampaknya. Pagi ini sempat kaget karena semua website yang ada dalam server Gili Air kami diarahkan ke situs iklan ketika diakses dari perangkat mobile. Saat ditelusuri ternyata semua file .htaccess nya telah disusupi semua, untuk mendeteksi perangkat mobile berdasarkan HTTP_USER_AGENT dan selanjutnya melakukan redirect ke alamat luxurytds[dot]com.
.htaccess malware inject
Gambar diatas merupakan isi .htaccess di salah satu web yang terinfeksi, kombinasi regex hampir mencakup semua kemungkinan user agent dari perangkat mobile. Si attacker memang niat sekali! Continue reading →