Mod rewrite (part.1)

Mod Rewrite part.1

Mod_Rewrite memungkinkan Anda membuat URL khusus dan sederhana sesuai kebutuhan.

Tulisan ini akan membahas tentang bagaimana mengaktifkan Mod_Rewrite, Membuat dan Menggunakan halaman .htaccess yang diperlukan, dan menyiapkan penulisan ulang URL.

Before we begin generating the actual URL rewrites, we need to activate the apache mod_rewrite module that controls them.

sudo a2enmod rewrite

Perintah mengaktifkan modul atau—jika sudah diaktifkan, menampilkan kata-kata, “Module rewrite sudah diaktifkan”

Setelah modul diaktifkan, Anda dapat mengatur penulisan ulang URL dengan membuat file .htaccess di direktori situs web Anda.

File .htaccess adalah cara untuk mengonfigurasi detail situs web Anda tanpa perlu mengubah file konfigurasi server. Tanda titik yang meng’awali’ nama file akan membuat file ini tidak tampak secara default di dalam folder.

Selain itu, peletakan file .htaccess juga penting. Konfigurasi dalam file itu akan memengaruhi semua yang ada di direktori dan direktori di bawahnya.

Cara mengizinkan perubahan dalam file .htaccess

Untuk mengizinkan file .htaccess menimpa konfigurasi situs web standar, kita awali dengan dengan membuka file konfigurasi. Catatan: Anda memerlukan hak sudo untuk langkah ini.

sudo nano /etc/apache2/sites-available/default

Setelah berada di dalam file itu, temukan bagian berikut, dan ubah baris yang mengatakan AllowOverride dari None menjadi All. Bagian tersebut sekarang akan terlihat seperti ini:

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
 </Directory>

Setelah Anda menyimpan dan keluar dari file itu, restart apache. File .htaccess sekarang akan tersedia untuk semua situs Anda.

sudo service apache2 restart

Refference: Digital Ocean: How To Set Up Mod_Rewrite

Memasang Web Server (LAMP) di Ubuntu 16.04

Pengantar

Sebelumnya diasumsikan bahwa kita sudah memiliki Ubuntu 16.04 Server 64bit. Jika Anda belum mengetahui cara instalasi Ubuntu 16.04 dapat dilihat disini. Karena ini untuk server, maka IP Address nya harus di set static. Secara default Ubuntu 16.04 Server tidak dipasangi Graphical User Interface, jadi semua dikendalikan dengan console, text based command.

Rencana yang akan dipasang adalah :

  1. Apache2
  2. MySQL 5
  3. PHP 7

Langkah 1 | Pasang Apache2 Web Server:

– Login lah sebagai user ubuntu yang pertama kali dibuat, user pertama ini memiliki kekhususan karena secara default sudah sebagai sudo user, atau user yang dapat berperan sebagai root. Saat ini prompt dari console Anda masih berupa “$” yang menandakan sebagai role user ‘bukan root’.

Selanjutnya masuklah sebagai root :

sudo -i

Salah satu tanda bahwa kita sedang dalam mode root adalah adanya prompt “#”.

Lakukan Update, agar seluruh komponen OS berada pada status update terkini.

apt-get update

DIlanjutkan dengan memasang/install Apache 2:

apt-get install apache2

Jika berjalan baik tanpa error, selanjutnya kita periksa apakah sudah berfungsi dengan browse dengan browser ke alamat IP server tersebut.

http://<IP address>

Dan akan tampak kira-kira seperti gambar di bawah ini:

Langkah 2 | Pasang MySQL Server:

Ada beberapa pilihan database yang dapat kita lakukan antara lain : MySQL, MariaDB, PostgreSQL, dan sebagainya. Kali ini kita pilih MySQL

sudo apt-get install mysql-server mysql-client

Dalam proses pemasangan ini Anda akan diminta memasukkan pilihan password untuk user database ‘root’:

Sekali lagi:

Keberadaan MySQL dapat diperiksa dengan:

sudo systemctl status mysql

Hasilnya kira-kira akan seperti ini :

toosa@toosa-T580:~$ sudo systemctl status mysql
[sudo] password for toosa: 
? mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
 Active: active (running) since Sab 2016-12-17 20:07:08 WIB; 1 day 12h ago
 Main PID: 1548 (mysqld)
 CGroup: /system.slice/mysql.service
 ??1548 /usr/sbin/mysqld

Periksa versi MySQL Anda :

sudo mysql --version

Jika Anda ternyata bermaksud memasang MariaDB, maka MySQL perlu dilepas terlebih dahulu atau dipasang pada port yang berbeda, hal itu tidak dibahas di artikel ini, insyaALLAH akan saya bahas di artikel mendatang. Demikian pula untuk meningkatkan keamanan dari MySQL atau MariaDB akan saya bahas pada artikel selanjutnya.

Langkah 3 | Pasang PHP 7:

Berikutnya kitapasang PHP 7

sudo apt-get update 
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi? php7.0 libapache2-mod-php7

Selanjutnya kita periksa versi php yang telah terpasang dengan :

sudo php -v

Kira-kira akan kita dapatkan hasil sebagai berikut :

toosa@toosa-T580:~$ php -v
PHP 7.0.9-1+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
 with Zend OPcache v7.0.9-1+deb.sury.org~trusty+1, Copyright (c) 1999-2016, by Zend Technologies

Terkahir kita perisksa dengan fungsi phpinfo(), mari kita buat sebuah file info.php

sudo nano  /var/www/html/info.php

Lalu diisi dengan code sebagai berikut :

<?php
phpinfo();
?>

Setelah disimpan, coba cek IP Anda :

Check IP :

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

lalu buka browser dengan IP tersebut: http://<IP address>/info.php, contoh :

http://192.168.100.1/info.php

Konfigurasi Apache 2.4 up untuk Virtualhost

Misalkan Anda memiliki server web dengan IP 222.222.222.222 dan akan mendaftarkan nama domain domainsaya.com di server tersebut, berikut adalah langkah konfigurasinya :

Setting DNS ditempat Anda mendaftarkan domain sehingga nama domain tersebut mengarah ke IP 222.222.222.222. Dengan demikian siapapun di internet ketika akan mencari domainsaya.com akan diarahkan ke IP 222.222.222.222.

Berikutnya tinggal setting di Web server kita, dalam hal ini Apache 2.4. Bagaimana caranya ?

Buatlah sebuah file conf di /etc/apache/site-available/domainsaya.conf. Isilah dengan :

<VirtualHost 222.222.222.222:80>
DocumentRoot /home/domainsaya/public_html
ServerName domainsaya.com
# Other directives here
       <Directory /home/domainsaya/public_html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

File konfigurasi domainsaya.conf ini harus memiliki symbolic link di /etc/apache/site-enabled/ agar dapat berfungsi :

ln -s /etc/apache/site-available/domainsaya.conf /etc/apache/site-enable/domainsaya.conf

Kemudian Apache perlu kita reload

#service apache restart

Semoga bermanfaat.

Tambahan :

Apache 2.4.3 telah menambahkan feature keamanan baru yang memungkinkan muncul pesan error “403 forbidden” yang tidak muncul jika menggunakan Apache 2.2.x. Atau bisa juga pesan berupa “client denied by server configuration”.
Fitur ini membutuhkan identitas pengguna untuk mengakses direktori. Fitur ini diaktifkan secara DEFAULT di dalam httpd.conf yang dibuat bersamaan pada saat instalasi Apache pertama kali. Kita dapat melihat aktifnya fitur ini dari directive :

Require all denied

Directive di atas tersebut akan menolak akses dari semua users. Untuk mengubahnya anda dapat saja menghapus directive tersebut, atau menambahkan directive lawannya di directory yang akan Anda buat terbuka akses nya :

Require all granted

diletakkan di :

;
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted

Warning: date() on ZendServer

Apabila Anda menemukan error seperti ini ketika menggunakan fungsi date()  :

Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Jakarta’ for ‘WIT/7.0/no DST’ instead in /home/toosa/public_html/basicphp/date1.php on line 2

Ini tandanya Zend Server Anda belum terisi dengan benar. Karena itu masuklah ke Administrasi Zend Server, masuk ke Server Setup lalu cari directive date.timezone , isilah sesuai dengan time zone yang Anda inginkan, misalnya Asia/Jakarta.

 

Install Zend Server 5.3 Community Edition (CE)

IMHO, Pada prinsip nya Zend Server fungsinya sama seperti setup sebuah Web Server + PHP biasa, yaitu Apache + PHP, hanya saja di enhance dengan pengendalian server PHP yang lebih baik, dan ditambahkan fitur-fitur yang lebih mendukung kebutuhan level Enterprise.

Apabila Anda sudah memasang Apache dan PHP standard dari apt-get aptitude, atau Synaptic, maka beberapa file  PHP akan diganti dengan PHP dari Zend, misalkan php5-curl akan diganti dengan php-5.3-curl-zend-server dan seterusnya.

Ok mari kita mulai dengan asumsi :

  1. Menggunakan OS Linux Ubuntu, kebetulan saya menggunakan Ubuntu 10.10
  2. Kita akan menggunakan Apache 2 dan PHP 5.3, jadi Zend server yang dipilih adalah ZendServer CE PHP 5.3.

Tidak ada masalah jika di server Anda sudah ada Apache dan PHP5 sebelumnya, nanti akan di replace pada saat instalasi.

Mari kita lakukan langkah-langkah sebagai berikut :

  1. Login lah sebagai root
  2. Setting file /etc/apt/sources.list , tambahkan
    • deb http://repos.zend.com/zend-server/deb server non-free
  3. Kemudian tambahkan Zend's repository public key dengan cara :
    • wget http://repos.zend.com/zend.key -O- |apt-key add –
  4. Jalankan sikronisasi dengan server repository Zend :
    • aptitude update
  5. Install Zend Server
    • aptitude install zend-server-ce-php-5.3

Hingga saat ini instalasi sudah selesai, mari kita lihat hasilnya dengan melihat :

http://localhost:10081/ZendServer

atau

https://localhost:10082/ZendServer

 

Anda akan ditanya persetujuan :

 

Lalu Next  :

 

Masukkan password dan selanjutnya akan ditanya email, NEXT …

setelah itu SELESAI 🙂

 

Memfungsikan PHP di userdir Apache Ubuntu 10.10

Ketika apache dan php di install di Linux Ubuntu 10.10, php memang sudah bisa dijalankan di /var/www, tetapi ketika kita mengaktifkan modul userdir agar /home/username/public_html bisa digunakan, ternyata baru .html yang bisa diaktifkan, sedangkan *.php belum bisa berjalan. ini karena secara default php5.conf belum mengaktifkan php di public_html.

Bukalah file /etc/apache2/mods-enabled/php5.conf :

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule …> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
         <Directory /home/*/public_html>
             php_admin_value engine Off
         </Directory>
    </IfModule>
</IfModule>
 

Anda harus memberikan remark (#) seperti di bawah ini :

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule …> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
   # <IfModule mod_userdir.c>
   #     <Directory /home/*/public_html>
   #          php_admin_value engine Off
   #     </Directory>
   # </IfModule>

</IfModule>

Terakhir jangan lupa merestart Apache nya :

$ /etc.init.d/apache2 restart