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

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

Posted at December 7,2024 12:03 AM
Tag:[MovableType, Perl, PSGI]

この記事は「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です。


関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)