DEV Community

Cover image for A complete guide to Installing Services in Linux Fedora
Rafsun Sheikh
Rafsun Sheikh

Posted on

A complete guide to Installing Services in Linux Fedora

Many of us are a complete beginner when using Linux Operating System. Today we are going to learn how to install Linux Services into your Fedora Machine.

To use or configure any services we are going to follow these steps generally:

  1. Install the packages including the dependencies.
  2. Enable/restart the service
  3. Configure the service as per our requirements.

And these are the following services that we are going to learn to install today:

  1. FTP Server with vsftpd
  2. Web Server with wordpress
  3. Cloud Server with ownCloud
  4. Mail Server with roundcube

But, for Web Server and Cloud Server we need LAMP with phpmyadmin. So, before we start with the web server we will install and configure LAMP at first.

FTP Server

FTP stands for File Transfer Protocol. This protocol is used to transmit files between devices across a network. For instance, sending data from a computer to a server across the internet In a word, FTP is the language that devices use to transfer data over a TCP/IP network.

When files are uploaded to an FTP server, other users can access them from anywhere in the world by connecting to the server and downloading the files using the FTP protocol. Nevertheless, this illustration shows that you need a dedicated FTP server set up in order to exchange the data. No, setting up your computer to act as an FTP server is a simple process. While Windows users can use the Internet Information Services Manager, Linux users can easily install the FTP program on their computer.

You can easily install FTP on Fedora using the YUM package manager. Launch the Terminal and execute the command below.

sudo yum install vsftpd

Enter fullscreen mode Exit fullscreen mode

You can verify the installation by checking the VSFTPD version installed on your system when done.

vsftpd -v
Enter fullscreen mode Exit fullscreen mode

Configure FTP (vsftpd) on Fedora

You can check whether the ftp server is running or not by:

sudo service vsftpd status
Enter fullscreen mode Exit fullscreen mode

To make the modifications effective, restart the VSFTPD server. Run the commands listed below.

sudo systemctl enable vsftpd
sudo systemctl restart vsftpd
Enter fullscreen mode Exit fullscreen mode

Connect to the FTP server

Enter the following URL into your browser's address bar to access the FTP server:

ftp://[ip-address]
e.g.,
ftp://10.20.31.171
Enter fullscreen mode Exit fullscreen mode

If you don’t know your local ip address use ifconfig. And you can find how to troubleshoot if ifconfig is not working.

ipconfig
Enter fullscreen mode Exit fullscreen mode

LAMP with phpmyadmin

Steps to Setup LAMP

LAMP stands for:

  • Linux
  • Apache
  • MySQL
  • PHP

So we need to install all the services in our machine. Whereas Linux is already installed so we need to start from installing Apache.

Install Apache

sudo yum update upgrade
sudo yum install httpd
sudo yum install httpd-tools
Enter fullscreen mode Exit fullscreen mode

To check the apache service:

sudo systemctl status httpd
Enter fullscreen mode Exit fullscreen mode

Enable the service:

sudo systemctl start httpd
sudo systemctl enable httpd
Enter fullscreen mode Exit fullscreen mode

Add the service permission to the firewall so that firewall lets other users use the service from the network:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Enter fullscreen mode Exit fullscreen mode

All necessary packages will be installed once the script has finished running, and we can test it by entering the IP address of our web server (localhost).

The basic site (the one we saw in the previous step) is activated by default on Apache. Its content is editable under /var/www/html.

Install MariaDB

sudo yum install mariadb-server mariadb -y
Enter fullscreen mode Exit fullscreen mode

Enable mariadb:

sudo systemctl status mariadb
sudo systemctl start mariadb
sudo systemctl enable mariadb
Enter fullscreen mode Exit fullscreen mode

To configure mariadb run the following commands:

sudo mysql_secure_installation
Enter fullscreen mode Exit fullscreen mode

You will be encountered with the following Configuration options:

Enter current password for root (enter for none):
Enter fullscreen mode Exit fullscreen mode

Press Enter

Switch to unix_socket authentication [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press n

Change the root password? [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press y

New password: 
Re-enter new password:
Enter fullscreen mode Exit fullscreen mode

You can give your own password like 12345678

Reminder : You will need this password to login into your phpmyadmin login page

Remove anonymous users? [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press y

Disallow root login remotely? [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press y

Remove test database and access to it? [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press n

Remove test database and access to it? [Y/n]
Enter fullscreen mode Exit fullscreen mode

Press n

You will be completed with the configuration of mariadb by then:

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
Enter fullscreen mode Exit fullscreen mode

Install PHP

sudo yum install php -y
Enter fullscreen mode Exit fullscreen mode

To check whether php is working fine or not we need to create a small .php file and move it to /var/www/html and try to access it from web browser.

To do that at first delete everything from our desired directory.

cd /var/www/html
sudo rm * 
Enter fullscreen mode Exit fullscreen mode

Then we create and edit the file using nano.

sudo nano index.php
Enter fullscreen mode Exit fullscreen mode

And write the following lines into index.php file:

<?php
     phpinfo();
?>
Enter fullscreen mode Exit fullscreen mode

Save the file by ctrl+s and exit the file by ctrl+x.

We need to restart the apache server again.

sudo systemctl restart httpd
Enter fullscreen mode Exit fullscreen mode

Now go to your web browser and search:

http://localhost/index.php
Enter fullscreen mode Exit fullscreen mode

You should be able to see the basic php info page.

Install phpmyadmin

sudo yum install phpmyadmin -y
sudo systemctl restart httpd
Enter fullscreen mode Exit fullscreen mode

Go to http://localhost/phpmyadmin
N.B: In the login page your username is root and password is the password that you gave during mysql_secure_installation.

Web Server

At first download wordpress

sudo wget https://wordpress.org/latest.zip
Enter fullscreen mode Exit fullscreen mode

After download if you list the directory by ls you will find latest.zip is there. Let’s unzip it.

unzip latest.zip
Enter fullscreen mode Exit fullscreen mode

Then ls again, you’ll find wordpress directory. Get inside the directory.

cd wordpress
Enter fullscreen mode Exit fullscreen mode

And you’ll find all the files are there.

Copy all the files and directories into /var/www/html.

sudo cp * /var/www/html -r
Enter fullscreen mode Exit fullscreen mode

Now Create a database for your wordpress installation:

sudo mysql -u root -p
####Enter Password : <Provide the password you've set during the mysql_secure_installation>
create database wordpress; # wordpress is the database name here
show databases: # to find the already created databases
create user "admin"@"%" identified by "password"; # this is a important step as we need to provide a username and a password while installing wordpress
#Here admin is the useraname and password is the password and "@"%" along with username is a requirement to give while creating username
grant all privileges on wordpress.* to "admin"@"%"; 
#this line is for granting access to the database wordpress by user admin
exit
Enter fullscreen mode Exit fullscreen mode

Now you are done with database, user and password creation.

Then go to the browser and search for:

http://localhost/wp-admin
Enter fullscreen mode Exit fullscreen mode

WordPress installation page will show up. Start with the installation process.

If you face any dialog box that says that

Unable to write to wp-config.php file.
You can create the wp-config.php file manually and paste the following text into it.
Enter fullscreen mode Exit fullscreen mode

Then copy the full text from the box. And go to terminal and type:

sudo cd /var/www/html
sudo nano wp-config.php
Enter fullscreen mode Exit fullscreen mode

and paste the whole text you copied and ctrl+s to save and ctrl+x to close the window.
After the installation you can access your WordPress website from:

http://localhost
Enter fullscreen mode Exit fullscreen mode

And also you can edit your website from:

http://localhost/wp-admin
Enter fullscreen mode Exit fullscreen mode

Cloud Server

We will be using owncloud to provide data access using web interface. It also provides options to sync and share data across devices.

To enable cloud services we need to do the followings:

  1. Step 1 - Setup LAMP
  2. Step 2 - Download ownCloud Archive
  3. Step 3 - Create MySQL Database and User
  4. Step 4 - Install ownCloud with Web Installer

We are already done with Step - 1. So now we will start with step 2.

Step 2 - Download ownCloud Archive

cd /var/www/html
sudo wget https://download.owncloud.com/server/stable/owncloud-complete-latest.zip
Enter fullscreen mode Exit fullscreen mode

Then unzip the latest.zip file :

sudo unzip owncloud-complete-latest.zip
cd /var/www/html
sudo chown -R apache.apache owncloud
sudo chmod -R 755 owncloud
Enter fullscreen mode Exit fullscreen mode

Delete the .zip file

sudo rm owncloud-complete-latest.zip
Enter fullscreen mode Exit fullscreen mode

Create MySQL database and user

mysql -u root -p
Enter Password:

create database owncloud;
grant all privileges on owncloud.* to "admin"@"%";
#as we have already created user admin with password "password"
exit
Enter fullscreen mode Exit fullscreen mode

Now let’s go to web browser and search:

http://localhost/ownlcloud
Enter fullscreen mode Exit fullscreen mode

You might encounter an error like :

This version of ownCloud is not compatible with PHP 8.0
You are currently running PHP 8.1.2.
Enter fullscreen mode Exit fullscreen mode

That time, you need to downgrade your php. You need to go below php version 7.4.

To do that:

Remove php from your system

sudo yum remove php
Enter fullscreen mode Exit fullscreen mode

Add REMI Repository

Run the command below to add REMI Repository to your system.

sudo yum -y install https://rpms.remirepo.net/fedora/remi-release-36.rpm
Enter fullscreen mode Exit fullscreen mode

Install PHP 7.4 on Fedora

sudo dnf config-manager --set-enabled remi
sudo  dnf module reset php
sudo dnf module install php:remi-7.4
Enter fullscreen mode Exit fullscreen mode

Confirm current php version is installed:

php -v
Enter fullscreen mode Exit fullscreen mode

Restart the apache again:

sudo systemctl restart httpd
Enter fullscreen mode Exit fullscreen mode

Go to the web browser and search:

http://localhost/owncloud
Enter fullscreen mode Exit fullscreen mode

You might face a write error. To solve that,

sudo setenforce 0
sudo nano /etc/selinux/config
# change the SELINUX=enforcing to SELINUX=permissive
then reboot the pc
Enter fullscreen mode Exit fullscreen mode

After reboot, go to your web browser again search for:

http://localhost/owncloud
Enter fullscreen mode Exit fullscreen mode

Mail Server

We will be using RoundCubeMail to set up our mail server. To do that:

Download the latest tarball of roundcube mail, untar it and move it to the /var/www/html/. and also change the ownership.

#download roundcubemail from roundcubemail website
cd /home/mdrafsunsheikh/Downloads
tar zxvf roundcubemail-0.8.6.tar.gz
mv roundcubemail-0.8.6 /var/www/html/roundcubemail
chown -R apache:apache /var/www/html/roundcubemail
Enter fullscreen mode Exit fullscreen mode

Create a database for the roundcube mail

mysql -u root -p
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO "admin"@"%";
exit
Enter fullscreen mode Exit fullscreen mode

Open the link in the browser:

http://localhost/roundcubemail/installer
Enter fullscreen mode Exit fullscreen mode

Press Next then Check login.

Remove the installer directory.

rm -rf /var/www/html/roundcubemail/installer
Enter fullscreen mode Exit fullscreen mode

Go to the link:

http://localhost/roundcubemail
Enter fullscreen mode Exit fullscreen mode

You will get the roundcubemail login screen.

Install Mail Server using iRedMail in Ubuntu

Install Ubuntu in your PC first.
Download iRedMail installation file from its official website.

Go to your Downloads folder and extract the installed file

cd Downloads
tar -xzvf iRedMail-1.6.2.tar.gz
Enter fullscreen mode Exit fullscreen mode

Go inside the extracted folder

cd iRedMail-1.6.2
Enter fullscreen mode Exit fullscreen mode

Change the permission of the iRedMail.sh file to executable

chmod +x iRedMail.sh
Enter fullscreen mode Exit fullscreen mode

install the iRedMail.sh file

sudo ./iRedMail.sh
Enter fullscreen mode Exit fullscreen mode

provide your password.

You will face an error like

<< ERROR >> Please configure a fully qualified domain name (FQDN) in /etc/hosts before we go further.

Example:

127.0.0.1   mail.iredmail.org mail localhost
Enter fullscreen mode Exit fullscreen mode

We need to configure our domain name. Before that lets change our hostname to mail for better assimilation

sudo hostname mail
Enter fullscreen mode Exit fullscreen mode

Lets go to /etc/hosts and set our domain name

sudo nano /etc/hosts
#and change into following:
127.0.0.1       mail.service.xyz mail localhost
Enter fullscreen mode Exit fullscreen mode

Then save the file with ctrl+s and exit with ctrl+x

Again try to install the iRedMail.sh file

sudo ./iRedMail.sh
Enter fullscreen mode Exit fullscreen mode

Follow the following configuration

< Question > Use it for mail server setting? [y|N]
#Give y ; 

1. Press enter to select Yes in Welcome and thanks for your use
2. In default mail storage path keep default and press "Enter"
3. In Preffered web server select "Nginx" and press "Enter"
4. In Choose preffered backend used to store mail accounts select "Mariadb" and press "Enter"
5. Set a password for MYSQL administrator : root
6. Input your domain name as service.xyz
7.  Set a password for the mail domain administrator
8. In optional components keep everything as such and press NEXT
9. Type 'y' and press "enter" to start the installation
10. Question > File : /etc/firewalld/zones/iredmail.xml, with SSHD ports : 22 [y/n] Press Y
11.  Restart firewall ? Press y
12. File > /etc/my.cnf. press Y
Enter fullscreen mode Exit fullscreen mode

Your installation will be finished and there will be some configuration check as :

URLs of installed web applications:

- Roundcube webmail: https://mail.service.xyz/mail
- Netdata (monitor): https://mail.service.xyz/netdata

- Web admin panel (iRedmail): https://mail.service.xyz/iredmail

You can login to above links with below credentials:

-username: postmaster@service.xyz
- Password : <your given password>
Enter fullscreen mode Exit fullscreen mode

You have to reboot your pc to enable all services

reboot
Enter fullscreen mode Exit fullscreen mode

Congratulations! You are done with installing mail server using iRedMail. Now you can go to your web browser and search the Roundcube webmail URL or Web Admin Panel URL. Happy Coding!

Conclusion

You have come to the end of the tutorial. Some of the steps are clumsy. In those cases you need to be cautious. Please read the prompt up writings in the bash. You will be clear when you read them carefully. You may face many errors, so try to follow the steps meticulously. Hopefully you can be able to install and configure all the services successfully.
Please leave a comment if you face any problems. Thank you.

Top comments (1)

Collapse
 
respect17 profile image
Kudzai Murimi

Thanks a lot!