VirtualBoxにisoファイルをマウントしてローカルリポジトリでdnfを利用する方法

December 28,2023 11:55 PM
Category:[VirtualBOX]
Tag:[]
Permalink

VirtualBoxにisoファイルをマウントしてローカルリポジトリでdnfを利用する方法を紹介します。

ここではWindowsマシンにVirtualBoxをインストールしてCentOSのゲストOSを作成し、Windowsのフォルダにisoファイルを配置している前提で進めます。

利用したいisoファイルは事前に入手し、Windowsの任意のフォルダにダウンロードしておいてください。

1.isoファイルのマウント

該当のゲストOSが停止・選択している状態で、VirtualBoxマネージャーの「設定」をクリック。

「ストレージ」をクリック。

「コントローラーIDE」にisoファイルを設定します。この例ではすでに設定してしまっているので、すいませんが他の記事を参考に設定してください。

また、このサンプルではCentOSのisoのみを設定していますが、デフォルトではVBoxGuestAdditions.isoがマウントされている可能性があります。その状態で後続のマウントを実施すると期待する結果にならないようなので、マウントしたいisoのみにしてください。

そしてゲストOSを起動して、/media配下にcdromディレクトリを作成し、mountコマンドを実行します。

# cd /media
# mkdir cdrom
# mount /dev/cdrom /media/cdrom
mount: /media/cdrom: 警告: デバイスは書き込み禁止です、読み込み専用でマウントします.

これで/media/cdrom配下が下記の状態になればOKです。

# pwd
/media/cdrom
# ls
AppStream  BaseOS  EFI  TRANS.TBL  images  isolinux  media.repo

2.リポジトリの設定変更

デフォルトでは外部のリポジトリを参照する設定になっているので、それらを変更します。

ちなみに、何も設定していない状態でdnf listを実行すると、次のようなエラーになります。

# dnf repolist
CentOS-8 - AppStream                              6.8  B/s |  38  B     00:05
repo 'AppStream' のメタデータのダウンロードに失敗しました。
エラー: repo 'AppStream' のメタデータのダウンロードに失敗しました。

/etc/yum.repos.d/CentOS-AppStream.repoのenabledを1(有効)から0(無効)に変更します(★の行、以下同様)。

/etc/yum.repos.d/CentOS-AppStream.repo

 :
[AppStream]
name=CentOS-$releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=0★
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

/etc/yum.repos.d/CentOS-Base.repoのenabledを1(有効)から0(無効)に変更します。

/etc/yum.repos.d/CentOS-Base.repo

 :
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=0★
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

/etc/yum.repos.d/CentOS-Extras.repoのenabledを1(有効)から0(無効)に変更します。

/etc/yum.repos.d/CentOS-Extras.repo

 :
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=0★
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

/etc/yum.repos.d/CentOS-Media.repoのenabledを0(無効)から1(有効)に変更します。

/etc/yum.repos.d/CentOS-Media.repo

 :
[c8-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///media/CentOS/BaseOS
        file:///media/cdrom/BaseOS
        file:///media/cdrecorder/BaseOS
gpgcheck=1
enabled=1★
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
 
[c8-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///media/CentOS/AppStream
        file:///media/cdrom/AppStream
        file:///media/cdrecorder/AppStream
gpgcheck=1
enabled=1★
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

これで、dnfコマンドでローカルリポジトリが利用できるようです。

# dnf repolist
CentOS-BaseOS-8 - Media                         154 MB/s | 2.2 MB     00:00
CentOS-AppStream-8 - Media                      177 MB/s | 5.4 MB     00:00
repo id                          repo の名前                               状態
c8-media-AppStream               CentOS-AppStream-8 - Media                4,755
c8-media-BaseOS                  CentOS-BaseOS-8 - Media                   1,659
Comments [0] | Trackbacks [0]

MovableTypeプラグインの独自CGIをNginxに対応させる方法

December 24,2023 11:55 PM
Category:[トラブルシューティング]
Tag:[MovableType, Plugin, TroubleShooting, Workflow]
Permalink

MovableTypeプラグインの独自CGIをNginxに対応させる方法を紹介します。

これはMovable Type Advent Calendar 2023の24日目の記事です。

1.はじめに

以前、Workflowプラグインの独自CGI(mt-preview.cgi)がNginx環境に対応しておらず、アクセスすると「Not Found」というお客様からの申告があり、そのときの対処方法を備忘録で残しておきます。

MTプラグインで独自CGIを実装される方は、変更後または追加部分のみ参照されればよいかと思います。

冗長な修正があるかもしれませんが、実際に修正して回復した内容ということでそのまま掲載しておきます。

2.対処方法

まず。独自CGIの下記の1行を修正。

変更前

use MT::Bootstrap App => 'Workflow::App';

変更後

use MT::Bootstrap App => 'MT::App::Workflow';

config.yamlに"key"を追加。

key: Workflow

プラグインアプリケーション(独自CGI)の定義を丸々追加。ここでは、

  • handler
  • script
  • cgi_path

の3項目を定義します。

applications:
    workflow:
        handler: MT::App::Workflow
        script: '$Workflow::MT::App::Workflow::script_name'
        cgi_path: >
            sub {
                my $path = MT->config->CGIPath;
                $path =~ s!/$!!;
                $path =~ s!^https?://[^/]*!!;
                $path .= '/plugins/Workflow';
                return $path;
            }

エラーが発生した状態のCGI(Workflow.pm)はMT::App::CMSを継承していたのを、MT::Appを継承するように変更。

変更前

use base qw( MT::App::CMS );

変更後

use base qw( MT::App );

それに伴い、lib/Workflow/App.pm → lib/MT/App/Workflow.pm に移動。

移動したWorkflow.pm に、idとscript_nameを追加。

sub id {'workflow'}
sub script_name {'mt-preview.cgi'}

修正前はinit_requestしかなかったので、initを追加し、旧init_requestのadd_methodsをinitに移動。

変更前(抜粋)

sub init_request {
    my $app = shift;
    $app->SUPER::init_request(@_);
    $app->add_methods( preview => \&preview );
    $app->{ default_mode } = 'main';
    $app->{ requires_login } = 0;
}

変更後(抜粋)

sub init {
    my $app = shift;
    $app->SUPER::init(@_);
    $app->add_methods( preview => \&preview );
    $app->{ default_mode } = 'main';
    $app;
}
sub init_request {
    my $app = shift;
    $app->SUPER::init_request(@_);
    $app->{requires_login} = 0;
}

これで独自CGIがNginxで動作するようになりました。

Comments [0] | Trackbacks [0]

メール送信で「smtp-source: fatal: connect: Connection refused」となる場合の対処

December 14,2023 11:55 PM
Category:[VPS]
Tag:[VPS]
Permalink

メール送信で「smtp-source: fatal: connect: Connection refused」となる場合の対処方法を紹介します。

1.問題点

以前、「さくらのVPSに送信メールサーバを設定する方法」で紹介した、メールサーバからメールがとばなくなりました。

具体的には、テストメールを送信すると、下記のように「Connection refused」となります。

# smtp-source -v -f "" -t "hoge@xxx.so-net.ne.jp" 127.0.0.1:25
smtp-source: name_mask: all
smtp-source: fatal: connect: Connection refused

ということで、メール送信で「smtp-source: fatal: connect: Connection refused」となる場合の対処方法を紹介します。

2.原因

単純に、何かの拍子にサービスが停止してしまっただけのようです。

netstatで確認したところ、25番ポートも開いていないようでした。

# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
 :
tcp        0      0 :::80                       :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN

ということで、サービス起動で解消しました。

# service postfix start
Starting postfix:                                          [  OK  ]

25番ポートも開きました。

# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
  :
tcp        0      0 :::80                       :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::25                       :::*                        LISTEN

ちなみにサービスを起動したところ、サービス停止で滞留していたメールが一斉に送信されたようです。

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages