! How to Install osTicket on Fedora 30
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.
Requirements
Before you begin
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