Sharing seputar Dunia Tkj dan Blogging ^^

Showing posts with label Nginx. Show all posts
Showing posts with label Nginx. Show all posts

Thursday, July 6, 2017

Cara Mengetahui Di Mana Letak Konfigurasi Apache, MySQL, Nginx dan PHP


Dalam GNU/Linux untuk mengatur suatu aplikasi sangatlah mudah yakni kita hanya perlu merubahnya dari berkas konfigurasi (configuration file). Namun, perbedaan distribusi GNU/Linux, menyebabkan berbeda pula di mana diletakan berkas tersebut. Dengan kata lain, jika kita ingin merubahan konfigurasi aplikasi A, kita harus menyesuaikan dengan distro A tersebut, tidak boleh menggunakan dari distro B, meskipun nama aplikasinya sama. Cukup merepotkan memang. Contoh sederhanannya dalam eperti Apache dan Nginx tiap distro berbeda di mana letaknya.
Tulisan kali ini, penulis mencoba memberikan tips bagaimana cara mengetahui letak berkas konfigurasi dari Apache, MySQL/Mariadb, Nginx dan PHP.

Berikut ini cara bagaimana kita dapat mengetahui letak konfigurasi mereka dengan memanfaatkan perintah-perintah sederhana berikut:

Apache

Untuk Apache beberapa distro GNU/Linux berbeda dalam penamaannya Anda bisa melakukan salah satu dari tiga perintah di bawah ini:
$ apachectl -V | grep -E "HTTPD_ROOT|SERVER_CONFIG_FILE
atau
$ httpd -V | grep -E "HTTPD_ROOT|SERVER_CONFIG_FILE"
atau
$ apache2ctl -V | grep -E "HTTPD_ROOT|SERVER_CONFIG_FILE"
Kita akan melihat hasilnya seperti berikut:
Dari gambar di atas tertera nilai dari HTTPD_ROOT="/etc/httpd" dan SERVER_CONFIG_FILE="conf/httpd.conf" itu artinya konfigurasi Apache terletak pada: /etc/httpd/conf/httpd.conf

MySQL/Mariadb

Kemudian untuk MySQL atau Mariadb sama halnya seperti apache kita dapat melakukan salah satu perintah berikut:
$ mysqladmin --help | grep my.cnf | head -1
atau
$ mysql --help | grep my.cnf | head -1
Dilihat dari hasil gambar di atas terdapat 3 berkas konfigurasi. Untuk berkas /etc/my.cnf dan /etc/mysql/my.conf merupakan konfigurasi secara default atau global konfigurasi, sedangkan ~/.my.conf merupakan konfigurasi tiap-tiap user.

Nginx

Kemudian nginx caranya cukup mudah, kita hanya perlu melakukan perintah berikut:
$ nginx -V


Dilihat dari gambar di atas dapat disimpulkan bahwa berkas konfigurasi Nginx terletak pada /etc/nginx/nginx.conf.

PHP

Terakhir PHP kita hanya perlu mencari berkas bernama php.ini.
$ php -i | grep php.ini

Mudah bukan? Dengan begini kita tidak perlu repot lagi mencari di mana letak konfigurasi mereka.

Semoga bermanfaat.

Sunday, July 2, 2017

Cara Mudah Membatasi IP dengan Nginx


Salah satu upaya untuk penanganan masalah keamanan server adalah dengan membatasi IP tertentu mana saja yang boleh diakses dan IP mana saja yang tidak boleh.

Sebagai contoh misalnya kita mau membatasi siapa-siapa saja yang boleh mengakses phpMyadmin atau halaman administrasi dari suatu web yang terlah kita bangun.

Pada tulisan kali ini, penulis mencoba memberikan sedikit tips dan trik bagaimana membatasi IP tertentu dengan menggunakan Nginx di GNU/Linux.

Persiapan

Asumsi tulisan ini adalah Anda sudah memasang Nginx dan sudah menerapkannya pada server Anda. Jika belum, bisa mencari artikel terkait pemasangan Nginx di linuxku.com

Cara Pengunaan

Untuk menggunakannya kita hanya perlu merubah konfigurasi Nginx. Adapun untuk berkas konfigurasi Nginx, umumnya terletak pada:
/etc/nginx/nginx.conf
Atau jika Anda menggunakan server block pada GNU/Linux distribusi Debian, Ubuntu serta derivatifnya, ia terletak pada:
/etc/nginx/sites-availables/default
Di sini kita menggunakan dua metode yakni Blacklist dan Whitelist. Perbedaan antara keduanya adalah blacklist hanya memblokir IP terdaftar, sedangkan whitelist membuka dari IP terdaftar, dengan kata lain blok semua kecuali yang terdaftar.

Kedua metode tersebut bebas mau gunakan mana yang menurut Anda terbaik, yang jelas dalam tulisan ini penulis hanya memberikan sedikit contoh sederhana.

Metode Blacklist

server {
    ...
   location /admin {
      allow all;
      deny 10.0.0.0/8;
      deny 192.168.0.1;
      ...
   }
   ...
}

Metode Whitelist

server {
    ...
   location /admin {
      allow 10.0.0.0/8;
      allow 123.168.0.1;
      deny all;
      ...
   }
   ...
}
Langkah terakhir yakni kita restart Nginx nya dengan cara berikut:
$ sudo service nginx restart
Atau bagi Anda pengguna Systemd
$ sudo systemctl restart nginx

Saturday, March 18, 2017

Memasang Let's Encrypt dan Nginx di Ubuntu 16.04


Artikel sebelumnya sebetulnya di sini sudah pernah membahas cara pemasangan Let's Encrypt. Penulis menuliskan kembali karena ada perbedaan cara pemasangan Let's Encrypt tersebut khusus pada versi Ubuntu 16.04 LTS. Di versi tersebut Let's Encrypt telah masuk dalam repositori resmi Ubuntu. Sehingga kita tidak perlu lagi meng-clone atau pull dari GitHub Let's Encrypt pada saat pemasangannya.
Langsung saja kita mulai. Sebelum memulai pastikan Anda sudah memasang Nginx.
$ sudo apt-get update
$ sudo apt-get install nginx-full
Kemudian baru kita pasang Let's Encryptnya:
$ sudo apt-get install letsencrypt
Jika sudah semua terpasang. Langkah selanjutnya kita sunting pengaturan default Nginx atau virtualhost kita. Jika Anda menggunakan semacam server-block pada beberapa domain, Anda tinggal ganti saja sesuai virtualhost Anda tersebut. Pada contoh tulisan ini, kita gunakan penganturan default saja.
$ sudo nano /etc/nginx/sites-available/default
Lalu tambahkan:
location ~ /.well-known {
                allow all;
  }
Secara default, direktori Nginx terletak di /var/www/html. Ini artinya nanti pada saat meng-generated let's encrypt, ia akan menciptakan direktor .well-known di /var/www/html, menjadi /var/www/html/.well-known.

Jika sudah keluar dari nano, dan kita cek dahulu, apakah pengaturan yang kita sunting sudah benar atau belum, caranya:
$ sudo nginx -t 
Jika kita tidak menemukan kalimat galat (error), langsung saja kita restart Nginx-nya.
$ sudo systemctl restart nginx
Kemudian kita buat sertifikatnya:

$ sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d linuxku.com -d www.linuxku.com
Setelah itu Anda akan diminatai memasukan alamat surel (email).
Jika sudah tekan tombol TAB, dan OK. Sampai keluar konfirmasi seperti gambar di bawah ini:
Jika sudah selesai dan sukses, kita akan menerima pesan seperti gambar di bawah ini:
Untuk mengatifkan SSLnya kita perlu menambahkan kode berikut, di /etc/nginx/sites-available/default:
$ sudo nano /etc/nginx/sites-available/default 
listen 443 ssl;
ssl on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;

ssl_certificate /etc/letsencrypt/live/linuxku.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxku.com/privkey.pem;
Keluar dari nano, dan lakukan pengecekan Nginx kembali, untuk memastikan kode kita sudah valid atau belum.
$ sudo nginx -t 
Jika kita tidak menemukan kalimat galat (error), langsung saja kita restart Nginx-nya.
$ sudo systemctl restart nginx
Coba sekarang kita tes:

Selesai sekarang kita sudah dapat menggunakan HTTPS dengan sertifikat Let's Encrypt.

Semoga bermanfaat :D

Tuesday, November 22, 2016

Install Memcached Menerapakannya di PHP7 + Nginx di Ubuntu 16.04


Tutorial kali ini kita akan membahas mengenai bagaimana cara memasang memcache yang kita terapkan pada PHP versi 7 tentu dengan php-fpm di web server Nginx di server berbasis Ubuntu 16.04.

Memcached memiliki tujuan tujuan penggunaan teknologi ini yakni untuk turbo meningkatkan kinerja situs Anda serta mengurangi beban server berat dengan menghindari request yang sering ke database. Memcached adalah proses yang me-listen secara default pada port 11211.

Tidak berpanjang lebar langsung saja kita praktek. Asumsi tulisan ini Anda susah memasang Nginx, PHP7 dan php-fpm serta Nginx sudah dapat mengeksekusi PHP7.

Sebelum memulai ada baiknya kita singkronisasikan terlebih dahulu database pada repository dalam sistem.
$ sudo apt-get update -y
Kemudian baru kita pasang memcached tersebut:
$ sudo apt install memcached php-memcached
Kemudian kita aktifkan memcached tersebut
$ sudo phpenmod memcached 
Jika sudah coba kita cek apakah Memcache sudah di load oleh PHP atau belum dengan cara:
$ php -i | grep memcache

Atau kita buatkan skrip php nya:
$ sudo nano /var/www/html/info.php
Lalu masukan skrip berikut:
<?php
phpinfo();

Kita tes dengan skrip PHP dengan nama misalnya tes.php. Langsung kita buat di:
$ sudo nano /var/www/html/tes.php
Dan isikan skrip seperti di bawah ini:
<?php
$mem = new Memcached();
$mem->addServer("127.0.0.1", 11211);
 
$result = $mem->get("blah");
 
if ($result) {
    echo $result;
} else {
    echo "Tidak ada key, coba Anda refresh browser Anda";
    $mem->set("blah", "Berhasil tersimpan di Memcached") or die("Tidak dapat menyimpan apapun di memcached...");
}

Jika berhasil ia akan menampilkan pesan berhasil. Mudah bukan? Semoga bermanfaat :)

Saturday, November 19, 2016

Install OpenCart di Nginx


OpenCart adalah aplikasi e-Commerce berbasis PHP dengan sistem CMS (content management system), yang mana ia cukup banyak digunakan untuk pembuatan situs pembelanjaan online.

Tulisan kali ini penulis akan memberikan cara tentang bagaimana pemasangan OpenCart di web server yang menggunakan Nginx. Kita akan belajar memasang OpenCart tersebut secara manual dengan bermodalkan CLI (command line interface) saja.
Langsung saja kita mulai praktek, Anda login server Anda via SSH. Pertama-tama kita pasang git terlebih dahulu.
$ sudo apt-get install git
Kemudian pastikan Anda sudah memasang paket php Curl dan Mcrypt, cara pemasangannya ada sebagai berikut:
$ sudo apt-get install php5-curl php5-mcrypt
$ sudo php5enmod mcrypt
$ sudo service php5-fpm restart
Jika Anda pengguna Ubuntu 16.04 ganti kata php5 dengan php7.0.
Kemudian kita buat directory di /srv/http/:
$ sudo mkdir -p /srv
$ sudo mkdir -p /srv/http
Lalu kita clone OpenCart dari GitHub:
$ cd /srv/http
$ sudo git clone https://github.com/opencart/opencart.git
$ cd opencart
Kemudian kita ubah ownernya pada directory upload:
Jika Anda pengguna Debian, Ubuntu dan derivatifnya:
$ sudo chown www-data:www-data -R upload
Jika Anda pengguna Centos, Fedora, RHEL dan derivatifnya:
$ sudo chown nginx:nginx -R upload
Kemudian kita buat virtualhost. Penulis menyarankan gunakan pemetaan virtualhost seperti Debian, Anda bisa mencontohnya pada artikel linuxku.com sebelumnya yakni:

http://www.linuxku.com/2016/05/menerapkan-virtualhost-untuk-keperluan.html

Kita buat virtualhost berikut:
$ sudo nano /etc/nginx/sites-available/opencart
Isi seperti skrip di bawah ini:
server {
 listen 80;

# Jika Anda ingin menggunakan https uncomment di bawah ini
# listen 443;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
#
# ssl_session_timeout 5m;
#
# ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
# ssl_prefer_server_ciphers on;
 
 root /srv/http/opencart/upload;
 index index.php index.html index.htm
 server_name opencart.local;

 location / {
          try_files $uri $uri/ /index.php?$args;
 }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_intercept_errors on;

        # Hilangkan tanda pagar di samping bagi Anda Pengguna Ubuntu 16.04
 # fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 # Bagi Anda pengguna Ubuntu 14.04
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

   location ~ /\.ht {
 deny all;
   }
}
Perhatian skrip di atas hanya khusus pengguna Ubuntu 14.04 atau 16.04 jika Anda ingin menggunakan skrip di atas untuk distro lainnya harap ubah pada bagian fastcgi disesuai dengan distro Anda.

Kemudian kita aktifkan virtualhostnya:
$ sudo ln -s /etc/nginx/sites-available/opencart /etc/nginx/sites-enabled/
Lalu kita restart Nginx:
$ sudo service nginx retart
Sekarang kita beranjak ke database, kita buat database beserta usernamenya.
$ mysql -u root -p'Password Anda'
Kemudian lakukan perintah seperti di bawah ini:
mysql> create database opencart_db;
mysql> create user opencart_db_user@localhost identified by 'Password Anda';
mysql> grant all privileges on opencart_db.* to opencart_db_user@localhost;
mysql> flush privileges;
mysql> \q
Lalu kemudian kita buat config opencartnya.
$ cd /srv/http/opencart/upload
$ sudo cp config-dist.php config.php
$ sudo cp admin/config-dist.php admin/config.php
$ sudo chown www-data:www-data -R *
Jika sudah langsung saja Anda akses, dicontoh tutorial ini penulis menggunakan domain opencart.local, jadi kita bisa langsung akses ke tautan http://opencart.local/

Pastikan pengaturan Anda sudah seperti gambar di bawah ini:
Langsung saja klik Continue, dan isikan username, password beserta database yang telah kita buat sebelumnya:

Kemudian kita buat username, password dan email untuk login.
Klik continue, dan OpenCart telah berhasil kita pasang.

Langkah terkahir yakni kita menghapus direktori install:
$ sudo rm -rf /srv/http/opencart/install
Selesai sudah OpenCart kini telah terpasang di server Anda, semoga bermanfaat :)

Tuesday, November 8, 2016

Menyembunyikan Versi Nginx dari Public


Memperbaharui suatu aplikasi adalah hal yang cukup penting demi mendapatkan fitur baru dan juga demi menambal kerentanan, bugs atau masalah pada versi sebelumnya. Akan tetapi memperbaharui aplikasi terkadang juga malah menimbulkan masalah baru, oleh karenanya terkadang kita juga tetap membiarkannya sampai benar-benar stabil.

Menjaga atau melindungi web server seperti Nginx adalah penting dilakukan, dan salah satu cara melindunginya yakni kita update secara berkala. Juga salah satu melindungi Nginx adalah menyembunyikan versinya ketika terjadi error dari suatu website, Nginx menampilkan versinya secara public. Hal ini perlu kita sembunyikan, mengapa? Karena dengan menampilkan versinya, hingga orang lebih mudah meretas kerentanan Nginx, tinggal liat versinya saja dan mencari tahu kelemahan dari versi tersebut.

Tutorial kali ini, penulis akan membahas tentang bagaimana cara menyembunyikan versi Nginx dari public. Perlu diketahui, tutorial ini dapat digunakan oleh distro manapun, akan tetapi penulis mempraktekan tutorial ini di Ubuntu Server 14.04.

Langsung saja kita mulai praktek, pertama-tama Anda login SSH Anda dan masuk kepengaturan Nginx.

Secara umum pengaturan Nginx seperti berikut:
$ nano /etc/nginx/nginx.conf
Jika Anda pengguna Ubuntu atau Debian gunakan nano sebagai editornya, jika Anda pengguna distro lain, gunakan vi atau vim.

Jika sudah langsung Anda cari kata " server_tokens " (tanpa petik dua), ubah menjadi " off " (tanpa petik dua).
server_tokens off; 
Lihat seperti gambar di bawah ini:
Jika sudah, langsung tutup nano atau vi atau vim Anda dan simpan. Lalu kita restart Nginx kita dengan cara berikut:
$ sudo service nginx restart
Khusus Anda pengguna Systemd
$ sudo systemctl restart nginx
Jika sudah langsung saja Anda tes dengan browser dan masukan direktori sembarang sampai Nginx error, maka hasilnya akan seperti gambar di bawah ini:

Mudah bukan? Semoga bermanfaat :)