To make this work we would need a basic http server so install all the http related packages.
Now before creating a http based yum repository, create an offline repo using the RHEL/CentOS dvd.
Next install httpd rpm and its dependency using yum
Next it is time to configure our http server
Edit your main configuration file i.e. "/etc/httpd/conf/httpd.conf" and add below content at the end of the file
NOTE: Here I will use /var/www/html as my source path where the RHEL/CentOS dvd will be mounted. You can change the path accordingly as per your requirement
<VirtualHost 192.168.1.6:80>
ServerAdmin root@server.golinuxhub.com
ServerName golinuxhub-server
DocumentRoot /var/www/html
ErrorLog logs/error_log
<Directory "/var/www/html/">
Options Indexes MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
If you have firewalld running on your system then you can run below command to add firewalld rules for httpd
success
# firewall-cmd --reload
success
Next restart your httpd service
Make sure the RHEL/CentOS dvd is mounted on your source directory i.e. /var/www/html
mount: /dev/loop0 is write-protected, mounting read-only
# ls /var/www/html/
addons EFI EULA extra_files.json GPL images isolinux LiveOS media.repo Packages repodata RPM-GPG-KEY-redhat-beta RPM-GPG-KEY-redhat-release TRANS.TBL
Next try to access your http server using http://192.168.1.6/web/ on your browser
NOTE: Replace the host IP (192.168.1.6) with your node IP
If all is good proceed to next step or else if you face any issue follow "/etc/httpd/logs/error_log" for more information on the issue
It is time to re-configure our repo file which for me is "/etc/yum.repos.d/rhel.repo" with below content
name=Red Hat Enterprise Linux 7.4
baseurl=http://192.168.1.6/web/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
NOTE: The gpg keys are by default installed on systems by a Red Hat release package for your type of installation hence you can use the above path and make sure that it exists
Here as you see my baseurl reflects my http server which contains the rpm from the rhel dvd.
Next save and exit the file
Next let's clean the cache
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Cleaning repos: RHEL_Repo
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
# rm -rf /var/cache/yum
Now let's see if our new repo is working as expected
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
RHEL_Repo | 4.1 kB 00:00:00
(1/2): RHEL_Repo/group_gz | 137 kB 00:00:00
(2/2): RHEL_Repo/primary_db | 4.0 MB 00:00:00
repo id repo name status
RHEL_Repo Red Hat Enterprise Linux 7.4 enabled: 4,986
repolist: 4,986
So as you see my repo "RHEL_Repo" is enabled and has 4,986 rpms.
Now you can use the same repo file in your network and use this offline repository.
How to use http or apache service running on a different port other than 80 with my yum repository?
By default we use port 80 for configuring http server but for some reason if you wish to use a different port number then also nothing should change and you can follow the same procedure.
You may need to do some conf changes for your httpd config file as below
Change
to
Listen 8080
and virtual hosting configuration as below
<VirtualHost 192.168.1.6:8080>
ServerAdmin root@server.golinuxhub.com
ServerName golinuxhub-server
DocumentRoot /var/www/html
ErrorLog logs/error_log
<Directory "/var/www/html/">
Options Indexes MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Add necessary firewalld rules for new port
success
# firewall-cmd --reload
success
Restart your httpd service
Validate your httpd server on the browser
Next also change the yum repo file as below
name=Red Hat Enterprise Linux 7.4
baseurl=http://192.168.1.6:8080/web/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
I hope the article was useful.