This article is outdated and may not work correctly for current operating systems or software.
osTicket is an open-source customer support ticketing system. osTicket source code is publicly hosted on Github. In this tutorial, you will learn how to install and configure osTicket on Fedora 30.
HTTP server running Nginx or Apache. This guide will use Nginx.
PHP version 5.6 or greater
mysqli
, gd
, gettext
, imap
, json
, mbstring
, and xml
extension for PHP
MySQL database version 5.0 or greater or MariaDB equivalent
Check the Fedora version.
cat /etc/fedora-release
Create a new non-root
user account with sudo
access and switch to it.
useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe
NOTE: Replace johndoe
with your username.
Set up the timezone.
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Ensure that your system is up to date.
sudo dnf update
Install the needed packages.
sudo dnf install -y socat git wget unzip vim
Disable SELinux and Firewall.
sudo setenforce 0 ; sudo systemctl stop firewalld ; sudo systemctl disable firewalld
Install PHP, as well as the necessary PHP extensions.
sudo dnf install -y php-cli php-fpm php-common php-mbstring php-curl php-gd php-mysqlnd php-json php-xml php-imap php-intl php-pecl-apcu php-opcache
Check the version.
php -v
Check installed PHP extensions.
php -m
# mbstring
# curl
# gd
# PDO
# mysqli
# openssl
# . . .
Start and enable PHP-FPM.
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Install MariaDB.
sudo dnf install -y mariadb-server
Check the version.
mysql --version
Start and enable MariaDB.
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Run mysql_secure installation
script to improve MariaDB security and set the password for MariaDB root
user.
sudo mysql_secure_installation
Connect to MariaDB shell as the root user.
sudo mysql -u root -p
# Enter password
Create an empty MariaDB database and user for osTicket, and remember the credentials.
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit
NOTE: Replace dbname
and username
with appropriate names for your setup. Replace password
with a strong password.
Install Nginx.
sudo dnf install -y nginx
Check the version.
nginx -v
Start and enable Nginx.
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Configure Nginx for use with the osTicket.
sudo vim /etc/nginx/conf.d/osticket.conf
And populate the file with the below config.
server {
listen 80;
server_name example.com;
root /var/www/osticket/upload;
index index.php index.html;
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;
}
if ($request_uri ~ "^/.*\.php(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/scp/ajax.php/.*$ {
try_files $uri $uri/ /scp/ajax.php?$query_string;
}
location ~ ^/ajax.php/.*$ {
try_files $uri $uri/ /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;
fastcgi_param PATH_INFO $path_info;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
}
Save the file and exit with :+W+Q.
Test the configuration.
sudo nginx -t
Reload Nginx.
sudo service nginx restart
Create a document root directory.
sudo mkdir -p /var/www/osticket
Change ownership of the /var/www/osticket
directory to johndoe
.
sudo chown -R johndoe:johndoe /var/www/osticket
Navigate to the document root folder.
cd /var/www/osticket
Download and unzip the latest release of osTicket.
wget https://github.com/osTicket/osTicket/releases/download/v1.14.1/osTicket-v1.14.1.zip
unzip osTicket-v1.14.1.zip
rm osTicket-v1.14.1.zip
Copy the sample config file.
sudo cp upload/include/ost-sampleconfig.php upload/include/ost-config.php
Change ownership of the /var/www/osticket
directory to nginx
.
sudo chown -R nginx:nginx /var/www/osticket
Run sudo vim /etc/php-fpm.d/www.conf
and set the user and group to nginx
. Initially, they will be set to apache.
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
Create /var/lib/php/session/
directory and change ownership to nginx
.
sudo mkdir -p /var/lib/php/session && sudo chown -R nginx:nginx /var/lib/php/session
Restart the PHP-FPM service.
sudo systemctl restart php-fpm.service
Once everything is configured, it's time to access the osTicket web installation wizard. Open your site in a web browser and follow the instructions on the screen to finish the installation.
After installation, delete the setup
directory for security.
sudo rm -rf upload/setup
sudo chmod 0644 upload/include/ost-config.php