Instalasi OSTicket v1.10.4 pada Ubuntu Server 16.04 (Nginx)

OSTicket merupakan sebuah aplikasi open source yang mendukung sistem ticketing dan berbasis PHP. Aplikasi ini sangat mudah, ringan, dan memang didesain untuk mudah diinstall dan juga mudah digunakan. OSTicket memungkinkan kita untuk mengelola, mengatur, dan mengarsipkan permintaan akan support terhadap sistem yang kita buat. Aplikasi ini telah mendukung autentikasi via LDAP dan Active Directory.

Pada tutorial kali ini, saya akan menunjukkan langkah demi langkah mengenai cara untuk melakukan instalasi hingga konfigurasi OSTicket pada Ubuntu 16.04. software ini akan berjalan dibawah PHP-FPM 7.0, menggunakan Nginx sebagai Web Server-nya dan menggunakan MariaDB 10.2 sebagai database-nya.

Persyaratan

  • Ubuntu 16.04
  • Root Privileges
  • Install PHP 7.0, Nginx, MariaDB-Server
  • Pada MariaDB (Buat database, buat user untuk mengaksesnya dan berikan privilege untuk user tersebut mengakses database tadi).

Instalasi PHP

Apabila kalian tidak menemukan adanya paket PHP 7.0 pada repositori Ubuntu yang kalian punya, maka kalian harus menambahkan repositori lain, baru kemudian melakukan instalasi paket PHP 7.0. Caranya:

sudo add-apt-repository ppa:ondrej/php
Menambahkan repositori Ondrej
sudo apt update
Update Package
sudo apt-get install -y php7.0-cli php7.0-mysql php7.0-cgi php7.0-fpm php7.0-gd php7.0-imap php7.0-xml php7.0-mbstring php7.0-intl php-apcu
Instalasi paket PHP7.0

Jika sudah, masuk ke dalam direktori PHP 7.0 dan edit file php.ini:

cd /etc/php/7.0/
vi fpm/php.ini

Hapus tanda pagar pada cgi.fix_pathinfo dan ganti nilainya menjadi 0.

Simpan dan kemudian keluar dari vi editor. 

Sekarang restart PHP7.0-fpm dan buat agar PHP7.0-fpm berjalan ketika server memulai proses booting.

systemctl restart php7.0-fpm
systemctl enable php7.0-fpm
restart service PHP7.0-fpm

Selanjutnya, kita akan melakukan konfigurasi agar PHP7.0-fpm bekerja dengan nginx web server. Masuk ke dlam direktori virtual host yang ada di Nginx dan edit file virtual host dengan vi editor:

cd /etc/nginx/sites-available/
vi default

Buat konfigurasi PHP7.0 seperti file berikut:

location ~ \.php$ {
               include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
               fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #
}
buat seperti berikut

Simpan dan keluar, kemudain restart web server-nya:

service nginx restart

Sekarang tes PHP7.0 dan Nginx dengan membuat sebuah file phpinfo. Caranya:

cd /var/www/html/
echo '<?php phpinfo(); ?>' > info.php

Buka web browser kalian dan masukkan alamat IP dari web kalian:

http://192.168.10.131/info.php

dan kalian akan mendapatkan informasi mengenai versi dari PHP yang kalian gunakan

Versi PHP yang digunakan

Buat Database dan User untuk Mengakses OSTicket

Pada tahap ini, kita akan membuat database baru dan user untuk mengakses database tersebut. User dan database inilah yang akan digunakan oleh aplikasi OSTicket. Pertama, masuk ke dalam terminal MariaDB dengan menggunakan user root.

mysql -u root -p
KETIK PASSWORD LO

buat database dengan nama ‘ticket’ dan user baru dengan nama ‘ticket’ dengan password ‘ticket’

create database ticket;
create user 'ticket'@'localhost' identified by 'ticket';

Berikan privileges untuk user tersebut ke database ‘ticket’

grant all privileges on ticket.* to 'ticket'@'localhost' identified by 'ticket';
flush privileges;
Database, user dan hak akses sudah berhasil dibuat

Membuat Virtual Host untuk OSTicket

Sekarang waktunya untuk membuat vhost baru untuk OSTicket. Masuk ke dalam direktori vhost milik Nginx dan buat file baru dengan nama ‘ticket.conf’:

cd /etc/nginx/sites-available/
vi ticket

paste konfigurasi di bawah:

server {
  listen 80;
        server_name ticket.cobacoba.com;
 
        root   /var/www/html/osticket/upload;
 
        access_log  /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
 
        index index.php;
        client_max_body_size 2000M;
        client_body_buffer_size 100M;
        client_header_buffer_size 10M;
        large_client_header_buffers 2 10M;
 
        client_body_timeout 12;
        client_header_timeout 12;
        keepalive_timeout 15;
        send_timeout 10;
 
        gzip             on;
        gzip_comp_level  2;
        gzip_min_length  1000;
        gzip_proxied     expired no-cache no-store private auth;
        gzip_types       text/plain application/x-javascript text/xml text/css application/xml;
 
        set $path_info "";
 
        location ~ /include {
            deny all;
            return 403;
        }
 
        if ($request_uri ~ "^/api(/[^\?]+)") {
            set $path_info $1;
        }
 
        location ~ ^/api/(?:tickets|tasks).*$ {
            try_files $uri $uri/ /api/http.php?$query_string;
        }
 
        if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
            set $path_info $1;
        }
 
        location ~ ^/scp/ajax.php/.*$ {
            try_files $uri $uri/ /scp/ajax.php?$query_string;
        }
 
        location / {
            try_files $uri $uri/ index.php;
        }
 
        location ~ \.php$ {
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_param  PATH_INFO    $path_info;
        }
}

Jika kamu menggunakan HTTPS, berikut kira-kira konfigurasinya:

server {
  listen 80;
        server_name ticket.cobacoba.com;
        return 301 https://$server_name$request_uri;
}


server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        ssl_certificate /lokasi/file.crt;
        ssl_certificate_key /lokasi/file.key;

	# openssl dhparam 4096 -out /etc/ssl/dhparam.pem        
	ssl_dhparam /etc/ssl/dhparam.pem;
        ssl_ecdh_curve       secp384r1; # optional
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_prefer_server_ciphers on;

        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 1.1.1.1 1.0.0.1 valid=300s;
        resolver_timeout 10s;
        ssl_trusted_certificate /lokasi/file-bundle.crt;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        root   /var/www/html/osticket/upload;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name ticket.cobacoba.com;

        access_log  /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	client_max_body_size 2000M;
	client_body_buffer_size 100M;
	client_header_buffer_size 10M;
	large_client_header_buffers 2 10M;

	client_body_timeout 12;
	client_header_timeout 12;
	keepalive_timeout 15;
	send_timeout 10;

	gzip on;
	gzip_comp_level 2;
	gzip_min_length 1000;
	gzip_proxied expired no-cache no-store private auth;
	gzip_types text/plain application/x-javascript text/xml text/css application/xml;

	set $path_info "";

	location ~ /include {
	deny all;
	return 403;
	}

	if ($request_uri ~ "^/api(/[^\?]+)") {
	set $path_info $1;
	}

	location ~ ^/api/(?:tickets|tasks).*$ {
	try_files $uri $uri/ /api/http.php?$query_string;
	}

	if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
	set $path_info $1;
	}

	location ~ ^/scp/ajax.php/.*$ {
	try_files $uri $uri/ /scp/ajax.php?$query_string;
        }

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

        location ~ \.php$ {
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_param  PATH_INFO    $path_info;
        }

        location ~ /\.ht {
                deny all;
        }

        location ~ /.well-known {
                allow all;
        }

}

Pada contoh ini kita akan menggunakan domain dengan nama ‘ticket.cobacoba.com’ dan menggunakan direktori ‘/var/www/html/osticket/upload’ sebagai root directory. Timpa nama ‘ticket.cobacoba.com’ dengan nama domain kalian.

Simpan konfigurasi tersebut kemudian keluar.

Sekarang aktifkan vhost dan uji konfigurasinya

ln -s /etc/nginx/sites-available/ticket.conf /etc/nginx/sites-enabled/
nginx -t
Uji konfigurasi nginx

pastikan tidak ada error dan kemudian restart nginx.

service nginx restart
restart nginx

Download dan Konfigur OSTicket

Buat direktori baru untuk OSTicket dan masuk ke dalam direktori baru tersebut

mkdir -p /var/www/html/osticket/
cd /var/www/html/osticket/

Download dengan perintah berikut

wget http://osticket.com/sites/default/files/download/osTicket-v1.10.4.zip

Ekstrak file tersebut dengan perintah unzip

unzip osTicket-v1.10.4.zip

Semua konfigurasi OSTicket berada pada folder upload, masuk ke dalam direktori tersebut dan copy file config-nya

cd upload/
cp include/ost-sampleconfig.php include/ost-config.php

Sekarang ganti kepemilikan OSTicket menjadi ‘www-data’ (baik user atau grupnya)

cd /var/www/html/osticket/
chown -R www-data:www-data upload/

Instalasi OSTicket

Buka browser kalian dan masukkan domain kalian, contoh punya saya:

htttps://ticket.cobacoba.com

Pastikan semua paket yang dibutuhkan berda dalam kedaan berwarna hijau seperti gambar berikut

Paket sudah lengkap

Tekan continue dan kalian akan diarahkan pada seksi konfigurasi OSTicket.

Pada bagian “System settings”, masukkan nama “helpdesk” beserta email default-nya. Pada bagian “admin user”, ketikkan konfigurasi admin kalian termasuk email admin, dan pastikan email tersebut berbeda dengan email pada default helpdesk email.

Isi dengan benar ya

Klik “install now’ dan tunggu beberapa detik hingga instalasi selesai. Jika sudah selesai, kalian akan melihat gambar seperti gambar di bawah

Instalasi berhasil
cd /var/www/html/osticket/upload/

hapus atau ubah nama folder setup dan ganti permission dari OSticket config file

mv setup/ setup-sh/
chmod 0644 include/ost-config.php

Instalasi selesai

Uji Coba

Halaman Depan

Halaman user untuk mengambil tiket

Halaman admin

Halaman Depan Admin

Setelah berhasil masuk sebagai admin

Login sebagai Admin

Link

http://osticket.com/wiki/Main_Page

Catatan

  • Versi PHP yang disarankan adalah versi 5.6 hingga 7.0
  • Versi OS Ticket 1.10.4 ini belum compatible dengan PHP versi 7.1 dan 7.2
  • Hapus folder upload/setup pasca instalasi
Facebook Comments Box