GNU/Linux >> Linux の 問題 >  >> Linux

Red Hat EnterpriseLinux8でNginxベースのYUM/DNFリポジトリを作成します

ソフトウェアリポジトリは通常インターネット経由で使用され、世界中の複数のユーザーがアクセスできます。ただし、ローカルサーバー上に独自のローカルリポジトリを作成してシングルユーザーとして使用することも、WebサーバーまたはFTPを使用してLAN上の他のマシンへのアクセスを許可することもできます。

ローカルリポジトリを作成する利点は、ソフトウェアパッケージやアップデートをインストールするためにインターネット接続を必要としないことです。もちろん、もう1つの利点はダウンロード速度です。パッケージはローカルネットワーク経由でダウンロードされるため、更新は迅速に実行されます。

Yellowdog Updater、Modified(YUM)、またはDandified YUM(DNF)は、RPMベースのLinuxディストリビューションを管理するソフトウェアパッケージマネージャーです。 YUMまたはDNFを使用すると、各RPMを手動で更新しなくても、コンピューターのグループをインストールおよび更新できます。

この記事では、インストールDVDまたはISOファイルを使用して、Red Hat Enterprise Linux(RHEL)8でローカルのWebベースのYUM/DNFリポジトリーをセットアップする方法について説明します。また、NginxHTTPサーバーとApacheWebサーバーを使用してクライアントRHEL8マシンでソフトウェアパッケージを見つけてインストールする方法についても説明します。 Apacheの手順については、Red Hat EnterpriseLinux8で独自のApacheベースのYUM/DNFリポジトリを作成するを参照してください。FTPの手順については、Red Hat EnterpriseLinux8で独自のFTPベースのYUM/DNFリポジトリを作成するを参照してください。

[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]

前提条件

2つのRedHatEnterprise Linux 8システムをセットアップする必要があります。1つはローカルリポジトリサーバーで、もう1つはローカルサーバーのローカルリポジトリを使用するクライアントマシンです。結果は次のようになります:

  • ローカルリポジトリサーバー:RHEL 8 [10.0.0.10]

  • ローカルクライアントマシン:RHEL 8 [10.0.0.11]

  • RHEL8インストールDVD

  • NginxHTTPサーバー

リポジトリを作成する

リポジトリの作成には、いくつかの手順が含まれます。それらについて説明します。

ステップ1:Red Hat EnterpriseLinux8メディアをマウントする

まず、Red Hat Enterprise Linux 8を含むローカルメディア(DVD、USBスティックなど)をマウントします。インストールDVDを使用します。

 $ sudo mount /dev/cdrom /mnt 
mount: /mnt: WARNING: device write-protected, mounted read-only.
 

または、ISOイメージをマウントします:

 $ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt
 

ステップ2:マウントされたメディアからローカルYUMリポジトリを作成します

/etc/yum.repos.dにある既存のリポジトリファイルを移動します :

 $ sudo mv /etc/yum.repos.d/*.repo /tmp/
 

この時点から、rootユーザーとして継続することをお勧めします。 suでスーパーユーザーに切り替えます コマンド。

次に、リポジトリのディレクトリを作成します:

 # mkdir /local_repo
 

LAN経由でファイルを提供するには、このディレクトリをNginxまたはApacheで使用します。

新しいローカルリポジトリの構成ファイルlocal-dvdrom.repoを作成します 、/etc/yum.repos.dの下 ディレクトリ:

 # touch /etc/yum.repos.d/local-dvdrom.repo
# chmod  u+rw,g+r,o+r  /etc/yum.repos.d/local-dvdrom.repo
 

ステップ3:メディアコンテンツをローカルディレクトリにコピーします

/local_repoの下でISOファイルをローカルにコピーします ディレクトリ:

 # cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)
 

ファイルがコピーされるまで待ってから、次を使用してファイルがコピーされたことを確認します。

 # ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root    38 Apr  4  2019 AppStream
dr-xr-xr-x. 4 root root    38 Apr  4  2019 BaseOS
dr-xr-xr-x. 3 root root    18 Apr  4  2019 EFI
-r--r--r--. 1 root root  8266 Mar  1  2019 EULA
-r--r--r--. 1 root root  1455 Apr  4  2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar  1  2019 GPL
dr-xr-xr-x. 3 root root    76 Apr  4  2019 images
dr-xr-xr-x. 2 root root   256 Apr  4  2019 isolinux
-r--r--r--. 1 root root   103 Apr  4  2019 media.repo
-r--r--r--. 1 root root  1669 Mar  1  2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  5134 Mar  1  2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root  1796 Apr  4  2019 TRANS.TBL
 

ステップ4:ローカルYUM/DNFリポジトリを構成する

以前に作成したリポジトリ構成ファイルを編集します:

 # vim /etc/yum.repos.d/local-dvdrom.repo
 

この構成を貼り付けます:

 [LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 

ローカルリポジトリの作成、構成、および管理に必要なパッケージをインストールします。

 # yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                              94 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                 97 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658


# yum install createrepo  yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
 Package              Arch      Version            Repository              Size
================================================================================
Installing:
 createrepo_c         x86_64    0.11.0-1.el8       LocalRepo_AppStream     76 k
Installing dependencies:
 createrepo_c-libs    x86_64    0.11.0-1.el8       LocalRepo_AppStream    101 k
 drpm                 x86_64    0.3.0-14.el8       LocalRepo_AppStream     71 k

Transaction Summary
================================================================================
Install  3 Packages

Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : drpm-0.3.0-14.el8.x86_64                               1/3 
  Installing       : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Installing       : createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Verifying        : createrepo_c-0.11.0-1.el8.x86_64                       1/3 
  Verifying        : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Verifying        : drpm-0.3.0-14.el8.x86_64                               3/3 
Installed products updated.

Installed:
  createrepo_c-0.11.0-1.el8.x86_64     createrepo_c-libs-0.11.0-1.el8.x86_64    
  drpm-0.3.0-14.el8.x86_64            

Complete! 

最後に、createrepoを実行します コマンド:

 # createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished
 

ステップ5:ローカルリポジトリをテストおよび検証する

この手順では、一時リポジトリファイルをクリーンアップし、ローカルリポジトリが有効になっていることを確認します。

 # yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                             120 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                103 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658
 

ローカルリポジトリが作成されたことを確認します:

<前>の# ls /local_repo/repodata/ 26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2 5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz 6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2 c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2 ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz repomd.xml

ローカルリポジトリがファイルを生成したことがわかるので、この時点ではすべて問題ありません。

上記のコマンド出力を注意深く読むと、警告メッセージが表示されます。This system is not registered to Red Hat Subscription Management. You can use subscription-manager to registerdnfの実行中にこのメッセージを抑制または防止する場合 またはyum コマンドを実行してから、ファイル/etc/yum/pluginconf.d/subscription-manager.confを編集します。 :

 # vim /etc/yum/pluginconf.d/subscription-manager.conf
 

パラメータenabled=1を変更します enabled=0に :

 [main]
enabled=0
 

NginxHTTPサーバーをセットアップする

前に述べたように、この記事では、NginxHTTPサーバーを使用した独自のリポジトリの設定について説明します。リポジトリにサービスを提供するためのNginxのインストールと構成について説明します。

Nginxをインストール

YUMを使用してNginxHTTPサーバーをインストールするには:

 # yum install nginx
Last metadata expiration check: 0:19:18 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=======================================================================================
 Package          Arch   Version                             Repository           Size
=======================================================================================
Installing:
 nginx            x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream 569 k
Installing dependencies:
 gd               x86_64 2.2.5-6.el8                         LocalRepo_AppStream 144 k
 jbigkit-libs     x86_64 2.1-14.el8                          LocalRepo_AppStream  55 k
 libX11           x86_64 1.6.7-1.el8                         LocalRepo_AppStream 612 k
 libX11-common    noarch 1.6.7-1.el8                         LocalRepo_AppStream 157 k
 libXau           x86_64 1.0.8-13.el8                        LocalRepo_AppStream  36 k
 libXpm           x86_64 3.5.12-7.el8                        LocalRepo_AppStream  58 k
 libjpeg-turbo    x86_64 1.5.3-7.el8                         LocalRepo_AppStream 155 k
 libtiff          x86_64 4.0.9-13.el8                        LocalRepo_AppStream 188 k
 libwebp          x86_64 1.0.0-1.el8                         LocalRepo_AppStream 273 k
 libxcb           x86_64 1.13-5.el8                          LocalRepo_AppStream 230 k
 nginx-all-modules
                  noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  23 k
 nginx-filesystem noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  24 k
 nginx-mod-http-image-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  34 k
 nginx-mod-http-perl
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  45 k
 nginx-mod-http-xslt-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  33 k
 nginx-mod-mail   x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  64 k
 nginx-mod-stream x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  85 k
 dejavu-fonts-common
                  noarch 2.35-6.el8                          LocalRepo_BaseOS     74 k
 dejavu-sans-fonts
                  noarch 2.35-6.el8                          LocalRepo_BaseOS    1.5 M
 fontconfig       x86_64 2.13.1-3.el8                        LocalRepo_BaseOS    275 k
 fontpackages-filesystem
                  noarch 1.44-22.el8                         LocalRepo_BaseOS     16 k
 libxslt          x86_64 1.1.32-3.el8                        LocalRepo_BaseOS    249 k
Enabling module streams:
 nginx                   1.14                                                         

Transaction Summary
=======================================================================================
Install  23 Packages

Total size: 4.8 M
Installed size: 15 M
Is this ok [y/N]: y
> 
起動時に自動起動するようにNginxを設定

Nginxをインストールしたら、サービスを開始して有効にし、起動時に自動開始し、次のコマンドを使用してそのステータスを確認します。

 # systemctl start nginx

# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
 Main PID: 3596 (nginx)
    Tasks: 3 (limit: 11528)
   Memory: 7.6M
   CGroup: /system.slice/nginx.service
           ├─3596 nginx: master process /usr/sbin/nginx
           ├─3597 nginx: worker process
           └─3598 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[3593]: nginx: the configuration file /etc/nginx/nginx.con>
Oct 06 10:15:47 server nginx[3593]: nginx: configuration file /etc/nginx/nginx.conf te>
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.
 
ファイアウォールを構成する

次に、Nginxに到達できるようにファイアウォールを構成する必要があります:

 # firewall-cmd --zone=public --permanent --add-service=http
success
# firewall-cmd --zone=public --permanent --add-service=https
success
# firewall-cmd --reload
success
 

Nginxが稼働中であることを確認します

これで、localhostに移動して、Nginxサーバーが稼働していることを確認できます。 WebブラウザのURL。デフォルトのNginxWebページhttp://localhost/ 表示する必要があります。

Nginxを構成する

Nginxを構成するには、構成ファイルを開きます。

 # vim /etc/nginx/nginx.conf
 

次に、serverを見つけます ファイルのセクションを変更して、次のように変更します。

     server {
	listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /local_repo/;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                allow all;
                sendfile on;
                sendfile_max_chunk 1m;
                autoindex on;
                autoindex_exact_size off;
                autoindex_format html;
                autoindex_localtime on;
        }
	  error_page 404 /404.html;
            location = /40x.html {
        }

	  error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
 
テストとクリーンアップ

ここで、Nginxサービスを再度開始し、そのステータスをテストします。

 # systemctl restart nginx

# systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 3 hours 51 min ago
Process: 24032 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 24033 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 24034 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 24035 (nginx)
   Status: "Started, listening on: port 80"
    Tasks: 3 (limit: 2438)
   Memory: 3.9M
   CGroup: /system.slice/nginx.service
           ├─24035 nginx: master process /usr/sbin/nginx
           ├─24036 nginx: worker process
           └─24037 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[24033]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si>
Oct 06 10:15:47 server nginx[24033]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 06 10:15:47 server nginx[24033]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 06 10:15:47 server nginx[24033]: nginx[24034]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.
 

すべてが良いです。

権限を変更してSELinuxを設定する

local_repoの権限を変更して、セキュリティ構成を続行します ディレクトリとSELinuxの設定。権限を変更するには:

 # setfacl -R -m u:apache:rwx /local_repo/
 

次に、SELinuxが施行されているかどうかを確認します:

 # getenforce
Enforcing
 

Enforcingの場合 、タイプ:

 # chcon -Rt httpd_sys_content_t /local_repo/
 

SELinuxがEnforcingに設定されていない場合、ファイルはリポジトリから提供されません。

 # setenforce enforcing 

また、/ etc / sysconfig / selinuxファイルを編集して変更を永続的にし、次の値を設定します。

SELINUX=enforcing

クライアントを設定する

次に、Red Hat EnterpriseLinux8クライアントマシンのリポジトリを設定します。

リポジトリを追加

クライアントマシンで、サーバーからクライアントのYUM構成にローカルリポジトリを追加します。

 $ sudo vim /etc/yum.repos.d/local-rhel8.repo 
 

次に、次の構成を貼り付けます(セットアップに応じてサーバーのIPアドレスを変更してください):

 [LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)
 
リポジトリをテストする

LocalServerRepoをテストします パッケージをインストールする。例:

 $ yum repolist
Not root, Subscription Management repositories not updated
LocalServerRepo                                 112 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:04:21 PM UTC.
repo id                              repo name                            status
LocalServerRepo                      LocalServerRepo                      6,647

$ sudo yum install nano
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalServerRepo                                 103 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:07:33 PM UTC.
Dependencies resolved.
================================================================================
 Package      Arch           Version              Repository               Size
================================================================================
Installing:
 nano         x86_64         2.9.8-1.el8          LocalServerRepo         580 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 580 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
nano-2.9.8-1.el8.x86_64.rpm                      19 MB/s | 580 kB     00:00    
--------------------------------------------------------------------------------
Total                                            17 MB/s | 580 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : nano-2.9.8-1.el8.x86_64                                1/1 
  Running scriptlet: nano-2.9.8-1.el8.x86_64                                1/1 
  Verifying        : nano-2.9.8-1.el8.x86_64                                1/1 
Installed products updated.

Installed:
  nano-2.9.8-1.el8.x86_64                                                       

Complete!
 

それは素晴らしい!すべてが期待どおりに機能します。これで、インストールDVDまたはISOファイルを使用して、Red Hat EnterpriseLinux8にNginxベースのローカルYUM/DNFリポジトリが作成されました。


Linux
  1. Red Hat EnterpriseLinux8でFTPベースのYUM/DNFリポジトリを作成します

  2. Red Hat EnterpriseLinux8でApacheベースのYUM/DNFリポジトリを作成します

  3. MicrosoftAzure用にカスタマイズされたRedHatEnterpriseLinux7イメージを構築する

  1. AzureでRedHatEnterpriseLinuxを実行する際の考慮事項

  2. Linuxでリポジトリをミラーリングする方法

  3. Red Hat Enterprise Linuxでルートパスワードをリセットすると、「touch /.autorelabel」は何をしますか?

  1. ローカルのRedHatリポジトリを作成する方法

  2. CentOS / Red Hat で Yum 更新用の特定のリポジトリを除外する方法

  3. Red Hat Linux とは?