投稿

ラベル(CPAN)が付いた投稿を表示しています

Proxmoxでサーバ構築

イメージ
これまでテスト用にi5第8世代の廃棄PCを使用してきた。 とはいえ今の所何も問題は起きていないが、入れ替えも視野に入れ予備サーバを用意することに。 - メモリ:16GB - SSD:500GB - DDNS+Let's Encrypt - Ubuntu24.04 この環境なので、すぐに構築し直すことは可能だが、とりあえずこのまま置いておいて別のサーバを立てることにする。 最初はRaspberryPiで構築しようと思ったけれど、本体電源+外付けHDD電源+ディスプレイ電源と考えると、邪魔なので廃案。 そこで廃棄しようと思っていた「Lavie NS300/N」が手元にあったので、これを利用することに。 一応バッテリーは正常に動作するので、UPS代わりにそのまま。 - Core™ i3-8145U(やや非力) - メモリ:8GB(少ないが…) - HDD:1TB なので、これまで使用しているものより、若干スペックダウン。 ただ用途は、非常勤で教えに行っている専門学校生用の練習マシンとする予定なので、まぁ問題なさそう。 Proxmox導入 直接、Linuxを導入してもよいのだけれど、今回は Proxmox を導入し、その上でUbuntu Serverを動作させる計画。 USBにProxmoxのイメージを焼いて、インストールすれば問題なく完了。 ただ、現在のバージョンはdebian - trixieがベースになっているので、若干参考になるサイトが少なめ。とはいえ旧版のは参考になるので調べつつ… HDDなだけあって、最初の起動は少し遅いものの、立ち上がってしまえば問題ない。 さぁ、VMにするかCTにするか…。 GUI使うのであれば、VMかなぁ。サーバだしCTでいいかぁ。 という程度の選定で、CT(コンテナ)で進めることに。 - メモリ:4GB - CPU:2 - HDD:20GB(root disk) - HDD:400GB(home用) - Ubuntu24.04 という構成で進めることにした。 テンプレートを用意して、初期設定を行い起動。 まぁすんなりと入った。 液晶を閉じたら、Suspendになってしまったので、若干設定変更。 $ sudo nano /etc/systemd/logind.conf HandleLidSwitch=ignore $ sudo sy...

Perl ScriptのEXE化で苦戦

イメージ
exeの生成が必要 以前(随分前だけど)やったことが、あったので楽勝と思ったら、意外なところで躓いたのでちゃんと記録しておく。 基本的にスクリプト言語であるPerlのコードはテキストファイル。 Perlの実行環境さえあれば、ほぼ動く。  LinuxやMacなら最初からperlが入っているので、何も考えることはない。 じゃ、windowsのように実行環境がない場合はどうするかというと、 Perlを動かせるようにインストールする(ActivePerlで簡単に入る) exeファイルにして、実行する。(ファイルが巨大になる) 諦める と、これくらいしか選択肢がない。 今回は、作成したスクリプトを、Perl実行環境のない端末で何台も動かすことになりそう。 でもって、それぞれの端末にPerlをインストールして、pmなどのライブラリを揃えてというのが、メンテナンス上大変になりそう。 となると、2.のexe化を検討するしかない。 環境準備1 まずは、新しいVMを用意して、ActivePerlのインストールから始める。 ActiveStateに行くと、 ActivePerl-5.20.2.2002-MSWin32-x86-64int-299195.msi が最新らしい。随分とバージョンが上がってるなぁ…。 早速インストール→数分で完了。 コマンドプロンプトから、 cpan install PAR::Packer で、exe化に必要なモジュールをインストール。 まっさらな状態からのインストールなので、若干時間がかかるけれど、無事終了…。 あれ?無事終了しない。Error吐いてる。 main.c: In function 'main': main.c:121:23: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] windres -i winres/pp.rc -o ppresource.coff --input-format=rc --output-format=coff --target=pe-i386 '...

久しぶりで、使い方を忘れてた…(Perl)

Perlでプログラムをガシガシと 昨年納品したプログラムの、追加機能の要求が上がったので、見直しを行っていた。 今回は、DBを使うほど件数が増えそうにもない。 履歴を見て登録されているユーザか、そうでないかを判別するだけなので、ハッシュをファイルに紐付けて、簡易のDBとして使うことにする。  昔なら、メモリがパンクするんじゃ?とかディスク遅いっすとか思ったりして躊躇するんだろうけど、今どきはドンドンメモリ使っちゃおう!ファイル使っちゃおう!なんて思ったりもする。 さて、前回利用したモジュールは Jcode; MIME::Parser; MIME::WordDecoder; File::Basename; File::Path; Fcntl; File::Temp; 書き出してみるとこんなにもあった。 でもって、今回新たに Storable; 当然、稼働しているプログラムなので、直接いじるわけにはいかない。 とりあえず、ローカルでテストをする。 ソースを取り出して、修正内容を細かく分割。 それぞれテストして、組み立て…。 と、最初のテストで躓いた。 ローカルの環境が、この春に14.04で準備したNewマシンなので、モジュールが入っていない! モジュールのインストール そもそも、最初のuse Jcode;でエラー吐いているし… ということで、インストールしようとしたが、コマンドを全く思い出せない。 あれれ? どうやら老化と共にやってくるアレか? # perl -MCPAN -e shell これが思い出せずに、仕方なくググりました。 いやぁ、外部記憶に入れておいて良かったゎ(泣) というか、内部記憶から消去されている模様。 忘れないように、自分を戒めるために記録しておく。 作業自体は、コマンド入力して完了するのに1分もかからないというのに、思い出そうとした時間の方が長いとは…。 root@X200:~# perl -MCPAN -e shell CPAN.pm requires configuration, but most of it can be done automaticall...

Crypt::SSLeayが入らない

Perlでの作業中 ちょっとスクリプトからWebページをゲロってこようと思い、LWP::UserAgentなどを使って、取得していた。 ちょっとhttpsあたりも必要に迫られ、getしようとしたらエラーを吐いてくる。 ふむふむ。 ぐぐってみると、Crypt::SSLeayを入れろとな。 ちうことで、 $ sudo perl -MCPAN -e shell で、CPANから入れることに。 cpan[1]> install Crypt::SSLeay 通常は、これでOKなはずなのに…。エラー吐いてくれます。 でもなぁ、CPANから自動で入れているのにmakeで転けられても…。 でも、昔の出来事を思い出してテストして見ることに。 「接続を拒否されました」というメッセージが気になる。 Linuxの初期に良くあったのだけれど、これってLANG=Cでないと動かないんじゃ? ちゅうことで、再度やり直してみる。 英語モードで再度実行! 一旦、抜けてcpanの起動から。 $ LANG=C sudo perl -MCPAN -e shell 表示はもともと英語だし、何も問題ないはず。 同様に、Crypt::SSLeayを入れてみる。 全てのテストに合格して、無事インストール完了!! やはりな!って感じです。 はっ!! インストールが目的ではなかった…。 さて、SSLが使えるようになっているはずなので、テストする。 500 Can't verify SSL peers without knowning which Certificate Authorities to trust orz... SSL証明書と一致しないらしい…。 もうひと踏ん張り。 SSL 証明書のエラー時の対応  どうやら、良く発生するようで…。あちこちに対応策が書かれていた。 [Perl] LWP::UserAgent で SSL 証明書のエラーへの対応 の記述がわかり易かった。 ホスト名の検証をしない CAを明示する いやいや、1はまずいんでは?という思うので、2の方針で。 Mozilla::CAを入れれば良さそう。 さっそく、cpanでMozilla::CAをイン...

PerlでMIME処理

イメージ
いろいろとCPANで遊んでいて PerlでMIMEの処理をさせようと、モジュールをインストールして試してみる。 今まで、自前処理で行うことが多かったので、勉強がてら検索&TRY。 メール解析には「MIME::Parser」が便利そう。 ということで、入れてみる。 $ sudo perl -MCPAN -e shell cpan[1]> install MIME::Parser たったこれだけで、入るんだから楽なもんだ。 my $parse=MIME::Parser->new(); my $message = $parse->parse(*STDIN); my $head = $message->head();  なんて処理を書いて、マルチパートなデータを食わせて、いろいろとテストしていたら、読み込んだメールデータをパースするたびに、ファイルを生成してくれる…。 txtとhtmlがわさわさと増えているじゃないか…。 つうことで、何かオプションが有るはずと思いつつ、探してみる。 「 MIME::Parser インスタンス設定 output_to_core 」なんて記録を見つけた。 1をセットすると、parseデータをメモリ上に保持する。デフォルトでは解析結果のうちbody部(本文やマルチパートの添付ファイル)は即時ディスクに書き出し。 (perldoc では、巨大ファイルが添付された場合などでちょっとriskyとさ) ということらしいので、セットしてテストしてみる。 $parse->output_to_core(1); $parse->tmp_to_core(1); $parse->tmp_recycling(1); $parse->use_inner_files(1); こんな感じで、書いておけば、オンメモリで作業してくれるらしい。 昔、メモリが少ない時の実装なんだろうな…なんて思いながら、現在の大量にメモリが使える時代に感謝!! で、output_to_core(1)をセットして、テストすると作業ファイル等全く作らなくなった。 まあ、どでかいメールを食わせる予定はないので、メモリで処理してくれた方がありがたい。ファイルがディスクを...