Friday, 7 December 2018

Membuat Server Repository di CentOS 7

Halo sobat infosapu, pada kesempatan kali ini admin akan membagikan secarik tutorial mengenai Server Repository di CentOS yang saya pelajari dari kakak kelas saya.


Sebelum kita membahas tutorial mengenai Server Repository, kita harus paham konsep Server Repository, Lantas apa itu Server Repository? Pertama kita bahas Repository terlebih dahulu. Repository adalah sekumpulan ratusan bahkan ribuan program atau paket linux yang dipacking dalam sebuah media penyimpanan entah itu CD, DVD, atau Cloud Storage. Nah sedangkan Server Repository adalah Sekumpulan program atau paket linux yang disimpan didalam penyimpanan Server, untuk mengakses nya tentu saja kita harus terhubung dengan server itu.

Repository tentunya sangat berguna karena berisi paket paket bisa berupa untuk networking atau programming seperti Pyhton, umumnya Repository disimpan di media offline seperti CD, dikarenakan proses instalasinya offline jadi tidak memakan internet, itu sangat menguntungkan bukan? Namun coba bayangkan disuatu perusahaan memiliki banyak komputer yang mana menggunakan Sistem Operasi Linux, tidak mungkin kan disaat karyawan ingin menginstall suatu program dia harus meminjam CD ke karyawan lainnya, itu ribet bukan? Maka dari itu dicetuslah suatu ide dimana satu server itu diisi Repository, jadi saat karyawan ingin menginstall suatu program, dia tidak perlu meminjam CD, dia hanya perlu terhubung dengan server dan mendownload programnya melalui jaringan lokal.
Dengan begitu kita dapat jabarkan keuntungannya,
  1. Menghemat waktu, karena kita tidak perlu membuat repo lokal di setiap PC, kita hanya perlu mengambil repo dari PC Server
  2. Menghemat penyimpanan, karena kita tidak perlu membuang kapasitas memori di setiap PC untuk membuat repo lokal, dan sekali lagi kita hanya perlu mengambil repo dari Server
  3. Menghemat jumlah Real Device, dikarenakan repo hanya dibuat di Server tidak perlu di setiap PC lokal, jadi serba hemat kan hehe
Baiklah sekarang mari kita lanjut ke Tutorialnya, disini saya menggunakan media virtualisasi berupa VirtualBox
Peringatan :
  • Gunakan lah tab agar meminimalisir kesalahan command atau nama file paket
Maksud saya menggunakan tab disini ialah, semisal anda ingin menginstall paket tertentu, ada saat dimana paket tersebut not found (tidak ada) dikarenakan versi paketnya berbeda. Memang benar paket tersebut ada, tetapi versinya lah yang tidak ada di CentOS, alasannnya tidak lain karena CentOS memiliki varian versi yang berbeda. Untuk mengatasi itu, gunakanlah tab.
Contohnya paket ini python-deltarpm-3.6-3.el7.x86_64.rpm, yang saya tandai merah itu merupakan nama paketnya dan yang berwarna kuning merupakan versi dari paketnya, Boleh jadi versi tersebut tidak ada didalam OS CentOS kamu, maka dari itu cukup ketik nama paketnya lalu klik tombol tab, maka secara otomatis CentOS akan mengisi teks yang belum lengkap itu.
  • Untuk membuat Repository, anda harus login sebagai root
  • Pastikan Client dan Server berada dalam satu jaringan
Berikut adalah Topologinya

Pertama kita masukkan terlebih dahulu CD nya,

Setelah itu kita Mount CD nya di direktori /mnt/ agar isi file iso/bootable nya dapat terbaca
mount /dev/cdrom /mnt/
Setelah dimount selanjutnya mari kita masuk ke direktori repository nya, agar memudahkan kita saat menginstall repository nya
cd /mnt/Packages/

Instalasi paket createrepo dan vsftpd
Untuk dapat menginstall paket createrepo dan vsftpd kita harus sudah menginstall ketiga paket ini, yaitu
rpm -ivh libxml12-python-2.9.1-5.el7.x86_64.rpm
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm

Lalu lanjut dengan menginstall paket createrepo dan vsftpd
rpm -ivh createrepo-0.9.9-26.el7.noarch.rpm
rpm -ivh vsftpd-3.0.2-21.eI7.x86_64.rpm

Penjelasannya
  • rpm yaitu paket yang terdapat pada Centos karena menggunakan basis RHEL, apa itu RHEL? kalian bisa mengetahuinya di LAB 1, seperti deb untuk debian atau exe untuk windows
  • -ivh yaitu command tambahan untuk dapat menampilkan jalannya instalasi dalam bentuk hash, maka dari itu terdapat persentase saat instalasi, normalnya untuk menginstall itu hanya -i dan vh hanya tambahan untuk persentase
  • libxml12-python-2.9.1-5.el7.x86_64.rpm itu adalah nama paket yang ingin di install
Pembuatan direktori
Disini kita akan membuat direktori yang digunakan untuk penyimpanan repository dari CD, kita akan menyalin repository dari CD ke direktori yang akan kita buat. Buatkah direktori dengan command seperti ini
mkdir /var/ftp/pub/localrepo
Mari kita copy paket paket repository nya dari /mnt/Packages/ ke folder yang sudah kita buat tadi
cp -ar /mnt/Packages/*.* /var/ftp/pub/localrepo/
Proses ini memakan waktu lama ya sekitar 8 menit untuk HDD dan sekitar 3 menit untuk SSD, jadi tunggu saja jangan di kill proses nya

Selanjutnya kita akan mengedit serta membuat identitas repo nya, agar kita dapat mengecek repo nya sudah berhasil/belum atau hanya memberi nama reponya supaya kita dapat mengenalinya dengan mudah, kita akan mengeditnya menggunakan vi editor
vi /etc/yum.repos.d/infosapu.repo
Nah sudah masuk ke vi editor, edit isi nya menjadi seperti ini
[infosapu]
name=Info Sapu Repository
baseurl=file:///var/ftp/pub/localrepo/
gpgcheck=0
enabled=1

Penjelasannya :
[infosapu] - ini merupakan id repository nya, anda bisa menggantinya sesuai selera
name - Ini juga bebas, hanya nama untuk repository nya
baseurl - Dia akan menggunakan folder ini untuk pemanggilan repository, artinya isi folder ini dengan folder yang sudah dibuat dan sudah diisi dengan paket paket repository
gpgcheck - itu adalah verifikasi gpg signature, saya sarankan kalian membuatnya menjadi disable atau 0 karena kalian tidak punya kan signature gpg nya
enabled - yaitu untuk mengaktifkan atau menonaktifkan repo nya, 1 untuk mengaktifkan dan 0 untuk menonaktifkan
Exit dan save dengan esc => :wq , Maka file akan tersimpan

Setelah itu kita buat identitas di folder repository nya, dengan menggunakan command
createrepo -v /var/ftp/pub/localrepo/

Fungsinya ialah createrepo ini akan menaruh file berupa index di folder repository nya agar dapat dianggap repository atau dibaca oleh yum, artinya jika kita tidak menggunakan perintah createrepo ini, yum akan mendeteksi folder repository sebagai folder biasa bukan sebagai folder repository, ya itulah intinya

Selanjutnya kita cek apakah repository kita sudah terbuat, dengan command ini
yum repolist
Berikut tampilannya, sudah terlihat disini repository yang sudah dibuat

Selanjutnya kita clear dulu yum cache nya, agar indexnya dapat ter refresh
yum clean all
Lalu kita update
yum update

Error saat Update Repository
Jika saat mengeksekusi command yum update, lalu terdapat error seperti ini


Artinya server anda sedang tidak terkoneksi internet, maka dari itu muncul error not found pada link mirror nya, terdapat 2 cara agar error tersebut terselesaikan. Cara pertama ialah mengkoneksikan CentOS anda dengan internet, atau Cara kedua menghapus Repository online, agar disaat kita mengupdate repository, yang terupdate hanya repository kita, tidak dengan repository online milik CentOS.
Baiklah saya akan memberitahukan cara kedua,
1) Mount ke direktori yum.repos.d karena file repository berada di direktori tersebut
cd /etc/yum.repos.d/
2) Mari kita lihat ada file apa saja didalamnya dengan command ls
Nah, yang harus kita hapus ialah CentOS-Base, CentOS-Debuginfo, dan CentOS-Source
4) Disini saya hanya merename file tersebut agar tidak terdeteksi sebagai repository oleh CentOS sama halnya dengan menghapus repository pada CentOS, command nya ialah
mv CentOS-Base.repo CentOS-Base.repo.backup
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.backup
mv CentOS-Sources.repo CentOS-Sources.repo.backup 
Menonaktifkan Firewall
Selanjutnya kita nonaktifkan firewall, jika firewall aktif maka client tidak akan bisa mengakses repository dari server, karena firewall akan menganggap client sebagai suatu ancaman. Ketikkan command seperti ini
systemctl stop firewalld
systemctl disable firewalld

Penjelasannya :
systemctl - yaitu command untuk memanage service, seperti task manager pada windows
stop - yaitu perintah yang ditujukan untuk service yang berjalan, perintah ini beragam seperti restart, start, stop, dll
firewalld - yaitu nama service yang ingin kita manage, kita dapat menggantinya sesuai dengan service yang diinginkan
Mematikan SElinux
Selanjutnya kita matikan SElinux, Apa itu SElinux? SElinux kependekan dari Security Enhanced Linux, sesuai dari kepanjangannya SElinux ini berfungsi sebagai proteksi dari system Linux itu sendiri, fungsinya pun hampir sama seperti firewall namun lebih menjuru ke system os nya, karena SElinux berperan untuk mencegah system lainnya mengotak atik system Linux nya.

Lalu akan muncul pertanyaan lagi, Apa hubungannya dengan Repo Lokal? Hubungannya tidak lain adalah jika SElinux ini masih hidup, client tidak akan bisa mengakses Repo yang ada di server, karena Repo itu sendiri bergerak di system/data dan si client yang meminta akses ke system/data tersebut akan dianggap ancaman oleh SElinux, maka dari itu kita harus mematikan SElinux nya.

Cara mematikannya ialah kita harus mengedit informasi mengenai SElinux dengan command ini
vi /etc/sysconfig/selinux
Lalu edit pada bagian SELINUX=xxx menjadi disable

Mengaktifkan VSFTPD
VSFTPD tidak lain adalah ftp, kenapa kita membutuhkan ftp? Bukannya kita sudah membuat server local repository? Nah ftp ini berfungsi untuk transfer data dari server ke client, si client kan meminta paket dari direktori server, otomatis si server akan mentransfer paketnya menggunakan protokol ftp.

Diawal kita sudah menginstall paket FTP tadi, sekarang kita aktifkan dengan command seperti ini
systemctl enable vsftpd
systemctl start vsftpd
Nah selesai untuk bagian servernya, sekarang mari kita lanjut ke tahap pengetesan dengan mengkonfigurasi client

Client Side
Jika di server tadi kita membuat identitas repo, maka di client kita juga harus melakukan itu, kita harus menambahkan identitas dari repo server, kita buat repo lalu mengeditnya, disini saya membuat file infosapu.repo dengan command ini
vi /etc/yum.repos.d/infosapu.repo
Edit isi file nya menjadi seperti ini
[infosapu]
name=Infosapu Repository
basurl=ftp://192.104.1.1/pub/localrepo/
gpgcheck=0
enabled=1
 
Untuk penjelasannya bisa scroll ke atas

Selanjutnya kita cek repo list, dengan perintah
yum repolist
Bisa dilihat, disana terdapat 4 repository, dan kita disini akan menonaktifkan ketiga repository online milik CentOS

Karena repository nya ada di direktori yum.repos.d, artinya kita masuk dulu ke direktorinya
cd /etc/yum.repos.d/
Lalu ketikkan perintah rename, file yang direname ada 3
mv CentOS-Base.repo CentOS-Base.repo.backup
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.backup
mv CentOS-Sources.repo CentOS-Sources.repo.backup

Kenapa direname? Karena ketiga repo tersebut akan kita hapus list nya dari repository otomatis repository nya nonaktif, jadi yang tampil nanti hanya akan ada repository yang sudah kita buat tadi. Dan tentunya saat ingin menginstall paket maka yum akan mengambil paketnya murni dari repository server yang sudah kita buat tadi bukan ke 3 repository tadi.

Lanjutkan dengan menghapus cache yum dan update yum dengan command
yum clean all
yum update
Jika sudah di hapus ketiga repo nya, sekarang mari kita cek repo list dengan command
yum repolist
Sudah terlihat repo servernya, pastikan didaftar hanya ada repo server kita

Sekarang kita test dengan menginstall salah satu paket, bila paketnya terinstall dengan mendownloadnya dari server maka anda berhasil, jika mendownload dari repo public atau internet maka anda belum berhasil karena tujuan dari tutorial ini adalah membuat repository lokal di server, silahkan anda cek serta telusuri lagi langkah langkah yang saya berikan

Kita coba dengan menginstall paket nano
yum install nano
Bisa dilihat paketnya berhasil diinstall, dan asalnya dari server lokal yang sudah dibuat

Selesai sudah beberapa Tutorial dari saya, Semoga pembaca dapat mengerti dengan apa yang saya bagikan
Bila kalian kurang mengerti atau terdapat masalah, jangan sungkan untuk menanyakannya pada kolom komentar
Saya meminta maaf jika ada kesalahan dalam penulisan atau lainnya, sampai berjumpa dipostingan selanjutnya
Terima Kasih

Load comments