Git Aliases via .profile dan .gitconfig

git status
git add .
git commit -m "messages"
git push origin master

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 caller gs, 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 ....

Mengganti Webuzo dengan CentOS Web Panel

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 server LRsoft, 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.

Record MX 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

Ketika DDoS menyerang

DDoS everywhere

DDoS everywhere

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

Menambahkan sertifikat SSL untuk cURL di PHP

SSL Certificate Logo

SSL Certificate Logo

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

Continue reading

Serangan Adware via .htaccess

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

.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

Update Source otomatis dari Bitbucket dan GitHub

Bitbucket and GitHub

Bitbucket and GitHub

Siapa yang tidak kenal kedua GIT repository tersebut, dengan semua fasilitas yang disediakan oleh Bitbucket dan GitHub membuat para developer nyaman untuk menitipkan source project mereka disana.

Saya menggunakan Bitbucket cukup lama, hanya baru-baru ini mulai menggunakan GitHub. Mengingat kebijakan pricing yang diterapkan kedua layanan tersebut sedikit berbeda, untuk versi free Bitbucket memungkinkan user menyimpan beberapa repository secara private (selebihnya musti bayar), sedangkan GitHub hanya membolehkan repository public. Continue reading

Install dan Konfigurasi Monit di CentOS

Logo Monit

Monit adalah solusi bagi webmaster yang menggunakan dedicated server (VPS) untuk mengelola dan menjalankan website dengan kebutuhan khusus (punya banyak traffic, butuh library tambahan, atau yang lainnya) yang jarang disediakan oleh penyedia hosting pada umumnya. Menggunakan Monit dapat membantu dalam melakukan monitoring dan bahkan tindakan (action) terhadap beberapa service, khususnya pada web server. Misalnya untuk memonitor service MySQL jika sewaktu-waktu service-nya stopped, maka Monit dapat secara otomatis melakukan start/restart pada service tersebut, dengan konfigurasi terlebih dahulu tentunya. Continue reading

AMPPS – Solusi Web Server Stack pada Mac OS X El Capitan

OS X El Capitan

OS X El Capitan

Pada OS X 10.8 (Mountain Lion) keatas, termasuk yang saya gunakan (OS X 10.10 Yosemite) telah dibekali dengan dengan apache secara default, tinggal mengaktifkan nya saja dengan perintah

$ sudo apachectl start

Sebelum August 2015, saya masih menggunakan OS X Yosemite di MacBook Pro saya. Hingga muncul versi terbaru dari OS X El Capitan dengan berbagai fitur menggiurkannya. Saya tertarik dan akhirnya memutuskan untuk melakukan upgrade, namun ternyata pilihan tersebut cukup merepotkan saya dihari berikutnya. Karena ternyata apache tidak bisa start di OS X El Capitan, respon yang didapat sebagai berikut

(48)Address already in use: make_sock: could not bind to address [::]:8080
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:8080
no listening sockets available, shutting down
Unable to open logs

Continue reading

Masalah MySQL service sering mati pada Cloud DigitalOcean

DigitalOcean Logo

DigitalOcean Logo

Beberapa bulan terakhir saya memutuskan untuk menggunakan layanan cloud server dari DigitalOcean untuk mengakomodir semua service, baik website maupun system management yang saya gunakan di kantor.

Butuh beberapa hari untuk proses migrasi data dari layanan sebelumnya (shared hosting) dan berjalan cukup baik, sampai saat ini kami sudah menggunakan 3 server (droplet) untuk menampung semua kebutuhan. Untuk menghemat operational cost 1 server saya bisa host maksimal  60-an website, meskipun itu sangat tidak dianjurkan. Karena tidak semua website memiliki traffic yang cukup tinggi, jadi saya kira tidak ada masalah menampung sejumlah website tersebut dalam 1 server secara bersamaan. Continue reading

Serangan Campaign Malware

Hari ini dipenghujung tahun 2014 ini adalah hari paling merepotkan selama mengelola salah satu Cloud milik LRsoft. Pasalnya server mendapat kado natal istimewa berupa malware yang menginfeksi 60 lebih website yang ada didalamnya, sehingga ketika domain web tersebut diakses via browser akan muncul peringatan block halaman dari layanan Google seperti gambar dibawah:

Block dari Google

Block dari Google

Continue reading