Almalinux9.2になって、apacheが2.4なったので、CGIが動かなくなったり、WordPressもMariaDBに移行しなくてはならないけど、単純コピーでは動かなかった。
OSが上がるとそれにつられて、アプリケーションのバージョンが上がるだけど、従来の互換性が保てない部分があって、今のサイトを更新しないとまともに動かなかった。一番大きかったのがapacheが2.2から2.4になって、CGI系が軒並み動かなかった。LOGを見ながらエラー個所を探して、動くように調整した。時間がたつとわからなくなるので、備忘録で修正の一端を入れておく。
【マルチユーザーの取り扱いの考え方】
前のサイトでは、マルチユーザーを考慮する形で作っていたけど、結局シングルユーザーで中途半端に作成されていた。これをてっきり忘れていて、なぜが、httpd.confを設定したけど、マルチユーザーに設定されているCGIのディレクトリーにCGIの実行設定が付かなくって実行できなかった。これは、いくらhttpd.confを設定しても、CGIが動かないからおかしいと思っただけど。。。userdir.confの最後の設定で、ExecCGIがないので、いくらhttpd.confを設定しても、こいつで無効化されていた。これは2.4で分離されているなんて知らなくて、CGIが動かないって本当にはまった。usedirにExecCGIを追加した。
#/etc/httpd/conf.d/userdir.conf
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory “/home/*/public_html”>
# AllowOverride FileInfo AuthConfig Limit Indexes
AllowOverride All
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options MultiViews Indexes IncludesNoExec ExecCGI FollowSymLinks
Require method GET POST OPTIONS
</Directory>
【jcode.plがApache2.4に仕様変更で、エラーになり動かない。】
上を直しても引きつづいて、動かなかった。LOGを確認するとjcode.plでエラーが出ているようだった。
#/var/log/httpd.log
[Sun Jul 23 23:54:35.590181 2023] [cgid:error] [pid 1581:tid 1710] [client 66.249.66.32:38575] [Sun Jul 23 23:54:35 2023] sfs6_diary.cgi: [Sun Jul 23 23:54:35 2023] sfs6_diary.cgi: Can’t use ‘defined(%hash)’ (Maybe you should just omit the defined()?) at slib/jcode.pl line 679.: /var/www/html/cgi-local/sfsdiMitsu/sfs6_diary.cgi, referer: https://www.misago.com/cgi-local/sfsdiMitsu/sfs6_diary.cgi?action=month&year=2015&month=12
[Sun Jul 23 23:54:35.590294 2023] [cgid:error] [pid 1581:tid 1710] [client 66.249.66.32:38575] [Sun Jul 23 23:54:35 2023] sfs6_diary.cgi: Compilation failed in require at slib/Scgi/ParseData.pm line 207.: /www/html/cgi-local/sfsdiMitsu/sfs6_diary.cgi, referer: https://www.misago.com/cgi-local/sfsdiMitsu/sfs6_diary.cgi?action=month&year=2015&month=12
これは、jcode/plのdefineを2か所取れば良いらしい。
&init_z2h_euc unless defined => &init_z2h_euc unless %z2h_euc;
【perlのカレントディレクトリーの考え方が、Apache2.4に仕様変更になって、見つからなくなる。】
jcoce.plでLOGを見たときに別のエラーも出ていたので、気が付いたけど、これもFILEが見つからない系だ。
[Sun Jul 23 15:44:09.900740 2023] [cgid:error] [pid 1523:tid 1727] [client 66.249.66.44:53496] [Sun Jul 23 15:44:09 2023] sfs6_diary.cgi: Can’t locate gifcat.pl in @INC (@INC contains:Sun Jul 23 15:44:09.900740 2023] [cgid:error] [pid 1523:tid Sun Jul 23 15:44:09.900740 2023] [cgid:error] [pid 1523:tid 1727] [client 66.249.66.44:53496] [Sun Jul 23 15:44:09 2023] sfs6_diary.cgi: Can’t locate gifcat.pl in @INC (@INC contains:Sun Jul 23 15:44:09.900740 2023] [cgid:error]1727] [client 66.249.66.44:53496] [Sun Jul 23 15:44:09 2023] sfs6_diary.cgi: Can’t locate gifcat.pl in @INC (@INC contains: ./slib /usr/local/lib64/perl5/5.32usr/local/share/perl5/ ./slib /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 ./lib) at slib/Scgi/Sfs3DiaryCommon.pm line 473.: /var/www/html/cgi-local/sfs66di/sfs6_diary.cgi207行には、 require “gifcat.pl”;だけど、カレントディクトリーを参照するなら、;require “./gifcat.pl”;’と明示する。これは、意外にもいっぱいあったので、LOGを見ながら、モグラたたきで修正した。
【Apacheの実行ユーザを見直した】
これは、Versionの問題ではなかっただけど、もともと前のサーバーの作りが良くなくって、あるシングルユーザーの権限で動くようにしていた。まあ、マルチユーザーでちゃんと動かすようにしたほうがいいだろうと思ったので、Apacheの権限で動くようにした。これでディクトリーのパーミッションを全面的に見直さなくてはならなかったので修正した。カウンターがうまく動かなかったので、この件で権限の設定がよくなかったので、カウンターの値が読みだせなくて表示できなくなっていた。
【WordpressのデーターをmysqlからMariaDBに移行した】
CENT OS6だったので、Mysqlを利用していたけど、AlmaLinuxはMariaDBだ。WordpressからもDBのバージョンを上げろと着ていたけど、DB移行のリスクが大きいと思ったのでやっていなかったけど、今回は根本対応することにした。最初は。ALLDUMPしたけど、余計なデータがあると移行できなかった。この場合は移行はWordpressのデータのみでよいので、Wordpressのデータをダンプすればよい良い。
mysql databaseバックアップ
mysqldump –single-transaction -u ユーザー名 -p データベース名 > 出力先のファイル
$ mysqldump -u root -p wordpress > /var/www/html/wordpress20230731.dump
mysql databaseリストア
1.でバックアップしたdumpファイルを下記コマンドでリストアする。
mariadb -u ユーザー名 -p データベース名 < dumpファイル名
$ mariadb -u root -p wordpress < /var/www/html/wordpress20230731.dump
最近のコメント