CentOS9 + Perl5.38.2でPSGI環境を構築する方法

December 7,2024 12:03 AM
Category:[PSGI]
Tag:[MovableType, Perl, PSGI]
Permalink

この記事は「Movable Type Advent Calendar 2024」の7日目の記事です。

CentOS9 + Perl5.38.2でPSGI環境を構築する方法を紹介します。

CentOS9のVMを作成すると、Perlはデフォルトで5.32.1になりますが、5.38.2を個別にビルドします。

また、MovableType(PSGI)の利用を前提としてウェブサーバーとして動作できるまでの手順も併せて紹介します。

動作確認にはVirtualBoxを使用しています。

1.mysql関連パッケージのインストール

# rpm -Uvh https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm
# dnf install mysql-community-server --nogpgcheckdnf install mysql-community-server --nogpgcheck
# dnf install mysql-community-devel --nogpgcheck

2.gccとmakeのインストール(Perlのビルド用)

# dnf install make gcc

3.httpd関連のインストール

# dnf install httpd httpd-tools httpd-devel

4.firewalldの停止

# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld

5.httpdの常駐化

# systemctl is-enabled httpd
# systemctl enable httpd

6.mysqlのパスワード変更(赤字が初期パスワード、青字が変更後のパスワード)

# systemctl start mysqld
# grep 'temporary password' /var/log/mysqld.log
2024-11-26T12:52:05.760486Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ei#(n;i9uf$k
mysql> ALTER USER 'root'@'localhost' identified BY 'rJOIaea%#%(JO';
Query OK, 0 rows affected (0.03 sec)

7.Perl5.38.2のビルドとインストール

インターネットからダウンロードしたPerlのアーカイブ(tar.gz)を任意のフォルダにアップロードして、コマンドを実行します。
デフォルトのPerlとは異なるディレクトリにインストールします。

# tar zxvf perl-5.38.2.tar.gz
# cd perl-5.38.2/
# ./Configure -des -Dprefix=/usr/local/perl-5.38.2./Configure -des -Dprefix=/usr/local/perl-5.38.2
# make
# make install

8.Perlのパス張り替え

Perl5.32.1から5.38.2に張り替えます。

# perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-thread-multi
 :
# cd /usr/bincd /usr/bin
# mv perl perl--
# ln -s /usr/local/perl-5.38.2/bin/perl /usr/bin/perl
# perl -v
This is perl 5, version 38, subversion 2 (v5.38.2) built for x86_64-linux
 :

9.cpanmでPerlモジュールのインストール

MovableTypeの動作に必要なモジュールをインストールします。

# perl -MCPAN -e 'install App::cpanminus'perl -MCPAN -e 'install App::cpanminus'
 :
Would you like to configure as much as possible automatically? [yes] yes
 :
# /usr/local/perl-5.38.2/bin/cpanm HTML::Entities/usr/local/perl-5.38.2/bin/cpanm HTML::Entities
# /usr/local/perl-5.38.2/bin/cpanm DBI/usr/local/perl-5.38.2/bin/cpanm DBI
# /usr/local/perl-5.38.2/bin/cpanm DBD::mysql/usr/local/perl-5.38.2/bin/cpanm DBD::mysql

10.postfixのインストール

# dnf -y install postfixdnf -y install postfix

11.SeLinuxの無効化

エディタで/etc/selinux/configを開き、

SELINUX=enforcing

SELINUX=disabled

に変更します。

# vi /etc/selinux/config

12.メールサーバの設定

/etc/postfix/main.cfと/etc/postfix/master.cfを編集します。

詳細は「さくらのVPSに送信メールサーバを設定する方法」を参照してください。

12.httpd起動

starman起動前に通常のCGIでMovableTypeの管理画面にアクセスします。

# systemctl start httpd

13.PSGI環境構築のためのパッケージとモジュールのインストール

# dnf install perl-ExtUtils-MakeMaker
# /usr/local/perl-5.38.2/bin/cpanm/usr/local/perl-5.38.2/bin/cpanm --sudo CGI::Compile--sudo CGI::Compile
# /usr/local/perl-5.38.2/bin/cpanm --sudo CGI::CompilePlack
# /usr/local/perl-5.38.2/bin/cpanm --sudo Plack
# /usr/local/perl-5.38.2/bin/cpanm --sudo XMLRPC::Transport::HTTP::Plack

その他、
CGI::Parse::PSGI
CGI::PSGI
も必要ですが、インストールされていたので省略。
インストールされていることの確認は、モジュールのバージョン表示コマンドを実施。

# perl -MCGI::PSGI -e 'print $CGI::PSGI::VERSION . "\n";'
# perl -MCGI::Parse::PSGI -e 'print $CGI::Parse::PSGI::VERSION . "\n";'

14.httpd.conf修正

# vi /etc/httpd/conf/httpd.conf

PSGI動作のために下記のLoadModuleディレクティブを追加

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ServerNameディレクティブにVMのIPアドレスを設定。

ServerName 192.168.56.100

一番最後に下記の内容を追加(上記のmod_proxyを設定しておかないと機能しません)。

<IfModule mod_proxy.c>
    ProxyPass        /cgi-bin/mt/ http://localhost:5000/cgi-bin/mt/
    ProxyPassReverse /cgi-bin/mt/ http://localhost:5000/cgi-bin/mt/
</IfModule>

修正後、httpdを再起動します。

# systemctl restart httpd

起動後、/etc/httpd/logs/error_logにエラーが出ていないことを確認。

私はServerNameが設定されていなかったのと、LoadModuleが設定されていないところで躓きました(error_logに表示されているのをみつけて解決)。

15.mt.pid用ディレクトリ作成

ここではMTインストールディレクトリ(/var/www/cgi-bin/mt)配下に作成します。

# mkdir -p /var/www/cgi-bin/mt/pids

16.mt-config.cgiに環境変数追加

下記の1行を追加します。

PIDFilePath /var/www/cgi-bin/mt/pids

17.starman起動

# cd /var/www/cgi-bin/mt
# starman -l 0.0.0.0:5000 --pid /var/www/cgi-bin/mt/pids/mt.pid ./mt.psgi

18.ブラウザからMT管理画面にアクセス

今回の例では、ポート番号5000番を指定して、

http://192.168.56.100:5000/cgi-bin/mt/mt.cgi

にアクセスします。

これでMT管理画面が表示されればOKです。


Comments [0] | Trackbacks [0]

「MTDDC Meetup Tokyo 2024」の発表スライド

November 27,2024 12:03 AM
Category:[MTDDC]
Tag:[MTDDC]
Permalink

2024年11月23日、「MTDDC Meetup Tokyo 2024」が開催され、久しぶりに登壇させて頂きました。

今回は「プラグインよもやま話」というタイトルでお話ししました。

内容は各種プラグインの作り方がメインで、Perlやプログラムがわからない人でも理解できる程度のサンプルを使って、わかりやすくしているつもりです。

実例がないとわかりにくいものは、リリースしているプラグインを抜粋しています。

また、私自身、プラグインをなんとなく先人達のマネをして作ってきたので、

  • 定義ファイル名が「config.yaml」なのはなぜだろう?
  • ハンドラの先頭に"$"を付与するのはなぜだろう?
  • クラスファイルをlibディレクトリ配下に配置するのはなぜだろう?
  • プラグインはどうやって登録されるんだろう?
  • コールバックの仕組みはどうなっているんだろう?

といった疑問にも取り組んでみました。

ということで、そのときの発表スライド(PDF)を公開しておきます。

プラグインよもやま話

当日発表用にレイアウトを全体的に少し上にずらしているので、修正したら差し替えます。

約200ページあります。目次は次の通りです。

  • 自己紹介
  • プラグイン基礎
  • mt.cgiの仕組み
  • プラグインが登録される仕組み
  • 各種プラグインの定義と実装
    • コールバック
    • テンプレートタグ
    • グローバルモディファイア
    • テンプレート
    • トランスフォーマー
    • メニュー
    • リスティング・リストアクション
    • ウィジェット
    • パーミッション
    • スケジュールタスク
    • DataAPI
    • オーバーライド
    • ローカライズ
    • プラグインデータ・プラグイン設定
    • アプリケーション
    • データベースにテーブル・フィールド追加
  • プラグイン資材
  • デバグ
  • ノウハウ
  • パフォーマンス
  • 失敗談
  • プラグイン・プラグイン開発関連サイト
Comments [0] | Trackbacks [0]

「MTDDC Meetup Tokyo 2024」に登壇します

November 21,2024 11:55 PM
Category:[MTDDC]
Tag:[mtddc]
Permalink

間際のご報告となり恐縮ですが、今週末の11/23(土)、「MTDDC Meetup Tokyo 2024」が開催されます。

場所は「LINEヤフー株式会社(東京ガーデンテラス紀尾井町内)」。時間は11:30開場、12:30開始。一般チケット4000円、学生チケット1000円です。

(以下サイトより引用)MTDDCとは、MTDDCは「Movable Type Developers & Designers Conference」の略で、MTに携わる技術者やデザイナー向けのカンファレンスです。

2007年8月に東京で開催した「Movable Type 開発者向けカンファレンス (Movable Type Developer Conference)」が最初で、その後にデザイナー向けのセッションも加えて、MTDDCとして開催しています。

MTDDCおよびMTDDC Meetupは、Movable Typeを中心としたイベントです。

とは言え、Movable Type一色ではなく、Web全般についての各種のセッションも多数展開します。

「Movable Typeを使っていない」という方でも、Webに関係する方であれば、十分お楽しみいただける内容になっています(引用ここまで)。

私も久しぶりに登壇させて頂くことになりました。

出演予定時間は14:30~15:25です。

今回は「プラグインよもやま話(仮)」というタイトルで、プラグインの仕組みやプラグイン開発にまつわる経験談などを交えてお話させて頂く予定です。

MovableTypeにご興味のあるかた、まだ参加を迷われている方、ご参加をお待ちしています。

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